ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvZXQ2MXgyNTEudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9ldDYxeDI1MS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjkzNDAyOAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvZXQ2MXgyNTEudHh0CkBAIC0wLDAgKzEsMzE0IEBACisKKyAgICAgICAgICAgICAgICAgICAgICAgRVQ2MVhbMTJdNTEgUEMgQ2FtZXJhIENvbnRyb2xsZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyaXZlciBmb3IgTGludXgKKyAgICAgICAgICAgICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIERvY3VtZW50YXRpb24gLQorCisKK0luZGV4Cis9PT09PQorMS4gIENvcHlyaWdodAorMi4gIERpc2NsYWltZXIKKzMuICBMaWNlbnNlCis0LiAgT3ZlcnZpZXcgYW5kIGZlYXR1cmVzCis1LiAgTW9kdWxlIGRlcGVuZGVuY2llcworNi4gIE1vZHVsZSBsb2FkaW5nCis3LiAgTW9kdWxlIHBhcmFtZXRlcnMKKzguICBPcHRpb25hbCBkZXZpY2UgY29udHJvbCB0aHJvdWdoICJzeXNmcyIKKzkuICBTdXBwb3J0ZWQgZGV2aWNlcworMTAuIE5vdGVzIGZvciBWNEwyIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMKKzExLiBDb250YWN0IGluZm9ybWF0aW9uCisKKworMS4gQ29weXJpZ2h0Cis9PT09PT09PT09PT0KK0NvcHlyaWdodCAoQykgMjAwNiBieSBMdWNhIFJpc29saWEgPGx1Y2Eucmlzb2xpYUBzdHVkaW8udW5pYm8uaXQ+CisKKworMi4gRGlzY2xhaW1lcgorPT09PT09PT09PT09PQorRXRvbXMgaXMgYSB0cmFkZW1hcmsgb2YgRXRvbXMgRWxlY3Ryb25pY3MgQ29ycC4KK1RoaXMgc29mdHdhcmUgaXMgbm90IGRldmVsb3BlZCBvciBzcG9uc29yZWQgYnkgRXRvbXMgRWxlY3Ryb25pY3MuCisKKworMy4gTGljZW5zZQorPT09PT09PT09PQorVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKK2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cit0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCitidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKK2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCitGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKworCis0LiBPdmVydmlldyBhbmQgZmVhdHVyZXMKKz09PT09PT09PT09PT09PT09PT09PT09PQorVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIHZpZGVvIGludGVyZmFjZSBvZiB0aGUgZGV2aWNlcyBtb3VudGluZyB0aGUgRVQ2MVgxNTEKK29yIEVUNjFYMjUxIFBDIENhbWVyYSBDb250cm9sbGVycy4KKworSXQncyB3b3J0aCB0byBub3RlIHRoYXQgRXRvbXMgRWxlY3Ryb25pY3MgaGFzIG5ldmVyIGNvbGxhYm9yYXRlZCB3aXRoIHRoZQorYXV0aG9yIGR1cmluZyB0aGUgZGV2ZWxvcG1lbnQgb2YgdGhpcyBwcm9qZWN0OyBkZXNwaXRlIHNldmVyYWwgcmVxdWVzdHMsCitFdG9tcyBFbGVjdHJvbmljcyBhbHNvIHJlZnVzZWQgdG8gcmVsZWFzZSBlbm91Z2ggZGV0YWlsZWQgc3BlY2lmaWNhdGlvbnMgb2YKK3RoZSB2aWRlbyBjb21wcmVzc2lvbiBlbmdpbmUuCisKK1RoZSBkcml2ZXIgcmVsaWVzIG9uIHRoZSBWaWRlbzRMaW51eDIgYW5kIFVTQiBjb3JlIG1vZHVsZXMuIEl0IGhhcyBiZWVuCitkZXNpZ25lZCB0byBydW4gcHJvcGVybHkgb24gU01QIHN5c3RlbXMgYXMgd2VsbC4KKworVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBFVDYxWFsxMl01MSBkcml2ZXIgY2FuIGJlIGZvdW5kIGF0IHRoZSBmb2xsb3dpbmcgVVJMOgoraHR0cDovL3d3dy5saW51eC1wcm9qZWN0cy5vcmcvCisKK1NvbWUgb2YgdGhlIGZlYXR1cmVzIG9mIHRoZSBkcml2ZXIgYXJlOgorCistIGZ1bGwgY29tcGxpYW5jZSB3aXRoIHRoZSBWaWRlbzRMaW51eDIgQVBJIChzZWUgYWxzbyAiTm90ZXMgZm9yIFY0TDIKKyAgYXBwbGljYXRpb24gZGV2ZWxvcGVycyIgcGFyYWdyYXBoKTsKKy0gYXZhaWxhYmxlIG1tYXAgb3IgcmVhZC9wb2xsIG1ldGhvZHMgZm9yIHZpZGVvIHN0cmVhbWluZyB0aHJvdWdoIGlzb2Nocm9ub3VzCisgIGRhdGEgdHJhbnNmZXJzOworLSBhdXRvbWF0aWMgZGV0ZWN0aW9uIG9mIGltYWdlIHNlbnNvcjsKKy0gc3VwcG9ydCBmb3IgYW55IHdpbmRvdyByZXNvbHV0aW9ucyBhbmQgb3B0aW9uYWwgcGFubmluZyB3aXRoaW4gdGhlIG1heGltdW0KKyAgcGl4ZWwgYXJlYSBvZiBpbWFnZSBzZW5zb3I7CistIGltYWdlIGRvd25zY2FsaW5nIHdpdGggYXJiaXRyYXJ5IHNjYWxpbmcgZmFjdG9ycyBmcm9tIDEgYW5kIDIgaW4gYm90aAorICBkaXJlY3Rpb25zIChzZWUgIk5vdGVzIGZvciBWNEwyIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMiIHBhcmFncmFwaCk7CistIHR3byBkaWZmZXJlbnQgdmlkZW8gZm9ybWF0cyBmb3IgdW5jb21wcmVzc2VkIG9yIGNvbXByZXNzZWQgZGF0YSBpbiBsb3cgb3IKKyAgaGlnaCBjb21wcmVzc2lvbiBxdWFsaXR5IChzZWUgYWxzbyAiTm90ZXMgZm9yIFY0TDIgYXBwbGljYXRpb24gZGV2ZWxvcGVycyIKKyAgcGFyYWdyYXBoKTsKKy0gZnVsbCBzdXBwb3J0IGZvciB0aGUgY2FwYWJpbGl0aWVzIG9mIGV2ZXJ5IHBvc3NpYmxlIGltYWdlIHNlbnNvcnMgdGhhdCBjYW4KKyAgYmUgY29ubmVjdGVkIHRvIHRoZSBFVDYxWFsxMl01MSBicmlkZ2VzLCBpbmNsdWRpbmcsIGZvciBpc3RhbmNlLCByZWQsIGdyZWVuLAorICBibHVlIGFuZCBnbG9iYWwgZ2FpbiBhZGp1c3RtZW50cyBhbmQgZXhwb3N1cmUgY29udHJvbCAoc2VlICJTdXBwb3J0ZWQKKyAgZGV2aWNlcyIgcGFyYWdyYXBoIGZvciBkZXRhaWxzKTsKKy0gdXNlIG9mIGRlZmF1bHQgY29sb3Igc2V0dGluZ3MgZm9yIHN1bmxpZ2h0IGNvbmRpdGlvbnM7CistIGR5bmFtaWMgSS9PIGludGVyZmFjZSBmb3IgYm90aCBFVDYxWFsxMl01MSBhbmQgaW1hZ2Ugc2Vuc29yIGNvbnRyb2wgKHNlZQorICAiT3B0aW9uYWwgZGV2aWNlIGNvbnRyb2wgdGhyb3VnaCAnc3lzZnMnIiBwYXJhZ3JhcGgpOworLSBkeW5hbWljIGRyaXZlciBjb250cm9sIHRoYW5rcyB0byB2YXJpb3VzIG1vZHVsZSBwYXJhbWV0ZXJzIChzZWUgIk1vZHVsZQorICBwYXJhbWV0ZXJzIiBwYXJhZ3JhcGgpOworLSB1cCB0byA2NCBjYW1lcmFzIGNhbiBiZSBoYW5kbGVkIGF0IHRoZSBzYW1lIHRpbWU7IHRoZXkgY2FuIGJlIGNvbm5lY3RlZCBhbmQKKyAgZGlzY29ubmVjdGVkIGZyb20gdGhlIGhvc3QgbWFueSB0aW1lcyB3aXRob3V0IHR1cm5pbmcgb2ZmIHRoZSBjb21wdXRlciwgaWYKKyAgdGhlIHN5c3RlbSBzdXBwb3J0cyBob3RwbHVnZ2luZzsKKy0gbm8ga25vd24gYnVncy4KKworCis1LiBNb2R1bGUgZGVwZW5kZW5jaWVzCis9PT09PT09PT09PT09PT09PT09PT09CitGb3IgaXQgdG8gd29yayBwcm9wZXJseSwgdGhlIGRyaXZlciBuZWVkcyBrZXJuZWwgc3VwcG9ydCBmb3IgVmlkZW80TGludXggYW5kCitVU0IuCisKK1RoZSBmb2xsb3dpbmcgb3B0aW9ucyBvZiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSBtdXN0IGJlIGVuYWJsZWQgYW5kCitjb3JyZXNwb25kaW5nIG1vZHVsZXMgbXVzdCBiZSBjb21waWxlZDoKKworCSMgTXVsdGltZWRpYSBkZXZpY2VzCisJIworCUNPTkZJR19WSURFT19ERVY9bQorCitUbyBlbmFibGUgYWR2YW5jZWQgZGVidWdnaW5nIGZ1bmN0aW9uYWxpdHkgb24gdGhlIGRldmljZSB0aHJvdWdoIC9zeXNmczoKKworCSMgTXVsdGltZWRpYSBkZXZpY2VzCisJIworCUNPTkZJR19WSURFT19BRFZfREVCVUc9eQorCisJIyBVU0Igc3VwcG9ydAorCSMKKwlDT05GSUdfVVNCPW0KKworSW4gYWRkaXRpb24sIGRlcGVuZGluZyBvbiB0aGUgaGFyZHdhcmUgYmVpbmcgdXNlZCwgdGhlIG1vZHVsZXMgYmVsb3cgYXJlCituZWNlc3Nhcnk6CisKKwkjIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycworCSMKKwlDT05GSUdfVVNCX0VIQ0lfSENEPW0KKwlDT05GSUdfVVNCX1VIQ0lfSENEPW0KKwlDT05GSUdfVVNCX09IQ0lfSENEPW0KKworQW5kIGZpbmFsbHk6CisKKwkjIFVTQiBNdWx0aW1lZGlhIGRldmljZXMKKwkjCisJQ09ORklHX1VTQl9FVDYxWDI1MT1tCisKKworNi4gTW9kdWxlIGxvYWRpbmcKKz09PT09PT09PT09PT09PT09CitUbyB1c2UgdGhlIGRyaXZlciwgaXQgaXMgbmVjZXNzYXJ5IHRvIGxvYWQgdGhlICJldDYxeDI1MSIgbW9kdWxlIGludG8gbWVtb3J5CithZnRlciBldmVyeSBvdGhlciBtb2R1bGUgcmVxdWlyZWQ6ICJ2aWRlb2RldiIsICJ1c2Jjb3JlIiBhbmQsIGRlcGVuZGluZyBvbgordGhlIFVTQiBob3N0IGNvbnRyb2xsZXIgeW91IGhhdmUsICJlaGNpLWhjZCIsICJ1aGNpLWhjZCIgb3IgIm9oY2ktaGNkIi4KKworTG9hZGluZyBjYW4gYmUgZG9uZSBhcyBzaG93biBiZWxvdzoKKworCVtyb290QGxvY2FsaG9zdCBob21lXSMgbW9kcHJvYmUgZXQ2MXgyNTEKKworQXQgdGhpcyBwb2ludCB0aGUgZGV2aWNlcyBzaG91bGQgYmUgcmVjb2duaXplZC4gWW91IGNhbiBpbnZva2UgImRtZXNnIiB0bworYW5hbHl6ZSBrZXJuZWwgbWVzc2FnZXMgYW5kIHZlcmlmeSB0aGF0IHRoZSBsb2FkaW5nIHByb2Nlc3MgaGFzIGdvbmUgd2VsbDoKKworCVt1c2VyQGxvY2FsaG9zdCBob21lXSQgZG1lc2cKKworCis3LiBNb2R1bGUgcGFyYW1ldGVycworPT09PT09PT09PT09PT09PT09PT0KK01vZHVsZSBwYXJhbWV0ZXJzIGFyZSBsaXN0ZWQgYmVsb3c6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOYW1lOiAgICAgICAgICAgdmlkZW9fbnIKK1R5cGU6ICAgICAgICAgICBzaG9ydCBhcnJheSAobWluID0gMCwgbWF4ID0gNjQpCitTeW50YXg6ICAgICAgICAgPC0xfG5bLC4uLl0+CitEZXNjcmlwdGlvbjogICAgU3BlY2lmeSBWNEwyIG1pbm9yIG1vZGUgbnVtYmVyOgorICAgICAgICAgICAgICAgIC0xID0gdXNlIG5leHQgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgIG4gPSB1c2UgbWlub3IgbnVtYmVyIG4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHNwZWNpZnkgdXAgdG8gNjQgY2FtZXJhcyB0aGlzIHdheS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZToKKyAgICAgICAgICAgICAgICB2aWRlb19ucj0tMSwyLC0xIHdvdWxkIGFzc2lnbiBtaW5vciBudW1iZXIgMiB0byB0aGUgc2Vjb25kCisgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZCBjYW1lcmEgYW5kIHVzZSBhdXRvIGZvciB0aGUgZmlyc3Qgb25lIGFuZCBmb3IgZXZlcnkKKyAgICAgICAgICAgICAgICBvdGhlciBjYW1lcmEuCitEZWZhdWx0OiAgICAgICAgLTEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05hbWU6ICAgICAgICAgICBmb3JjZV9tdW5tYXAKK1R5cGU6ICAgICAgICAgICBib29sIGFycmF5IChtaW4gPSAwLCBtYXggPSA2NCkKK1N5bnRheDogICAgICAgICA8MHwxWywuLi5dPgorRGVzY3JpcHRpb246ICAgIEZvcmNlIHRoZSBhcHBsaWNhdGlvbiB0byB1bm1hcCBwcmV2aW91c2x5IG1hcHBlZCBidWZmZXIgbWVtb3J5CisgICAgICAgICAgICAgICAgYmVmb3JlIGNhbGxpbmcgYW55IFZJRElPQ19TX0NST1Agb3IgVklESU9DX1NfRk1UIGlvY3RsJ3MuIE5vdAorICAgICAgICAgICAgICAgIGFsbCB0aGUgYXBwbGljYXRpb25zIHN1cHBvcnQgdGhpcyBmZWF0dXJlLiBUaGlzIHBhcmFtZXRlciBpcworICAgICAgICAgICAgICAgIHNwZWNpZmljIGZvciBlYWNoIGRldGVjdGVkIGNhbWVyYS4KKyAgICAgICAgICAgICAgICAwID0gZG8gbm90IGZvcmNlIG1lbW9yeSB1bm1hcHBpbmcKKyAgICAgICAgICAgICAgICAxID0gZm9yY2UgbWVtb3J5IHVubWFwcGluZyAoc2F2ZSBtZW1vcnkpCitEZWZhdWx0OiAgICAgICAgMAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmFtZTogICAgICAgICAgIGZyYW1lX3RpbWVvdXQKK1R5cGU6ICAgICAgICAgICB1aW50IGFycmF5IChtaW4gPSAwLCBtYXggPSA2NCkKK1N5bnRheDogICAgICAgICA8blssLi4uXT4KK0Rlc2NyaXB0aW9uOiAgICBUaW1lb3V0IGZvciBhIHZpZGVvIGZyYW1lIGluIHNlY29uZHMuIFRoaXMgcGFyYW1ldGVyIGlzCisgICAgICAgICAgICAgICAgc3BlY2lmaWMgZm9yIGVhY2ggZGV0ZWN0ZWQgY2FtZXJhLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIGF0IHJ1bnRpbWUgdGhhbmtzIHRvIHRoZSAvc3lzIGZpbGVzeXN0ZW0gaW50ZXJmYWNlLgorRGVmYXVsdDogICAgICAgIDIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05hbWU6ICAgICAgICAgICBkZWJ1ZworVHlwZTogICAgICAgICAgIHVzaG9ydAorU3ludGF4OiAgICAgICAgIDxuPgorRGVzY3JpcHRpb246ICAgIERlYnVnZ2luZyBpbmZvcm1hdGlvbiBsZXZlbCwgZnJvbSAwIHRvIDM6CisgICAgICAgICAgICAgICAgMCA9IG5vbmUgKHVzZSBjYXJlZnVsbHkpCisgICAgICAgICAgICAgICAgMSA9IGNyaXRpY2FsIGVycm9ycworICAgICAgICAgICAgICAgIDIgPSBzaWduaWZpY2FudCBpbmZvcm1hdGlvbnMKKyAgICAgICAgICAgICAgICAzID0gbW9yZSB2ZXJib3NlIG1lc3NhZ2VzCisgICAgICAgICAgICAgICAgTGV2ZWwgMyBpcyB1c2VmdWwgZm9yIHRlc3Rpbmcgb25seSwgd2hlbiBvbmx5IG9uZSBkZXZpY2UKKyAgICAgICAgICAgICAgICBpcyB1c2VkIGF0IHRoZSBzYW1lIHRpbWUuIEl0IGFsc28gc2hvd3Mgc29tZSBtb3JlIGluZm9ybWF0aW9ucworICAgICAgICAgICAgICAgIGFib3V0IHRoZSBoYXJkd2FyZSBiZWluZyBkZXRlY3RlZC4gVGhpcyBtb2R1bGUgcGFyYW1ldGVyIGNhbiBiZQorICAgICAgICAgICAgICAgIGNoYW5nZWQgYXQgcnVudGltZSB0aGFua3MgdG8gdGhlIC9zeXMgZmlsZXN5c3RlbSBpbnRlcmZhY2UuCitEZWZhdWx0OiAgICAgICAgMgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKzguIE9wdGlvbmFsIGRldmljZSBjb250cm9sIHRocm91Z2ggInN5c2ZzIgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitJZiB0aGUga2VybmVsIGhhcyBiZWVuIGNvbXBpbGVkIHdpdGggdGhlIENPTkZJR19WSURFT19BRFZfREVCVUcgb3B0aW9uIGVuYWJsZWQsCitpdCBpcyBwb3NzaWJsZSB0byByZWFkIGFuZCB3cml0ZSBib3RoIHRoZSBFVDYxWFsxMl01MSBhbmQgdGhlIGltYWdlIHNlbnNvcgorcmVnaXN0ZXJzIGJ5IHVzaW5nIHRoZSAic3lzZnMiIGZpbGVzeXN0ZW0gaW50ZXJmYWNlLgorCitUaGVyZSBhcmUgZm91ciBmaWxlcyBpbiB0aGUgL3N5cy9jbGFzcy92aWRlbzRsaW51eC92aWRlb1ggZGlyZWN0b3J5IGZvciBlYWNoCityZWdpc3RlcmVkIGNhbWVyYTogInJlZyIsICJ2YWwiLCAiaTJjX3JlZyIgYW5kICJpMmNfdmFsIi4gVGhlIGZpcnN0IHR3byBmaWxlcworY29udHJvbCB0aGUgRVQ2MVhbMTJdNTEgYnJpZGdlLCB3aGlsZSB0aGUgb3RoZXIgdHdvIGNvbnRyb2wgdGhlIHNlbnNvciBjaGlwLgorInJlZyIgYW5kICJpMmNfcmVnIiBob2xkIHRoZSB2YWx1ZXMgb2YgdGhlIGN1cnJlbnQgcmVnaXN0ZXIgaW5kZXggd2hlcmUgdGhlCitmb2xsb3dpbmcgcmVhZGluZy93cml0aW5nIG9wZXJhdGlvbnMgYXJlIGFkZHJlc3NlZCBhdCB0aHJvdWdoICJ2YWwiIGFuZAorImkyY192YWwiLiBUaGVpciB1c2UgaXMgbm90IGludGVuZGVkIGZvciBlbmQtdXNlcnMsIHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdQorYXJlIGRvaW5nLiBSZW1lbWJlciB0aGF0IHlvdSBtdXN0IGJlIGxvZ2dlZCBpbiBhcyByb290IGJlZm9yZSB3cml0aW5nIHRvIHRoZW0uCisKK0FzIGFuIGV4YW1wbGUsIHN1cHBvc2Ugd2Ugd2VyZSB0byB3YW50IHRvIHJlYWQgdGhlIHZhbHVlIGNvbnRhaW5lZCBpbiB0aGUKK3JlZ2lzdGVyIG51bWJlciAxIG9mIHRoZSBzZW5zb3IgcmVnaXN0ZXIgdGFibGUgLSB3aGljaCBpcyB1c3VhbGx5IHRoZSBwcm9kdWN0CitpZGVudGlmaWVyIC0gb2YgdGhlIGNhbWVyYSByZWdpc3RlcmVkIGFzICIvZGV2L3ZpZGVvMCI6CisKKwlbcm9vdEBsb2NhbGhvc3QgI10gY2QgL3N5cy9jbGFzcy92aWRlbzRsaW51eC92aWRlbzAKKwlbcm9vdEBsb2NhbGhvc3QgI10gZWNobyAxID4gaTJjX3JlZworCVtyb290QGxvY2FsaG9zdCAjXSBjYXQgaTJjX3ZhbAorCitOb3RlIHRoYXQgaWYgdGhlIHNlbnNvciByZWdpc3RlcnMgY2FuIG5vdCBiZSByZWFkLCAiY2F0IiB3aWxsIGZhaWwuCitUbyBhdm9pZCByYWNlIGNvbmRpdGlvbnMsIGFsbCB0aGUgSS9PIGFjY2Vzc2VzIHRvIHRoZSBmaWxlcyBhcmUgc2VyaWFsaXplZC4KKworCis5LiBTdXBwb3J0ZWQgZGV2aWNlcworPT09PT09PT09PT09PT09PT09PT0KK05vbmUgb2YgdGhlIG5hbWVzIG9mIHRoZSBjb21wYW5pZXMgYXMgd2VsbCBhcyB0aGVpciBwcm9kdWN0cyB3aWxsIGJlIG1lbnRpb25lZAoraGVyZS4gVGhleSBoYXZlIG5ldmVyIGNvbGxhYm9yYXRlZCB3aXRoIHRoZSBhdXRob3IsIHNvIG5vIGFkdmVydGlzaW5nLgorCitGcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIGEgZHJpdmVyLCB3aGF0IHVuYW1iaWd1b3VzbHkgaWRlbnRpZnkgYSBkZXZpY2UgYXJlCitpdHMgdmVuZG9yIGFuZCBwcm9kdWN0IFVTQiBpZGVudGlmaWVycy4gQmVsb3cgaXMgYSBsaXN0IG9mIGtub3duIGlkZW50aWZpZXJzIG9mCitkZXZpY2VzIG1vdW50aW5nIHRoZSBFVDYxWFsxMl01MSBQQyBjYW1lcmEgY29udHJvbGxlcnM6CisKK1ZlbmRvciBJRCAgUHJvZHVjdCBJRAorLS0tLS0tLS0tICAtLS0tLS0tLS0tCisweDEwMmMgICAgIDB4NjE1MQorMHgxMDJjICAgICAweDYyNTEKKzB4MTAyYyAgICAgMHg2MjUzCisweDEwMmMgICAgIDB4NjI1NAorMHgxMDJjICAgICAweDYyNTUKKzB4MTAyYyAgICAgMHg2MjU2CisweDEwMmMgICAgIDB4NjI1NworMHgxMDJjICAgICAweDYyNTgKKzB4MTAyYyAgICAgMHg2MjU5CisweDEwMmMgICAgIDB4NjI1YQorMHgxMDJjICAgICAweDYyNWIKKzB4MTAyYyAgICAgMHg2MjVjCisweDEwMmMgICAgIDB4NjI1ZAorMHgxMDJjICAgICAweDYyNWUKKzB4MTAyYyAgICAgMHg2MjVmCisweDEwMmMgICAgIDB4NjI2MAorMHgxMDJjICAgICAweDYyNjEKKzB4MTAyYyAgICAgMHg2MjYyCisweDEwMmMgICAgIDB4NjI2MworMHgxMDJjICAgICAweDYyNjQKKzB4MTAyYyAgICAgMHg2MjY1CisweDEwMmMgICAgIDB4NjI2NgorMHgxMDJjICAgICAweDYyNjcKKzB4MTAyYyAgICAgMHg2MjY4CisweDEwMmMgICAgIDB4NjI2OQorCitUaGUgZm9sbG93aW5nIGltYWdlIHNlbnNvcnMgYXJlIHN1cHBvcnRlZDoKKworTW9kZWwgICAgICAgTWFudWZhY3R1cmVyCistLS0tLSAgICAgICAtLS0tLS0tLS0tLS0KK1RBUzUxMzBEMUIgIFRhaXdhbiBBZHZhbmNlZCBTZW5zb3IgQ29ycG9yYXRpb24KKworQWxsIHRoZSBhdmFpbGFibGUgY29udHJvbCBzZXR0aW5ncyBvZiBlYWNoIGltYWdlIHNlbnNvciBhcmUgc3VwcG9ydGVkIHRocm91Z2gKK3RoZSBWNEwyIGludGVyZmFjZS4KKworCisxMC4gTm90ZXMgZm9yIFY0TDIgYXBwbGljYXRpb24gZGV2ZWxvcGVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1RoaXMgZHJpdmVyIGZvbGxvd3MgdGhlIFY0TDIgQVBJIHNwZWNpZmljYXRpb25zLiBJbiBwYXJ0aWN1bGFyLCBpdCBlbmZvcmNlcyB0d28KK3J1bGVzOgorCistIGV4YWN0bHkgb25lIEkvTyBtZXRob2QsIGVpdGhlciAibW1hcCIgb3IgInJlYWQiLCBpcyBhc3NvY2lhdGVkIHdpdGggZWFjaAorZmlsZSBkZXNjcmlwdG9yLiBPbmNlIGl0IGlzIHNlbGVjdGVkLCB0aGUgYXBwbGljYXRpb24gbXVzdCBjbG9zZSBhbmQgcmVvcGVuIHRoZQorZGV2aWNlIHRvIHN3aXRjaCB0byB0aGUgb3RoZXIgSS9PIG1ldGhvZDsKKworLSBhbHRob3VnaCBpdCBpcyBub3QgbWFuZGF0b3J5LCBwcmV2aW91c2x5IG1hcHBlZCBidWZmZXIgbWVtb3J5IHNob3VsZCBhbHdheXMKK2JlIHVubWFwcGVkIGJlZm9yZSBjYWxsaW5nIGFueSAiVklESU9DX1NfQ1JPUCIgb3IgIlZJRElPQ19TX0ZNVCIgaW9jdGwncy4KK1RoZSBzYW1lIG51bWJlciBvZiBidWZmZXJzIGFzIGJlZm9yZSB3aWxsIGJlIGFsbG9jYXRlZCBhZ2FpbiB0byBtYXRjaCB0aGUgc2l6ZQorb2YgdGhlIG5ldyB2aWRlbyBmcmFtZXMsIHNvIHlvdSBoYXZlIHRvIG1hcCB0aGUgYnVmZmVycyBhZ2FpbiBiZWZvcmUgYW55IEkvTworYXR0ZW1wdHMgb24gdGhlbS4KKworQ29uc2lzdGVudGx5IHdpdGggdGhlIGhhcmR3YXJlIGxpbWl0cywgdGhpcyBkcml2ZXIgYWxzbyBzdXBwb3J0cyBpbWFnZQorZG93bnNjYWxpbmcgd2l0aCBhcmJpdHJhcnkgc2NhbGluZyBmYWN0b3JzIGZyb20gMSBhbmQgMiBpbiBib3RoIGRpcmVjdGlvbnMuCitIb3dldmVyLCB0aGUgVjRMMiBBUEkgc3BlY2lmaWNhdGlvbnMgZG9uJ3QgY29ycmVjdGx5IGRlZmluZSBob3cgdGhlIHNjYWxpbmcKK2ZhY3RvciBjYW4gYmUgY2hvc2VuIGFyYml0cmFyaWx5IGJ5IHRoZSAibmVnb3RpYXRpb24iIG9mIHRoZSAic291cmNlIiBhbmQKKyJ0YXJnZXQiIHJlY3RhbmdsZXMuIFRvIHdvcmsgYXJvdW5kIHRoaXMgZmxhdywgd2UgaGF2ZSBhZGRlZCB0aGUgY29udmVudGlvbgordGhhdCwgZHVyaW5nIHRoZSBuZWdvdGlhdGlvbiwgd2hlbmV2ZXIgdGhlICJWSURJT0NfU19DUk9QIiBpb2N0bCBpcyBpc3N1ZWQsIHRoZQorc2NhbGluZyBmYWN0b3IgaXMgcmVzdG9yZWQgdG8gMS4KKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgdHdvIGRpZmZlcmVudCB2aWRlbyBmb3JtYXRzOiB0aGUgZmlyc3Qgb25lIGlzIHRoZSAiOC1iaXQKK1NlcXVlbnRpYWwgQmF5ZXIiIGZvcm1hdCBhbmQgY2FuIGJlIHVzZWQgdG8gb2J0YWluIHVuY29tcHJlc3NlZCB2aWRlbyBkYXRhCitmcm9tIHRoZSBkZXZpY2UgdGhyb3VnaCB0aGUgY3VycmVudCBJL08gbWV0aG9kLCB3aGlsZSB0aGUgc2Vjb25kIG9uZSBwcm92aWRlcworInJhdyIgY29tcHJlc3NlZCB2aWRlbyBkYXRhICh3aXRob3V0IGZyYW1lIGhlYWRlcnMgbm90IHJlbGF0ZWQgdG8gdGhlCitjb21wcmVzc2VkIGRhdGEpLiBUaGUgY3VycmVudCBjb21wcmVzc2lvbiBxdWFsaXR5IG1heSB2YXJ5IGZyb20gMCB0byAxIGFuZCBjYW4KK2JlIHNlbGVjdGVkIG9yIHF1ZXJpZWQgdGhhbmtzIHRvIHRoZSBWSURJT0NfU19KUEVHQ09NUCBhbmQgVklESU9DX0dfSlBFR0NPTVAKK1Y0TDIgaW9jdGwncy4KKworCisxMS4gQ29udGFjdCBpbmZvcm1hdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT0KK1RoZSBhdXRob3IgbWF5IGJlIGNvbnRhY3RlZCBieSBlLW1haWwgYXQgPGx1Y2Eucmlzb2xpYUBzdHVkaW8udW5pYm8uaXQ+LgorCitHUEcvUEdQIGVuY3J5cHRlZCBlLW1haWwncyBhcmUgYWNjZXB0ZWQuIFRoZSBHUEcga2V5IElEIG9mIHRoZSBhdXRob3IgaXMKKydGQ0U2MzVBNCc7IHRoZSBwdWJsaWMgMTAyNC1iaXQga2V5IHNob3VsZCBiZSBhdmFpbGFibGUgYXQgYW55IGtleXNlcnZlcjsKK3RoZSBmaW5nZXJwcmludCBpczogJzg4RTggRjMyRiA3MjQ0IDY4QkEgMzk1OCAgNUQ0MCA5OURBIDVEMkEgRkNFNiAzNUE0Jy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvaWJtY2FtLnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvaWJtY2FtLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTQwYTJlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9pYm1jYW0udHh0CkBAIC0wLDAgKzEsMzI0IEBACitSRUFETUUgZm9yIExpbnV4IGRldmljZSBkcml2ZXIgZm9yIHRoZSBJQk0gIkMtSXQiIFVTQiB2aWRlbyBjYW1lcmEKKworSU5UUk9EVUNUSU9OOgorCitUaGlzIGRyaXZlciBkb2VzIG5vdCB1c2UgYWxsIGZlYXR1cmVzIGtub3duIHRvIGV4aXN0IGluCit0aGUgSUJNIGNhbWVyYS4gSG93ZXZlciBtb3N0IG9mIG5lZWRlZCBmZWF0dXJlcyB3b3JrIHdlbGwuCisKK1RoaXMgZHJpdmVyIHdhcyBkZXZlbG9wZWQgdXNpbmcgbG9ncyBvZiBvYnNlcnZlZCBVU0IgdHJhZmZpYword2hpY2ggd2FzIHByb2R1Y2VkIGJ5IHN0YW5kYXJkIFdpbmRvd3MgZHJpdmVyIChjLWl0OTguc3lzKS4KK0kgZGlkIG5vdCBoYXZlIGRhdGEgc2hlZXRzIGZyb20gWGlybGluay4KKworVmlkZW8gZm9ybWF0czoKKyAgICAgIDEyOHg5NiAgW21vZGVsIDFdCisgICAgICAxNzZ4MTQ0CisgICAgICAzMjB4MjQwIFttb2RlbCAyXQorICAgICAgMzUyeDI0MCBbbW9kZWwgMl0KKyAgICAgIDM1MngyODgKK0ZyYW1lIHJhdGU6IDMgLSAzMCBmcmFtZXMgcGVyIHNlY29uZCAoRlBTKQorRXh0ZXJuYWwgaW50ZXJmYWNlOiBVU0IKK0ludGVybmFsIGludGVyZmFjZTogVmlkZW8gRm9yIExpbnV4IChWNEwpCitTdXBwb3J0ZWQgY29udHJvbHM6CistIGJ5IFY0TDogQ29udHJhc3QsICBCcmlnaHRuZXNzLCBDb2xvciwgSHVlCistIGJ5IGRyaXZlciBvcHRpb25zOiBmcmFtZSByYXRlLCBsaWdodGluZyBjb25kaXRpb25zLCB2aWRlbyBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IHBpY3R1cmUgc2V0dGluZ3MsIHNoYXJwbmVzcy4KKworU1VQUE9SVEVEIENBTUVSQVM6CisKK1hpcmxpbmsgIkMtSXQiIGNhbWVyYSwgYWxzbyBrbm93biBhcyAiSUJNIFBDIENhbWVyYSIuCitUaGUgZGV2aWNlIHVzZXMgcHJvcHJpZXRhcnkgQVNJQyAoYW5kIGNvbXByZXNzaW9uIG1ldGhvZCk7CitpdCBpcyBtYW51ZmFjdHVyZWQgYnkgWGlybGluay4gU2VlIGh0dHA6Ly93d3cueGlybGluay5jb20vCisocmVuYW1lZCB0byBodHRwOi8vd3d3LnZlby5jb20pLCBodHRwOi8vd3d3LmlibXBjY2FtZXJhLmNvbSwKK29yIGh0dHA6Ly93d3cuYy1pdG5vdy5jb20vIGZvciBkZXRhaWxzIGFuZCBwaWN0dXJlcy4KKworVGhpcyB2ZXJ5IGNoaXBzZXQgKCJYIENoaXAiLCBhcyBtYXJrZWQgYXQgdGhlIGZhY3RvcnkpCitpcyB1c2VkIGluIHNldmVyYWwgb3RoZXIgY2FtZXJhcywgYW5kIHRoZXkgYXJlIHN1cHBvcnRlZAorYXMgd2VsbDoKKworLSBJQk0gTmV0Q2FtZXJhCistIFZlbyBTdGluZ3JheQorCitUaGUgTGludXggZHJpdmVyIHdhcyBkZXZlbG9wZWQgd2l0aCBjYW1lcmEgd2l0aCBmb2xsb3dpbmcKK21vZGVsIG51bWJlciAob3IgRkNDIElEKTogS1NYLVhWUDUxMC4gVGhpcyBjYW1lcmEgaGFzIHRocmVlCitpbnRlcmZhY2VzLCBlYWNoIHdpdGggb25lIGVuZHBvaW50IChjb250cm9sLCBpc28sIGlzbykuIFRoaXMKK3R5cGUgb2YgY2FtZXJhcyBpcyByZWZlcnJlZCB0byBhcyAibW9kZWwgMSIuIFRoZXNlIGNhbWVyYXMgYXJlCitubyBsb25nZXIgbWFudWZhY3R1cmVkLgorCitYaXJsaW5rIG5vdyBtYW51ZmFjdHVyZXMgbmV3IGNhbWVyYXMgd2hpY2ggYXJlIHNvbWV3aGF0IGRpZmZlcmVudC4KK0luIHBhcnRpY3VsYXIsIGZvbGxvd2luZyBtb2RlbHMgW0ZDQyBJRF0gYmVsb25nIHRvIHRoYXQgY2F0ZWdvcnk6CisKK1hWUDMwMCBbS1NYLVg5OTAzXQorWFZQNjAwIFtLU1gtWDk5MDJdCitYVlA2MTAgW0tTWC1YOTkwMl0KKworKHNlZSBodHRwOi8vd3d3LnhpcmxpbmsuY29tL2libXBjY2FtZXJhLyBmb3IgdXBkYXRlcywgdGhleSByZWZlcgordG8gdGhlc2UgbmV3IGNhbWVyYXMgYnkgV2luZG93cyBkcml2ZXIgZGF0ZWQgMTItMjctOTksIHYzMDA1IEJFVEEpCitUaGVzZSBjYW1lcmFzIGhhdmUgdHdvIGludGVyZmFjZXMsIG9uZSBlbmRwb2ludCBpbiBlYWNoIChpc28sIGJ1bGspLgorU3VjaCB0eXBlIG9mIGNhbWVyYXMgaXMgcmVmZXJyZWQgdG8gYXMgIm1vZGVsIDIiLiBUaGV5IGFyZSBzdXBwb3J0ZWQKKyh3aXRoIGV4Y2VwdGlvbiBvZiAzNTJ4Mjg4IG5hdGl2ZSBtb2RlKS4KKworU29tZSBJQk0gTmV0Q2FtZXJhcyAoTW9kZWwgNCkgYXJlIG1hZGUgdG8gZ2VuZXJhdGUgb25seSBjb21wcmVzc2VkCit2aWRlbyBzdHJlYW1zLiBUaGlzIGlzIGdyZWF0IGZvciBwZXJmb3JtYW5jZSwgYnV0IHVuZm9ydHVuYXRlbHkKK25vYm9keSBrbm93cyBob3cgdG8gZGVjb21wcmVzcyB0aGUgc3RyZWFtIDotKCBUaGVyZWZvcmUsIHRoZXNlCitjYW1lcmFzIGFyZSAqdW5zdXBwb3J0ZWQqIGFuZCBpZiB5b3UgdHJ5IHRvIHVzZSBvbmUgb2YgdGhvc2UsIGFsbAoreW91IGdldCBpcyByYW5kb20gY29sb3JlZCBob3Jpem9udGFsIHN0cmVha3MsIG5vdCB0aGUgaW1hZ2UhCitJZiB5b3UgaGF2ZSBvbmUgb2YgdGhvc2UgY2FtZXJhcywgeW91IHByb2JhYmx5IHNob3VsZCByZXR1cm4gaXQKK3RvIHRoZSBzdG9yZSBhbmQgZ2V0IHNvbWV0aGluZyB0aGF0IGlzIHN1cHBvcnRlZC4KKworVGVsbCBtZSBtb3JlIGFib3V0IGFsbCB0aGF0ICJtb2RlbCIgYnVzaW5lc3MKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0kganVzdCBpbnZlbnRlZCBtb2RlbCBudW1iZXJzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGZsYXZvcnMgb2YgdGhlCitoYXJkd2FyZS9maXJtd2FyZSB0aGF0IHdlcmUgc29sZC4gSXQgd2FzIHZlcnkgY29uZnVzaW5nIHRvIHVzZQorYnJhbmQgbmFtZXMgb3Igc29tZSBvdGhlciBpbnRlcm5hbCBudW1iZXJpbmcgc2NoZW1lcy4gU28gSSBmb3VuZAorYnkgZXhwZXJpbWVudGF0aW9uIHRoYXQgYWxsIFhpcmxpbmsgY2hpcHNldHMgZmFsbCBpbnRvIGZvdXIgYmlnCitjbGFzc2VzLCBhbmQgSSBjYWxsZWQgdGhlbSAibW9kZWxzIi4gRWFjaCBtb2RlbCBpcyBwcm9ncmFtbWVkIGluCitpdHMgb3duIHdheSwgYW5kIGVhY2ggbW9kZWwgc2VuZHMgYmFjayB0aGUgdmlkZW8gaW4gaXRzIG93biB3YXkuCisKK1F1aXJrcyBvZiBNb2RlbCAyIGNhbWVyYXM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01vZGVsIDIgZG9lcyBub3QgaGF2ZSBoYXJkd2FyZSBjb250cmFzdCBjb250cm9sLiBDb3JyZXNwb25kaW5nIFY0TAorY29udHJvbCBpcyBpbXBsZW1lbnRlZCBpbiBzb2Z0d2FyZSwgd2hpY2ggaXMgbm90IHZlcnkgbmljZSB0byB5b3VyCitDUFUsIGJ1dCBhdCBsZWFzdCBpdCB3b3Jrcy4KKworVGhpcyBkcml2ZXIgcHJvdmlkZXMgMzUyeDI4OCBtb2RlIGJ5IHN3aXRjaGluZyB0aGUgY2FtZXJhIGludG8KK3F1YXNpLTM1MngyODggUkdCIG1vZGUgKDgwMCBLYml0cyBwZXIgZnJhbWUpIGVzc2VudGlhbGx5IGxpbWl0aW5nCit0aGlzIG1vZGUgdG8gMTAgZnJhbWVzIHBlciBzZWNvbmQgb3IgbGVzcywgaW4gaWRlYWwgY29uZGl0aW9ucyBvbgordGhlIGJ1cyAoVVNCIGlzIHNoYXJlZCwgYWZ0ZXIgYWxsKS4gVGhlIGZyYW1lIHJhdGUKK2hhcyB0byBiZSBwcm9ncmFtbWVkIHZlcnkgY29uc2VydmF0aXZlbHkuIEFkZGl0aW9uYWwgY29uY2VybiBpcyB0aGF0CitmcmFtZSByYXRlIGRlcGVuZHMgb24gYnJpZ2h0bmVzcyBzZXR0aW5nOyB0aGVyZWZvcmUgdGhlIHBpY3R1cmUgY2FuCitiZSBnb29kIGF0IG9uZSBicmlnaHRuZXNzIGFuZCBicm9rZW4gYXQgYW5vdGhlciEgSSBkaWQgbm90IHdhbnQgdG8gZml4Cit0aGUgZnJhbWUgcmF0ZSBhdCBzbG93ZXN0IHNldHRpbmcsIGJ1dCBJIGhhZCB0byBtb3ZlIGl0IHByZXR0eSBtdWNoIGRvd24KK3RoZSBzY2FsZSAoc28gdGhhdCBmcmFtZXJhdGUgb3B0aW9uIGJhcmVseSBtYXR0ZXJzKS4gSSBhbHNvIG5vdGljZWQgdGhhdAorY2FtZXJhIGFmdGVyIGZpcnN0IHBvd2VyaW5nIHVwIHByb2R1Y2VzIGZyYW1lcyBzbGlnaHRseSBmYXN0ZXIgdGhhbiBkdXJpbmcKK2NvbnNlY3V0aXZlIHVzZXMuIEFsbCB0aGlzIG1lYW5zIHRoYXQgaWYgeW91IHVzZSAzNTJ4Mjg4ICh3aGljaCBpcworZGVmYXVsdCksIGJlIHdhcm5lZCAtIHlvdSBtYXkgZW5jb3VudGVyIGJyb2tlbiBwaWN0dXJlIG9uIGZpcnN0IGNvbm5lY3Q7Cit0cnkgdG8gYWRqdXN0IGJyaWdodG5lc3MgLSBicmlnaHRlciBpbWFnZSBpcyBzbG93ZXIsIHNvIFVTQiB3aWxsIGJlIGFibGUKK3RvIHNlbmQgYWxsIGRhdGEuIEhvd2V2ZXIgaWYgeW91IHJlZ3VsYXJseSB1c2UgTW9kZWwgMiBjYW1lcmFzIHlvdSBtYXkKK3ByZWZlciAxNzZ4MTQ0IHdoaWNoIG1ha2VzIHBlcmZlY3RseSBnb29kIEk0MjAsIHdpdGggbm8gc2NhbGluZyBhbmQKK2xlc3NlciBkZW1hbmRzIG9uIFVTQiAoMzAwIEtiaXRzIHBlciBzZWNvbmQsIG9yIDI2IGZyYW1lcyBwZXIgc2Vjb25kKS4KKworQW5vdGhlciBzdHJhbmdlIGVmZmVjdCBvZiAzNTJ4Mjg4IG1vZGUgaXMgdGhlIGZpbmUgdmVydGljYWwgZ3JpZCB2aXNpYmxlCitvbiBzb21lIGNvbG9yZWQgc3VyZmFjZXMuIEkgYW0gc3VyZSBpdCBpcyBjYXVzZWQgYnkgbWUgbm90IHVuZGVyc3RhbmRpbmcKK3doYXQgdGhlIGNhbWVyYSBpcyB0cnlpbmcgdG8gc2F5LiBCbGFtZSB0cmFkZSBzZWNyZXRzIGZvciB0aGF0LgorCitUaGUgY2FtZXJhIHRoYXQgSSBoYWQgYWxzbyBoYXMgYSBoYXJkd2FyZSBxdWlyazogaWYgZGlzY29ubmVjdGVkLAoraXQgbmVlZHMgZmV3IG1pbnV0ZXMgdG8gInJlbGF4IiBiZWZvcmUgaXQgY2FuIGJlIHBsdWdnZWQgaW4gYWdhaW4KKyhwb29ybHkgZGVzaWduZWQgVVNCIHByb2Nlc3NvciByZXNldCBjaXJjdWl0PykKKworW1ZlbyBTdGluZ3JheSB3aXRoIFByb2R1Y3QgSUQgMHg4MDBDIGlzIGFsc28gTW9kZWwgMiwgYnV0IEkgaGF2ZW4ndAorb2JzZXJ2ZWQgdGhpcyBwYXJ0aWN1bGFyIGZsYXcgaW4gaXQuXQorCitNb2RlbCAyIGNhbWVyYSBjYW4gYmUgcHJvZ3JhbW1lZCBmb3IgdmVyeSBoaWdoIHNlbnNpdGl2aXR5IChldmVuIHN0YXJsaWdodAorbWF5IGJlIGVub3VnaCksIHRoaXMgbWFrZXMgaXQgY29udmVuaWVudCBmb3IgdGlua2VyaW5nIHdpdGguIFRoZSBkcml2ZXIKK2NvZGUgaGFzIGVub3VnaCBjb21tZW50cyB0byBoZWxwIGEgcHJvZ3JhbW1lciB0byB0d2VhayB0aGUgY2FtZXJhCithcyBzL2hlIGZlZWxzIG5lY2Vzc2FyeS4KKworV0hBVCBZT1UgTkVFRDoKKworLSBBIHN1cHBvcnRlZCBJQk0gUEMgKEMtaXQpIGNhbWVyYSAobW9kZWwgMSBvciAyKQorCistIEEgTGludXggYm94IHdpdGggVVNCIHN1cHBvcnQgKDIuMy8yLjQ7IDIuMiB3L2JhY2twb3J0IG1heSB3b3JrKQorCistIEEgVmlkZW80TGludXggY29tcGF0aWJsZSBmcmFtZSBncmFiYmVyIHByb2dyYW0gc3VjaCBhcyB4YXd0di4KKworSE9XIFRPIENPTVBJTEUgVEhFIERSSVZFUjoKKworWW91IG5lZWQgdG8gY29tcGlsZSB0aGUgZHJpdmVyIG9ubHkgaWYgeW91IGFyZSBhIGRldmVsb3Blcgorb3IgaWYgeW91IHdhbnQgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoZSBjb2RlLiBNb3N0IGRpc3RyaWJ1dGlvbnMKK3ByZWNvbXBpbGUgYWxsIG1vZHVsZXMsIHNvIHlvdSBjYW4gZ28gZGlyZWN0bHkgdG8gdGhlIG5leHQKK3NlY3Rpb24gIkhPVyBUTyBVU0UgVEhFIERSSVZFUiIuCisKK1RoZSBpYm1jYW0gZHJpdmVyIHVzZXMgdXNidmlkZW8gaGVscGVyIGxpYnJhcnkgKG1vZHVsZSksCitzbyBpZiB5b3UgYXJlIHN0dWR5aW5nIHRoZSBpYm1jYW0gY29kZSB5b3Ugd2lsbCBiZSBsZWQgdGhlcmUuCisKK1RoZSBkcml2ZXIgaXRzZWxmIGNvbnNpc3RzIG9mIG9ubHkgb25lIGZpbGUgaW4gdXNiLyBkaXJlY3Rvcnk6CitpYm1jYW0uYy4gVGhpcyBmaWxlIGlzIGluY2x1ZGVkIGludG8gdGhlIExpbnV4IGtlcm5lbCBidWlsZAorcHJvY2VzcyBpZiB5b3UgY29uZmlndXJlIHRoZSBrZXJuZWwgZm9yIENPTkZJR19VU0JfSUJNQ0FNLgorUnVuICJtYWtlIHhjb25maWciIGFuZCBpbiBVU0Igc2VjdGlvbiB5b3Ugd2lsbCBmaW5kIHRoZSBJQk0KK2NhbWVyYSBkcml2ZXIuIFNlbGVjdCBpdCwgc2F2ZSB0aGUgY29uZmlndXJhdGlvbiBhbmQgcmVjb21waWxlLgorCitIT1cgVE8gVVNFIFRIRSBEUklWRVI6CisKK0kgcmVjb21tZW5kIHRvIGNvbXBpbGUgZHJpdmVyIGFzIGEgbW9kdWxlLiBUaGlzIGdpdmVzIHlvdSBhbgorZWFzaWVyIGFjY2VzcyB0byBpdHMgY29uZmlndXJhdGlvbi4gVGhlIGNhbWVyYSBoYXMgbWFueSBtb3JlCitzZXR0aW5ncyB0aGFuIFY0TCBjYW4gb3BlcmF0ZSwgc28gc29tZSBzZXR0aW5ncyBhcmUgZG9uZSB1c2luZworbW9kdWxlIG9wdGlvbnMuCisKK1RvIGJlZ2luIHdpdGgsIG9uIG1vc3QgbW9kZXJuIExpbnV4IGRpc3RyaWJ1dGlvbnMgdGhlIGRyaXZlcgord2lsbCBiZSBhdXRvbWF0aWNhbGx5IGxvYWRlZCB3aGVuZXZlciB5b3UgcGx1ZyB0aGUgc3VwcG9ydGVkCitjYW1lcmEgaW4uIFRoZXJlZm9yZSwgeW91IGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcuIEhvd2V2ZXIKK2lmIHlvdSB3YW50IHRvIGV4cGVyaW1lbnQgd2l0aCBzb21lIG1vZHVsZSBwYXJhbWV0ZXJzIHRoZW4KK3lvdSBjYW4gbG9hZCBhbmQgdW5sb2FkIHRoZSBkcml2ZXIgbWFudWFsbHksIHdpdGggY2FtZXJhCitwbHVnZ2VkIGluIG9yIHVucGx1Z2dlZC4KKworVHlwaWNhbGx5IG1vZHVsZSBpcyBpbnN0YWxsZWQgd2l0aCBjb21tYW5kICdtb2Rwcm9iZScsIGxpa2UgdGhpczoKKworIyBtb2Rwcm9iZSBpYm1jYW0gZnJhbWVyYXRlPTEKKworQWx0ZXJuYXRpdmVseSB5b3UgY2FuIHVzZSAnaW5zbW9kJyBpbiBzaW1pbGFyIGZhc2hpb246CisKKyMgaW5zbW9kIC9saWIvbW9kdWxlcy8yLngueS91c2IvaWJtY2FtLm8gZnJhbWVyYXRlPTEKKworTW9kdWxlIGNhbiBiZSBpbnNlcnRlZCB3aXRoIGNhbWVyYSBjb25uZWN0ZWQgb3IgZGlzY29ubmVjdGVkLgorCitUaGUgZHJpdmVyIGNhbiBoYXZlIG9wdGlvbnMsIHRob3VnaCBzb21lIGRlZmF1bHRzIGFyZSBwcm92aWRlZC4KKworRHJpdmVyIG9wdGlvbnM6ICgqIGluZGljYXRlcyB0aGF0IG9wdGlvbiBpcyBtb2RlbC1kZXBlbmRlbnQpCisKK05hbWUgICAgICAgICAgICBUeXBlICAgICAgICAgICAgUmFuZ2UgW2RlZmF1bHRdIEV4YW1wbGUKKy0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLQorZGVidWcgICAgICAgICAgIEludGVnZXIgICAgICAgICAwLTkgWzBdICAgICAgICAgZGVidWc9MQorZmxhZ3MgICAgICAgICAgIEludGVnZXIgICAgICAgICAwLTB4RkYgWzBdICAgICAgZmxhZ3M9MHgwZAorZnJhbWVyYXRlICAgICAgIEludGVnZXIgICAgICAgICAwLTYgWzJdICAgICAgICAgZnJhbWVyYXRlPTEKK2h1ZV9jb3JyZWN0aW9uICBJbnRlZ2VyICAgICAgICAgMC0yNTUgWzEyOF0gICAgIGh1ZV9jb3JyZWN0aW9uPTExNQoraW5pdF9icmlnaHRuZXNzIEludGVnZXIgICAgICAgICAwLTI1NSBbMTI4XSAgICAgaW5pdF9icmlnaHRuZXNzPTEwMAoraW5pdF9jb250cmFzdCAgIEludGVnZXIgICAgICAgICAwLTI1NSBbMTkyXSAgICAgaW5pdF9jb250cmFzdD0yMDAKK2luaXRfY29sb3IgICAgICBJbnRlZ2VyICAgICAgICAgMC0yNTUgWzEyOF0gICAgIGluaXRfY29sb3I9MTMwCitpbml0X2h1ZSAgICAgICAgSW50ZWdlciAgICAgICAgIDAtMjU1IFsxMjhdICAgICBpbml0X2h1ZT0xMTUKK2xpZ2h0aW5nICAgICAgICBJbnRlZ2VyICAgICAgICAgMC0yKiBbMV0gICAgICAgIGxpZ2h0aW5nPTIKK3NoYXJwbmVzcyAgICAgICBJbnRlZ2VyICAgICAgICAgMC02KiBbNF0gICAgICAgIHNoYXJwbmVzcz0zCitzaXplICAgICAgICAgICAgSW50ZWdlciAgICAgICAgIDAtMiogWzJdICAgICAgICBzaXplPTEKKworT3B0aW9ucyBmb3IgTW9kZWwgMiBvbmx5OgorCitOYW1lICAgICAgICAgICAgVHlwZSAgICAgICAgICAgIFJhbmdlIFtkZWZhdWx0XSBFeGFtcGxlCistLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0KK2luaXRfbW9kZWwyX3JnICBJbnRlZ2VyICAgICAgICAgMC4uMjU1IFsweDcwXSAgIGluaXRfbW9kZWwyX3JnPTEyOAoraW5pdF9tb2RlbDJfcmcyIEludGVnZXIgICAgICAgICAwLi4yNTUgWzB4MmZdICAgaW5pdF9tb2RlbDJfcmcyPTUwCitpbml0X21vZGVsMl9zYXQgSW50ZWdlciAgICAgICAgIDAuLjI1NSBbMHgzNF0gICBpbml0X21vZGVsMl9zYXQ9NjUKK2luaXRfbW9kZWwyX3liICBJbnRlZ2VyICAgICAgICAgMC4uMjU1IFsweGEwXSAgIGluaXRfbW9kZWwyX3liPTIwMAorCitkZWJ1ZyAgICAgICAgICAgWW91IGRvbid0IG5lZWQgdGhpcyBvcHRpb24gdW5sZXNzIHlvdSBhcmUgYSBkZXZlbG9wZXIuCisgICAgICAgICAgICAgICAgSWYgeW91IGFyZSBhIGRldmVsb3BlciB0aGVuIHlvdSB3aWxsIHNlZSBpbiB0aGUgY29kZQorICAgICAgICAgICAgICAgIHdoYXQgdmFsdWVzIGRvIHdoYXQuIDA9b2ZmLgorCitmbGFncyAgICAgICAgICAgVGhpcyBpcyBhIGJpdCBtYXNrLCBhbmQgeW91IGNhbiBjb21iaW5lIGFueSBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICBiaXRzIHRvIHByb2R1Y2Ugd2hhdCB5b3Ugd2FudC4gVXN1YWxseSB5b3UgZG9uJ3Qgd2FudAorICAgICAgICAgICAgICAgIGFueSBvZiBleHRyYSBmZWF0dXJlcyB0aGlzIG9wdGlvbiBwcm92aWRlczoKKworICAgICAgICAgICAgICAgIEZMQUdTX1JFVFJZX1ZJRElPQ1NZTkMgIDEgIFRoaXMgYml0IGFsbG93cyB0byByZXRyeSBmYWlsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWSURJT0NTWU5DIGlvY3RscyB3aXRob3V0IGZhaWxpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2lsbCB3b3JrIHdpdGggeGF3dHYsIHdpbGwgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB4cmVhbHByb2R1Y2VyLiBEZWZhdWx0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IHNldC4KKyAgICAgICAgICAgICAgICBGTEFHU19NT05PQ0hST01FICAgICAgICAyICBBY3RpdmF0ZXMgbW9ub2Nocm9tZSAoYi93KSBtb2RlLgorICAgICAgICAgICAgICAgIEZMQUdTX0RJU1BMQVlfSElOVFMgICAgIDQgIFNob3dzIGNvbG9yZWQgcGl4ZWxzIHdoaWNoIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWdpYyBtZWFuaW5nIHRvIGRldmVsb3BlcnMuCisgICAgICAgICAgICAgICAgRkxBR1NfT1ZFUkxBWV9TVEFUUyAgICAgOCAgU2hvd3MgdGlueSBudW1iZXJzIG9uIHNjcmVlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VmdWwgb25seSBmb3IgZGVidWdnaW5nLgorICAgICAgICAgICAgICAgIEZMQUdTX0ZPUkNFX1RFU1RQQVRURVJOIDE2IFNob3dzIGJsdWUgc2NyZWVuIHdpdGggbnVtYmVycy4KKyAgICAgICAgICAgICAgICBGTEFHU19TRVBBUkFURV9GUkFNRVMgICAzMiBTaG93cyBlYWNoIGZyYW1lIHNlcGFyYXRlbHksIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgd2FzIHJlY2VpdmVkIGZyb20gdGhlIGNhbWVyYS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IChub3Qgc2V0KSBpcyB0byBtaXggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2VkaW5nIGZyYW1lIGluIHRvIGNvbXBlbnNhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Igb2NjYXNpb25hbCBsb3NzIG9mIElzb2MgZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIGhpZ2ggZnJhbWUgcmF0ZXMuCisgICAgICAgICAgICAgICAgRkxBR1NfQ0xFQU5fRlJBTUVTICAgICAgNjQgRm9yY2VzICJjbGVhbnVwIiBvZiBlYWNoIGZyYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3IgdG8gdXNlOyByZWxldmFudCBvbmx5IGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkxBR1NfU0VQQVJBVEVfRlJBTUVTIGlzIHNldC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IGlzIG5vdCB0byBjbGVhbiBmcmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBpcyBhIGxpdHRsZSBmYXN0ZXIgYnV0IG1heQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2UgZmxpY2tlciBpZiBmcmFtZSByYXRlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vIGhpZ2ggYW5kIElzb2MgZGF0YSBnZXRzIGxvc3QuCisgICAgICAgICAgICAgICAgRkxBR1NfTk9fREVDT0RJTkcgICAgICAxMjggVGhpcyBmbGFnIHR1cm5zIHRoZSB2aWRlbyBzdHJlYW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVyIG9mZiwgYW5kIGR1bXBzIHRoZSByYXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJc29jIGRhdGEgZnJvbSB0aGUgY2FtZXJhIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcmVhZGluZyBwcm9jZXNzLiBVc2VmdWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZlbG9wZXJzLCBidXQgbm90IHRvIHVzZXJzLgorCitmcmFtZXJhdGUgICAgICAgVGhpcyBzZXR0aW5nIGNvbnRyb2xzIGZyYW1lIHJhdGUgb2YgdGhlIGNhbWVyYS4gVGhpcyBpcworICAgICAgICAgICAgICAgIGFuIGFwcHJveGltYXRlIHNldHRpbmcgKGluIHRlcm1zIG9mICJ3b3JzdCIgLi4uICJiZXN0IikKKyAgICAgICAgICAgICAgICBiZWNhdXNlIGNhbWVyYSBjaGFuZ2VzIGZyYW1lIHJhdGUgZGVwZW5kaW5nIG9uIGFtb3VudAorICAgICAgICAgICAgICAgIG9mIGxpZ2h0IGF2YWlsYWJsZS4gU2V0dGluZyAwIGlzIHNsb3dlc3QsIDYgaXMgZmFzdGVzdC4KKyAgICAgICAgICAgICAgICBCZXdhcmUgLSBmYXN0IHNldHRpbmdzIGFyZSB2ZXJ5IGRlbWFuZGluZyBhbmQgbWF5IG5vdAorICAgICAgICAgICAgICAgIHdvcmsgd2VsbCB3aXRoIGFsbCB2aWRlbyBzaXplcy4gQmUgY29uc2VydmF0aXZlLgorCitodWVfY29ycmVjdGlvbiAgVGhpcyBoaWdobHkgb3B0aW9uYWwgc2V0dGluZyBhbGxvd3MgdG8gYWRqdXN0IHRoZQorICAgICAgICAgICAgICAgIGh1ZSBvZiB0aGUgaW1hZ2UgaW4gYSB3YXkgc2xpZ2h0bHkgZGlmZmVyZW50IGZyb20KKyAgICAgICAgICAgICAgICB3aGF0IHVzdWFsICJodWUiIGNvbnRyb2wgZG9lcy4gQm90aCBjb250cm9scyBhZmZlY3QKKyAgICAgICAgICAgICAgICBZVVYgY29sb3JzcGFjZTogcmVndWxhciAiaHVlIiBjb250cm9sIGFkanVzdHMgb25seQorICAgICAgICAgICAgICAgIFUgY29tcG9uZW50LCBhbmQgdGhpcyAiaHVlX2NvcnJlY3Rpb24iIG9wdGlvbiBzaW1pbGFybHkKKyAgICAgICAgICAgICAgICBhZGp1c3RzIG9ubHkgViBjb21wb25lbnQuIEhvd2V2ZXIgdXN1YWxseSBpdCBpcyBlbm91Z2gKKyAgICAgICAgICAgICAgICB0byB0d2VhayBvbmx5IFUgb3IgViB0byBjb21wZW5zYXRlIGZvciBjb2xvcmVkIGxpZ2h0IG9yCisgICAgICAgICAgICAgICAgY29sb3IgdGVtcGVyYXR1cmU7IHRoaXMgb3B0aW9uIHNpbXBseSBhbGxvd3MgbW9yZQorICAgICAgICAgICAgICAgIGNvbXBsaWNhdGVkIGNvcnJlY3Rpb24gd2hlbiBhbmQgaWYgaXQgaXMgbmVjZXNzYXJ5LgorCitpbml0X2JyaWdodG5lc3MgVGhlc2Ugc2V0dGluZ3Mgc3BlY2lmeSBfaW5pdGlhbF8gdmFsdWVzIHdoaWNoIHdpbGwgYmUKK2luaXRfY29udHJhc3QgICB1c2VkIHRvIHNldCB1cCB0aGUgY2FtZXJhLiBJZiB5b3VyIFY0TCBhcHBsaWNhdGlvbiBoYXMKK2luaXRfY29sb3IgICAgICBpdHMgb3duIGNvbnRyb2xzIHRvIGFkanVzdCB0aGUgcGljdHVyZSB0aGVuIHRoZXNlCitpbml0X2h1ZSAgICAgICAgY29udHJvbHMgd2lsbCBiZSB1c2VkIHRvby4gVGhlc2Ugb3B0aW9ucyBhbGxvdyB5b3UgdG8KKyAgICAgICAgICAgICAgICBwcmVjb25maWd1cmUgdGhlIGNhbWVyYSB3aGVuIGl0IGdldHMgY29ubmVjdGVkLCBiZWZvcmUKKyAgICAgICAgICAgICAgICBhbnkgVjRMIGFwcGxpY2F0aW9uIGNvbm5lY3RzIHRvIGl0LiBHb29kIGZvciB3ZWJjYW1zLgorCitpbml0X21vZGVsMl9yZyAgVGhlc2UgaW5pdGlhbCBzZXR0aW5ncyBhbHRlciBjb2xvciBiYWxhbmNlIG9mIHRoZQoraW5pdF9tb2RlbDJfcmcyIGNhbWVyYSBvbiBoYXJkd2FyZSBsZXZlbC4gQWxsIGZvdXIgc2V0dGluZ3MgbWF5IGJlIHVzZWQKK2luaXRfbW9kZWwyX3NhdCB0byB0dW5lIHRoZSBjYW1lcmEgdG8gc3BlY2lmaWMgbGlnaHRpbmcgY29uZGl0aW9ucy4gVGhlc2UKK2luaXRfbW9kZWwyX3liICBzZXR0aW5ncyBvbmx5IGFwcGx5IHRvIE1vZGVsIDIgY2FtZXJhcy4KKworbGlnaHRpbmcgICAgICAgIFRoaXMgb3B0aW9uIHNlbGVjdHMgb25lIG9mIHRocmVlIGhhcmR3YXJlLWRlZmluZWQKKyAgICAgICAgICAgICAgICBwaG90b3NlbnNpdGl2aXR5IHNldHRpbmdzIG9mIHRoZSBjYW1lcmEuIDA9YnJpZ2h0IGxpZ2h0LAorICAgICAgICAgICAgICAgIDE9TWVkaXVtIChkZWZhdWx0KSwgMj1Mb3cgbGlnaHQuIFRoaXMgc2V0dGluZyBhZmZlY3RzCisgICAgICAgICAgICAgICAgZnJhbWUgcmF0ZTogdGhlIGRpbW1lciB0aGUgbGlnaHRpbmcgdGhlIGxvd2VyIHRoZSBmcmFtZQorICAgICAgICAgICAgICAgIHJhdGUgKGJlY2F1c2UgbG9uZ2VyIGV4cG9zaXRpb24gdGltZSBpcyBuZWVkZWQpLiBUaGUKKyAgICAgICAgICAgICAgICBNb2RlbCAyIGNhbWVyYXMgYWxsb3cgdmFsdWVzIG1vcmUgdGhhbiAyIGZvciB0aGlzIG9wdGlvbiwKKyAgICAgICAgICAgICAgICB0aHVzIGVuYWJsaW5nIGV4dHJlbWVseSBoaWdoIHNlbnNpdGl2aXR5IGF0IGNvc3Qgb2YgZnJhbWUKKyAgICAgICAgICAgICAgICByYXRlLCBjb2xvciBzYXR1cmF0aW9uIGFuZCBpbWFnaW5nIHNlbnNvciBub2lzZS4KKworc2hhcnBuZXNzICAgICAgIFRoaXMgb3B0aW9uIGNvbnRyb2xzIHNtb290aGluZyAobm9pc2UgcmVkdWN0aW9uKQorICAgICAgICAgICAgICAgIG1hZGUgYnkgY2FtZXJhLiBTZXR0aW5nIDAgaXMgbW9zdCBzbW9vdGgsIHNldHRpbmcgNgorICAgICAgICAgICAgICAgIGlzIG1vc3Qgc2hhcnAuIEJlIGF3YXJlIHRoYXQgQ01PUyBzZW5zb3IgdXNlZCBpbiB0aGUKKyAgICAgICAgICAgICAgICBjYW1lcmEgaXMgcHJldHR5IG5vaXN5LCBzbyBpZiB5b3UgY2hvb3NlIDYgeW91IHdpbGwKKyAgICAgICAgICAgICAgICBiZSBncmVldGVkIHdpdGggInNub3d5IiBpbWFnZS4gRGVmYXVsdCBpcyA0LiBNb2RlbCAyCisgICAgICAgICAgICAgICAgY2FtZXJhcyBkbyBub3Qgc3VwcG9ydCB0aGlzIGZlYXR1cmUuCisKK3NpemUgICAgICAgICAgICBUaGlzIHNldHRpbmcgY2hvb3NlcyBvbmUgb2Ygc2V2ZXJhbCBpbWFnZSBzaXplcyB0aGF0IGFyZQorICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBieSB0aGlzIGRyaXZlci4gQ2FtZXJhcyBtYXkgc3VwcG9ydCBtb3JlLCBidXQKKyAgICAgICAgICAgICAgICBpdCdzIGRpZmZpY3VsdCB0byByZXZlcnNlLWVuZ2luZWVyIGFsbCBmb3JtYXRzLgorICAgICAgICAgICAgICAgIEZvbGxvd2luZyB2aWRlbyBzaXplcyBhcmUgc3VwcG9ydGVkOgorCisgICAgICAgICAgICAgICAgc2l6ZT0wICAgICAxMjh4OTYgIChNb2RlbCAxIG9ubHkpCisgICAgICAgICAgICAgICAgc2l6ZT0xICAgICAxNjB4MTIwCisgICAgICAgICAgICAgICAgc2l6ZT0yICAgICAxNzZ4MTQ0CisgICAgICAgICAgICAgICAgc2l6ZT0zICAgICAzMjB4MjQwIChNb2RlbCAyIG9ubHkpCisgICAgICAgICAgICAgICAgc2l6ZT00ICAgICAzNTJ4MjQwIChNb2RlbCAyIG9ubHkpCisgICAgICAgICAgICAgICAgc2l6ZT01ICAgICAzNTJ4Mjg4CisgICAgICAgICAgICAgICAgc2l6ZT02ICAgICA2NDB4NDgwIChNb2RlbCAzIG9ubHkpCisKKyAgICAgICAgICAgICAgICBUaGUgMzUyeDI4OCBpcyB0aGUgbmF0aXZlIHNpemUgb2YgdGhlIE1vZGVsIDEgc2Vuc29yCisgICAgICAgICAgICAgICAgYXJyYXksIHNvIGl0J3MgdGhlIGJlc3QgcmVzb2x1dGlvbiB0aGUgY2FtZXJhIGNhbgorICAgICAgICAgICAgICAgIHlpZWxkLiBUaGUgYmVzdCByZXNvbHV0aW9uIG9mIE1vZGVsIDIgaXMgMTc2eDE0NCwgYW5kCisgICAgICAgICAgICAgICAgbGFyZ2VyIGltYWdlcyBhcmUgcHJvZHVjZWQgYnkgc3RyZXRjaGluZyB0aGUgYml0bWFwLgorICAgICAgICAgICAgICAgIE1vZGVsIDMgaGFzIHNlbnNvciB3aXRoIDY0MHg0ODAgZ3JpZCwgYW5kIGl0IHdvcmtzIHRvbywKKyAgICAgICAgICAgICAgICBidXQgdGhlIGZyYW1lIHJhdGUgd2lsbCBiZSBleGNlcHRpb25hbGx5IGxvdyAoMS0yIEZQUyk7CisgICAgICAgICAgICAgICAgaXQgbWF5IGJlIHN0aWxsIE9LIGZvciBzb21lIGFwcGxpY2F0aW9ucywgbGlrZSBzZWN1cml0eS4KKyAgICAgICAgICAgICAgICBDaG9vc2UgdGhlIGltYWdlIHNpemUgeW91IG5lZWQuIFRoZSBzbWFsbGVyIGltYWdlIGNhbgorICAgICAgICAgICAgICAgIHN1cHBvcnQgZmFzdGVyIGZyYW1lIHJhdGUuIERlZmF1bHQgaXMgMzUyeDI4OC4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIHRoZSBUcm91Ymxlc2hvb3RpbmcgRkFRIHZpc2l0IHRoaXMgVVJMOgorCisgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5saW51eC11c2Iub3JnL2libWNhbS8KKworV0hBVCBORUVEUyBUTyBCRSBET05FOgorCistIFRoZSBidXR0b24gb24gdGhlIGNhbWVyYSBpcyBub3QgdXNlZC4gSSBkb24ndCBrbm93IGhvdyB0byBnZXQgdG8gaXQuCisgIEkga25vdyBub3cgaG93IHRvIHJlYWQgYnV0dG9uIG9uIE1vZGVsIDIsIGJ1dCB3aGF0IHRvIGRvIHdpdGggaXQ/CisKKy0gQ2FtZXJhIHJlcG9ydHMgaXRzIHN0YXR1cyBiYWNrIHRvIHRoZSBkcml2ZXI7IGhvd2V2ZXIgSSBkb24ndCBrbm93CisgIHdoYXQgcmV0dXJuZWQgZGF0YSBtZWFucy4gSWYgY2FtZXJhIGZhaWxzIGF0IHNvbWUgaW5pdGlhbGl6YXRpb24KKyAgc3RhZ2UgdGhlbiBzb21ldGhpbmcgc2hvdWxkIGJlIGRvbmUsIGFuZCBJIGRvbid0IGRvIHRoYXQgYmVjYXVzZQorICBJIGRvbid0IGV2ZW4ga25vdyB0aGF0IHNvbWUgY29tbWFuZCBmYWlsZWQuIFRoaXMgaXMgbW9zdGx5IE1vZGVsIDEKKyAgY29uY2VybiBiZWNhdXNlIE1vZGVsIDIgdXNlcyBkaWZmZXJlbnQgY29tbWFuZHMgd2hpY2ggZG8gbm90IHJldHVybgorICBzdGF0dXMgKGFuZCBzZWVtIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseSBldmVyeSB0aW1lKS4KKworLSBTb21lIGZsYXZvcnMgb2YgTW9kZWwgNCBOZXRDYW1lcmFzIHByb2R1Y2Ugb25seSBjb21wcmVzc2VkIHZpZGVvCisgIHN0cmVhbXMsIGFuZCBJIGRvbid0IGtub3cgaG93IHRvIGRlY29kZSB0aGVtLgorCitDUkVESVRTOgorCitUaGUgY29kZSBpcyBiYXNlZCBpbiBubyBzbWFsbCBwYXJ0IG9uIHRoZSBDUGlBIGRyaXZlciBieSBKb2hhbm5lcyBFcmRmZWx0LAorUmFuZHkgRHVubGFwLCBhbmQgb3RoZXJzLiBCaWcgdGhhbmtzIHRvIHRoZW0gZm9yIHRoZWlyIHBpb25lZXJpbmcgd29yayBvbiB0aGF0CithbmQgdGhlIFVTQiBzdGFjay4KKworSSBhbHNvIHRoYW5rIEpvaG4gTGlnaHRzZXkgZm9yIGhpcyBkb25hdGlvbiBvZiB0aGUgVmVvIFN0aW5ncmF5IGNhbWVyYS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvb3Y1MTEudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9vdjUxMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQyNzQxZQotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvb3Y1MTEudHh0CkBAIC0wLDAgKzEsMjg4IEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSZWFkbWUgZm9yIExpbnV4IGRldmljZSBkcml2ZXIgZm9yIHRoZSBPbW5pVmlzaW9uIE9WNTExIFVTQiB0byBjYW1lcmEgYnJpZGdlIElDCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0F1dGhvcjogTWFyayBNY0NsZWxsYW5kCitIb21lcGFnZTogaHR0cDovL2FscGhhLmR5bmRucy5vcmcvb3Y1MTEKKworSU5UUk9EVUNUSU9OOgorCitUaGlzIGlzIGEgZHJpdmVyIGZvciB0aGUgT1Y1MTEsIGEgVVNCLW9ubHkgY2hpcCB1c2VkIGluIG1hbnkgIndlYmNhbSIgZGV2aWNlcy4KK0FueSBjYW1lcmEgdXNpbmcgdGhlIE9WNTExL09WNTExKyBhbmQgdGhlIE9WNjYyMC9PVjc2MTAvMjAvMjBBRSBzaG91bGQgd29yay4KK1ZpZGVvIGNhcHR1cmUgZGV2aWNlcyB0aGF0IHVzZSB0aGUgUGhpbGlwcyBTQUE3MTExQSBkZWNvZGVyIGFsc28gd29yay4gSXQKK3N1cHBvcnRzIHN0cmVhbWluZyBhbmQgY2FwdHVyZSBvZiBjb2xvciBvciBtb25vY2hyb21lIHZpZGVvIHZpYSB0aGUgVmlkZW80TGludXgKK0FQSS4gTW9zdCBWNEwgYXBwcyBhcmUgY29tcGF0aWJsZSB3aXRoIGl0LiBNb3N0IHJlc29sdXRpb25zIHdpdGggYSB3aWR0aCBhbmQKK2hlaWdodCB0aGF0IGFyZSBhIG11bHRpcGxlIG9mIDggYXJlIHN1cHBvcnRlZC4KKworSWYgeW91IG5lZWQgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpc2l0IHRoZSBPVjUxMSBob21lcGFnZSBhdCB0aGUgYWJvdmUgVVJMLgorCitXSEFUIFlPVSBORUVEOgorCistIElmIHlvdSB3YW50IHRvIGhlbHAgd2l0aCB0aGUgZGV2ZWxvcG1lbnQsIGdldCB0aGUgY2hpcCdzIHNwZWNpZmljYXRpb24gZG9jcyBhdAorICBodHRwOi8vd3d3Lm92dC5jb20vb21uaXVzYnAuaHRtbAorCistIEEgVmlkZW80TGludXggY29tcGF0aWJsZSBmcmFtZSBncmFiYmVyIHByb2dyYW0gKEkgcmVjb21tZW5kIHZpZGNhdCBhbmQgeGF3dHYpCisgICAgdmlkY2F0IGlzIHBhcnQgb2YgdGhlIHczY2FtIHBhY2thZ2U6ICBodHRwOi8vbXB4LmZyZWVzaGVsbC5uZXQvCisgICAgeGF3dHYgaXMgYXZhaWxhYmxlIGF0OiAgaHR0cDovL2xpbnV4LmJ5dGVzZXgub3JnL3hhd3R2LworCitIT1cgVE8gVVNFIElUOgorCitOb3RlOiBUaGVzZSBhcmUgc2ltcGxpZmllZCBpbnN0cnVjdGlvbnMuIEZvciBjb21wbGV0ZSBpbnN0cnVjdGlvbnMgc2VlOgorCWh0dHA6Ly9hbHBoYS5keW5kbnMub3JnL292NTExL2luc3RhbGwuaHRtbAorCitZb3UgbXVzdCBoYXZlIGZpcnN0IGNvbXBpbGVkIFVTQiBzdXBwb3J0LCBzdXBwb3J0IGZvciB5b3VyIHNwZWNpZmljIFVTQiBob3N0Citjb250cm9sbGVyIChVSENJIG9yIE9IQ0kpLCBhbmQgVmlkZW80TGludXggc3VwcG9ydCBmb3IgeW91ciBrZXJuZWwgKEkgcmVjb21tZW5kCittYWtpbmcgdGhlbSBtb2R1bGVzLikgTWFrZSBzdXJlICJFbmZvcmNlIGJhbmR3aWR0aCBhbGxvY2F0aW9uIiBpcyBOT1QgZW5hYmxlZC4KKworTmV4dCwgKGFzIHJvb3QpOgorCisJbW9kcHJvYmUgdXNiY29yZQorCW1vZHByb2JlIHVzYi11aGNpICA8T1I+ICBtb2Rwcm9iZSB1c2Itb2hjaQorCW1vZHByb2JlIHZpZGVvZGV2CisJbW9kcHJvYmUgb3Y1MTEKKworSWYgaXQgaXMgbm90IGFscmVhZHkgdGhlcmUgKGl0IHVzdWFsbHkgaXMpLCBjcmVhdGUgdGhlIHZpZGVvIGRldmljZToKKworCW1rbm9kIC9kZXYvdmlkZW8wIGMgODEgMAorCitPcHRpb25hbGx5LCBzeW1saW5rIC9kZXYvdmlkZW8gdG8gL2Rldi92aWRlbzAKKworWW91IHdpbGwgaGF2ZSB0byBzZXQgcGVybWlzc2lvbnMgb24gdGhpcyBkZXZpY2UgdG8gYWxsb3cgeW91IHRvIHJlYWQvd3JpdGUKK2Zyb20gaXQ6CisKKwljaG1vZCA2NjYgL2Rldi92aWRlbworCWNobW9kIDY2NiAvZGV2L3ZpZGVvMCAoaWYgbmVjZXNzYXJ5KQorCitOb3cgeW91IGFyZSByZWFkeSB0byBydW4gYSB2aWRlbyBhcHAhIEJvdGggdmlkY2F0IGFuZCB4YXd0diB3b3JrIHdlbGwgZm9yIG1lCithdCA2NDB4NDgwLgorCitbVXNpbmcgdmlkY2F0Ol0KKworCXZpZGNhdCAtcyA2NDB4NDgwIC1wIGMgPiB0ZXN0LmpwZworCXh2aWV3IHRlc3QuanBnCisKK1tVc2luZyB4YXd0djpdCisKK0Zyb20gdGhlIG1haW4geGF3dHYgZGlyZWN0b3J5OgorCisJbWFrZSBjbGVhbgorCS4vY29uZmlndXJlCisJbWFrZQorCW1ha2UgaW5zdGFsbAorCitOb3cgeW91IHNob3VsZCBiZSBhYmxlIHRvIHJ1biB4YXd0di4gUmlnaHQgY2xpY2sgZm9yIHRoZSBvcHRpb25zIGRpYWxvZy4KKworTU9EVUxFIFBBUkFNRVRFUlM6CisKKyAgWW91IGNhbiBzZXQgdGhlc2Ugd2l0aDogIGluc21vZCBvdjUxMSBOQU1FPVZBTFVFCisgIFRoZXJlIGlzIGN1cnJlbnRseSBubyB3YXkgdG8gc2V0IHRoZXNlIG9uIGEgcGVyLWNhbWVyYSBiYXNpcy4KKworICBOQU1FOiBhdXRvYnJpZ2h0CisgIFRZUEU6IGludGVnZXIgKEJvb2xlYW4pCisgIERFRkFVTFQ6IDEKKyAgREVTQzogQnJpZ2h0bmVzcyBpcyBub3JtYWxseSB1bmRlciBhdXRvbWF0aWMgY29udHJvbCBhbmQgY2FuJ3QgYmUgc2V0CisgICAgICAgIG1hbnVhbGx5IGJ5IHRoZSB2aWRlbyBhcHAuIFNldCB0byAwIGZvciBtYW51YWwgY29udHJvbC4KKworICBOQU1FOiBhdXRvZ2FpbgorICBUWVBFOiBpbnRlZ2VyIChCb29sZWFuKQorICBERUZBVUxUOiAxCisgIERFU0M6IEF1dG8gR2FpbiBDb250cm9sIGVuYWJsZS4gVGhpcyBmZWF0dXJlIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCisKKyAgTkFNRTogYXV0b2V4cAorICBUWVBFOiBpbnRlZ2VyIChCb29sZWFuKQorICBERUZBVUxUOiAxCisgIERFU0M6IEF1dG8gRXhwb3N1cmUgQ29udHJvbCBlbmFibGUuIFRoaXMgZmVhdHVyZSBpcyBub3QgeWV0IGltcGxlbWVudGVkLgorCisgIE5BTUU6IGRlYnVnCisgIFRZUEU6IGludGVnZXIgKDAtNikKKyAgREVGQVVMVDogMworICBERVNDOiBTZXRzIHRoZSB0aHJlc2hvbGQgZm9yIHByaW50aW5nIGRlYnVnIG1lc3NhZ2VzLiBUaGUgaGlnaGVyIHRoZSB2YWx1ZSwKKyAgICAgICAgdGhlIG1vcmUgaXMgcHJpbnRlZC4gVGhlIGxldmVscyBhcmUgY3VtdWxhdGl2ZSwgYW5kIGFyZSBhcyBmb2xsb3dzOgorICAgICAgICAgIDA9bm8gZGVidWcgbWVzc2FnZXMKKyAgICAgICAgICAxPWluaXQvZGV0ZWN0aW9uL3VubG9hZCBhbmQgb3RoZXIgc2lnbmlmaWNhbnQgbWVzc2FnZXMKKyAgICAgICAgICAyPXNvbWUgd2FybmluZyBtZXNzYWdlcworICAgICAgICAgIDM9Y29uZmlnL2NvbnRyb2wgZnVuY3Rpb24gY2FsbHMKKyAgICAgICAgICA0PW1vc3QgZnVuY3Rpb24gY2FsbHMgYW5kIGRhdGEgcGFyc2luZyBtZXNzYWdlcworICAgICAgICAgIDU9aGlnaGx5IHJlcGV0aXRpdmUgbWVzZ3MKKworICBOQU1FOiBzbmFwc2hvdAorICBUWVBFOiBpbnRlZ2VyIChCb29sZWFuKQorICBERUZBVUxUOiAwCisgIERFU0M6IFNldCB0byAxIHRvIGVuYWJsZSBzbmFwc2hvdCBtb2RlLiByZWFkKCkvVklESU9DU1lOQyB3aWxsIGJsb2NrIHVudGlsCisJdGhlIHNuYXBzaG90IGJ1dHRvbiBpcyBwcmVzc2VkLiBOb3RlOiBlbmFibGluZyB0aGlzIG1vZGUgZGlzYWJsZXMKKwkvcHJvYy92aWRlby9vdjUxMS88bWlub3IjPi9idXR0b24KKworICBOQU1FOiBjYW1zCisgIFRZUEU6IGludGVnZXIgKDEtNCBmb3IgT1Y1MTEsIDEtMzEgZm9yIE9WNTExKykKKyAgREVGQVVMVDogMQorICBERVNDOiBOdW1iZXIgb2YgY2FtZXJhcyBhbGxvd2VkIHRvIHN0cmVhbSBzaW11bHRhbmVvdXNseSBvbiBhIHNpbmdsZSBidXMuCisgICAgICAgIFZhbHVlcyBoaWdoZXIgdGhhbiAxIHJlZHVjZSB0aGUgZGF0YSByYXRlIG9mIGVhY2ggY2FtZXJhLCBhbGxvd2luZyB0d28KKyAgICAgICAgb3IgbW9yZSB0byBiZSB1c2VkIGF0IG9uY2UuIElmIHlvdSBoYXZlIGEgY29tcGxpY2F0ZWQgc2V0dXAgaW52b2x2aW5nCisgICAgICAgIGJvdGggT1Y1MTEgYW5kIE9WNTExKyBjYW1lcmFzLCB0cmlhbC1hbmQtZXJyb3IgbWF5IGJlIG5lY2Vzc2FyeSBmb3IKKyAgICAgICAgZmluZGluZyB0aGUgb3B0aW11bSBzZXR0aW5nLgorCisgIE5BTUU6IGNvbXByZXNzCisgIFRZUEU6IGludGVnZXIgKEJvb2xlYW4pCisgIERFRkFVTFQ6IDAKKyAgREVTQzogU2V0IHRoaXMgdG8gMSB0byB0dXJuIG9uIHRoZSBjYW1lcmEncyBjb21wcmVzc2lvbiBlbmdpbmUuIFRoaXMgY2FuCisgICAgICAgIHBvdGVudGlhbGx5IGluY3JlYXNlIHRoZSBmcmFtZSByYXRlIGF0IHRoZSBleHBlbnNlIG9mIHF1YWxpdHksIGlmIHlvdQorICAgICAgICBoYXZlIGEgZmFzdCBDUFUuIFlvdSBtdXN0IGxvYWQgdGhlIHByb3BlciBjb21wcmVzc2lvbiBtb2R1bGUgZm9yIHlvdXIKKyAgICAgICAgY2FtZXJhIGJlZm9yZSBzdGFydGluZyB5b3VyIGFwcGxpY2F0aW9uIChvdjUxMV9kZWNvbXAgb3Igb3Y1MThfZGVjb21wKS4KKworICBOQU1FOiB0ZXN0cGF0CisgIFRZUEU6IGludGVnZXIgKEJvb2xlYW4pCisgIERFRkFVTFQ6IDAKKyAgREVTQzogVGhpcyBjb25maWd1cmVzIHRoZSBjYW1lcmEncyBzZW5zb3IgdG8gdHJhbnNtaXQgYSBjb2xvcmVkIHRlc3QtcGF0dGVybgorICAgICAgICBpbnN0ZWFkIG9mIGFuIGltYWdlLiBUaGlzIGRvZXMgbm90IHdvcmsgY29ycmVjdGx5IHlldC4KKworICBOQU1FOiBkdW1wcGl4CisgIFRZUEU6IGludGVnZXIgKDAtMikKKyAgREVGQVVMVDogMAorICBERVNDOiBEdW1wcyByYXcgcGl4ZWwgZGF0YSBhbmQgc2tpcHMgcG9zdC1wcm9jZXNzaW5nIGFuZCBmb3JtYXQgY29udmVyc2lvbi4KKwlJdCBpcyBmb3IgZGVidWdnaW5nIHB1cnBvc2VzIG9ubHkuIE9wdGlvbnMgYXJlOgorCQkwOiBEaXNhYmxlIChkZWZhdWx0KQorCQkxOiBEdW1wIHJhdyBkYXRhIGZyb20gY2FtZXJhLCBleGNsdWRpbmcgaGVhZGVycyBhbmQgdHJhaWxlcnMKKwkJMjogRHVtcHMgZGF0YSBleGFjdGx5IGFzIHJlY2VpdmVkIGZyb20gY2FtZXJhCisKKyAgTkFNRTogbGVkCisgIFRZUEU6IGludGVnZXIgKDAtMikKKyAgREVGQVVMVDogMSAoQWx3YXlzIG9uKQorICBERVNDOiBDb250cm9scyB3aGV0aGVyIHRoZSBMRUQgKHRoZSBsaXR0bGUgbGlnaHQpIG9uIHRoZSBmcm9udCBvZiB0aGUgY2FtZXJhCisJaXMgYWx3YXlzIG9mZiAoMCksIGFsd2F5cyBvbiAoMSksIG9yIG9ubHkgb24gd2hlbiBkcml2ZXIgaXMgb3BlbiAoMikuCisJVGhpcyBpcyBub3Qgc3VwcG9ydGVkIHdpdGggdGhlIE9WNTExLCBhbmQgbWlnaHQgb25seSB3b3JrIHdpdGggY2VydGFpbgorCWNhbWVyYXMgKG9uZXMgdGhhdCBhY3R1YWxseSBoYXZlIHRoZSBMRUQgd2lyZWQgdG8gdGhlIGNvbnRyb2wgcGluLCBhbmQKKwlub3QganVzdCBoYXJkLXdpcmVkIHRvIGJlIG9uIGFsbCB0aGUgdGltZSkuCisKKyAgTkFNRTogZHVtcF9icmlkZ2UKKyAgVFlQRTogaW50ZWdlciAoQm9vbGVhbikKKyAgREVGQVVMVDogMAorICBERVNDOiBEdW1wcyB0aGUgYnJpZGdlIChPVjUxMVsrXSBvciBPVjUxOFsrXSkgcmVnaXN0ZXIgdmFsdWVzIHRvIHRoZSBzeXN0ZW0KKwlsb2cuIE9ubHkgdXNlZnVsIGZvciBzZXJpb3VzIGRlYnVnZ2luZy9kZXZlbG9wbWVudCBwdXJwb3Nlcy4KKworICBOQU1FOiBkdW1wX3NlbnNvcgorICBUWVBFOiBpbnRlZ2VyIChCb29sZWFuKQorICBERUZBVUxUOiAwCisgIERFU0M6IER1bXBzIHRoZSBzZW5zb3IgcmVnaXN0ZXIgdmFsdWVzIHRvIHRoZSBzeXN0ZW0gbG9nLiBPbmx5IHVzZWZ1bCBmb3IKKwlzZXJpb3VzIGRlYnVnZ2luZy9kZXZlbG9wbWVudCBwdXJwb3Nlcy4KKworICBOQU1FOiBwcmludHBoCisgIFRZUEU6IGludGVnZXIgKEJvb2xlYW4pCisgIERFRkFVTFQ6IDAKKyAgREVTQzogU2V0dGluZyB0aGlzIHRvIDEgd2lsbCBkdW1wIHRoZSBmaXJzdCAxMiBieXRlcyBvZiBlYWNoIGlzb2MgZnJhbWUuIFRoaXMKKwlpcyBvbmx5IHVzZWZ1bCBpZiB5b3UgYXJlIHRyeWluZyB0byBkZWJ1ZyBwcm9ibGVtcyB3aXRoIHRoZSBpc29jIGRhdGEKKwlzdHJlYW0gKGkuZS46IGNhbWVyYSBpbml0aWFsaXplcywgYnV0IHZpZGNhdCBoYW5ncyB1bnRpbCBDdHJsLUMpLiBCZQorCXdhcm5lZCB0aGF0IHRoaXMgZHVtcHMgYSBsYXJnZSBudW1iZXIgb2YgbWVzc2FnZXMgdG8geW91ciBrZXJuZWwgbG9nLgorCisgIE5BTUU6IHBoeSwgcGh1diwgcHZ5LCBwdnV2LCBxaHksIHFodXYsIHF2eSwgcXZ1dgorICBUWVBFOiBpbnRlZ2VyICgwLTYzIGZvciBwaHkgYW5kIHBodXYsIDAtMjU1IGZvciByZXN0KQorICBERUZBVUxUOiBPVjUxMSBkZWZhdWx0IHZhbHVlcworICBERVNDOiBUaGVzZSBhcmUgcmVnaXN0ZXJzIDcwaCAtIDc3aCBvZiB0aGUgT1Y1MTEsIHdoaWNoIGNvbnRyb2wgdGhlCisJcHJlZGljdGlvbiByYW5nZXMgYW5kIHF1YW50aXphdGlvbiB0aHJlc2hvbGRzIG9mIHRoZSBjb21wcmVzc29yLCBmb3IKKwl0aGUgWSBhbmQgVVYgY2hhbm5lbHMgaW4gdGhlIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGRpcmVjdGlvbnMuIFNlZQorCXRoZSBPVjUxMSBvciBPVjUxMSsgZGF0YSBzaGVldCBmb3IgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbnMuIFRoZXNlCisJbm9ybWFsbHkgZG8gbm90IG5lZWQgdG8gYmUgY2hhbmdlZC4KKworICBOQU1FOiBsaWdodGZyZXEKKyAgVFlQRTogaW50ZWdlciAoMCwgNTAsIG9yIDYwKQorICBERUZBVUxUOiAwICh1c2Ugc2Vuc29yIGRlZmF1bHQpCisgIERFU0M6IFNldHMgdGhlIHNlbnNvciB0byBtYXRjaCB5b3VyIGxpZ2h0aW5nIGZyZXF1ZW5jeS4gVGhpcyBjYW4gcmVkdWNlIHRoZQorCWFwcGVhcmFuY2Ugb2YgImJhbmRpbmciLCBpLmUuIGhvcml6b250YWwgbGluZXMgb3Igd2F2ZXMgb2YgbGlnaHQgYW5kCisJZGFyayB0aGF0IGFyZSBvZnRlbiBjYXVzZWQgYnkgYXJ0aWZpY2lhbCBsaWdodGluZy4gVmFsaWQgdmFsdWVzIGFyZToKKwkJMCAtIFVzZSBkZWZhdWx0IChkZXBlbmRzIG9uIHNlbnNvciwgbW9zdCBsaWtlbHkgNjAgSHopCisJCTUwIC0gRm9yIEV1cm9wZWFuIGFuZCBBc2lhbiA1MCBIeiBwb3dlcgorCQk2MCAtIEZvciBBbWVyaWNhbiA2MCBIeiBwb3dlcgorCisgIE5BTUU6IGJhbmRpbmdmaWx0ZXIKKyAgVFlQRTogaW50ZWdlciAoQm9vbGVhbikKKyAgREVGQVVMVDogMCAob2ZmKQorICBERVNDOiBFbmFibGVzIHRoZSBzZW5zb3K0cyBiYW5kaW5nIGZpbHRlciBleHBvc3VyZSBhbGdvcml0aG0uIFRoaXMgcmVkdWNlcworCW9yIHN0YWJpbGl6ZXMgdGhlICJiYW5kaW5nIiBjYXVzZWQgYnkgc29tZSBhcnRpZmljaWFsIGxpZ2h0IHNvdXJjZXMKKwkoZXNwZWNpYWxseSBmbHVvcmVzY2VudCkuIFlvdSBtaWdodCBoYXZlIHRvIHNldCBsaWdodGZyZXEgY29ycmVjdGx5IGZvcgorCXRoaXMgdG8gd29yayByaWdodC4gQXMgYW4gYWRkZWQgYm9udXMsIHRoaXMgc29tZXRpbWVzIG1ha2VzIGl0CisJcG9zc2libGUgdG8gY2FwdHVyZSB5b3VyIG1vbml0b3K0cyBvdXRwdXQuCisKKyAgTkFNRTogZmFzdHNldAorICBUWVBFOiBpbnRlZ2VyIChCb29sZWFuKQorICBERUZBVUxUOiAwIChvZmYpCisgIERFU0M6IEFsbG93cyBwaWN0dXJlIHNldHRpbmdzIChicmlnaHRuZXNzLCBjb250cmFzdCwgY29sb3IsIGFuZCBodWUpIHRvIHRha2UKKwllZmZlY3QgaW1tZWRpYXRlbHksIGV2ZW4gaW4gdGhlIG1pZGRsZSBvZiBhIGZyYW1lLiBUaGlzIHJlZHVjZXMgdGhlCisJdGltZSB0byBjaGFuZ2Ugc2V0dGluZ3MsIGJ1dCBjYW4gcnVpbiBmcmFtZXMgZHVyaW5nIHRoZSBjaGFuZ2UuIE9ubHkKKwlhZmZlY3RzIE9tbmlWaXNpb24gc2Vuc29ycy4KKworICBOQU1FOiBmb3JjZV9wYWxldHRlCisgIFRZUEU6IGludGVnZXIgKEJvb2xlYW4pCisgIERFRkFVTFQ6IDAgKG9mZikKKyAgREVTQzogRm9yY2VzIHRoZSBwYWxldHRlIChjb2xvciBmb3JtYXQpIHRvIGEgc3BlY2lmaWMgdmFsdWUuIElmIGFuCisJYXBwbGljYXRpb24gcmVxdWVzdHMgYSBkaWZmZXJlbnQgcGFsZXR0ZSwgaXQgd2lsbCBiZSByZWplY3RlZCwgdGhlcmVieQorCWZvcmNpbmcgaXQgdG8gdHJ5IG90aGVycyB1bnRpbCBpdCBzdWNjZWVkcy4gVGhpcyBpcyB1c2VmdWwgZm9yIGZvcmNpbmcKKwlncmV5c2NhbGUgbW9kZSB3aXRoIGEgY29sb3IgY2FtZXJhLCBmb3IgZXhhbXBsZS4gU3VwcG9ydGVkIG1vZGVzIGFyZToKKwkJMCAgICAgICAgICAgICAgICAgICAgICAgICAgIChBbGxvd3MgYWxsIHRoZSBmb2xsb3dpbmcgZm9ybWF0cykKKwkJMSAgIFZJREVPX1BBTEVUVEVfR1JFWSAgICAgIChMaW5lYXIgZ3JleXNjYWxlKQorCQkxMCAgVklERU9fUEFMRVRURV9ZVVY0MjAgICAgKFlVViA0OjI6MCBQbGFuYXIpCisJCTE1ICBWSURFT19QQUxFVFRFX1lVVjQyMFAgICAoWVVWIDQ6MjowIFBsYW5hciwgc2FtZSBhcyAxMCkKKworICBOQU1FOiBiYWNrbGlnaHQKKyAgVFlQRTogaW50ZWdlciAoQm9vbGVhbikKKyAgREVGQVVMVDogMCAob2ZmKQorICBERVNDOiBTZXR0aW5nIHRoaXMgZmxhZyBjaGFuZ2VzIHRoZSBleHBvc3VyZSBhbGdvcml0aG0gZm9yIE9tbmlWaXNpb24gc2Vuc29ycworCXN1Y2ggdGhhdCBvYmplY3RzIGluIHRoZSBjYW1lcmEncyB2aWV3IChpLmUuIHlvdXIgaGVhZCkgY2FuIGJlIGNsZWFybHkKKwlzZWVuIHdoZW4gdGhleSBhcmUgaWxsdW1pbmF0ZWQgZnJvbSBiZWhpbmQuIEl0IHJlZHVjZXMgb3IgZWxpbWluYXRlcworCXRoZSBzZW5zb3IncyBhdXRvLWV4cG9zdXJlIGZ1bmN0aW9uLCBzbyBpdCBzaG91bGQgb25seSBiZSB1c2VkIHdoZW4KKwluZWVkZWQuIEFkZGl0aW9uYWxseSwgaXQgaXMgb25seSBzdXBwb3J0ZWQgd2l0aCB0aGUgT1Y2NjIwIGFuZCBPVjc2MjAuCisKKyAgTkFNRTogdW5pdF92aWRlbworICBUWVBFOiBVcCB0byAxNiBjb21tYS1zZXBhcmF0ZWQgaW50ZWdlcnMKKyAgREVGQVVMVDogMCwwLDAuLi4gKGF1dG9tYXRpY2FsbHkgYXNzaWduIHRoZSBuZXh0IGF2YWlsYWJsZSBtaW5vcihzKSkKKyAgREVTQzogWW91IGNhbiBzcGVjaWZ5IHVwIHRvIDE2IG1pbm9yIG51bWJlcnMgdG8gYmUgYXNzaWduZWQgdG8gb3Y1MTEgZGV2aWNlcy4KKwlGb3IgZXhhbXBsZSwgInVuaXRfdmlkZW89MSwzIiB3aWxsIG1ha2UgdGhlIGRyaXZlciB1c2UgL2Rldi92aWRlbzEgYW5kCisJL2Rldi92aWRlbzMgZm9yIHRoZSBmaXJzdCB0d28gZGV2aWNlcyBpdCBkZXRlY3RzLiBBZGRpdGlvbmFsIGRldmljZXMKKwl3aWxsIGJlIGFzc2lnbmVkIGF1dG9tYXRpY2FsbHkgc3RhcnRpbmcgYXQgdGhlIGZpcnN0IGF2YWlsYWJsZSBkZXZpY2UKKwlub2RlICgvZGV2L3ZpZGVvMCBpbiB0aGlzIGNhc2UpLiBOb3RlIHRoYXQgeW91IGNhbm5vdCBzcGVjaWZ5IDAgYXMgYQorCW1pbm9yIG51bWJlci4gVGhpcyBmZWF0dXJlIHJlcXVpcmVzIGtlcm5lbCB2ZXJzaW9uIDIuNC41IG9yIGhpZ2hlci4KKworICBOQU1FOiByZW1vdmVfemVyb3MKKyAgVFlQRTogaW50ZWdlciAoQm9vbGVhbikKKyAgREVGQVVMVDogMCAoZG8gbm90IHNraXAgYW55IGluY29taW5nIGRhdGEpCisgIERFU0M6IFNldHRpbmcgdGhpcyB0byAxIHdpbGwgcmVtb3ZlIHplcm8tcGFkZGluZyBmcm9tIGluY29taW5nIGRhdGEuIFRoaXMKKwl3aWxsIGNvbXBlbnNhdGUgZm9yIHRoZSBibG9ja3Mgb2YgY29ycnVwdGlvbiB0aGF0IGNhbiBhcHBlYXIgd2hlbiB0aGUKKwljYW1lcmEgY2Fubm90IGtlZXAgdXAgd2l0aCB0aGUgc3BlZWQgb2YgdGhlIFVTQiBidXMgKGVnLiBhdCBsb3cgZnJhbWUKKwlyZXNvbHV0aW9ucykuIFRoaXMgZmVhdHVyZSBpcyBhbHdheXMgZW5hYmxlZCB3aGVuIGNvbXByZXNzaW9uIGlzIG9uLgorCisgIE5BTUU6IG1pcnJvcgorICBUWVBFOiBpbnRlZ2VyIChCb29sZWFuKQorICBERUZBVUxUOiAwIChvZmYpCisgIERFU0M6IFNldHRpbmcgdGhpcyB0byAxIHdpbGwgcmV2ZXJzZSAoIm1pcnJvciIpIHRoZSBpbWFnZSBob3Jpem9udGFsbHkuIFRoaXMKKwltaWdodCBiZSBuZWNlc3NhcnkgaWYgeW91ciBjYW1lcmEgaGFzIGEgY3VzdG9tIGxlbnMgYXNzZW1ibHkuIFRoaXMgaGFzCisJbm8gZWZmZWN0IHdpdGggdmlkZW8gY2FwdHVyZSBkZXZpY2VzLgorCisgIE5BTUU6IG92NTE4X2NvbG9yCisgIFRZUEU6IGludGVnZXIgKEJvb2xlYW4pCisgIERFRkFVTFQ6IDAgKG9mZikKKyAgREVTQzogRW5hYmxlIE9WNTE4IGNvbG9yIHN1cHBvcnQuIFRoaXMgaXMgb2ZmIGJ5IGRlZmF1bHQgc2luY2UgaXQgZG9lc24ndAorCXdvcmsgbW9zdCBvZiB0aGUgdGltZS4gSWYgeW91IHdhbnQgdG8gdHJ5IGl0LCB5b3UgbXVzdCBhbHNvIGxvYWQKKwlvdjUxOF9kZWNvbXAgd2l0aCB0aGUgIm5vdXY9MCIgcGFyYW1ldGVyLiBJZiB5b3UgZ2V0IGltcHJvcGVyIGNvbG9ycyBvcgorCWRpYWdvbmFsIGxpbmVzIHRocm91Z2ggdGhlIGltYWdlLCByZXN0YXJ0IHlvdXIgdmlkZW8gYXBwIGFuZCB0cnkgYWdhaW4uCisJUmVwZWF0IGFzIG5lY2Vzc2FyeS4KKworV09SS0lORyBGRUFUVVJFUzoKKyBvIENvbG9yIHN0cmVhbWluZy9jYXB0dXJlIGF0IG1vc3Qgd2lkdGhzIGFuZCBoZWlnaHRzIHRoYXQgYXJlIG11bHRpcGxlcyBvZiA4LgorIG8gTW9ub2Nocm9tZSAodXNlIGZvcmNlX3BhbGV0dGU9MSB0byBlbmFibGUpCisgbyBTZXR0aW5nL2dldHRpbmcgb2Ygc2F0dXJhdGlvbiwgY29udHJhc3QsIGJyaWdodG5lc3MsIGFuZCBodWUgKG9ubHkgc29tZSBvZgorICAgdGhlbSB3b3JrIHRoZSBPVjc2MjAgYW5kIE9WNzYyMEFFKQorIG8gL3Byb2Mgc3RhdHVzIHJlcG9ydGluZworIG8gU0FBNzExMUEgdmlkZW8gY2FwdHVyZSBzdXBwb3J0IGF0IDMyMHgyNDAgYW5kIDY0MHg0ODAKKyBvIENvbXByZXNzaW9uIHN1cHBvcnQKKyBvIFNNUCBjb21wYXRpYmlsaXR5CisKK0hPVyBUTyBDT05UQUNUIE1FOgorCitZb3UgY2FuIGVtYWlsIG1lIGF0IG1hcmtAYWxwaGEuZHluZG5zLm9yZyAuIFBsZWFzZSBwcmVmaXggdGhlIHN1YmplY3QgbGluZQord2l0aCAiT1Y1MTE6ICIgc28gdGhhdCBJIGFtIGNlcnRhaW4gdG8gbm90aWNlIHlvdXIgbWVzc2FnZS4KKworQ1JFRElUUzoKKworVGhlIGNvZGUgaXMgYmFzZWQgaW4gbm8gc21hbGwgcGFydCBvbiB0aGUgQ1BpQSBkcml2ZXIgYnkgSm9oYW5uZXMgRXJkZmVsdCwKK1JhbmR5IER1bmxhcCwgYW5kIG90aGVycy4gQmlnIHRoYW5rcyB0byB0aGVtIGZvciB0aGVpciBwaW9uZWVyaW5nIHdvcmsgb24gdGhhdAorYW5kIHRoZSBVU0Igc3RhY2suIFRoYW5rcyB0byBCcmV0IFdhbGxhY2ggZm9yIGdldHRpbmcgY2FtZXJhIHJlZyBJTywgSVNPQywgYW5kCitpbWFnZSBjYXB0dXJlIHdvcmtpbmcuIFRoYW5rcyB0byBPcmlvbiBTa3kgTGF3bG9yLCBLZXZpbiBNb29yZSwgYW5kIENsYXVkaW8KK01hdHN1b2thIGZvciB0aGVpciB3b3JrIGFzIHdlbGwuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3NlNDAxLnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvc2U0MDEudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiOWQxYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3NlNDAxLnR4dApAQCAtMCwwICsxLDU0IEBACitMaW51eCBkcml2ZXIgZm9yIFNFNDAxIGJhc2VkIFVTQiBjYW1lcmFzCisKK0NvcHlyaWdodCwgMjAwMSwgSmVyb2VuIFZyZWVrZW4KKworCitJTlRST0RVQ1RJT046CisKK1RoZSBTRTQwMSBjaGlwIGlzIHRoZSB1c2VkIGluIGxvdy1jb3N0IHVzYiB3ZWJjYW1zLgorSXQgaXMgcHJvZHVjZWQgYnkgRW5kcG9pbnRzIEluYy4gKHd3dy5lbmRwb2ludHMuY29tKS4KK0l0IGludGVyZmFjZXMgZGlyZWN0bHkgdG8gYSBjbW9zIGltYWdlIHNlbnNvciBhbmQgVVNCLiBUaGUgb25seSBvdGhlciBtYWpvcgorcGFydCBpbiBhIHNlNDAxIGJhc2VkIGNhbWVyYSBpcyBhIGRyYW0gY2hpcC4KKworVGhlIGZvbGxvd2luZyBjYW1lcmFzIGFyZSBrbm93biB0byB3b3JrIHdpdGggdGhpcyBkcml2ZXI6CisKK0FveCBzZTQwMSAobm9uLWJyYW5kZWQpIGNhbWVyYXMKK1BoaWxpcHMgUFZDVjY2NSBVU0IgVkdBIHdlYmNhbSAnVmVzdGEgRnVuJworS2Vuc2luZ3RvbiBWaWRlb0NBTSBQQyBDYW1lcmEgTW9kZWwgNjcwMTQKK0tlbnNpbmd0b24gVmlkZW9DQU0gUEMgQ2FtZXJhIE1vZGVsIDY3MDE1CitLZW5zaW5ndG9uIFZpZGVvQ0FNIFBDIENhbWVyYSBNb2RlbCA2NzAxNgorS2Vuc2luZ3RvbiBWaWRlb0NBTSBQQyBDYW1lcmEgTW9kZWwgNjcwMTcKKworCitXSEFUIFlPVSBORUVEOgorCistCVVTQiBzdXBwb3J0CistCVZJREVPNExJTlVYIHN1cHBvcnQKKworTW9yZSBpbmZvcm1hdGlvbiBhYm91dCBVU0Igc3VwcG9ydCBmb3IgbGludXggY2FuIGJlIGZvdW5kIGF0OgoraHR0cDovL3d3dy5saW51eC11c2Iub3JnCisKKworTU9EVUxFIE9QVElPTlM6CisKK1doZW4gdGhlIGRyaXZlciBpcyBjb21waWxlZCBhcyBhIG1vZHVsZSB5b3UgY2FuIGFsc28gdXNlIHRoZSAnZmxpY2tlcmxlc3MnCitvcHRpb24uIFdpdGggaXQgZXhwb3N1cmUgaXMgbGltaXRlZCB0byB2YWx1ZXMgdGhhdCBkbyBub3QgaW50ZXJmZXJlIHdpdGggdGhlCituZXQgZnJlcXVlbmN5LiBWYWxpZCBvcHRpb25zIGZvciB0aGlzIG9wdGlvbiBhcmUgMCwgNTAgYW5kIDYwLiAoMD1kaXNhYmxlLAorNTA9NTBoeiwgNjA9NjBoeikKKworCitLTk9XTiBQUk9CTEVNUzoKKworVGhlIGRyaXZlciB3b3JrcyBmaW5lIHdpdGggdGhlIHVzYi1vaGNpIGFuZCB1aGNpIGhvc3QgY29udHJvbGxlciBkcml2ZXJzLAordGhlIGRlZmF1bHQgc2V0dGluZ3MgYWxzbyB3b3JrIHdpdGggdXNiLXVoY2kuIEJ1dCBzZW5kaW5nIG1vcmUgdGhhbiBvbmUgYnVsawordHJhbnNmZXIgYXQgYSB0aW1lIHdpdGggdXNiLXVoY2kgZG9lc24ndCB3b3JrIHlldC4KK1VzZXJzIG9mIHVzYi1vaGNpIGFuZCB1aGNpIGNhbiBzYWZlbHkgZW5sYXJnZSBTRTQwMV9OVU1TQlVGIGluIHNlNDAxLmggaW4KK29yZGVyIHRvIGluY3JlYXNlIHRoZSB0aHJvdWdocHV0IChhbmQgdGh1cyBmcmFtZXJhdGUpLgorCisKK0hFTFA6CisKK1RoZSBsYXRlc3QgaW5mbyBvbiB0aGlzIGRyaXZlciBjYW4gYmUgZm91bmQgYXQ6CitodHRwOi8vd3d3LmNoZWxsby5ubC9+ai52cmVla2VuL3NlNDAxLworQW5kIHF1ZXN0aW9ucyB0byBtZSBjYW4gYmUgc2VuZCB0bzoKK3BlMXJ4cUBhbXNhdC5vcmcKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvc245YzEwMi50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3NuOWMxMDIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MjkyMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3NuOWMxMDIudHh0CkBAIC0wLDAgKzEsNTE4IEBACisKKyAgICAgICAgICAgICAgICAgICAgICAgICBTTjlDMTB4IFBDIENhbWVyYSBDb250cm9sbGVycworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcml2ZXIgZm9yIExpbnV4CisgICAgICAgICAgICAgICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gRG9jdW1lbnRhdGlvbiAtCisKKworSW5kZXgKKz09PT09CisxLiAgQ29weXJpZ2h0CisyLiAgRGlzY2xhaW1lcgorMy4gIExpY2Vuc2UKKzQuICBPdmVydmlldyBhbmQgZmVhdHVyZXMKKzUuICBNb2R1bGUgZGVwZW5kZW5jaWVzCis2LiAgTW9kdWxlIGxvYWRpbmcKKzcuICBNb2R1bGUgcGFyYW1ldGVycworOC4gIE9wdGlvbmFsIGRldmljZSBjb250cm9sIHRocm91Z2ggInN5c2ZzIgorOS4gIFN1cHBvcnRlZCBkZXZpY2VzCisxMC4gTm90ZXMgZm9yIFY0TDIgYXBwbGljYXRpb24gZGV2ZWxvcGVycworMTEuIFZpZGVvIGZyYW1lIGZvcm1hdHMKKzEyLiBDb250YWN0IGluZm9ybWF0aW9uCisxMy4gQ3JlZGl0cworCisKKzEuIENvcHlyaWdodAorPT09PT09PT09PT09CitDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNiBieSBMdWNhIFJpc29saWEgPGx1Y2Eucmlzb2xpYUBzdHVkaW8udW5pYm8uaXQ+CisKKworMi4gRGlzY2xhaW1lcgorPT09PT09PT09PT09PQorU09OaVggaXMgYSB0cmFkZW1hcmsgb2YgU09OaVggVGVjaG5vbG9neSBDb21wYW55IExpbWl0ZWQsIGluYy4KK1RoaXMgc29mdHdhcmUgaXMgbm90IHNwb25zb3JlZCBvciBkZXZlbG9wZWQgYnkgU09OaVguCisKKworMy4gTGljZW5zZQorPT09PT09PT09PQorVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKK2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cit0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCitidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKK2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCitGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKworCis0LiBPdmVydmlldyBhbmQgZmVhdHVyZXMKKz09PT09PT09PT09PT09PT09PT09PT09PQorVGhpcyBkcml2ZXIgYXR0ZW1wdHMgdG8gc3VwcG9ydCB0aGUgdmlkZW8gaW50ZXJmYWNlIG9mIHRoZSBkZXZpY2VzIG1vdW50aW5nIHRoZQorU09OaVggU045QzEwMSwgU045QzEwMiBhbmQgU045QzEwMyBQQyBDYW1lcmEgQ29udHJvbGxlcnMuCisKK0l0J3Mgd29ydGggdG8gbm90ZSB0aGF0IFNPTmlYIGhhcyBuZXZlciBjb2xsYWJvcmF0ZWQgd2l0aCB0aGUgYXV0aG9yIGR1cmluZyB0aGUKK2RldmVsb3BtZW50IG9mIHRoaXMgcHJvamVjdCwgZGVzcGl0ZSBzZXZlcmFsIHJlcXVlc3RzIGZvciBlbm91Z2ggZGV0YWlsZWQKK3NwZWNpZmljYXRpb25zIG9mIHRoZSByZWdpc3RlciB0YWJsZXMsIGNvbXByZXNzaW9uIGVuZ2luZSBhbmQgdmlkZW8gZGF0YSBmb3JtYXQKK29mIHRoZSBhYm92ZSBjaGlwcy4gTmV2ZXJ0aGVsZXNzLCB0aGVzZSBpbmZvcm1hdGlvbnMgYXJlIG5vIGxvbmdlciBuZWNlc3NhcnksCitiZWNvdXNlIGFsbCB0aGUgYXNwZWN0cyByZWxhdGVkIHRvIHRoZXNlIGNoaXBzIGFyZSBrbm93biBhbmQgaGF2ZSBiZWVuCitkZXNjcmliZWQgaW4gZGV0YWlsIGluIHRoaXMgZG9jdW1lbnRhdGlvbi4KKworVGhlIGRyaXZlciByZWxpZXMgb24gdGhlIFZpZGVvNExpbnV4MiBhbmQgVVNCIGNvcmUgbW9kdWxlcy4gSXQgaGFzIGJlZW4KK2Rlc2lnbmVkIHRvIHJ1biBwcm9wZXJseSBvbiBTTVAgc3lzdGVtcyBhcyB3ZWxsLgorCitUaGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIFNOOUMxMHggZHJpdmVyIGNhbiBiZSBmb3VuZCBhdCB0aGUgZm9sbG93aW5nIFVSTDoKK2h0dHA6Ly93d3cubGludXgtcHJvamVjdHMub3JnLworCitTb21lIG9mIHRoZSBmZWF0dXJlcyBvZiB0aGUgZHJpdmVyIGFyZToKKworLSBmdWxsIGNvbXBsaWFuY2Ugd2l0aCB0aGUgVmlkZW80TGludXgyIEFQSSAoc2VlIGFsc28gIk5vdGVzIGZvciBWNEwyCisgIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMiIHBhcmFncmFwaCk7CistIGF2YWlsYWJsZSBtbWFwIG9yIHJlYWQvcG9sbCBtZXRob2RzIGZvciB2aWRlbyBzdHJlYW1pbmcgdGhyb3VnaCBpc29jaHJvbm91cworICBkYXRhIHRyYW5zZmVyczsKKy0gYXV0b21hdGljIGRldGVjdGlvbiBvZiBpbWFnZSBzZW5zb3I7CistIHN1cHBvcnQgZm9yIGJ1aWx0LWluIG1pY3JvcGhvbmUgaW50ZXJmYWNlOworLSBzdXBwb3J0IGZvciBhbnkgd2luZG93IHJlc29sdXRpb25zIGFuZCBvcHRpb25hbCBwYW5uaW5nIHdpdGhpbiB0aGUgbWF4aW11bQorICBwaXhlbCBhcmVhIG9mIGltYWdlIHNlbnNvcjsKKy0gaW1hZ2UgZG93bnNjYWxpbmcgd2l0aCBhcmJpdHJhcnkgc2NhbGluZyBmYWN0b3JzIGZyb20gMSwgMiBhbmQgNCBpbiBib3RoCisgIGRpcmVjdGlvbnMgKHNlZSAiTm90ZXMgZm9yIFY0TDIgYXBwbGljYXRpb24gZGV2ZWxvcGVycyIgcGFyYWdyYXBoKTsKKy0gdHdvIGRpZmZlcmVudCB2aWRlbyBmb3JtYXRzIGZvciB1bmNvbXByZXNzZWQgb3IgY29tcHJlc3NlZCBkYXRhIGluIGxvdyBvcgorICBoaWdoIGNvbXByZXNzaW9uIHF1YWxpdHkgKHNlZSBhbHNvICJOb3RlcyBmb3IgVjRMMiBhcHBsaWNhdGlvbiBkZXZlbG9wZXJzIgorICBhbmQgIlZpZGVvIGZyYW1lIGZvcm1hdHMiIHBhcmFncmFwaHMpOworLSBmdWxsIHN1cHBvcnQgZm9yIHRoZSBjYXBhYmlsaXRpZXMgb2YgbWFueSBvZiB0aGUgcG9zc2libGUgaW1hZ2Ugc2Vuc29ycyB0aGF0CisgIGNhbiBiZSBjb25uZWN0ZWQgdG8gdGhlIFNOOUMxMHggYnJpZGdlcywgaW5jbHVkaW5nLCBmb3IgaXN0YW5jZSwgcmVkLCBncmVlbiwKKyAgYmx1ZSBhbmQgZ2xvYmFsIGdhaW4gYWRqdXN0bWVudHMgYW5kIGV4cG9zdXJlIChzZWUgIlN1cHBvcnRlZCBkZXZpY2VzIgorICBwYXJhZ3JhcGggZm9yIGRldGFpbHMpOworLSB1c2Ugb2YgZGVmYXVsdCBjb2xvciBzZXR0aW5ncyBmb3Igc3VubGlnaHQgY29uZGl0aW9uczsKKy0gZHluYW1pYyBJL08gaW50ZXJmYWNlIGZvciBib3RoIFNOOUMxMHggYW5kIGltYWdlIHNlbnNvciBjb250cm9sIGFuZAorICBtb25pdG9yaW5nIChzZWUgIk9wdGlvbmFsIGRldmljZSBjb250cm9sIHRocm91Z2ggJ3N5c2ZzJyIgcGFyYWdyYXBoKTsKKy0gZHluYW1pYyBkcml2ZXIgY29udHJvbCB0aGFua3MgdG8gdmFyaW91cyBtb2R1bGUgcGFyYW1ldGVycyAoc2VlICJNb2R1bGUKKyAgcGFyYW1ldGVycyIgcGFyYWdyYXBoKTsKKy0gdXAgdG8gNjQgY2FtZXJhcyBjYW4gYmUgaGFuZGxlZCBhdCB0aGUgc2FtZSB0aW1lOyB0aGV5IGNhbiBiZSBjb25uZWN0ZWQgYW5kCisgIGRpc2Nvbm5lY3RlZCBmcm9tIHRoZSBob3N0IG1hbnkgdGltZXMgd2l0aG91dCB0dXJuaW5nIG9mZiB0aGUgY29tcHV0ZXIsIGlmCisgIHRoZSBzeXN0ZW0gc3VwcG9ydHMgaG90cGx1Z2dpbmc7CistIG5vIGtub3duIGJ1Z3MuCisKKworNS4gTW9kdWxlIGRlcGVuZGVuY2llcworPT09PT09PT09PT09PT09PT09PT09PQorRm9yIGl0IHRvIHdvcmsgcHJvcGVybHksIHRoZSBkcml2ZXIgbmVlZHMga2VybmVsIHN1cHBvcnQgZm9yIFZpZGVvNExpbnV4IGFuZAorVVNCLgorCitUaGUgZm9sbG93aW5nIG9wdGlvbnMgb2YgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGUgbXVzdCBiZSBlbmFibGVkIGFuZAorY29ycmVzcG9uZGluZyBtb2R1bGVzIG11c3QgYmUgY29tcGlsZWQ6CisKKwkjIE11bHRpbWVkaWEgZGV2aWNlcworCSMKKwlDT05GSUdfVklERU9fREVWPW0KKworVG8gZW5hYmxlIGFkdmFuY2VkIGRlYnVnZ2luZyBmdW5jdGlvbmFsaXR5IG9uIHRoZSBkZXZpY2UgdGhyb3VnaCAvc3lzZnM6CisKKwkjIE11bHRpbWVkaWEgZGV2aWNlcworCSMKKwlDT05GSUdfVklERU9fQURWX0RFQlVHPXkKKworCSMgVVNCIHN1cHBvcnQKKwkjCisJQ09ORklHX1VTQj1tCisKK0luIGFkZGl0aW9uLCBkZXBlbmRpbmcgb24gdGhlIGhhcmR3YXJlIGJlaW5nIHVzZWQsIHRoZSBtb2R1bGVzIGJlbG93IGFyZQorbmVjZXNzYXJ5OgorCisJIyBVU0IgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKKwkjCisJQ09ORklHX1VTQl9FSENJX0hDRD1tCisJQ09ORklHX1VTQl9VSENJX0hDRD1tCisJQ09ORklHX1VTQl9PSENJX0hDRD1tCisKK1RoZSBTTjlDMTAzIGNvbnRyb2xsZXIgYWxzbyBwcm92aWRlcyBhIGJ1aWx0LWluIG1pY3JvcGhvbmUgaW50ZXJmYWNlLiBJdCBpcworc3VwcG9ydGVkIGJ5IHRoZSBVU0IgQXVkaW8gZHJpdmVyIHRoYW5rcyB0byB0aGUgQUxTQSBBUEk6CisKKwkjIFNvdW5kCisJIworCUNPTkZJR19TT1VORD15CisKKwkjIEFkdmFuY2VkIExpbnV4IFNvdW5kIEFyY2hpdGVjdHVyZQorCSMKKwlDT05GSUdfU05EPW0KKworCSMgVVNCIGRldmljZXMKKwkjCisJQ09ORklHX1NORF9VU0JfQVVESU89bQorCitBbmQgZmluYWxseToKKworCSMgVVNCIE11bHRpbWVkaWEgZGV2aWNlcworCSMKKwlDT05GSUdfVVNCX1NOOUMxMDI9bQorCisKKzYuIE1vZHVsZSBsb2FkaW5nCis9PT09PT09PT09PT09PT09PQorVG8gdXNlIHRoZSBkcml2ZXIsIGl0IGlzIG5lY2Vzc2FyeSB0byBsb2FkIHRoZSAic245YzEwMiIgbW9kdWxlIGludG8gbWVtb3J5CithZnRlciBldmVyeSBvdGhlciBtb2R1bGUgcmVxdWlyZWQ6ICJ2aWRlb2RldiIsICJ1c2Jjb3JlIiBhbmQsIGRlcGVuZGluZyBvbgordGhlIFVTQiBob3N0IGNvbnRyb2xsZXIgeW91IGhhdmUsICJlaGNpLWhjZCIsICJ1aGNpLWhjZCIgb3IgIm9oY2ktaGNkIi4KKworTG9hZGluZyBjYW4gYmUgZG9uZSBhcyBzaG93biBiZWxvdzoKKworCVtyb290QGxvY2FsaG9zdCBob21lXSMgbW9kcHJvYmUgc245YzEwMgorCitBdCB0aGlzIHBvaW50IHRoZSBkZXZpY2VzIHNob3VsZCBiZSByZWNvZ25pemVkLiBZb3UgY2FuIGludm9rZSAiZG1lc2ciIHRvCithbmFseXplIGtlcm5lbCBtZXNzYWdlcyBhbmQgdmVyaWZ5IHRoYXQgdGhlIGxvYWRpbmcgcHJvY2VzcyBoYXMgZ29uZSB3ZWxsOgorCisJW3VzZXJAbG9jYWxob3N0IGhvbWVdJCBkbWVzZworCisKKzcuIE1vZHVsZSBwYXJhbWV0ZXJzCis9PT09PT09PT09PT09PT09PT09PQorTW9kdWxlIHBhcmFtZXRlcnMgYXJlIGxpc3RlZCBiZWxvdzoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05hbWU6ICAgICAgICAgICB2aWRlb19ucgorVHlwZTogICAgICAgICAgIHNob3J0IGFycmF5IChtaW4gPSAwLCBtYXggPSA2NCkKK1N5bnRheDogICAgICAgICA8LTF8blssLi4uXT4KK0Rlc2NyaXB0aW9uOiAgICBTcGVjaWZ5IFY0TDIgbWlub3IgbW9kZSBudW1iZXI6CisgICAgICAgICAgICAgICAgLTEgPSB1c2UgbmV4dCBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICAgbiA9IHVzZSBtaW5vciBudW1iZXIgbgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc3BlY2lmeSB1cCB0byA2NCBjYW1lcmFzIHRoaXMgd2F5LgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlOgorICAgICAgICAgICAgICAgIHZpZGVvX25yPS0xLDIsLTEgd291bGQgYXNzaWduIG1pbm9yIG51bWJlciAyIHRvIHRoZSBzZWNvbmQKKyAgICAgICAgICAgICAgICByZWNvZ25pemVkIGNhbWVyYSBhbmQgdXNlIGF1dG8gZm9yIHRoZSBmaXJzdCBvbmUgYW5kIGZvciBldmVyeQorICAgICAgICAgICAgICAgIG90aGVyIGNhbWVyYS4KK0RlZmF1bHQ6ICAgICAgICAtMQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmFtZTogICAgICAgICAgIGZvcmNlX211bm1hcAorVHlwZTogICAgICAgICAgIGJvb2wgYXJyYXkgKG1pbiA9IDAsIG1heCA9IDY0KQorU3ludGF4OiAgICAgICAgIDwwfDFbLC4uLl0+CitEZXNjcmlwdGlvbjogICAgRm9yY2UgdGhlIGFwcGxpY2F0aW9uIHRvIHVubWFwIHByZXZpb3VzbHkgbWFwcGVkIGJ1ZmZlciBtZW1vcnkKKyAgICAgICAgICAgICAgICBiZWZvcmUgY2FsbGluZyBhbnkgVklESU9DX1NfQ1JPUCBvciBWSURJT0NfU19GTVQgaW9jdGwncy4gTm90CisgICAgICAgICAgICAgICAgYWxsIHRoZSBhcHBsaWNhdGlvbnMgc3VwcG9ydCB0aGlzIGZlYXR1cmUuIFRoaXMgcGFyYW1ldGVyIGlzCisgICAgICAgICAgICAgICAgc3BlY2lmaWMgZm9yIGVhY2ggZGV0ZWN0ZWQgY2FtZXJhLgorICAgICAgICAgICAgICAgIDAgPSBkbyBub3QgZm9yY2UgbWVtb3J5IHVubWFwcGluZworICAgICAgICAgICAgICAgIDEgPSBmb3JjZSBtZW1vcnkgdW5tYXBwaW5nIChzYXZlIG1lbW9yeSkKK0RlZmF1bHQ6ICAgICAgICAwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOYW1lOiAgICAgICAgICAgZnJhbWVfdGltZW91dAorVHlwZTogICAgICAgICAgIHVpbnQgYXJyYXkgKG1pbiA9IDAsIG1heCA9IDY0KQorU3ludGF4OiAgICAgICAgIDxuWywuLi5dPgorRGVzY3JpcHRpb246ICAgIFRpbWVvdXQgZm9yIGEgdmlkZW8gZnJhbWUgaW4gc2Vjb25kcy4gVGhpcyBwYXJhbWV0ZXIgaXMKKyAgICAgICAgICAgICAgICBzcGVjaWZpYyBmb3IgZWFjaCBkZXRlY3RlZCBjYW1lcmEuIFRoaXMgcGFyYW1ldGVyIGNhbiBiZQorICAgICAgICAgICAgICAgIGNoYW5nZWQgYXQgcnVudGltZSB0aGFua3MgdG8gdGhlIC9zeXMgZmlsZXN5c3RlbSBpbnRlcmZhY2UuCitEZWZhdWx0OiAgICAgICAgMgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmFtZTogICAgICAgICAgIGRlYnVnCitUeXBlOiAgICAgICAgICAgdXNob3J0CitTeW50YXg6ICAgICAgICAgPG4+CitEZXNjcmlwdGlvbjogICAgRGVidWdnaW5nIGluZm9ybWF0aW9uIGxldmVsLCBmcm9tIDAgdG8gMzoKKyAgICAgICAgICAgICAgICAwID0gbm9uZSAodXNlIGNhcmVmdWxseSkKKyAgICAgICAgICAgICAgICAxID0gY3JpdGljYWwgZXJyb3JzCisgICAgICAgICAgICAgICAgMiA9IHNpZ25pZmljYW50IGluZm9ybWF0aW9ucworICAgICAgICAgICAgICAgIDMgPSBtb3JlIHZlcmJvc2UgbWVzc2FnZXMKKyAgICAgICAgICAgICAgICBMZXZlbCAzIGlzIHVzZWZ1bCBmb3IgdGVzdGluZyBvbmx5LCB3aGVuIG9ubHkgb25lIGRldmljZQorICAgICAgICAgICAgICAgIGlzIHVzZWQuIEl0IGFsc28gc2hvd3Mgc29tZSBtb3JlIGluZm9ybWF0aW9ucyBhYm91dCB0aGUKKyAgICAgICAgICAgICAgICBoYXJkd2FyZSBiZWluZyBkZXRlY3RlZC4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGNoYW5nZWQgYXQKKyAgICAgICAgICAgICAgICBydW50aW1lIHRoYW5rcyB0byB0aGUgL3N5cyBmaWxlc3lzdGVtIGludGVyZmFjZS4KK0RlZmF1bHQ6ICAgICAgICAyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworOC4gT3B0aW9uYWwgZGV2aWNlIGNvbnRyb2wgdGhyb3VnaCAic3lzZnMiIFsxXQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitJZiB0aGUga2VybmVsIGhhcyBiZWVuIGNvbXBpbGVkIHdpdGggdGhlIENPTkZJR19WSURFT19BRFZfREVCVUcgb3B0aW9uIGVuYWJsZWQsCitpdCBpcyBwb3NzaWJsZSB0byByZWFkIGFuZCB3cml0ZSBib3RoIHRoZSBTTjlDMTB4IGFuZCB0aGUgaW1hZ2Ugc2Vuc29yCityZWdpc3RlcnMgYnkgdXNpbmcgdGhlICJzeXNmcyIgZmlsZXN5c3RlbSBpbnRlcmZhY2UuCisKK0V2ZXJ5IHRpbWUgYSBzdXBwb3J0ZWQgZGV2aWNlIGlzIHJlY29nbml6ZWQsIGEgd3JpdGUtb25seSBmaWxlIG5hbWVkICJncmVlbiIgaXMKK2NyZWF0ZWQgaW4gdGhlIC9zeXMvY2xhc3MvdmlkZW80bGludXgvdmlkZW9YIGRpcmVjdG9yeS4gWW91IGNhbiBzZXQgdGhlIGdyZWVuCitjaGFubmVsJ3MgZ2FpbiBieSB3cml0aW5nIHRoZSBkZXNpcmVkIHZhbHVlIHRvIGl0LiBUaGUgdmFsdWUgbWF5IHJhbmdlIGZyb20gMAordG8gMTUgZm9yIFNOOUMxMDEgb3IgU045QzEwMiBicmlkZ2VzLCBmcm9tIDAgdG8gMTI3IGZvciBTTjlDMTAzIGJyaWRnZXMuCitTaW1pbGFybHksIG9ubHkgZm9yIFNOOUMxMDMgY29udHJvbGxlcnMsIGJsdWUgYW5kIHJlZCBnYWluIGNvbnRyb2wgZmlsZXMgYXJlCithdmFpbGFibGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LCBmb3Igd2hpY2ggYWNjZXB0ZWQgdmFsdWVzIG1heSByYW5nZSBmcm9tIDAgdG8KKzEyNy4KKworVGhlcmUgYXJlIG90aGVyIGZvdXIgZW50cmllcyBpbiB0aGUgZGlyZWN0b3J5IGFib3ZlIGZvciBlYWNoIHJlZ2lzdGVyZWQgY2FtZXJhOgorInJlZyIsICJ2YWwiLCAiaTJjX3JlZyIgYW5kICJpMmNfdmFsIi4gVGhlIGZpcnN0IHR3byBmaWxlcyBjb250cm9sIHRoZQorU045QzEweCBicmlkZ2UsIHdoaWxlIHRoZSBvdGhlciB0d28gY29udHJvbCB0aGUgc2Vuc29yIGNoaXAuICJyZWciIGFuZAorImkyY19yZWciIGhvbGQgdGhlIHZhbHVlcyBvZiB0aGUgY3VycmVudCByZWdpc3RlciBpbmRleCB3aGVyZSB0aGUgZm9sbG93aW5nCityZWFkaW5nL3dyaXRpbmcgb3BlcmF0aW9ucyBhcmUgYWRkcmVzc2VkIGF0IHRocm91Z2ggInZhbCIgYW5kICJpMmNfdmFsIi4gVGhlaXIKK3VzZSBpcyBub3QgaW50ZW5kZWQgZm9yIGVuZC11c2Vycy4gTm90ZSB0aGF0ICJpMmNfcmVnIiBhbmQgImkyY192YWwiIHdpbGwgbm90CitiZSBjcmVhdGVkIGlmIHRoZSBzZW5zb3IgZG9lcyBub3QgYWN0dWFsbHkgc3VwcG9ydCB0aGUgc3RhbmRhcmQgSTJDIHByb3RvY29sIG9yCitpdHMgcmVnaXN0ZXJzIGFyZSBub3QgOC1iaXQgbG9uZy4gQWxzbywgcmVtZW1iZXIgdGhhdCB5b3UgbXVzdCBiZSBsb2dnZWQgaW4gYXMKK3Jvb3QgYmVmb3JlIHdyaXRpbmcgdG8gdGhlbS4KKworQXMgYW4gZXhhbXBsZSwgc3VwcG9zZSB3ZSB3ZXJlIHRvIHdhbnQgdG8gcmVhZCB0aGUgdmFsdWUgY29udGFpbmVkIGluIHRoZQorcmVnaXN0ZXIgbnVtYmVyIDEgb2YgdGhlIHNlbnNvciByZWdpc3RlciB0YWJsZSAtIHdoaWNoIGlzIHVzdWFsbHkgdGhlIHByb2R1Y3QKK2lkZW50aWZpZXIgLSBvZiB0aGUgY2FtZXJhIHJlZ2lzdGVyZWQgYXMgIi9kZXYvdmlkZW8wIjoKKworCVtyb290QGxvY2FsaG9zdCAjXSBjZCAvc3lzL2NsYXNzL3ZpZGVvNGxpbnV4L3ZpZGVvMAorCVtyb290QGxvY2FsaG9zdCAjXSBlY2hvIDEgPiBpMmNfcmVnCisJW3Jvb3RAbG9jYWxob3N0ICNdIGNhdCBpMmNfdmFsCisKK05vdGUgdGhhdCAiY2F0IiB3aWxsIGZhaWwgaWYgc2Vuc29yIHJlZ2lzdGVycyBjYW5ub3QgYmUgcmVhZC4KKworTm93IGxldCdzIHNldCB0aGUgZ3JlZW4gZ2FpbidzIHJlZ2lzdGVyIG9mIHRoZSBTTjlDMTAxIG9yIFNOOUMxMDIgY2hpcHMgdG8gMjoKKworCVtyb290QGxvY2FsaG9zdCAjXSBlY2hvIDB4MTEgPiByZWcKKwlbcm9vdEBsb2NhbGhvc3QgI10gZWNobyAyID4gdmFsCisKK05vdGUgdGhhdCB0aGUgU045QzEweCBhbHdheXMgcmV0dXJucyAwIHdoZW4gc29tZSBvZiBpdHMgcmVnaXN0ZXJzIGFyZSByZWFkLgorVG8gYXZvaWQgcmFjZSBjb25kaXRpb25zLCBhbGwgdGhlIEkvTyBhY2Nlc3NlcyB0byB0aGUgYWJvdmUgZmlsZXMgYXJlCitzZXJpYWxpemVkLgorCitUaGUgc3lzZnMgaW50ZXJmYWNlIGFsc28gcHJvdmlkZXMgdGhlICJmcmFtZV9oZWFkZXIiIGVudHJ5LCB3aGljaCBleHBvcnRzIHRoZQorZnJhbWUgaGVhZGVyIG9mIHRoZSBtb3N0IHJlY2VudCByZXF1ZXN0ZWQgYW5kIGNhcHR1cmVkIHZpZGVvIGZyYW1lLiBUaGUgaGVhZGVyCitpcyBhbHdheXMgMTgtYnl0ZXMgbG9uZyBhbmQgaXMgYXBwZW5kZWQgdG8gZXZlcnkgdmlkZW8gZnJhbWUgYnkgdGhlIFNOOUMxMHgKK2NvbnRyb2xsZXJzLiBBcyBhbiBleGFtcGxlLCB0aGlzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWQgYnkgdGhlIHVzZXIKK2FwcGxpY2F0aW9uIGZvciBpbXBsZW1lbnRpbmcgYXV0by1leHBvc3VyZSBmZWF0dXJlcyB2aWEgc29mdHdhcmUuCisKK1RoZSBmb2xsb3dpbmcgdGFibGUgZGVzY3JpYmVzIHRoZSBmcmFtZSBoZWFkZXI6CisKK0J5dGUgIyAgVmFsdWUgICAgICAgICBEZXNjcmlwdGlvbgorLS0tLS0tICAtLS0tLSAgICAgICAgIC0tLS0tLS0tLS0tCisweDAwICAgIDB4RkYgICAgICAgICAgRnJhbWUgc3luY2hyb25pc2F0aW9uIHBhdHRlcm4uCisweDAxICAgIDB4RkYgICAgICAgICAgRnJhbWUgc3luY2hyb25pc2F0aW9uIHBhdHRlcm4uCisweDAyICAgIDB4MDAgICAgICAgICAgRnJhbWUgc3luY2hyb25pc2F0aW9uIHBhdHRlcm4uCisweDAzICAgIDB4QzQgICAgICAgICAgRnJhbWUgc3luY2hyb25pc2F0aW9uIHBhdHRlcm4uCisweDA0ICAgIDB4QzQgICAgICAgICAgRnJhbWUgc3luY2hyb25pc2F0aW9uIHBhdHRlcm4uCisweDA1ICAgIDB4OTYgICAgICAgICAgRnJhbWUgc3luY2hyb25pc2F0aW9uIHBhdHRlcm4uCisweDA2ICAgIDB4WFggICAgICAgICAgVW5rbm93biBtZWFuaW5nLiBUaGUgZXhhY3QgdmFsdWUgZGVwZW5kcyBvbiB0aGUgY2hpcDsKKyAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZSB2YWx1ZXMgYXJlIDB4MDAsIDB4MDEgYW5kIDB4MjAuCisweDA3ICAgIDB4WFggICAgICAgICAgVmFyaWFibGUgdmFsdWUsIHdob3NlIGJpdHMgYXJlIGZmMDB1enpjLCB3aGVyZSBmZiBpcyBhCisgICAgICAgICAgICAgICAgICAgICAgZnJhbWUgY291bnRlciwgdSBpcyB1bmtub3duLCB6eiBpcyBhIHNpemUgaW5kaWNhdG9yCisgICAgICAgICAgICAgICAgICAgICAgKDAwID0gVkdBLCAwMSA9IFNJRiwgMTAgPSBRU0lGKSBhbmQgYyBzdGFuZHMgZm9yCisgICAgICAgICAgICAgICAgICAgICAgImNvbXByZXNzaW9uIGVuYWJsZWQiICgxID0geWVzLCAwID0gbm8pLgorMHgwOCAgICAweFhYICAgICAgICAgIEJyaWdodG5lc3Mgc3VtIGluc2lkZSBBdXRvLUV4cG9zdXJlIGFyZWEgKGxvdy1ieXRlKS4KKzB4MDkgICAgMHhYWCAgICAgICAgICBCcmlnaHRuZXNzIHN1bSBpbnNpZGUgQXV0by1FeHBvc3VyZSBhcmVhIChoaWdoLWJ5dGUpLgorICAgICAgICAgICAgICAgICAgICAgIEZvciBhIHB1cmUgd2hpdGUgaW1hZ2UsIHRoaXMgbnVtYmVyIHdpbGwgYmUgZXF1YWwgdG8gNTAwCisgICAgICAgICAgICAgICAgICAgICAgdGltZXMgdGhlIGFyZWEgb2YgdGhlIHNwZWNpZmllZCBBRSBhcmVhLiBGb3IgaW1hZ2VzCisgICAgICAgICAgICAgICAgICAgICAgdGhhdCBhcmUgbm90IHB1cmUgd2hpdGUsIHRoZSB2YWx1ZSBzY2FsZXMgZG93biBhY2NvcmRpbmcKKyAgICAgICAgICAgICAgICAgICAgICB0byByZWxhdGl2ZSB3aGl0ZW5lc3MuCisweDBBICAgIDB4WFggICAgICAgICAgQnJpZ2h0bmVzcyBzdW0gb3V0c2lkZSBBdXRvLUV4cG9zdXJlIGFyZWEgKGxvdy1ieXRlKS4KKzB4MEIgICAgMHhYWCAgICAgICAgICBCcmlnaHRuZXNzIHN1bSBvdXRzaWRlIEF1dG8tRXhwb3N1cmUgYXJlYSAoaGlnaC1ieXRlKS4KKyAgICAgICAgICAgICAgICAgICAgICBGb3IgYSBwdXJlIHdoaXRlIGltYWdlLCB0aGlzIG51bWJlciB3aWxsIGJlIGVxdWFsIHRvIDEyNQorICAgICAgICAgICAgICAgICAgICAgIHRpbWVzIHRoZSBhcmVhIG91dHNpZGUgb2YgdGhlIHNwZWNpZmllZCBBRSBhcmVhLiBGb3IKKyAgICAgICAgICAgICAgICAgICAgICBpbWFnZXMgdGhhdCBhcmUgbm90IHB1cmUgd2hpdGUsIHRoZSB2YWx1ZSBzY2FsZXMgZG93bgorICAgICAgICAgICAgICAgICAgICAgIGFjY29yZGluZyB0byByZWxhdGl2ZSB3aGl0ZW5lc3MuCisgICAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIHJlbGF0aXZlIHdoaXRlbmVzcy4KKworVGhlIGZvbGxvd2luZyBieXRlcyBhcmUgdXNlZCBieSB0aGUgU045QzEwMyBicmlkZ2Ugb25seToKKworMHgwQyAgICAweFhYICAgICAgICAgIFVua25vd24gbWVhbmluZworMHgwRCAgICAweFhYICAgICAgICAgIFVua25vd24gbWVhbmluZworMHgwRSAgICAweFhYICAgICAgICAgIFVua25vd24gbWVhbmluZworMHgwRiAgICAweFhYICAgICAgICAgIFVua25vd24gbWVhbmluZworMHgxMCAgICAweFhYICAgICAgICAgIFVua25vd24gbWVhbmluZworMHgxMSAgICAweFhYICAgICAgICAgIFVua25vd24gbWVhbmluZworCitUaGUgQUUgYXJlYSAoc3gsIHN5LCBleCwgZXkpIGluIHRoZSBhY3RpdmUgd2luZG93IGNhbiBiZSBzZXQgYnkgcHJvZ3JhbW1pbmcgdGhlCityZWdpc3RlcnMgMHgxYywgMHgxZCwgMHgxZSBhbmQgMHgxZiBvZiB0aGUgU045QzEweCBjb250cm9sbGVycywgd2hlcmUgb25lIHVuaXQKK2NvcnJlc3BvbmRzIHRvIDMyIHBpeGVscy4KKworWzFdIFBhcnQgb2YgdGhlIG1lYW5pbmcgb2YgdGhlIGZyYW1lIGhlYWRlciBoYXMgYmVlbiBkb2N1bWVudGVkIGJ5IEJlcnRyaWsKKyAgICBTaWtrZW4uCisKKworOS4gU3VwcG9ydGVkIGRldmljZXMKKz09PT09PT09PT09PT09PT09PT09CitOb25lIG9mIHRoZSBuYW1lcyBvZiB0aGUgY29tcGFuaWVzIGFzIHdlbGwgYXMgdGhlaXIgcHJvZHVjdHMgd2lsbCBiZSBtZW50aW9uZWQKK2hlcmUuIFRoZXkgaGF2ZSBuZXZlciBjb2xsYWJvcmF0ZWQgd2l0aCB0aGUgYXV0aG9yLCBzbyBubyBhZHZlcnRpc2luZy4KKworRnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiBhIGRyaXZlciwgd2hhdCB1bmFtYmlndW91c2x5IGlkZW50aWZ5IGEgZGV2aWNlIGFyZQoraXRzIHZlbmRvciBhbmQgcHJvZHVjdCBVU0IgaWRlbnRpZmllcnMuIEJlbG93IGlzIGEgbGlzdCBvZiBrbm93biBpZGVudGlmaWVycyBvZgorZGV2aWNlcyBtb3VudGluZyB0aGUgU045QzEweCBQQyBjYW1lcmEgY29udHJvbGxlcnM6CisKK1ZlbmRvciBJRCAgUHJvZHVjdCBJRAorLS0tLS0tLS0tICAtLS0tLS0tLS0tCisweDBjNDUgICAgIDB4NjAwMQorMHgwYzQ1ICAgICAweDYwMDUKKzB4MGM0NSAgICAgMHg2MDA3CisweDBjNDUgICAgIDB4NjAwOQorMHgwYzQ1ICAgICAweDYwMGQKKzB4MGM0NSAgICAgMHg2MDI0CisweDBjNDUgICAgIDB4NjAyNQorMHgwYzQ1ICAgICAweDYwMjgKKzB4MGM0NSAgICAgMHg2MDI5CisweDBjNDUgICAgIDB4NjAyYQorMHgwYzQ1ICAgICAweDYwMmIKKzB4MGM0NSAgICAgMHg2MDJjCisweDBjNDUgICAgIDB4NjAyZAorMHgwYzQ1ICAgICAweDYwMmUKKzB4MGM0NSAgICAgMHg2MDMwCisweDBjNDUgICAgIDB4NjA4MAorMHgwYzQ1ICAgICAweDYwODIKKzB4MGM0NSAgICAgMHg2MDgzCisweDBjNDUgICAgIDB4NjA4OAorMHgwYzQ1ICAgICAweDYwOGEKKzB4MGM0NSAgICAgMHg2MDhiCisweDBjNDUgICAgIDB4NjA4YworMHgwYzQ1ICAgICAweDYwOGUKKzB4MGM0NSAgICAgMHg2MDhmCisweDBjNDUgICAgIDB4NjBhMAorMHgwYzQ1ICAgICAweDYwYTIKKzB4MGM0NSAgICAgMHg2MGEzCisweDBjNDUgICAgIDB4NjBhOAorMHgwYzQ1ICAgICAweDYwYWEKKzB4MGM0NSAgICAgMHg2MGFiCisweDBjNDUgICAgIDB4NjBhYworMHgwYzQ1ICAgICAweDYwYWUKKzB4MGM0NSAgICAgMHg2MGFmCisweDBjNDUgICAgIDB4NjBiMAorMHgwYzQ1ICAgICAweDYwYjIKKzB4MGM0NSAgICAgMHg2MGIzCisweDBjNDUgICAgIDB4NjBiOAorMHgwYzQ1ICAgICAweDYwYmEKKzB4MGM0NSAgICAgMHg2MGJiCisweDBjNDUgICAgIDB4NjBiYworMHgwYzQ1ICAgICAweDYwYmUKKworVGhlIGxpc3QgYWJvdmUgZG9lcyBub3QgaW1wbHkgdGhhdCBhbGwgdGhvc2UgZGV2aWNlcyB3b3JrIHdpdGggdGhpcyBkcml2ZXI6IHVwCit1bnRpbCBub3cgb25seSB0aGUgb25lcyB0aGF0IG1vdW50IHRoZSBmb2xsb3dpbmcgaW1hZ2Ugc2Vuc29ycyBhcmUgc3VwcG9ydGVkOwora2VybmVsIG1lc3NhZ2VzIHdpbGwgYWx3YXlzIHRlbGwgeW91IHdoZXRoZXIgdGhpcyBpcyB0aGUgY2FzZToKKworTW9kZWwgICAgICAgTWFudWZhY3R1cmVyCistLS0tLSAgICAgICAtLS0tLS0tLS0tLS0KK0hWNzEzMUQgICAgIEh5bml4IFNlbWljb25kdWN0b3IsIEluYy4KK01JLTAzNDMgICAgIE1pY3JvbiBUZWNobm9sb2d5LCBJbmMuCitPVjc2MzAgICAgICBPbW5pVmlzaW9uIFRlY2hub2xvZ2llcywgSW5jLgorUEFTMTA2QiAgICAgUGl4QXJ0IEltYWdpbmcsIEluYy4KK1BBUzIwMkJDQSAgIFBpeEFydCBJbWFnaW5nLCBJbmMuCitQQVMyMDJCQ0IgICBQaXhBcnQgSW1hZ2luZywgSW5jLgorVEFTNTExMEMxQiAgVGFpd2FuIEFkdmFuY2VkIFNlbnNvciBDb3Jwb3JhdGlvbgorVEFTNTEzMEQxQiAgVGFpd2FuIEFkdmFuY2VkIFNlbnNvciBDb3Jwb3JhdGlvbgorCitBbGwgdGhlIGF2YWlsYWJsZSBjb250cm9sIHNldHRpbmdzIG9mIGVhY2ggaW1hZ2Ugc2Vuc29yIGFyZSBzdXBwb3J0ZWQgdGhyb3VnaAordGhlIFY0TDIgaW50ZXJmYWNlLgorCitEb25hdGlvbnMgb2YgbmV3IG1vZGVscyBmb3IgZnVydGhlciB0ZXN0aW5nIGFuZCBzdXBwb3J0IHdvdWxkIGJlIG11Y2gKK2FwcHJlY2lhdGVkLiBOb24tYXZhaWxhYmxlIGhhcmR3YXJlIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBieSB0aGUgYXV0aG9yIG9mIHRoaXMKK2RyaXZlci4KKworCisxMC4gTm90ZXMgZm9yIFY0TDIgYXBwbGljYXRpb24gZGV2ZWxvcGVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1RoaXMgZHJpdmVyIGZvbGxvd3MgdGhlIFY0TDIgQVBJIHNwZWNpZmljYXRpb25zLiBJbiBwYXJ0aWN1bGFyLCBpdCBlbmZvcmNlcyB0d28KK3J1bGVzOgorCistIGV4YWN0bHkgb25lIEkvTyBtZXRob2QsIGVpdGhlciAibW1hcCIgb3IgInJlYWQiLCBpcyBhc3NvY2lhdGVkIHdpdGggZWFjaAorZmlsZSBkZXNjcmlwdG9yLiBPbmNlIGl0IGlzIHNlbGVjdGVkLCB0aGUgYXBwbGljYXRpb24gbXVzdCBjbG9zZSBhbmQgcmVvcGVuIHRoZQorZGV2aWNlIHRvIHN3aXRjaCB0byB0aGUgb3RoZXIgSS9PIG1ldGhvZDsKKworLSBhbHRob3VnaCBpdCBpcyBub3QgbWFuZGF0b3J5LCBwcmV2aW91c2x5IG1hcHBlZCBidWZmZXIgbWVtb3J5IHNob3VsZCBhbHdheXMKK2JlIHVubWFwcGVkIGJlZm9yZSBjYWxsaW5nIGFueSAiVklESU9DX1NfQ1JPUCIgb3IgIlZJRElPQ19TX0ZNVCIgaW9jdGwncy4KK1RoZSBzYW1lIG51bWJlciBvZiBidWZmZXJzIGFzIGJlZm9yZSB3aWxsIGJlIGFsbG9jYXRlZCBhZ2FpbiB0byBtYXRjaCB0aGUgc2l6ZQorb2YgdGhlIG5ldyB2aWRlbyBmcmFtZXMsIHNvIHlvdSBoYXZlIHRvIG1hcCB0aGUgYnVmZmVycyBhZ2FpbiBiZWZvcmUgYW55IEkvTworYXR0ZW1wdHMgb24gdGhlbS4KKworQ29uc2lzdGVudGx5IHdpdGggdGhlIGhhcmR3YXJlIGxpbWl0cywgdGhpcyBkcml2ZXIgYWxzbyBzdXBwb3J0cyBpbWFnZQorZG93bnNjYWxpbmcgd2l0aCBhcmJpdHJhcnkgc2NhbGluZyBmYWN0b3JzIGZyb20gMSwgMiBhbmQgNCBpbiBib3RoIGRpcmVjdGlvbnMuCitIb3dldmVyLCB0aGUgVjRMMiBBUEkgc3BlY2lmaWNhdGlvbnMgZG9uJ3QgY29ycmVjdGx5IGRlZmluZSBob3cgdGhlIHNjYWxpbmcKK2ZhY3RvciBjYW4gYmUgY2hvc2VuIGFyYml0cmFyaWx5IGJ5IHRoZSAibmVnb3RpYXRpb24iIG9mIHRoZSAic291cmNlIiBhbmQKKyJ0YXJnZXQiIHJlY3RhbmdsZXMuIFRvIHdvcmsgYXJvdW5kIHRoaXMgZmxhdywgd2UgaGF2ZSBhZGRlZCB0aGUgY29udmVudGlvbgordGhhdCwgZHVyaW5nIHRoZSBuZWdvdGlhdGlvbiwgd2hlbmV2ZXIgdGhlICJWSURJT0NfU19DUk9QIiBpb2N0bCBpcyBpc3N1ZWQsIHRoZQorc2NhbGluZyBmYWN0b3IgaXMgcmVzdG9yZWQgdG8gMS4KKworVGhpcyBkcml2ZXIgc3VwcG9ydHMgdHdvIGRpZmZlcmVudCB2aWRlbyBmb3JtYXRzOiB0aGUgZmlyc3Qgb25lIGlzIHRoZSAiOC1iaXQKK1NlcXVlbnRpYWwgQmF5ZXIiIGZvcm1hdCBhbmQgY2FuIGJlIHVzZWQgdG8gb2J0YWluIHVuY29tcHJlc3NlZCB2aWRlbyBkYXRhCitmcm9tIHRoZSBkZXZpY2UgdGhyb3VnaCB0aGUgY3VycmVudCBJL08gbWV0aG9kLCB3aGlsZSB0aGUgc2Vjb25kIG9uZSBwcm92aWRlcworInJhdyIgY29tcHJlc3NlZCB2aWRlbyBkYXRhICh3aXRob3V0IGZyYW1lIGhlYWRlcnMgbm90IHJlbGF0ZWQgdG8gdGhlCitjb21wcmVzc2VkIGRhdGEpLiBUaGUgY29tcHJlc3Npb24gcXVhbGl0eSBtYXkgdmFyeSBmcm9tIDAgdG8gMSBhbmQgY2FuIGJlCitzZWxlY3RlZCBvciBxdWVyaWVkIHRoYW5rcyB0byB0aGUgVklESU9DX1NfSlBFR0NPTVAgYW5kIFZJRElPQ19HX0pQRUdDT01QIFY0TDIKK2lvY3RsJ3MuIEZvciBtYXhpbXVtIGZsZXhpYmlsaXR5LCBib3RoIHRoZSBkZWZhdWx0IGFjdGl2ZSB2aWRlbyBmb3JtYXQgYW5kIHRoZQorZGVmYXVsdCBjb21wcmVzc2lvbiBxdWFsaXR5IGRlcGVuZCBvbiBob3cgdGhlIGltYWdlIHNlbnNvciBiZWluZyB1c2VkIGlzCitpbml0aWFsaXplZCAoYXMgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBBUEkgZm9yIHRoZSBpbWFnZSBzZW5zb3JzCitzdXBwbGllZCBieSB0aGlzIGRyaXZlcikuCisKKworMTEuIFZpZGVvIGZyYW1lIGZvcm1hdHMgWzFdCis9PT09PT09PT09PT09PT09PT09PT09PQorVGhlIFNOOUMxMHggUEMgQ2FtZXJhIENvbnRyb2xsZXJzIGNhbiBzZW5kIGltYWdlcyBpbiB0d28gcG9zc2libGUgdmlkZW8KK2Zvcm1hdHMgb3ZlciB0aGUgVVNCOiBlaXRoZXIgbmF0aXZlICJTZXF1ZW50aWFsIFJHQiBCYXllciIgb3IgSHVmZm1hbgorY29tcHJlc3NlZC4gVGhlIGxhdHRlciBpcyB1c2VkIHRvIGFjaGlldmUgaGlnaCBmcmFtZSByYXRlcy4gVGhlIGN1cnJlbnQgdmlkZW8KK2Zvcm1hdCBtYXkgYmUgc2VsZWN0ZWQgb3IgcXVlcmllZCBmcm9tIHRoZSB1c2VyIGFwcGxpY2F0aW9uIGJ5IGNhbGxpbmcgdGhlCitWSURJT0NfU19GTVQgb3IgVklESU9DX0dfRk1UIGlvY3RsJ3MsIGFzIGRlc2NyaWJlZCBpbiB0aGUgVjRMMiBBUEkKK3NwZWNpZmljYXRpb25zLgorCitUaGUgbmFtZSAiU2VxdWVudGlhbCBCYXllciIgaW5kaWNhdGVzIHRoZSBvcmdhbml6YXRpb24gb2YgdGhlIHJlZCwgZ3JlZW4gYW5kCitibHVlIHBpeGVscyBpbiBvbmUgdmlkZW8gZnJhbWUuIEVhY2ggcGl4ZWwgaXMgYXNzb2NpYXRlZCB3aXRoIGEgOC1iaXQgbG9uZwordmFsdWUgYW5kIGlzIGRpc3Bvc2VkIGluIG1lbW9yeSBhY2NvcmRpbmcgdG8gdGhlIHBhdHRlcm4gc2hvd24gYmVsb3c6CisKK0JbMF0gICBHWzFdICAgIEJbMl0gICAgR1szXSAgICAuLi4gICBCW20tMl0gICAgICAgICBHW20tMV0KK0dbbV0gICBSW20rMV0gIEdbbSsyXSAgUlttKzJdICAuLi4gICBHWzJtLTJdICAgICAgICBSWzJtLTFdCisuLi4KKy4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCWyhuLTEpKG0tMildICBHWyhuLTEpKG0tMSldCisuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1tuKG0tMildICAgICAgUltuKG0tMSldCisKK1RoZSBhYm92ZSBtYXRyaXggYWxzbyByZXByZXNlbnRzIHRoZSBzZXF1ZW50aWFsIG9yIHByb2dyZXNzaXZlIHJlYWQtb3V0IG1vZGUgb2YKK3RoZSAobiwgbSkgQmF5ZXIgY29sb3IgZmlsdGVyIGFycmF5IHVzZWQgaW4gbWFueSBDQ0QvQ01PUyBpbWFnZSBzZW5zb3JzLgorCitPbmUgY29tcHJlc3NlZCB2aWRlbyBmcmFtZSBjb25zaXN0cyBvZiBhIGJpdHN0cmVhbSB0aGF0IGVuY29kZXMgZm9yIGV2ZXJ5IFIsIEcsCitvciBCIHBpeGVsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHZhbHVlIG9mIHRoZSBwaXhlbCBpdHNlbGYgYW5kIHNvbWUKK3JlZmVyZW5jZSBwaXhlbCB2YWx1ZS4gUGl4ZWxzIGFyZSBvcmdhbmlzZWQgaW4gdGhlIEJheWVyIHBhdHRlcm4gYW5kIHRoZSBCYXllcgorc3ViLXBpeGVscyBhcmUgdHJhY2tlZCBpbmRpdmlkdWFsbHkgYW5kIGFsdGVybmF0aW5nbHkuIEZvciBleGFtcGxlLCBpbiB0aGUKK2ZpcnN0IGxpbmUgdmFsdWVzIGZvciB0aGUgQiBhbmQgRzEgcGl4ZWxzIGFyZSBhbHRlcm5hdGluZ2x5IGVuY29kZWQsIHdoaWxlIGluCit0aGUgc2Vjb25kIGxpbmUgdmFsdWVzIGZvciB0aGUgRzIgYW5kIFIgcGl4ZWxzIGFyZSBhbHRlcm5hdGluZ2x5IGVuY29kZWQuCisKK1RoZSBwaXhlbCByZWZlcmVuY2UgdmFsdWUgaXMgY2FsY3VsYXRlZCBhcyBmb2xsb3dzOgorLSB0aGUgNCB0b3AgbGVmdCBwaXhlbHMgYXJlIGVuY29kZWQgaW4gcmF3IHVuY29tcHJlc3NlZCA4LWJpdCBmb3JtYXQ7CistIHRoZSB2YWx1ZSBpbiB0aGUgdG9wIHR3byByb3dzIGlzIHRoZSB2YWx1ZSBvZiB0aGUgcGl4ZWwgbGVmdCBvZiB0aGUgY3VycmVudAorICBwaXhlbDsKKy0gdGhlIHZhbHVlIGluIHRoZSBsZWZ0IGNvbHVtbiBpcyB0aGUgdmFsdWUgb2YgdGhlIHBpeGVsIGFib3ZlIHRoZSBjdXJyZW50CisgIHBpeGVsOworLSBmb3IgYWxsIG90aGVyIHBpeGVscywgdGhlIHJlZmVyZW5jZSB2YWx1ZSBpcyB0aGUgYXZlcmFnZSBvZiB0aGUgdmFsdWUgb2YgdGhlCisgIHBpeGVsIG9uIHRoZSBsZWZ0IGFuZCB0aGUgdmFsdWUgb2YgdGhlIHBpeGVsIGFib3ZlIHRoZSBjdXJyZW50IHBpeGVsOworLSB0aGVyZSBpcyBvbmUgY29kZSBpbiB0aGUgYml0c3RyZWFtIHRoYXQgc3BlY2lmaWVzIHRoZSB2YWx1ZSBvZiBhIHBpeGVsCisgIGRpcmVjdGx5IChpbiA0LWJpdCByZXNvbHV0aW9uKTsKKy0gcGl4ZWwgdmFsdWVzIG5lZWQgdG8gYmUgY2xhbXBlZCBpbnNpZGUgdGhlIHJhbmdlIFswLi4yNTVdIGZvciBwcm9wZXIKKyAgZGVjb2RpbmcuCisKK1RoZSBhbGdvcml0aG0gcHVyZWx5IGRlc2NyaWJlcyB0aGUgY29udmVyc2lvbiBmcm9tIGNvbXByZXNzZWQgQmF5ZXIgY29kZSB1c2VkCitpbiB0aGUgU045QzEweCBjaGlwcyB0byB1bmNvbXByZXNzZWQgQmF5ZXIuIEFkZGl0aW9uYWwgc3RlcHMgYXJlIHJlcXVpcmVkIHRvCitjb252ZXJ0IHRoaXMgdG8gYSBjb2xvciBpbWFnZSAoaS5lLiBhIGNvbG9yIGludGVycG9sYXRpb24gYWxnb3JpdGhtKS4KKworVGhlIGZvbGxvd2luZyBIdWZmbWFuIGNvZGVzIGhhdmUgYmVlbiBmb3VuZDoKKzA6ICswIChyZWxhdGl2ZSB0byByZWZlcmVuY2UgcGl4ZWwgdmFsdWUpCisxMDA6ICs0CisxMDE6IC00PworMTExMHh4eHg6IHNldCBhYnNvbHV0ZSB2YWx1ZSB0byB4eHh4LjAwMDAKKzExMDE6ICsxMQorMTExMTogLTExCisxMTAwMTogKzIwCisxMTAwMDA6IC0yMAorMTEwMDAxOiA/Pz8gLSB0aGVzZSBjb2RlcyBhcmUgYXBwYXJlbnRseSBub3QgdXNlZAorCitbMV0gVGhlIEh1ZmZtYW4gY29tcHJlc3Npb24gYWxnb3JpdGhtIGhhcyBiZWVuIHJldmVyc2UtZW5naW5lZXJlZCBhbmQKKyAgICBkb2N1bWVudGVkIGJ5IEJlcnRyaWsgU2lra2VuLgorCisKKzEyLiBDb250YWN0IGluZm9ybWF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PQorVGhlIGF1dGhvciBtYXkgYmUgY29udGFjdGVkIGJ5IGUtbWFpbCBhdCA8bHVjYS5yaXNvbGlhQHN0dWRpby51bmliby5pdD4uCisKK0dQRy9QR1AgZW5jcnlwdGVkIGUtbWFpbCdzIGFyZSBhY2NlcHRlZC4gVGhlIEdQRyBrZXkgSUQgb2YgdGhlIGF1dGhvciBpcworJ0ZDRTYzNUE0JzsgdGhlIHB1YmxpYyAxMDI0LWJpdCBrZXkgc2hvdWxkIGJlIGF2YWlsYWJsZSBhdCBhbnkga2V5c2VydmVyOwordGhlIGZpbmdlcnByaW50IGlzOiAnODhFOCBGMzJGIDcyNDQgNjhCQSAzOTU4ICA1RDQwIDk5REEgNUQyQSBGQ0U2IDM1QTQnLgorCisKKzEzLiBDcmVkaXRzCis9PT09PT09PT09PQorTWFueSB0aGFua3MgdG8gZm9sbG93aW5nIHBlcnNvbnMgZm9yIHRoZWlyIGNvbnRyaWJ1dGUgKGxpc3RlZCBpbiBhbHBoYWJldGljYWwKK29yZGVyKToKKworLSBMdWNhIENhcGVsbG8gZm9yIHRoZSBkb25hdGlvbiBvZiBhIHdlYmNhbTsKKy0gUGhpbGlwcGUgQ292YWwgZm9yIGhhdmluZyBoZWxwZWQgdGVzdGluZyB0aGUgUEFTMjAyQkNBIGltYWdlIHNlbnNvcjsKKy0gSm9hbyBSb2RyaWdvIEZ1emFybywgSm9hbyBMaW1pcmlvLCBDbGF1ZGlvIEZpbGhvIGFuZCBDYWlvIEJlZ290dGkgZm9yIHRoZQorICBkb25hdGlvbiBvZiBhIHdlYmNhbTsKKy0gSm9uIEhvbGxzdHJvbSBmb3IgdGhlIGRvbmF0aW9uIG9mIGEgd2ViY2FtOworLSBDYXJsb3MgRWR1YXJkbyBNZWRhZ2xpYSBEeW9uaXNpbywgd2hvIGFkZGVkIHRoZSBzdXBwb3J0IGZvciB0aGUgUEFTMjAyQkNCCisgIGltYWdlIHNlbnNvcjsKKy0gU3RlZmFubyBNb3p6aSwgd2hvIGRvbmF0ZWQgNDUgRVU7CistIEFuZHJldyBQZWFyY2UgZm9yIHRoZSBkb25hdGlvbiBvZiBhIHdlYmNhbTsKKy0gQmVydHJpayBTaWtrZW4sIHdobyByZXZlcnNlLWVuZ2luZWVyZWQgYW5kIGRvY3VtZW50ZWQgdGhlIEh1ZmZtYW4gY29tcHJlc3Npb24KKyAgYWxnb3JpdGhtIHVzZWQgaW4gdGhlIFNOOUMxMHggY29udHJvbGxlcnMgYW5kIGltcGxlbWVudGVkIHRoZSBmaXJzdCBkZWNvZGVyOworLSBNaXp1bm8gVGFrYWZ1bWkgZm9yIHRoZSBkb25hdGlvbiBvZiBhIHdlYmNhbTsKKy0gYW4gImFub255bW91cyIgZG9uYXRvciAod2hvIGRpZG4ndCB3YW50IGhpcyBuYW1lIHRvIGJlIHJldmVhbGVkKSBmb3IgdGhlCisgIGRvbmF0aW9uIG9mIGEgd2ViY2FtLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9zdHY2ODAudHh0IGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9zdHY2ODAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmODk0NmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3N0djY4MC50eHQKQEAgLTAsMCArMSw1MyBAQAorTGludXggZHJpdmVyIGZvciBTVFYwNjgwIGJhc2VkIFVTQiBjYW1lcmFzCisKK0NvcHlyaWdodCwgMjAwMSwgS2V2aW4gU2lzc29uCisKKworSU5UUk9EVUNUSU9OOgorCitTVE1pY3JvZWxlY3Ryb25pY3MgcHJvZHVjZXMgdGhlIFNUVjA2ODBCIGNoaXAsIHdoaWNoIGNvbWVzIGluIHR3bwordHlwZXMsIC0wMDEgYW5kIC0wMDMuIFRoZSAtMDAzIHZlcnNpb24gYWxsb3dzIHRoZSByZWNvcmRpbmcgYW5kIGRvd25sb2FkaW5nCitvZiBzb3VuZCBjbGlwcyBmcm9tIHRoZSBjYW1lcmEsIGFuZCBhbGxvd3MgYSBmbGFzaCBhdHRhY2htZW50LiBPdGhlcndpc2UsCitpdCB1c2VzIHRoZSBzYW1lIGNvbW1hbmRzIGFzIHRoZSAtMDAxIHZlcnNpb24uIEJvdGggdmVyc2lvbnMgc3VwcG9ydCBhCit2YXJpZXR5IG9mIFNEUkFNIHNpemVzIGFuZCBzZW5zb3JzLCBhbGxvd2luZyBmb3IgYSBtYXhpbXVtIG9mIDI2IFZHQSBvciAyMAorQ0lGIHBpY3R1cmVzLiBUaGUgU1RWMDY4MCBzdXBwb3J0cyBlaXRoZXIgYSBzZXJpYWwgb3IgYSB1c2IgaW50ZXJmYWNlLCBhbmQKK3ZpZGVvIGlzIHBvc3NpYmxlIHRocm91Z2ggdGhlIHVzYiBpbnRlcmZhY2UuCisKK1RoZSBmb2xsb3dpbmcgY2FtZXJhcyBhcmUga25vd24gdG8gd29yayB3aXRoIHRoaXMgZHJpdmVyLCBhbHRob3VnaCBhbnkKK2NhbWVyYSB3aXRoIFZlbmRvci9Qcm9kdWN0IGNvZGVzIG9mIDA1NTMvMDIwMiBzaG91bGQgd29yazoKKworQWlwdGVrIFBlbmNhbSAodmFyaW91cyBtb2RlbHMpCitOaXNpcyBRdWlja1BpeCAyCitSYWRpbyBTaGFjayAnS2lkJ3MgZGlnaXRhbCBjYW1lcmEnICgjNjAtMTIwNykKK0F0IGxlYXN0IG9uZSBUcnVzdCBTcHljYW0gbW9kZWwKK1NldmVyYWwgb3RoZXIgRXVyb3BlYW4gYnJhbmQgbW9kZWxzCisKK1dIQVQgWU9VIE5FRUQ6CisKKy0JVVNCIHN1cHBvcnQKKy0JVklERU80TElOVVggc3VwcG9ydAorCitNb3JlIGluZm9ybWF0aW9uIGFib3V0IFVTQiBzdXBwb3J0IGZvciBsaW51eCBjYW4gYmUgZm91bmQgYXQ6CitodHRwOi8vd3d3LmxpbnV4LXVzYi5vcmcKKworCitNT0RVTEUgT1BUSU9OUzoKKworV2hlbiB0aGUgZHJpdmVyIGlzIGNvbXBpbGVkIGFzIGEgbW9kdWxlLCB5b3UgY2FuIHNldCBhICJzd2FwUkdCPTEiCitvcHRpb24sIGlmIG5lY2Vzc2FyeSwgZm9yIHRob3NlIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgaXQKKyhzdWNoIGFzIHhhd3R2KS4gSG93ZXZlciwgdGhlIGRyaXZlciBzaG91bGQgZGV0ZWN0IGFuZCBzZXQgdGhpcworYXV0b21hdGljYWxseSwgc28gdGhpcyBvcHRpb24gc2hvdWxkIG5vdCBub3JtYWxseSBiZSB1c2VkLgorCisKK0tOT1dOIFBST0JMRU1TOgorCitUaGUgZHJpdmVyIHNlZW1zIHRvIHdvcmsgYmV0dGVyIHdpdGggdGhlIHVzYi1vaGNpIHRoYW4gdGhlIHVzYi11aGNpIGhvc3QKK2NvbnRyb2xsZXIgZHJpdmVyLgorCitIRUxQOgorCitUaGUgbGF0ZXN0IGluZm8gb24gdGhpcyBkcml2ZXIgY2FuIGJlIGZvdW5kIGF0OgoraHR0cDovL3BlcnNvbmFsLmNsdC5iZWxsc291dGgubmV0L35ranNpc3NvbiBvciBhdAoraHR0cDovL3N0djA2ODAtdXNiLnNvdXJjZWZvcmdlLm5ldAorCitBbnkgcXVlc3Rpb25zIHRvIG1lIGNhbiBiZSBzZW5kIHRvOiAga2pzaXNzb25AYmVsbHNvdXRoLm5ldApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvdzk5NjhjZi50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3c5OTY4Y2YudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNzA0ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3c5OTY4Y2YudHh0CkBAIC0wLDAgKzEsNDYxIEBACisKKyAgICAgICAgICAgICAgICAgICBXOTk2Wzg3XUNGIEpQRUcgVVNCIER1YWwgTW9kZSBDYW1lcmEgQ2hpcAorICAgICAgICAgICAgICAgICAgICAgRHJpdmVyIGZvciBMaW51eCAyLjYgKGJhc2ljIHZlcnNpb24pCisgICAgICAgICAgICAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gRG9jdW1lbnRhdGlvbiAtCisKKworSW5kZXgKKz09PT09CisxLiAgQ29weXJpZ2h0CisyLiAgRGlzY2xhaW1lcgorMy4gIExpY2Vuc2UKKzQuICBPdmVydmlldworNS4gIFN1cHBvcnRlZCBkZXZpY2VzCis2LiAgTW9kdWxlIGRlcGVuZGVuY2llcworNy4gIE1vZHVsZSBsb2FkaW5nCis4LiAgTW9kdWxlIHBhcmFtYXRlcnMKKzkuICBDb250YWN0IGluZm9ybWF0aW9uCisxMC4gQ3JlZGl0cworCisKKzEuIENvcHlyaWdodAorPT09PT09PT09PT09CitDb3B5cmlnaHQgKEMpIDIwMDItMjAwNCBieSBMdWNhIFJpc29saWEgPGx1Y2Eucmlzb2xpYUBzdHVkaW8udW5pYm8uaXQ+CisKKworMi4gRGlzY2xhaW1lcgorPT09PT09PT09PT09PQorV2luYm9uZCBpcyBhIHRyYWRlbWFyayBvZiBXaW5ib25kIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLgorVGhpcyBzb2Z0d2FyZSBpcyBub3Qgc3BvbnNvcmVkIG9yIGRldmVsb3BlZCBieSBXaW5ib25kLgorCisKKzMuIExpY2Vuc2UKKz09PT09PT09PT0KK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKK1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCithbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisKKworNC4gT3ZlcnZpZXcKKz09PT09PT09PT09CitUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgdmlkZW8gc3RyZWFtaW5nIGNhcGFiaWxpdGllcyBvZiB0aGUgZGV2aWNlcyBtb3VudGluZworV2luYm9uZCBXOTk2N0NGIGFuZCBXaW5ib25kIFc5OTY4Q0YgSlBFRyBVU0IgRHVhbCBNb2RlIENhbWVyYSBDaGlwcy4gT1Y2ODEKK2Jhc2VkIGNhbWVyYXMgc2hvdWxkIGJlIHN1cHBvcnRlZCBhcyB3ZWxsLgorCitUaGUgZHJpdmVyIGlzIGRpdmlkZWQgaW50byB0d28gbW9kdWxlczogdGhlIGJhc2ljIG9uZSwgInc5OTY4Y2YiLCBpcyBuZWVkZWQgZm9yCit0aGUgc3VwcG9ydGVkIGRldmljZXMgdG8gd29yazsgdGhlIHNlY29uZCBvbmUsICJ3OTk2OGNmLXZwcCIsIGlzIGFuIG9wdGlvbmFsCittb2R1bGUsIHdoaWNoIHByb3ZpZGVzIHNvbWUgdXNlZnVsIHZpZGVvIHBvc3QtcHJvY2Vzc2luZyBmdW5jdGlvbnMgbGlrZSB2aWRlbworZGVjb2RpbmcsIHVwLXNjYWxpbmcgYW5kIGNvbG91ciBjb252ZXJzaW9ucy4KKworTm90ZSB0aGF0IHRoZSBvZmZpY2lhbCBrZXJuZWxzIGRvIG5laXRoZXIgaW5jbHVkZSBub3Igc3VwcG9ydCB0aGUgc2Vjb25kCittb2R1bGUgZm9yIHBlcmZvcm1hbmNlIHB1cnBvc2VzLiBUaGVyZWZvcmUsIGl0IGlzIGFsd2F5cyByZWNvbW1lbmRlZCB0bworZG93bmxvYWQgYW5kIGluc3RhbGwgdGhlIGxhdGVzdCBhbmQgY29tcGxldGUgcmVsZWFzZSBvZiB0aGUgZHJpdmVyLAorcmVwbGFjaW5nIHRoZSBleGlzdGluZyBvbmUsIGlmIHByZXNlbnQuCisKK1RoZSBsYXRlc3QgYW5kIGZ1bGwtZmVhdHVyZWQgdmVyc2lvbiBvZiB0aGUgVzk5Nls4N11DRiBkcml2ZXIgY2FuIGJlIGZvdW5kIGF0OgoraHR0cDovL3d3dy5saW51eC1wcm9qZWN0cy5vcmcuIFBsZWFzZSByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBpbmNsdWRlZCBpbgordGhhdCBwYWNrYWdlLCBpZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSBpdC4KKworVXAgdG8gMzIgY2FtZXJhcyBjYW4gYmUgaGFuZGxlZCBhdCB0aGUgc2FtZSB0aW1lLiBUaGV5IGNhbiBiZSBjb25uZWN0ZWQgYW5kCitkaXNjb25uZWN0ZWQgZnJvbSB0aGUgaG9zdCBtYW55IHRpbWVzIHdpdGhvdXQgdHVybmluZyBvZmYgdGhlIGNvbXB1dGVyLCBpZgoreW91ciBzeXN0ZW0gc3VwcG9ydHMgdGhlIGhvdHBsdWcgZmFjaWxpdHkuCisKK1RvIGNoYW5nZSB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgZWFjaCBjYW1lcmEsIG1hbnkgcGFyYW1ldGVycyBjYW4gYmUgcGFzc2VkCit0aHJvdWdoIGNvbW1hbmQgbGluZSB3aGVuIHRoZSBtb2R1bGUgaXMgbG9hZGVkIGludG8gbWVtb3J5LgorCitUaGUgZHJpdmVyIHJlbGllcyBvbiB0aGUgVmlkZW80TGludXgsIFVTQiBhbmQgSTJDIGNvcmUgbW9kdWxlcy4gSXQgaGFzIGJlZW4KK2Rlc2lnbmVkIHRvIHJ1biBwcm9wZXJseSBvbiBTTVAgc3lzdGVtcyBhcyB3ZWxsLiBBbiBhZGRpdGlvbmFsIG1vZHVsZSwKKyJvdmNhbWNoaXAiLCBpcyBtYW5kYXRvcnk7IGl0IHByb3ZpZGVzIHN1cHBvcnQgZm9yIHNvbWUgT21uaVZpc2lvbiBpbWFnZQorc2Vuc29ycyBjb25uZWN0ZWQgdG8gdGhlIFc5OTZbODddQ0YgY2hpcHM7IGlmIGZvdW5kIGluIHRoZSBzeXN0ZW0sIHRoZSBtb2R1bGUKK3dpbGwgYmUgYXV0b21hdGljYWxseSBsb2FkZWQgYnkgZGVmYXVsdCAocHJvdmlkZWQgdGhhdCB0aGUga2VybmVsIGhhcyBiZWVuCitjb21waWxlZCB3aXRoIHRoZSBhdXRvbWF0aWMgbW9kdWxlIGxvYWRpbmcgb3B0aW9uKS4KKworCis1LiBTdXBwb3J0ZWQgZGV2aWNlcworPT09PT09PT09PT09PT09PT09PT0KK0F0IHRoZSBtb21lbnQsIGtub3duIFc5OTZbODddQ0YgYW5kIE9WNjgxIGJhc2VkIGRldmljZXMgYXJlOgorLSBBcm9tYSBEaWdpIFBlbiBWR0EgRHVhbCBNb2RlIEFERy01MDAwICh1bmtub3duIGltYWdlIHNlbnNvcikKKy0gQVZlck1lZGlhIEFWZXJUViBVU0IgKFNBQTcxMTFBLCBQaGlsaXBzIEZJMTIxNk1rMiB0dW5lciwgUFQyMzEzTCBhdWRpbyBjaGlwKQorLSBDcmVhdGl2ZSBMYWJzIFZpZGVvIEJsYXN0ZXIgV2ViQ2FtIEdvIChPbW5pVmlzaW9uIE9WNzYxMCBzZW5zb3IpCistIENyZWF0aXZlIExhYnMgVmlkZW8gQmxhc3RlciBXZWJDYW0gR28gUGx1cyAoT21uaVZpc2lvbiBPVjc2MjAgc2Vuc29yKQorLSBMZWJvbiBMREMtMDM1QSAodW5rbm93biBpbWFnZSBzZW5zb3IpCistIEV6b25pY3MgRVotODAyIEVaTWVnYSBDYW0gKE9tbmlWaXNpb24gT1Y4NjEwQyBzZW5zb3IpCistIE9tbmlWaXNpb24gT1Y4NjEwLUVERSAoT21uaVZpc2lvbiBPVjg2MTAgc2Vuc29yKQorLSBPUENPTSBEaWdpIFBlbiBWR0EgRHVhbCBNb2RlIFBlbiBDYW1lcmEgKHVua25vd24gaW1hZ2Ugc2Vuc29yKQorLSBQcmV0ZWMgRGlnaSBQZW4tSUkgKE9tbmlWaXNpb24gT1Y3NjIwIHNlbnNvcikKKy0gUHJldGVjIERpZ2lQZW4tNDgwIChPbW5pVmlzaW9uIE9WODYxMCBzZW5zb3IpCisKK0lmIHlvdSBrbm93IGFueSBvdGhlciBXOTk2Wzg3XUNGIG9yIE9WNjgxIGJhc2VkIGNhbWVyYXMsIHBsZWFzZSBjb250YWN0IG1lLgorCitUaGUgbGlzdCBhYm92ZSBkb2VzIG5vdCBpbXBseSB0aGF0IGFsbCB0aG9zZSBkZXZpY2VzIHdvcmsgd2l0aCB0aGlzIGRyaXZlcjogdXAKK3VudGlsIG5vdyBvbmx5IHdlYmNhbXMgdGhhdCBoYXZlIGFuIGltYWdlIHNlbnNvciBzdXBwb3J0ZWQgYnkgdGhlICJvdmNhbWNoaXAiCittb2R1bGUgd29yay4gS2VybmVsIG1lc3NhZ2VzIHdpbGwgYWx3YXlzIHRlbGwgeW91IHdoZXRoZXIgdGhpcyBpcyBjYXNlLgorCitQb3NzaWJsZSBleHRlcm5hbCBtaWNyb2NvbnRyb2xsZXJzIG9mIHRob3NlIHdlYmNhbXMgYXJlIG5vdCBzdXBwb3J0ZWQ6IHRoaXMKK21lYW5zIHRoYXQgc3RpbGwgaW1hZ2VzIGNhbm5vdCBiZSBkb3dubG9hZGVkIGZyb20gdGhlIGRldmljZSBtZW1vcnkuCisKK0Z1cnRoZXJtb3JlLCBpdCdzIHdvcnRoIHRvIG5vdGUgdGhhdCBJIHdhcyBvbmx5IGFibGUgdG8gcnVuIHRlc3RzIG9uIG15CisiQ3JlYXRpdmUgTGFicyBWaWRlbyBCbGFzdGVyIFdlYkNhbSBHbyIuIERvbmF0aW9ucyBvZiBvdGhlciBtb2RlbHMsIGZvcgorYWRkaXRpb25hbCB0ZXN0aW5nIGFuZCBmdWxsIHN1cHBvcnQsIHdvdWxkIGJlIG11Y2ggYXBwcmVjaWF0ZWQuCisKKworNi4gTW9kdWxlIGRlcGVuZGVuY2llcworPT09PT09PT09PT09PT09PT09PT09PQorRm9yIGl0IHRvIHdvcmsgcHJvcGVybHksIHRoZSBkcml2ZXIgbmVlZHMga2VybmVsIHN1cHBvcnQgZm9yIFZpZGVvNExpbnV4LCBVU0IKK2FuZCBJMkMsIGFuZCB0aGUgIm92Y2FtY2hpcCIgbW9kdWxlIGZvciB0aGUgaW1hZ2Ugc2Vuc29yLiBNYWtlIHN1cmUgeW91IGFyZSBub3QKK2FjdHVhbGx5IHVzaW5nIGFueSBleHRlcm5hbCAib3ZjYW1jaGlwIiBtb2R1bGUsIGdpdmVuIHRoYXQgdGhlIFc5OTZbODddQ0YKK2RyaXZlciBkZXBlbmRzIG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSBtb2R1bGUgcHJlc2VudCBpbiB0aGUgb2ZmaWNpYWwga2VybmVscy4KKworVGhlIGZvbGxvd2luZyBvcHRpb25zIG9mIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlIG11c3QgYmUgZW5hYmxlZCBhbmQKK2NvcnJlc3BvbmRpbmcgbW9kdWxlcyBtdXN0IGJlIGNvbXBpbGVkOgorCisJIyBNdWx0aW1lZGlhIGRldmljZXMKKwkjCisJQ09ORklHX1ZJREVPX0RFVj1tCisKKwkjIEkyQyBzdXBwb3J0CisJIworCUNPTkZJR19JMkM9bQorCitUaGUgSTJDIGNvcmUgbW9kdWxlIGNhbiBiZSBjb21waWxlZCBzdGF0aWNhbGx5IGluIHRoZSBrZXJuZWwgYXMgd2VsbC4KKworCSMgT21uaVZpc2lvbiBDYW1lcmEgQ2hpcCBzdXBwb3J0CisJIworCUNPTkZJR19WSURFT19PVkNBTUNISVA9bQorCisJIyBVU0Igc3VwcG9ydAorCSMKKwlDT05GSUdfVVNCPW0KKworSW4gYWRkaXRpb24sIGRlcGVuZGluZyBvbiB0aGUgaGFyZHdhcmUgYmVpbmcgdXNlZCwgb25seSBvbmUgb2YgdGhlIG1vZHVsZXMKK2JlbG93IGlzIG5lY2Vzc2FyeToKKworCSMgVVNCIEhvc3QgQ29udHJvbGxlciBEcml2ZXJzCisJIworCUNPTkZJR19VU0JfRUhDSV9IQ0Q9bQorCUNPTkZJR19VU0JfVUhDSV9IQ0Q9bQorCUNPTkZJR19VU0JfT0hDSV9IQ0Q9bQorCitBbmQgZmluYWxseToKKworCSMgVVNCIE11bHRpbWVkaWEgZGV2aWNlcworCSMKKwlDT05GSUdfVVNCX1c5OTY4Q0Y9bQorCisKKzcuIE1vZHVsZSBsb2FkaW5nCis9PT09PT09PT09PT09PT09PQorVG8gdXNlIHRoZSBkcml2ZXIsIGl0IGlzIG5lY2Vzc2FyeSB0byBsb2FkIHRoZSAidzk5NjhjZiIgbW9kdWxlIGludG8gbWVtb3J5CithZnRlciBldmVyeSBvdGhlciBtb2R1bGUgcmVxdWlyZWQuCisKK0xvYWRpbmcgY2FuIGJlIGRvbmUgdGhpcyB3YXksIGZyb20gcm9vdDoKKworCVtyb290QGxvY2FsaG9zdCBob21lXSMgbW9kcHJvYmUgdXNiY29yZQorCVtyb290QGxvY2FsaG9zdCBob21lXSMgbW9kcHJvYmUgaTJjLWNvcmUKKwlbcm9vdEBsb2NhbGhvc3QgaG9tZV0jIG1vZHByb2JlIHZpZGVvZGV2CisJW3Jvb3RAbG9jYWxob3N0IGhvbWVdIyBtb2Rwcm9iZSB3OTk2OGNmCisKK0F0IHRoaXMgcG9pbnQgdGhlIHBlcnRpbmVudCBkZXZpY2VzIHNob3VsZCBiZSByZWNvZ25pemVkOiAiZG1lc2ciIGNhbiBiZSB1c2VkCit0byBhbmFseXplIGtlcm5lbCBtZXNzYWdlczoKKworCVt1c2VyQGxvY2FsaG9zdCBob21lXSQgZG1lc2cKKworVGhlcmUgYXJlIGEgbG90IG9mIHBhcmFtZXRlcnMgdGhlIG1vZHVsZSBjYW4gdXNlIHRvIGNoYW5nZSB0aGUgZGVmYXVsdAorc2V0dGluZ3MgZm9yIGVhY2ggZGV2aWNlLiBUbyBsaXN0IGV2ZXJ5IHBvc3NpYmxlIHBhcmFtZXRlciB3aXRoIGEgYnJpZWYKK2V4cGxhbmF0aW9uIGFib3V0IHRoZW0gYW5kIHdoaWNoIHN5bnRheCB0byB1c2UsIGl0IGlzIHJlY29tbWVuZGVkIHRvIHJ1biB0aGUKKyJtb2RpbmZvIiBjb21tYW5kOgorCisJW3Jvb3RAbG9jYWhvc3QgaG9tZV0jIG1vZGluZm8gdzk5NjhjZgorCisKKzguIE1vZHVsZSBwYXJhbWV0ZXJzCis9PT09PT09PT09PT09PT09PT09PQorTW9kdWxlIHBhcmFtZXRlcnMgYXJlIGxpc3RlZCBiZWxvdzoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05hbWU6ICAgICAgICAgICAgb3Ztb2RfbG9hZAorVHlwZTogICAgICAgICAgICBib29sCitTeW50YXg6ICAgICAgICAgIDwwfDE+CitEZXNjcmlwdGlvbjogICAgIEF1dG9tYXRpYyAnb3ZjYW1jaGlwJyBtb2R1bGUgbG9hZGluZzogMCBkaXNhYmxlZCwgMSBlbmFibGVkLgorICAgICAgICAgICAgICAgICBJZiBlbmFibGVkLCAnaW5zbW9kJyBzZWFyY2hlcyBmb3IgdGhlIHJlcXVpcmVkICdvdmNhbWNoaXAnCisgICAgICAgICAgICAgICAgIG1vZHVsZSBpbiB0aGUgc3lzdGVtLCBhY2NvcmRpbmcgdG8gaXRzIGNvbmZpZ3VyYXRpb24sIGFuZAorICAgICAgICAgICAgICAgICBsb2FkcyB0aGF0IG1vZHVsZSBhdXRvbWF0aWNhbGx5LiBUaGlzIGFjdGlvbiBpcyBwZXJmb3JtZWQgYXMKKyAgICAgICAgICAgICAgICAgb25jZSBzb29uIGFzIHRoZSAndzk5NjhjZicgbW9kdWxlIGlzIGxvYWRlZCBpbnRvIG1lbW9yeS4KK0RlZmF1bHQ6ICAgICAgICAgMQorTm90ZTogICAgICAgICAgICBUaGUga2VybmVsIG11c3QgYmUgY29tcGlsZWQgd2l0aCB0aGUgQ09ORklHX0tNT0Qgb3B0aW9uCisgICAgICAgICAgICAgICAgIGVuYWJsZWQgZm9yIHRoZSAnb3ZjYW1jaGlwJyBtb2R1bGUgdG8gYmUgbG9hZGVkIGFuZCBmb3IKKyAgICAgICAgICAgICAgICAgdGhpcyBwYXJhbWV0ZXIgdG8gYmUgcHJlc2VudC4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05hbWU6ICAgICAgICAgICBzaW1jYW1zCitUeXBlOiAgICAgICAgICAgaW50CitTeW50YXg6ICAgICAgICAgPG4+CitEZXNjcmlwdGlvbjogICAgTnVtYmVyIG9mIGNhbWVyYXMgYWxsb3dlZCB0byBzdHJlYW0gc2ltdWx0YW5lb3VzbHkuCisgICAgICAgICAgICAgICAgbiBtYXkgdmFyeSBmcm9tIDAgdG8gMzIuCitEZWZhdWx0OiAgICAgICAgMzIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05hbWU6ICAgICAgICAgICB2aWRlb19ucgorVHlwZTogICAgICAgICAgIGludCBhcnJheSAobWluID0gMCwgbWF4ID0gMzIpCitTeW50YXg6ICAgICAgICAgPC0xfG5bLC4uLl0+CitEZXNjcmlwdGlvbjogICAgU3BlY2lmeSBWNEwgbWlub3IgbW9kZSBudW1iZXIuCisgICAgICAgICAgICAgICAgLTEgPSB1c2UgbmV4dCBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICAgbiA9IHVzZSBtaW5vciBudW1iZXIgbgorICAgICAgICAgICAgICAgIFlvdSBjYW4gc3BlY2lmeSB1cCB0byAzMiBjYW1lcmFzIHRoaXMgd2F5LgorICAgICAgICAgICAgICAgIEZvciBleGFtcGxlOgorICAgICAgICAgICAgICAgIHZpZGVvX25yPS0xLDIsLTEgd291bGQgYXNzaWduIG1pbm9yIG51bWJlciAyIHRvIHRoZSBzZWNvbmQKKyAgICAgICAgICAgICAgICByZWNvZ25pemVkIGNhbWVyYSBhbmQgdXNlIGF1dG8gZm9yIHRoZSBmaXJzdCBvbmUgYW5kIGZvciBldmVyeQorICAgICAgICAgICAgICAgIG90aGVyIGNhbWVyYS4KK0RlZmF1bHQ6ICAgICAgICAtMQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmFtZTogICAgICAgICAgIHBhY2tldF9zaXplCitUeXBlOiAgICAgICAgICAgaW50IGFycmF5IChtaW4gPSAwLCBtYXggPSAzMikKK1N5bnRheDogICAgICAgICA8blssLi4uXT4KK0Rlc2NyaXB0aW9uOiAgICBTcGVjaWZ5IHRoZSBtYXhpbXVtIGRhdGEgcGF5bG9hZCBzaXplIGluIGJ5dGVzIGZvciBhbHRlcm5hdGUKKyAgICAgICAgICAgICAgICBzZXR0aW5ncywgZm9yIGVhY2ggZGV2aWNlLiBuIGlzIHNjYWxlZCBiZXR3ZWVuIDYzIGFuZCAxMDIzLgorRGVmYXVsdDogICAgICAgIDEwMjMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05hbWU6ICAgICAgICAgICBtYXhfYnVmZmVycworVHlwZTogICAgICAgICAgIGludCBhcnJheSAobWluID0gMCwgbWF4ID0gMzIpCitTeW50YXg6ICAgICAgICAgPG5bLC4uLl0+CitEZXNjcmlwdGlvbjogICAgRm9yIGFkdmFuY2VkIHVzZXJzLgorICAgICAgICAgICAgICAgIFNwZWNpZnkgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZpZGVvIGZyYW1lIGJ1ZmZlcnMgdG8gYWxsb2NhdGUKKyAgICAgICAgICAgICAgICBmb3IgZWFjaCBkZXZpY2UsIGZyb20gMiB0byAzMi4KK0RlZmF1bHQ6ICAgICAgICAyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOYW1lOiAgICAgICAgICAgZG91YmxlX2J1ZmZlcgorVHlwZTogICAgICAgICAgIGJvb2wgYXJyYXkgKG1pbiA9IDAsIG1heCA9IDMyKQorU3ludGF4OiAgICAgICAgIDwwfDFbLC4uLl0+CitEZXNjcmlwdGlvbjogICAgSGFyZHdhcmUgZG91YmxlIGJ1ZmZlcmluZzogMCBkaXNhYmxlZCwgMSBlbmFibGVkLgorICAgICAgICAgICAgICAgIEl0IHNob3VsZCBiZSBlbmFibGVkIGlmIHlvdSB3YW50IHNtb290aCB2aWRlbyBvdXRwdXQ6IGlmIHlvdQorICAgICAgICAgICAgICAgIG9idGFpbiBvdXQgb2Ygc3luYy4gdmlkZW8sIGRpc2FibGUgaXQsIG9yIHRyeSB0bworICAgICAgICAgICAgICAgIGRlY3JlYXNlIHRoZSAnY2xvY2tkaXYnIG1vZHVsZSBwYXJhbWV0ZXIgdmFsdWUuCitEZWZhdWx0OiAgICAgICAgMSBmb3IgZXZlcnkgZGV2aWNlLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmFtZTogICAgICAgICAgIGNsYW1waW5nCitUeXBlOiAgICAgICAgICAgYm9vbCBhcnJheSAobWluID0gMCwgbWF4ID0gMzIpCitTeW50YXg6ICAgICAgICAgPDB8MVssLi4uXT4KK0Rlc2NyaXB0aW9uOiAgICBWaWRlbyBkYXRhIGNsYW1waW5nOiAwIGRpc2FibGVkLCAxIGVuYWJsZWQuCitEZWZhdWx0OiAgICAgICAgMCBmb3IgZXZlcnkgZGV2aWNlLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmFtZTogICAgICAgICAgIGZpbHRlcl90eXBlCitUeXBlOiAgICAgICAgICAgaW50IGFycmF5IChtaW4gPSAwLCBtYXggPSAzMikKK1N5bnRheDogICAgICAgICA8MHwxfDJbLC4uLl0+CitEZXNjcmlwdGlvbjogICAgVmlkZW8gZmlsdGVyIHR5cGUuCisgICAgICAgICAgICAgICAgMCBub25lLCAxICgxLTItMSkgMy10YXAgZmlsdGVyLCAyICgyLTMtNi0zLTIpIDUtdGFwIGZpbHRlci4KKyAgICAgICAgICAgICAgICBUaGUgZmlsdGVyIGlzIHVzZWQgdG8gcmVkdWNlIG5vaXNlIGFuZCBhbGlhc2luZyBhcnRpZmFjdHMKKyAgICAgICAgICAgICAgICBwcm9kdWNlZCBieSB0aGUgQ0NEIG9yIENNT1MgaW1hZ2Ugc2Vuc29yLgorRGVmYXVsdDogICAgICAgIDAgZm9yIGV2ZXJ5IGRldmljZS4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05hbWU6ICAgICAgICAgICBsYXJnZXZpZXcKK1R5cGU6ICAgICAgICAgICBib29sIGFycmF5IChtaW4gPSAwLCBtYXggPSAzMikKK1N5bnRheDogICAgICAgICA8MHwxWywuLi5dPgorRGVzY3JpcHRpb246ICAgIExhcmdlIHZpZXc6IDAgZGlzYWJsZWQsIDEgZW5hYmxlZC4KK0RlZmF1bHQ6ICAgICAgICAxIGZvciBldmVyeSBkZXZpY2UuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOYW1lOiAgICAgICAgICAgdXBzY2FsaW5nCitUeXBlOiAgICAgICAgICAgYm9vbCBhcnJheSAobWluID0gMCwgbWF4ID0gMzIpCitTeW50YXg6ICAgICAgICAgPDB8MVssLi4uXT4KK0Rlc2NyaXB0aW9uOiAgICBTb2Z0d2FyZSBzY2FsaW5nIChmb3Igbm9uLWNvbXByZXNzZWQgdmlkZW8gb25seSk6CisgICAgICAgICAgICAgICAgMCBkaXNhYmxlZCwgMSBlbmFibGVkLgorICAgICAgICAgICAgICAgIERpc2FibGUgaXQgaWYgeW91IGhhdmUgYSBzbG93IENQVSBvciB5b3UgZG9uJ3QgaGF2ZSBlbm91Z2gKKyAgICAgICAgICAgICAgICBtZW1vcnkuCitEZWZhdWx0OiAgICAgICAgMCBmb3IgZXZlcnkgZGV2aWNlLgorTm90ZTogICAgICAgICAgIElmICd3OTk2OGNmLXZwcCcgaXMgbm90IHByZXNlbnQsIHRoaXMgcGFyYW1ldGVyIGlzIHNldCB0byAwLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmFtZTogICAgICAgICAgIGRlY29tcHJlc3Npb24KK1R5cGU6ICAgICAgICAgICBpbnQgYXJyYXkgKG1pbiA9IDAsIG1heCA9IDMyKQorU3ludGF4OiAgICAgICAgIDwwfDF8MlssLi4uXT4KK0Rlc2NyaXB0aW9uOiAgICBTb2Z0d2FyZSB2aWRlbyBkZWNvbXByZXNzaW9uOgorICAgICAgICAgICAgICAgIDAgPSBkaXNhYmxlcyBkZWNvbXByZXNzaW9uCisgICAgICAgICAgICAgICAgICAgIChkb2Vzbid0IGFsbG93IGZvcm1hdHMgbmVlZGluZyBkZWNvbXByZXNzaW9uKS4KKyAgICAgICAgICAgICAgICAxID0gZm9yY2VzIGRlY29tcHJlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgKGFsbG93cyBmb3JtYXRzIG5lZWRpbmcgZGVjb21wcmVzc2lvbiBvbmx5KS4KKyAgICAgICAgICAgICAgICAyID0gYWxsb3dzIGFueSBwZXJtaXR0ZWQgZm9ybWF0cy4KKyAgICAgICAgICAgICAgICBGb3JtYXRzIHN1cHBvcnRpbmcgKGRlKWNvbXByZXNzZWQgdmlkZW8gYXJlIFlVVjQyMlAgYW5kCisgICAgICAgICAgICAgICAgWVVWNDIwUC9ZVVY0MjAgaW4gYW55IHJlc29sdXRpb25zIHdoZXJlIHdpZHRoIGFuZCBoZWlnaHQgYXJlCisgICAgICAgICAgICAgICAgbXVsdGlwbGVzIG9mIDE2LgorRGVmYXVsdDogICAgICAgIDIgZm9yIGV2ZXJ5IGRldmljZS4KK05vdGU6ICAgICAgICAgICBJZiAndzk5NjhjZi12cHAnIGlzIG5vdCBwcmVzZW50LCBmb3JjaW5nIGRlY29tcHJlc3Npb24gaXMgbm90CisgICAgICAgICAgICAgICAgYWxsb3dlZDsgaW4gdGhpcyBjYXNlIHRoaXMgcGFyYW1ldGVyIGlzIHNldCB0byAyLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmFtZTogICAgICAgICAgIGZvcmNlX3BhbGV0dGUKK1R5cGU6ICAgICAgICAgICBpbnQgYXJyYXkgKG1pbiA9IDAsIG1heCA9IDMyKQorU3ludGF4OiAgICAgICAgIDwwfDl8MTB8MTN8MTV8OHw3fDF8NnwzfDR8NVssLi4uXT4KK0Rlc2NyaXB0aW9uOiAgICBGb3JjZSBwaWN0dXJlIHBhbGV0dGUuCisgICAgICAgICAgICAgICAgSW4gb3JkZXI6CisgICAgICAgICAgICAgICAgIDAgPSBPZmYgLSBhbGxvd3MgYW55IG9mIHRoZSBmb2xsb3dpbmcgZm9ybWF0czoKKyAgICAgICAgICAgICAgICAgOSA9IFVZVlkgICAgMTYgYnBwIC0gT3JpZ2luYWwgdmlkZW8sIGNvbXByZXNzaW9uIGRpc2FibGVkCisgICAgICAgICAgICAgICAgMTAgPSBZVVY0MjAgIDEyIGJwcCAtIE9yaWdpbmFsIHZpZGVvLCBjb21wcmVzc2lvbiBlbmFibGVkCisgICAgICAgICAgICAgICAgMTMgPSBZVVY0MjJQIDE2IGJwcCAtIE9yaWdpbmFsIHZpZGVvLCBjb21wcmVzc2lvbiBlbmFibGVkCisgICAgICAgICAgICAgICAgMTUgPSBZVVY0MjBQIDEyIGJwcCAtIE9yaWdpbmFsIHZpZGVvLCBjb21wcmVzc2lvbiBlbmFibGVkCisgICAgICAgICAgICAgICAgIDggPSBZVVZZICAgIDE2IGJwcCAtIFNvZnR3YXJlIGNvbnZlcnNpb24gZnJvbSBVWVZZCisgICAgICAgICAgICAgICAgIDcgPSBZVVY0MjIgIDE2IGJwcCAtIFNvZnR3YXJlIGNvbnZlcnNpb24gZnJvbSBVWVZZCisgICAgICAgICAgICAgICAgIDEgPSBHUkVZICAgICA4IGJwcCAtIFNvZnR3YXJlIGNvbnZlcnNpb24gZnJvbSBVWVZZCisgICAgICAgICAgICAgICAgIDYgPSBSR0I1NTUgIDE2IGJwcCAtIFNvZnR3YXJlIGNvbnZlcnNpb24gZnJvbSBVWVZZCisgICAgICAgICAgICAgICAgIDMgPSBSR0I1NjUgIDE2IGJwcCAtIFNvZnR3YXJlIGNvbnZlcnNpb24gZnJvbSBVWVZZCisgICAgICAgICAgICAgICAgIDQgPSBSR0IyNCAgIDI0IGJwcCAtIFNvZnR3YXJlIGNvbnZlcnNpb24gZnJvbSBVWVZZCisgICAgICAgICAgICAgICAgIDUgPSBSR0IzMiAgIDMyIGJwcCAtIFNvZnR3YXJlIGNvbnZlcnNpb24gZnJvbSBVWVZZCisgICAgICAgICAgICAgICAgV2hlbiBub3QgMCwgdGhpcyBwYXJhbWV0ZXIgd2lsbCBvdmVycmlkZSAnZGVjb21wcmVzc2lvbicuCitEZWZhdWx0OiAgICAgICAgMCBmb3IgZXZlcnkgZGV2aWNlLiBJbml0aWFsIHBhbGV0dGUgaXMgOSAoVVlWWSkuCitOb3RlOiAgICAgICAgICAgSWYgJ3c5OTY4Y2YtdnBwJyBpcyBub3QgcHJlc2VudCwgdGhpcyBwYXJhbWV0ZXIgaXMgc2V0IHRvIDkuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOYW1lOiAgICAgICAgICAgZm9yY2VfcmdiCitUeXBlOiAgICAgICAgICAgYm9vbCBhcnJheSAobWluID0gMCwgbWF4ID0gMzIpCitTeW50YXg6ICAgICAgICAgPDB8MVssLi4uXT4KK0Rlc2NyaXB0aW9uOiAgICBSZWFkIFJHQiB2aWRlbyBkYXRhIGluc3RlYWQgb2YgQkdSOgorICAgICAgICAgICAgICAgIDEgPSB1c2UgUkdCIGNvbXBvbmVudCBvcmRlcmluZy4KKyAgICAgICAgICAgICAgICAwID0gdXNlIEJHUiBjb21wb25lbnQgb3JkZXJpbmcuCisgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaGFzIGVmZmVjdCB3aGVuIHVzaW5nIFJHQlggcGFsZXR0ZXMgb25seS4KK0RlZmF1bHQ6ICAgICAgICAwIGZvciBldmVyeSBkZXZpY2UuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOYW1lOiAgICAgICAgICAgYXV0b2JyaWdodAorVHlwZTogICAgICAgICAgIGJvb2wgYXJyYXkgKG1pbiA9IDAsIG1heCA9IDMyKQorU3ludGF4OiAgICAgICAgIDwwfDFbLC4uLl0+CitEZXNjcmlwdGlvbjogICAgSW1hZ2Ugc2Vuc29yIGF1dG9tYXRpY2FsbHkgY2hhbmdlcyBicmlnaHRuZXNzOgorICAgICAgICAgICAgICAgIDAgPSBubywgMSA9IHllcworRGVmYXVsdDogICAgICAgIDAgZm9yIGV2ZXJ5IGRldmljZS4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05hbWU6ICAgICAgICAgICBhdXRvZXhwCitUeXBlOiAgICAgICAgICAgYm9vbCBhcnJheSAobWluID0gMCwgbWF4ID0gMzIpCitTeW50YXg6ICAgICAgICAgPDB8MVssLi4uXT4KK0Rlc2NyaXB0aW9uOiAgICBJbWFnZSBzZW5zb3IgYXV0b21hdGljYWxseSBjaGFuZ2VzIGV4cG9zdXJlOgorICAgICAgICAgICAgICAgIDAgPSBubywgMSA9IHllcworRGVmYXVsdDogICAgICAgIDEgZm9yIGV2ZXJ5IGRldmljZS4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05hbWU6ICAgICAgICAgICBsaWdodGZyZXEKK1R5cGU6ICAgICAgICAgICBpbnQgYXJyYXkgKG1pbiA9IDAsIG1heCA9IDMyKQorU3ludGF4OiAgICAgICAgIDw1MHw2MFssLi4uXT4KK0Rlc2NyaXB0aW9uOiAgICBMaWdodCBmcmVxdWVuY3kgaW4gSHo6CisgICAgICAgICAgICAgICAgNTAgZm9yIEV1cm9wZWFuIGFuZCBBc2lhbiBsaWdodGluZywgNjAgZm9yIEFtZXJpY2FuIGxpZ2h0aW5nLgorRGVmYXVsdDogICAgICAgIDUwIGZvciBldmVyeSBkZXZpY2UuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOYW1lOiAgICAgICAgICAgYmFuZGluZ2ZpbHRlcgorVHlwZTogICAgICAgICAgIGJvb2wgYXJyYXkgKG1pbiA9IDAsIG1heCA9IDMyKQorU3ludGF4OiAgICAgICAgIDwwfDFbLC4uLl0+CitEZXNjcmlwdGlvbjogICAgQmFuZGluZyBmaWx0ZXIgdG8gcmVkdWNlIGVmZmVjdHMgb2YgZmx1b3Jlc2NlbnQKKyAgICAgICAgICAgICAgICBsaWdodGluZzoKKyAgICAgICAgICAgICAgICAwIGRpc2FibGVkLCAxIGVuYWJsZWQuCisgICAgICAgICAgICAgICAgVGhpcyBmaWx0ZXIgdHJpZXMgdG8gcmVkdWNlIHRoZSBwYXR0ZXJuIG9mIGhvcml6b250YWwKKyAgICAgICAgICAgICAgICBsaWdodC9kYXJrIGJhbmRzIGNhdXNlZCBieSBzb21lICh1c3VhbGx5IGZsdW9yZXNjZW50KSBsaWdodGluZy4KK0RlZmF1bHQ6ICAgICAgICAwIGZvciBldmVyeSBkZXZpY2UuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOYW1lOiAgICAgICAgICAgY2xvY2tkaXYKK1R5cGU6ICAgICAgICAgICBpbnQgYXJyYXkgKG1pbiA9IDAsIG1heCA9IDMyKQorU3ludGF4OiAgICAgICAgIDwtMXxuWywuLi5dPgorRGVzY3JpcHRpb246ICAgIEZvcmNlIHBpeGVsIGNsb2NrIGRpdmlzb3IgdG8gYSBzcGVjaWZpYyB2YWx1ZSAoZm9yIGV4cGVydHMpOgorICAgICAgICAgICAgICAgIG4gbWF5IHZhcnkgZnJvbSAwIHRvIDEyNy4KKyAgICAgICAgICAgICAgICAtMSBmb3IgYXV0b21hdGljIHZhbHVlLgorICAgICAgICAgICAgICAgIFNlZSBhbHNvIHRoZSAnZG91YmxlX2J1ZmZlcicgbW9kdWxlIHBhcmFtZXRlci4KK0RlZmF1bHQ6ICAgICAgICAtMSBmb3IgZXZlcnkgZGV2aWNlLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmFtZTogICAgICAgICAgIGJhY2tsaWdodAorVHlwZTogICAgICAgICAgIGJvb2wgYXJyYXkgKG1pbiA9IDAsIG1heCA9IDMyKQorU3ludGF4OiAgICAgICAgIDwwfDFbLC4uLl0+CitEZXNjcmlwdGlvbjogICAgT2JqZWN0cyBhcmUgbGl0IGZyb20gYmVoaW5kOgorICAgICAgICAgICAgICAgIDAgPSBubywgMSA9IHllcworRGVmYXVsdDogICAgICAgIDAgZm9yIGV2ZXJ5IGRldmljZS4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05hbWU6ICAgICAgICAgICBtaXJyb3IKK1R5cGU6ICAgICAgICAgICBib29sIGFycmF5IChtaW4gPSAwLCBtYXggPSAzMikKK1N5bnRheDogICAgICAgICA8MHwxWywuLi5dPgorRGVzY3JpcHRpb246ICAgIFJldmVyc2UgaW1hZ2UgaG9yaXpvbnRhbGx5OgorICAgICAgICAgICAgICAgIDAgPSBubywgMSA9IHllcworRGVmYXVsdDogICAgICAgIDAgZm9yIGV2ZXJ5IGRldmljZS4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05hbWU6ICAgICAgICAgICBtb25vY2hyb21lCitUeXBlOiAgICAgICAgICAgYm9vbCBhcnJheSAobWluID0gMCwgbWF4ID0gMzIpCitTeW50YXg6ICAgICAgICAgPDB8MVssLi4uXT4KK0Rlc2NyaXB0aW9uOiAgICBUaGUgaW1hZ2Ugc2Vuc29yIGlzIG1vbm9jaHJvbWU6CisgICAgICAgICAgICAgICAgMCA9IG5vLCAxID0geWVzCitEZWZhdWx0OiAgICAgICAgMCBmb3IgZXZlcnkgZGV2aWNlLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmFtZTogICAgICAgICAgIGJyaWdodG5lc3MKK1R5cGU6ICAgICAgICAgICBsb25nIGFycmF5IChtaW4gPSAwLCBtYXggPSAzMikKK1N5bnRheDogICAgICAgICA8blssLi4uXT4KK0Rlc2NyaXB0aW9uOiAgICBTZXQgcGljdHVyZSBicmlnaHRuZXNzICgwLTY1NTM1KS4KKyAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBoYXMgbm8gZWZmZWN0IGlmICdhdXRvYnJpZ2h0JyBpcyBlbmFibGVkLgorRGVmYXVsdDogICAgICAgIDMxMDAwIGZvciBldmVyeSBkZXZpY2UuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOYW1lOiAgICAgICAgICAgaHVlCitUeXBlOiAgICAgICAgICAgbG9uZyBhcnJheSAobWluID0gMCwgbWF4ID0gMzIpCitTeW50YXg6ICAgICAgICAgPG5bLC4uLl0+CitEZXNjcmlwdGlvbjogICAgU2V0IHBpY3R1cmUgaHVlICgwLTY1NTM1KS4KK0RlZmF1bHQ6ICAgICAgICAzMjc2OCBmb3IgZXZlcnkgZGV2aWNlLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmFtZTogICAgICAgICAgIGNvbG91cgorVHlwZTogICAgICAgICAgIGxvbmcgYXJyYXkgKG1pbiA9IDAsIG1heCA9IDMyKQorU3ludGF4OiAgICAgICAgIDxuWywuLi5dPgorRGVzY3JpcHRpb246ICAgIFNldCBwaWN0dXJlIHNhdHVyYXRpb24gKDAtNjU1MzUpLgorRGVmYXVsdDogICAgICAgIDMyNzY4IGZvciBldmVyeSBkZXZpY2UuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOYW1lOiAgICAgICAgICAgY29udHJhc3QKK1R5cGU6ICAgICAgICAgICBsb25nIGFycmF5IChtaW4gPSAwLCBtYXggPSAzMikKK1N5bnRheDogICAgICAgICA8blssLi4uXT4KK0Rlc2NyaXB0aW9uOiAgICBTZXQgcGljdHVyZSBjb250cmFzdCAoMC02NTUzNSkuCitEZWZhdWx0OiAgICAgICAgNTAwMDAgZm9yIGV2ZXJ5IGRldmljZS4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05hbWU6ICAgICAgICAgICB3aGl0ZW5lc3MKK1R5cGU6ICAgICAgICAgICBsb25nIGFycmF5IChtaW4gPSAwLCBtYXggPSAzMikKK1N5bnRheDogICAgICAgICA8blssLi4uXT4KK0Rlc2NyaXB0aW9uOiAgICBTZXQgcGljdHVyZSB3aGl0ZW5lc3MgKDAtNjU1MzUpLgorRGVmYXVsdDogICAgICAgIDMyNzY4IGZvciBldmVyeSBkZXZpY2UuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOYW1lOiAgICAgICAgICAgZGVidWcKK1R5cGU6ICAgICAgICAgICBpbnQKK1N5bnRheDogICAgICAgICA8bj4KK0Rlc2NyaXB0aW9uOiAgICBEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gbGV2ZWwsIGZyb20gMCB0byA2OgorICAgICAgICAgICAgICAgIDAgPSBub25lICh1c2UgY2FyZWZ1bGx5KQorICAgICAgICAgICAgICAgIDEgPSBjcml0aWNhbCBlcnJvcnMKKyAgICAgICAgICAgICAgICAyID0gc2lnbmlmaWNhbnQgaW5mb3JtYXRpb25zCisgICAgICAgICAgICAgICAgMyA9IGNvbmZpZ3VyYXRpb24gb3IgZ2VuZXJhbCBtZXNzYWdlcworICAgICAgICAgICAgICAgIDQgPSB3YXJuaW5ncworICAgICAgICAgICAgICAgIDUgPSBjYWxsZWQgZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgNiA9IGZ1bmN0aW9uIGludGVybmFscworICAgICAgICAgICAgICAgIExldmVsIDUgYW5kIDYgYXJlIHVzZWZ1bCBmb3IgdGVzdGluZyBvbmx5LCB3aGVuIG9ubHkgb25lCisgICAgICAgICAgICAgICAgZGV2aWNlIGlzIHVzZWQuCitEZWZhdWx0OiAgICAgICAgMgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmFtZTogICAgICAgICAgIHNwZWNpZmljX2RlYnVnCitUeXBlOiAgICAgICAgICAgYm9vbAorU3ludGF4OiAgICAgICAgIDwwfDE+CitEZXNjcmlwdGlvbjogICAgRW5hYmxlIG9yIGRpc2FibGUgc3BlY2lmaWMgZGVidWdnaW5nIG1lc3NhZ2VzOgorICAgICAgICAgICAgICAgIDAgPSBwcmludCBtZXNzYWdlcyBjb25jZXJuaW5nIGV2ZXJ5IGxldmVsIDw9ICdkZWJ1ZycgbGV2ZWwuCisgICAgICAgICAgICAgICAgMSA9IHByaW50IG1lc3NhZ2VzIGNvbmNlcm5pbmcgdGhlIGxldmVsIGluZGljYXRlZCBieSAnZGVidWcnLgorRGVmYXVsdDogICAgICAgIDAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCis5LiBDb250YWN0IGluZm9ybWF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09CitJIG1heSBiZSBjb250YWN0ZWQgYnkgZS1tYWlsIGF0IDxsdWNhLnJpc29saWFAc3R1ZGlvLnVuaWJvLml0Pi4KKworSSBjYW4gYWNjZXB0IEdQRy9QR1AgZW5jcnlwdGVkIGUtbWFpbC4gTXkgR1BHIGtleSBJRCBpcyAnRkNFNjM1QTQnLgorTXkgcHVibGljIDEwMjQtYml0IGtleSBzaG91bGQgYmUgYXZhaWxhYmxlIGF0IHlvdXIga2V5c2VydmVyOyB0aGUgZmluZ2VycHJpbnQKK2lzOiAnODhFOCBGMzJGIDcyNDQgNjhCQSAzOTU4ICA1RDQwIDk5REEgNUQyQSBGQ0U2IDM1QTQnLgorCisKKzEwLiBDcmVkaXRzCis9PT09PT09PT09CitUaGUgZGV2ZWxvcG1lbnQgd291bGQgbm90IGhhdmUgcHJvY2VlZCBtdWNoIGZ1cnRoZXIgd2l0aG91dCBoYXZpbmcgbG9va2VkIGF0Cit0aGUgc291cmNlIGNvZGUgb2Ygb3RoZXIgZHJpdmVycyBhbmQgd2l0aG91dCB0aGUgaGVscCBvZiBzZXZlcmFsIHBlcnNvbnM7IGluCitwYXJ0aWN1bGFyOgorCistIHRoZSBJMkMgaW50ZXJmYWNlIHRvIGtlcm5lbCBhbmQgaGlnaC1sZXZlbCBpbWFnZSBzZW5zb3IgY29udHJvbCByb3V0aW5lcyBoYXZlCisgIGJlZW4gdGFrZW4gZnJvbSB0aGUgT1Y1MTEgZHJpdmVyIGJ5IE1hcmsgTWNDbGVsbGFuZDsKKworLSBtZW1vcnkgbWFuYWdlbWVudCBjb2RlIGhhcyBiZWVuIGNvcGllZCBmcm9tIHRoZSBidHR2IGRyaXZlciBieSBSYWxwaCBNZXR6bGVyLAorICBNYXJjdXMgTWV0emxlciBhbmQgR2VyZCBLbm9ycjsKKworLSB0aGUgbG93LWxldmVsIEkyQyByZWFkIGZ1bmN0aW9uIGhhcyBiZWVuIHdyaXR0ZW4gYnkgRnJlZGVyaWMgSm91YXVsdDsKKworLSB0aGUgbG93LWxldmVsIEkyQyBmYXN0IHdyaXRlIGZ1bmN0aW9uIGhhcyBiZWVuIHdyaXR0ZW4gYnkgUGlvdHIgQ3plcmN6YWsuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3pjMDMwMS50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3pjMDMwMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU1MjYyYwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvemMwMzAxLnR4dApAQCAtMCwwICsxLDI1NCBAQAorCisgICAgICAgICAgICAgICAgICAgIFpDMDMwMSBJbWFnZSBQcm9jZXNzb3IgYW5kIENvbnRyb2wgQ2hpcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEcml2ZXIgZm9yIExpbnV4CisgICAgICAgICAgICAgICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBEb2N1bWVudGF0aW9uIC0KKworCitJbmRleAorPT09PT0KKzEuICBDb3B5cmlnaHQKKzIuICBEaXNjbGFpbWVyCiszLiAgTGljZW5zZQorNC4gIE92ZXJ2aWV3IGFuZCBmZWF0dXJlcworNS4gIE1vZHVsZSBkZXBlbmRlbmNpZXMKKzYuICBNb2R1bGUgbG9hZGluZworNy4gIE1vZHVsZSBwYXJhbWV0ZXJzCis4LiAgU3VwcG9ydGVkIGRldmljZXMKKzkuICBOb3RlcyBmb3IgVjRMMiBhcHBsaWNhdGlvbiBkZXZlbG9wZXJzCisxMC4gQ29udGFjdCBpbmZvcm1hdGlvbgorMTEuIENyZWRpdHMKKworCisxLiBDb3B5cmlnaHQKKz09PT09PT09PT09PQorQ29weXJpZ2h0IChDKSAyMDA2IGJ5IEx1Y2EgUmlzb2xpYSA8bHVjYS5yaXNvbGlhQHN0dWRpby51bmliby5pdD4KKworCisyLiBEaXNjbGFpbWVyCis9PT09PT09PT09PT09CitUaGlzIHNvZnR3YXJlIGlzIG5vdCBkZXZlbG9wZWQgb3Igc3BvbnNvcmVkIGJ5IFotU3RhciBNaWNyb2VsZWN0cm9uaWNzIENvcnAuCitUcmFkZW1hcmtzIGFyZSBwcm9wZXJ0eSBvZiB0aGVpciByZXNwZWN0aXZlIG93bmVyLgorCisKKzMuIExpY2Vuc2UKKz09PT09PT09PT0KK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKK1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCithbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisKKworNC4gT3ZlcnZpZXcgYW5kIGZlYXR1cmVzCis9PT09PT09PT09PT09PT09PT09PT09PT0KK1RoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSB2aWRlbyBpbnRlcmZhY2Ugb2YgdGhlIGRldmljZXMgbW91bnRpbmcgdGhlIFpDMDMwMQorSW1hZ2UgUHJvY2Vzc29yIGFuZCBDb250cm9sIENoaXAuCisKK1RoZSBkcml2ZXIgcmVsaWVzIG9uIHRoZSBWaWRlbzRMaW51eDIgYW5kIFVTQiBjb3JlIG1vZHVsZXMuIEl0IGhhcyBiZWVuCitkZXNpZ25lZCB0byBydW4gcHJvcGVybHkgb24gU01QIHN5c3RlbXMgYXMgd2VsbC4KKworVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBaQzAzMDEgZHJpdmVyIGNhbiBiZSBmb3VuZCBhdCB0aGUgZm9sbG93aW5nIFVSTDoKK2h0dHA6Ly93d3cubGludXgtcHJvamVjdHMub3JnLworCitTb21lIG9mIHRoZSBmZWF0dXJlcyBvZiB0aGUgZHJpdmVyIGFyZToKKworLSBmdWxsIGNvbXBsaWFuY2Ugd2l0aCB0aGUgVmlkZW80TGludXgyIEFQSSAoc2VlIGFsc28gIk5vdGVzIGZvciBWNEwyCisgIGFwcGxpY2F0aW9uIGRldmVsb3BlcnMiIHBhcmFncmFwaCk7CistIGF2YWlsYWJsZSBtbWFwIG9yIHJlYWQvcG9sbCBtZXRob2RzIGZvciB2aWRlbyBzdHJlYW1pbmcgdGhyb3VnaCBpc29jaHJvbm91cworICBkYXRhIHRyYW5zZmVyczsKKy0gYXV0b21hdGljIGRldGVjdGlvbiBvZiBpbWFnZSBzZW5zb3I7CistIHZpZGVvIGZvcm1hdCBpcyBzdGFuZGFyZCBKUEVHOworLSBkeW5hbWljIGRyaXZlciBjb250cm9sIHRoYW5rcyB0byB2YXJpb3VzIG1vZHVsZSBwYXJhbWV0ZXJzIChzZWUgIk1vZHVsZQorICBwYXJhbWV0ZXJzIiBwYXJhZ3JhcGgpOworLSB1cCB0byA2NCBjYW1lcmFzIGNhbiBiZSBoYW5kbGVkIGF0IHRoZSBzYW1lIHRpbWU7IHRoZXkgY2FuIGJlIGNvbm5lY3RlZCBhbmQKKyAgZGlzY29ubmVjdGVkIGZyb20gdGhlIGhvc3QgbWFueSB0aW1lcyB3aXRob3V0IHR1cm5pbmcgb2ZmIHRoZSBjb21wdXRlciwgaWYKKyAgdGhlIHN5c3RlbSBzdXBwb3J0cyBob3RwbHVnZ2luZzsKKworCis1LiBNb2R1bGUgZGVwZW5kZW5jaWVzCis9PT09PT09PT09PT09PT09PT09PT09CitGb3IgaXQgdG8gd29yayBwcm9wZXJseSwgdGhlIGRyaXZlciBuZWVkcyBrZXJuZWwgc3VwcG9ydCBmb3IgVmlkZW80TGludXggYW5kCitVU0IuCisKK1RoZSBmb2xsb3dpbmcgb3B0aW9ucyBvZiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSBtdXN0IGJlIGVuYWJsZWQgYW5kCitjb3JyZXNwb25kaW5nIG1vZHVsZXMgbXVzdCBiZSBjb21waWxlZDoKKworCSMgTXVsdGltZWRpYSBkZXZpY2VzCisJIworCUNPTkZJR19WSURFT19ERVY9bQorCisJIyBVU0Igc3VwcG9ydAorCSMKKwlDT05GSUdfVVNCPW0KKworSW4gYWRkaXRpb24sIGRlcGVuZGluZyBvbiB0aGUgaGFyZHdhcmUgYmVpbmcgdXNlZCwgdGhlIG1vZHVsZXMgYmVsb3cgYXJlCituZWNlc3Nhcnk6CisKKwkjIFVTQiBIb3N0IENvbnRyb2xsZXIgRHJpdmVycworCSMKKwlDT05GSUdfVVNCX0VIQ0lfSENEPW0KKwlDT05GSUdfVVNCX1VIQ0lfSENEPW0KKwlDT05GSUdfVVNCX09IQ0lfSENEPW0KKworVGhlIFpDMDMwMSBjb250cm9sbGVyIGFsc28gcHJvdmlkZXMgYSBidWlsdC1pbiBtaWNyb3Bob25lIGludGVyZmFjZS4gSXQgaXMKK3N1cHBvcnRlZCBieSB0aGUgVVNCIEF1ZGlvIGRyaXZlciB0aGFua3MgdG8gdGhlIEFMU0EgQVBJOgorCisJIyBTb3VuZAorCSMKKwlDT05GSUdfU09VTkQ9eQorCisJIyBBZHZhbmNlZCBMaW51eCBTb3VuZCBBcmNoaXRlY3R1cmUKKwkjCisJQ09ORklHX1NORD1tCisKKwkjIFVTQiBkZXZpY2VzCisJIworCUNPTkZJR19TTkRfVVNCX0FVRElPPW0KKworQW5kIGZpbmFsbHk6CisKKwkjIFVTQiBNdWx0aW1lZGlhIGRldmljZXMKKwkjCisJQ09ORklHX1VTQl9aQzAzMDE9bQorCisKKzYuIE1vZHVsZSBsb2FkaW5nCis9PT09PT09PT09PT09PT09PQorVG8gdXNlIHRoZSBkcml2ZXIsIGl0IGlzIG5lY2Vzc2FyeSB0byBsb2FkIHRoZSAiemMwMzAxIiBtb2R1bGUgaW50byBtZW1vcnkKK2FmdGVyIGV2ZXJ5IG90aGVyIG1vZHVsZSByZXF1aXJlZDogInZpZGVvZGV2IiwgInVzYmNvcmUiIGFuZCwgZGVwZW5kaW5nIG9uCit0aGUgVVNCIGhvc3QgY29udHJvbGxlciB5b3UgaGF2ZSwgImVoY2ktaGNkIiwgInVoY2ktaGNkIiBvciAib2hjaS1oY2QiLgorCitMb2FkaW5nIGNhbiBiZSBkb25lIGFzIHNob3duIGJlbG93OgorCisJW3Jvb3RAbG9jYWxob3N0IGhvbWVdIyBtb2Rwcm9iZSB6YzAzMDEKKworQXQgdGhpcyBwb2ludCB0aGUgZGV2aWNlcyBzaG91bGQgYmUgcmVjb2duaXplZC4gWW91IGNhbiBpbnZva2UgImRtZXNnIiB0bworYW5hbHl6ZSBrZXJuZWwgbWVzc2FnZXMgYW5kIHZlcmlmeSB0aGF0IHRoZSBsb2FkaW5nIHByb2Nlc3MgaGFzIGdvbmUgd2VsbDoKKworCVt1c2VyQGxvY2FsaG9zdCBob21lXSQgZG1lc2cKKworCis3LiBNb2R1bGUgcGFyYW1ldGVycworPT09PT09PT09PT09PT09PT09PT0KK01vZHVsZSBwYXJhbWV0ZXJzIGFyZSBsaXN0ZWQgYmVsb3c6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOYW1lOiAgICAgICAgICAgdmlkZW9fbnIKK1R5cGU6ICAgICAgICAgICBzaG9ydCBhcnJheSAobWluID0gMCwgbWF4ID0gNjQpCitTeW50YXg6ICAgICAgICAgPC0xfG5bLC4uLl0+CitEZXNjcmlwdGlvbjogICAgU3BlY2lmeSBWNEwyIG1pbm9yIG1vZGUgbnVtYmVyOgorICAgICAgICAgICAgICAgIC0xID0gdXNlIG5leHQgYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgIG4gPSB1c2UgbWlub3IgbnVtYmVyIG4KKyAgICAgICAgICAgICAgICBZb3UgY2FuIHNwZWNpZnkgdXAgdG8gNjQgY2FtZXJhcyB0aGlzIHdheS4KKyAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZToKKyAgICAgICAgICAgICAgICB2aWRlb19ucj0tMSwyLC0xIHdvdWxkIGFzc2lnbiBtaW5vciBudW1iZXIgMiB0byB0aGUgc2Vjb25kCisgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZCBjYW1lcmEgYW5kIHVzZSBhdXRvIGZvciB0aGUgZmlyc3Qgb25lIGFuZCBmb3IgZXZlcnkKKyAgICAgICAgICAgICAgICBvdGhlciBjYW1lcmEuCitEZWZhdWx0OiAgICAgICAgLTEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05hbWU6ICAgICAgICAgICBmb3JjZV9tdW5tYXAKK1R5cGU6ICAgICAgICAgICBib29sIGFycmF5IChtaW4gPSAwLCBtYXggPSA2NCkKK1N5bnRheDogICAgICAgICA8MHwxWywuLi5dPgorRGVzY3JpcHRpb246ICAgIEZvcmNlIHRoZSBhcHBsaWNhdGlvbiB0byB1bm1hcCBwcmV2aW91c2x5IG1hcHBlZCBidWZmZXIgbWVtb3J5CisgICAgICAgICAgICAgICAgYmVmb3JlIGNhbGxpbmcgYW55IFZJRElPQ19TX0NST1Agb3IgVklESU9DX1NfRk1UIGlvY3RsJ3MuIE5vdAorICAgICAgICAgICAgICAgIGFsbCB0aGUgYXBwbGljYXRpb25zIHN1cHBvcnQgdGhpcyBmZWF0dXJlLiBUaGlzIHBhcmFtZXRlciBpcworICAgICAgICAgICAgICAgIHNwZWNpZmljIGZvciBlYWNoIGRldGVjdGVkIGNhbWVyYS4KKyAgICAgICAgICAgICAgICAwID0gZG8gbm90IGZvcmNlIG1lbW9yeSB1bm1hcHBpbmcKKyAgICAgICAgICAgICAgICAxID0gZm9yY2UgbWVtb3J5IHVubWFwcGluZyAoc2F2ZSBtZW1vcnkpCitEZWZhdWx0OiAgICAgICAgMAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmFtZTogICAgICAgICAgIGZyYW1lX3RpbWVvdXQKK1R5cGU6ICAgICAgICAgICB1aW50IGFycmF5IChtaW4gPSAwLCBtYXggPSA2NCkKK1N5bnRheDogICAgICAgICA8blssLi4uXT4KK0Rlc2NyaXB0aW9uOiAgICBUaW1lb3V0IGZvciBhIHZpZGVvIGZyYW1lIGluIHNlY29uZHMuIFRoaXMgcGFyYW1ldGVyIGlzCisgICAgICAgICAgICAgICAgc3BlY2lmaWMgZm9yIGVhY2ggZGV0ZWN0ZWQgY2FtZXJhLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIGF0IHJ1bnRpbWUgdGhhbmtzIHRvIHRoZSAvc3lzIGZpbGVzeXN0ZW0gaW50ZXJmYWNlLgorRGVmYXVsdDogICAgICAgIDIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK05hbWU6ICAgICAgICAgICBkZWJ1ZworVHlwZTogICAgICAgICAgIHVzaG9ydAorU3ludGF4OiAgICAgICAgIDxuPgorRGVzY3JpcHRpb246ICAgIERlYnVnZ2luZyBpbmZvcm1hdGlvbiBsZXZlbCwgZnJvbSAwIHRvIDM6CisgICAgICAgICAgICAgICAgMCA9IG5vbmUgKHVzZSBjYXJlZnVsbHkpCisgICAgICAgICAgICAgICAgMSA9IGNyaXRpY2FsIGVycm9ycworICAgICAgICAgICAgICAgIDIgPSBzaWduaWZpY2FudCBpbmZvcm1hdGlvbnMKKyAgICAgICAgICAgICAgICAzID0gbW9yZSB2ZXJib3NlIG1lc3NhZ2VzCisgICAgICAgICAgICAgICAgTGV2ZWwgMyBpcyB1c2VmdWwgZm9yIHRlc3Rpbmcgb25seSwgd2hlbiBvbmx5IG9uZSBkZXZpY2UKKyAgICAgICAgICAgICAgICBpcyB1c2VkIGF0IHRoZSBzYW1lIHRpbWUuIEl0IGFsc28gc2hvd3Mgc29tZSBtb3JlIGluZm9ybWF0aW9ucworICAgICAgICAgICAgICAgIGFib3V0IHRoZSBoYXJkd2FyZSBiZWluZyBkZXRlY3RlZC4gVGhpcyBtb2R1bGUgcGFyYW1ldGVyIGNhbiBiZQorICAgICAgICAgICAgICAgIGNoYW5nZWQgYXQgcnVudGltZSB0aGFua3MgdG8gdGhlIC9zeXMgZmlsZXN5c3RlbSBpbnRlcmZhY2UuCitEZWZhdWx0OiAgICAgICAgMgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKzguIFN1cHBvcnRlZCBkZXZpY2VzCis9PT09PT09PT09PT09PT09PT09PQorTm9uZSBvZiB0aGUgbmFtZXMgb2YgdGhlIGNvbXBhbmllcyBhcyB3ZWxsIGFzIHRoZWlyIHByb2R1Y3RzIHdpbGwgYmUgbWVudGlvbmVkCitoZXJlLiBUaGV5IGhhdmUgbmV2ZXIgY29sbGFib3JhdGVkIHdpdGggdGhlIGF1dGhvciwgc28gbm8gYWR2ZXJ0aXNpbmcuCisKK0Zyb20gdGhlIHBvaW50IG9mIHZpZXcgb2YgYSBkcml2ZXIsIHdoYXQgdW5hbWJpZ3VvdXNseSBpZGVudGlmeSBhIGRldmljZSBhcmUKK2l0cyB2ZW5kb3IgYW5kIHByb2R1Y3QgVVNCIGlkZW50aWZpZXJzLiBCZWxvdyBpcyBhIGxpc3Qgb2Yga25vd24gaWRlbnRpZmllcnMgb2YKK2RldmljZXMgbW91bnRpbmcgdGhlIFpDMDMwMSBJbWFnZSBQcm9jZXNzb3IgYW5kIENvbnRyb2wgQ2hpcHM6CisKK1ZlbmRvciBJRCAgUHJvZHVjdCBJRAorLS0tLS0tLS0tICAtLS0tLS0tLS0tCisweDA0MWUgICAgIDB4NDAxNworMHgwNDFlICAgICAweDQwMWMKKzB4MDQxZSAgICAgMHg0MDFlCisweDA0MWUgICAgIDB4NDAzNAorMHgwNDFlICAgICAweDQwMzUKKzB4MDQ2ZCAgICAgMHgwOGFlCisweDBhYzggICAgIDB4MDMwMQorMHgxMGZkICAgICAweDgwNTAKKworVGhlIGxpc3QgYWJvdmUgZG9lcyBub3QgaW1wbHkgdGhhdCBhbGwgdGhvc2UgZGV2aWNlcyB3b3JrIHdpdGggdGhpcyBkcml2ZXI6IHVwCit1bnRpbCBub3cgb25seSB0aGUgb25lcyB0aGF0IG1vdW50IHRoZSBmb2xsb3dpbmcgaW1hZ2Ugc2Vuc29ycyBhcmUgc3VwcG9ydGVkOwora2VybmVsIG1lc3NhZ2VzIHdpbGwgYWx3YXlzIHRlbGwgeW91IHdoZXRoZXIgdGhpcyBpcyB0aGUgY2FzZToKKworTW9kZWwgICAgICAgTWFudWZhY3R1cmVyCistLS0tLSAgICAgICAtLS0tLS0tLS0tLS0KK1BBUzIwMkJDQiAgIFBpeEFydCBJbWFnaW5nLCBJbmMuCisKKworOS4gTm90ZXMgZm9yIFY0TDIgYXBwbGljYXRpb24gZGV2ZWxvcGVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVGhpcyBkcml2ZXIgZm9sbG93cyB0aGUgVjRMMiBBUEkgc3BlY2lmaWNhdGlvbnMuIEluIHBhcnRpY3VsYXIsIGl0IGVuZm9yY2VzIHR3bworcnVsZXM6CisKKy0gZXhhY3RseSBvbmUgSS9PIG1ldGhvZCwgZWl0aGVyICJtbWFwIiBvciAicmVhZCIsIGlzIGFzc29jaWF0ZWQgd2l0aCBlYWNoCitmaWxlIGRlc2NyaXB0b3IuIE9uY2UgaXQgaXMgc2VsZWN0ZWQsIHRoZSBhcHBsaWNhdGlvbiBtdXN0IGNsb3NlIGFuZCByZW9wZW4gdGhlCitkZXZpY2UgdG8gc3dpdGNoIHRvIHRoZSBvdGhlciBJL08gbWV0aG9kOworCistIGFsdGhvdWdoIGl0IGlzIG5vdCBtYW5kYXRvcnksIHByZXZpb3VzbHkgbWFwcGVkIGJ1ZmZlciBtZW1vcnkgc2hvdWxkIGFsd2F5cworYmUgdW5tYXBwZWQgYmVmb3JlIGNhbGxpbmcgYW55ICJWSURJT0NfU19DUk9QIiBvciAiVklESU9DX1NfRk1UIiBpb2N0bCdzLgorVGhlIHNhbWUgbnVtYmVyIG9mIGJ1ZmZlcnMgYXMgYmVmb3JlIHdpbGwgYmUgYWxsb2NhdGVkIGFnYWluIHRvIG1hdGNoIHRoZSBzaXplCitvZiB0aGUgbmV3IHZpZGVvIGZyYW1lcywgc28geW91IGhhdmUgdG8gbWFwIHRoZSBidWZmZXJzIGFnYWluIGJlZm9yZSBhbnkgSS9PCithdHRlbXB0cyBvbiB0aGVtLgorCisKKzEwLiBDb250YWN0IGluZm9ybWF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PQorVGhlIGF1dGhvciBtYXkgYmUgY29udGFjdGVkIGJ5IGUtbWFpbCBhdCA8bHVjYS5yaXNvbGlhQHN0dWRpby51bmliby5pdD4uCisKK0dQRy9QR1AgZW5jcnlwdGVkIGUtbWFpbCdzIGFyZSBhY2NlcHRlZC4gVGhlIEdQRyBrZXkgSUQgb2YgdGhlIGF1dGhvciBpcworJ0ZDRTYzNUE0JzsgdGhlIHB1YmxpYyAxMDI0LWJpdCBrZXkgc2hvdWxkIGJlIGF2YWlsYWJsZSBhdCBhbnkga2V5c2VydmVyOwordGhlIGZpbmdlcnByaW50IGlzOiAnODhFOCBGMzJGIDcyNDQgNjhCQSAzOTU4ICA1RDQwIDk5REEgNUQyQSBGQ0U2IDM1QTQnLgorCisKKzExLiBDcmVkaXRzCis9PT09PT09PT09PQorLSBJbmZvcm1hdGlvbnMgYWJvdXQgdGhlIGNoaXAgaW50ZXJuYWxzIG5lZWRlZCB0byBlbmFibGUgdGhlIEkyQyBwcm90b2NvbCBoYXZlCisgIGJlZW4gdGFrZW4gZnJvbSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgWkMwMzB4IFZpZGVvNExpbnV4MSBkcml2ZXIgd3JpdHRlbgorICBieSBBbmRyZXcgQmlya2V0dCA8YW5keUBub2J1Z3Mub3JnPjsKKy0gVGhlIGluaXRpYWxpemF0aW9uIHZhbHVlcyBvZiB0aGUgWkMwMzAxIGNvbnRyb2xsZXIgY29ubmVjdGVkIHRvIHRoZSBQQVMyMDJCQ0IKKyAgaW1hZ2Ugc2Vuc29yIGhhdmUgYmVlbiB0YWtlbiBmcm9tIHRoZSBTUENBNVhYIGRyaXZlciBtYWludGFpbmVkIGJ5CisgIE1pY2hlbCBYaGFhcmQgPG14aGFhcmRAbWFnaWMuZnI+Lgo=