LyogLSotIGF1dG8tZmlsbCAtKi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxCgotIGNyZWF0aW9uIG9mIGRldmZzCgotIG1vZGlmaWVkIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyIGRldmljZXMgdG8gc3VwcG9ydCBkZXZmcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYyCgotIGJ1ZyBmaXggd2l0aCBtYW51YWwgaW5vZGUgY3JlYXRpb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MwoKLSBidWdmaXhlcwoKLSBkb2N1bWVudGF0aW9uIGltcHJvdmVtZW50cwoKLSBjcmVhdGVkIGEgY291cGxlIG9mIHNjcmlwdHMgKG9uZSB0byBzYXZlJnJlc3RvcmUgYSBkZXZmcyBhbmQgdGhlCiAgb3RoZXIgdG8gc2V0IHVwIGNvbXBhdGliaWxpdHkgc3ltbGlua3MpCgotIGRldmZzIHN1cHBvcnQgZm9yIFNDU0kgZGlzY3MuIE5ldyBuYW1lIGZvcm1hdCBpczogc2RfaEhjQ2lJbEwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2NAoKLSBidWdmaXggZm9yIHRoZSBkaXJlY3RvcnkgcmVhZGluZyBjb2RlCgotIGJ1Z2ZpeCBmb3IgY29tcGlsYXRpb24gd2l0aCBrZXJuZWxkCgotIGRldmZzIHN1cHBvcnQgZm9yIGdlbmVyaWMgaGFyZCBkaXNjcwoKLSByYXRpb25hbGlzYXRpb24gb2YgdGhlIHZhcmlvdXMgd2F0Y2hkb2cgZHJpdmVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY1CgotIHN1cHBvcnQgZm9yIG1vdW50aW5nIGRpcmVjdGx5IGZyb20gZW50cmllcyBpbiB0aGUgZGV2ZnMgKGl0IGRvZXNuJ3QKICBuZWVkIHRvIGJlIG1vdW50ZWQgdG8gZG8gdGhpcyksIGluY2x1ZGluZyB0aGUgcm9vdCBmaWxlc3lzdGVtLgogIE1vdW50aW5nIG9mIHN3YXAgcGFydGl0aW9ucyBhbHNvIHdvcmtzLiBIZW5jZSwgbm93IGlmIHlvdSBzZXQKICBDT05GSUdfREVWRlNfT05MWSB0byAnWScgdGhlbiB5b3Ugd29uJ3QgYmUgYWJsZSB0byBhY2Nlc3MgeW91ciBkaXNjcwogIHZpYSBvcmRpbmFyeSBkZXZpY2Ugbm9kZXMuIE5hdHVyYWxseSwgdGhlIGRlZmF1bHQgaXMgJ04nIHNvIHRoYXQgeW91CiAgY2FuIHN0aWxsIHVzZSB5b3VyIG9sZCBkZXZpY2Ugbm9kZXMuICBJZiB5b3Ugd2FudCB0byBtb3VudCBmcm9tIGRldmZzCiAgZW50cmllcywgbWFrZSBzdXJlIHlvdSB1c2U6IGFwcGVuZCA9ICJyb290PS9kZXYvc2RfLi4uIiBpbiB5b3VyCiAgbGlsby5jb25mLiBJdCBzZWVtcyBMSUxPIGxvb2tzIGZvciB0aGUgZGV2aWNlIG51bWJlciAobWFqb3ImbWlub3IpCiAgYW5kIHdyaXRlcyB0aGF0IGludG8gdGhlIGtlcm5lbCBpbWFnZSA6LSggCgotIHN1cHBvcnQgZm9yIGNoYXJhY3RlciBtZW1vcnkgZGV2aWNlcyAoL2Rldi9udWxsLCAvZGV2L3plcm8sIC9kZXYvZnVsbAogIGFuZCBzbyBvbikuIFRoYW5rcyB0byBDLiBTY290dCBBbmFuaWFuIDxjYW5hbmlhbkBhbHVtbmkucHJpbmNldG9uLmVkdT4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2NgoKLSBzdXBwb3J0IGZvciBzdWJkaXJlY3RvcmllcwoKLSBzdXBwb3J0IGZvciBzeW1ib2xpYyBsaW5rcyAoY3JlYXRlZCBieSBkZXZmc19ta19zeW1saW5rKCksIG5vCiAgc3VwcG9ydCB5ZXQgZm9yIGNyZWF0aW9uIHZpYSBzeW1saW5rKDIpKQoKLSBTQ1NJIGRpc2MgbmFtaW5nIG5vdyBjYXN0IGluIHN0b25lLCB3aXRoIHRoZSBmb3JtYXQ6CiAgL2Rldi9zZC9jMGIxdDJ1Mwljb250cm9sbGVyPTAsIGJ1cz0xLCBJRD0yLCBMVU49Mywgd2hvbGUgZGlzYwogIC9kZXYvc2QvYzBiMXQydTNwNAljb250cm9sbGVyPTAsIGJ1cz0xLCBJRD0yLCBMVU49MywgNHRoIHBhcnRpdGlvbgoKLSBsb29wIGRldmljZXMgbm93IGFwcGVhciBpbiBkZXZmcwoKLSB0dHkgZGV2aWNlcywgY29uc29sZSwgc2VyaWFsIHBvcnRzLCBldGMuIG5vdyBhcHBlYXIgaW4gZGV2ZnMKICBUaGFua3MgdG8gQy4gU2NvdHQgQW5hbmlhbiA8Y2FuYW5pYW5AYWx1bW5pLnByaW5jZXRvbi5lZHU+CgotIGJ1Z3Mgd2l0aCBtb3VudGluZyBkZXZmcy1vbmx5IGRldmljZXMgbm93IGZpeGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjcKCi0gU0NTSSBDRC1ST01TLCB0YXBlcyBhbmQgZ2VuZXJpYyBkZXZpY2VzIG5vdyBhcHBlYXIgaW4gZGV2ZnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2OAoKLSBidWdmaXggd2l0aCBuby1yZXdpbmQgU0NTSSB0YXBlcwoKLSBSQU1ESVNDcyBub3cgYXBwZWFyIGluIGRldmZzCgotIGJldHRlciBjbGVhbmluZyB1cCBvZiBkZXZmcyBlbnRyaWVzIGNyZWF0ZWQgYnkgdmFyaW91cyBtb2R1bGVzCgotIGludGVyZmFjZSBjaGFuZ2UgdG8gPGRldmZzX3JlZ2lzdGVyPgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY5CgotIHRoZSB2OCBwYXRjaCB3YXMgY29ycnVwdGVkIHNvbWVob3csIHdoaWNoIHdvdWxkIGFmZmVjdCB0aGUgcGF0Y2ggZm9yCiAgbGludXgvZnMvZmlsZXN5c3RlbXMuYwogIEkndmUgYWxzbyBmaXhlZCB0aGUgdjggcGF0Y2ggZmlsZSBvbiB0aGUgV1dXCgotIE1ldGFEZXZpY2VzICgvZGV2L21kKikgc2hvdWxkIG5vdyBhcHBlYXIgaW4gZGV2ZnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTAKCi0gYnVnZml4IGluIG1ldGEgZGV2aWNlIHN1cHBvcnQgZm9yIGRldmZzCgotIGNyZWF0ZWQgdGhpcyBDaGFuZ2VMb2cgZmlsZQoKLSBhZGRlZCBkZXZmcyBzdXBwb3J0IHRvIHRoZSBmbG9wcHkgZHJpdmVyCgotIGFkZGVkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIHNvY2tldHMgaW4gYSBkZXZmcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxMQoKLSBhZGRlZCBERVZGU19GTF9ISURFX1VOUkVHIGZsYWcKCi0gaW5jb3Jwb3JhdGVkIGJldHRlciBwYXRjaCBmb3IgdHR5bmFtZSgpIGluIGxpYmMgNS40LjQzIGZyb20gSC5KLiBMdS4KCi0gaW50ZXJmYWNlIGNoYW5nZSB0byA8ZGV2ZnNfbWtfc3ltbGluaz4KCi0gc3VwcG9ydCBmb3IgY3JlYXRpbmcgc3ltbGlua3Mgd2l0aCBzeW1saW5rKDIpCgotIHBhcmFsbGVsIHBvcnQgcHJpbnRlciAoL2Rldi9scCopIG5vdyBhcHBlYXJzIGluIGRldmZzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjEyCgotIGFkZGVkIGlub2RlIGNoZWNrIHRvIDxkZXZmc19maWxsX2ZpbGU+IGZ1bmN0aW9uCgotIGltcHJvdmVkIGRldmZzIHN1cHBvcnQgd2hlbiBtb3VudGluZyBmcm9tIGRldmZzCgotIGFkZGVkIGNhbGwgdG8gPDxyZWxlYXNlPj4gb3BlcmF0aW9uIHdoZW4gcmVtb3Zpbmcgc3dhcCBhcmVhcyBvbgogIGRldmZzIGRldmljZXMKCi0gaW5jcmVhc2VkIE5SX1NVUEVSIHRvIDEyOCB0byBzdXBwb3J0IGxhcmdlIG51bWJlcnMgb2YgZGV2ZnMgbW91bnRzCiAgKGZvciBjaHJvb3QoMikgZ2FvbHMpCgotIGZpeGVkIGJ1ZyBpbiBTQ1NJIGRpc2Mgc3VwcG9ydDogd2FzIGdlbmVyYXRpbmcgaW5jb3JyZWN0IG1pbm9ycyBpZgogIFNDU0kgSUQncyBkaWQgbm90IHN0YXJ0IGF0IDAgYW5kIGluY3JlYXNlIGJ5IDEKCi0gc3VwcG9ydCBzeW1saW5rIHRyYXZlcnNhbCB3aGVuIG1vdW50aW5nIHJvb3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTMKCi0gYWRkZWQgZGV2ZnMgc3VwcG9ydCB0byBzb3VuZGNhcmQgZHJpdmVyCiAgVGhhbmtzIHRvIEVyaWMgRHVtYXMgPGR1bWFzQGxpbnV4LmV1Lm9yZz4gYW5kCiAgQy4gU2NvdHQgQW5hbmlhbiA8Y2FuYW5pYW5AYWx1bW5pLnByaW5jZXRvbi5lZHU+CgotIGFkZGVkIGRldmZzIHN1cHBvcnQgdG8gdGhlIGpveXN0aWNrIGRyaXZlcgoKLSBsb29wIGRyaXZlciBub3cgaGFzIGl0J3Mgb3duIHN1YmRpcmVjdG9yeSAiL2Rldi9sb29wLyIKCi0gY3JlYXRlZCA8ZGV2ZnNfZ2V0X2ZsYWdzPiBhbmQgPGRldmZzX3NldF9mbGFncz4gZnVuY3Rpb25zCgotIGZpeCBwcm9ibGVtIHdpdGggU0NTSSBkaXNjIGNvbXBhdGliaWxpdHkgbmFtZXMgKHNke2EsYixjLGQsZSxmfSkKICB3aGljaCBhc3N1bWVzIElEJ3Mgc3RhcnQgYXQgMCBhbmQgaW5jcmVhc2UgYnkgMS4gQWxzbyBvbmx5IGNyZWF0ZQogIGRldmZzIGVudHJpZXMgZm9yIFNDU0kgZGlzYyBwYXJ0aXRpb25zIHdoaWNoIGFjdHVhbGx5IGV4aXN0CiAgU2hvdyBuZXcgbmFtZXMgaW4gcGFydGl0aW9uIGNoZWNrCiAgVGhhbmtzIHRvIEpha3ViIEplbGluZWsgPGpqQHN1bnNpdGUubXMubWZmLmN1bmkuY3o+Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE0CgotIGJ1ZyBmaXggaW4gZmxvcHB5IGRyaXZlcjogd291bGQgbm90IGNvbXBpbGUgd2l0aG91dAogIENPTkZJR19ERVZGU19GUz0nWScKICBUaGFua3MgdG8gSnVyZ2VuIEJvdHogPGpib3R6QG5vdmEuYm90ei5vcmc+CgotIGJ1ZyBmaXggaW4gbG9vcCBkcml2ZXIKICBUaGFua3MgdG8gQy4gU2NvdHQgQW5hbmlhbiA8Y2FuYW5pYW5AYWx1bW5pLnByaW5jZXRvbi5lZHU+CgotIGRvIG5vdCBjcmVhdGUgZGV2ZnMgZW50cmllcyBmb3IgcHJpbnRlcnMgbm90IGNvbmZpZ3VyZWQKICBUaGFua3MgdG8gQy4gU2NvdHQgQW5hbmlhbiA8Y2FuYW5pYW5AYWx1bW5pLnByaW5jZXRvbi5lZHU+CgotIGRvIG5vdCBjcmVhdGUgZGV2ZnMgZW50cmllcyBmb3Igc2VyaWFsIHBvcnRzIG5vdCBwcmVzZW50CiAgVGhhbmtzIHRvIEMuIFNjb3R0IEFuYW5pYW4gPGNhbmFuaWFuQGFsdW1uaS5wcmluY2V0b24uZWR1PgoKLSBlbnN1cmUgPHR0eV9yZWdpc3Rlcl9kZXZmcz4gaXMgZXhwb3J0ZWQgZnJvbSB0dHlfaW8uYwogIFRoYW5rcyB0byBDLiBTY290dCBBbmFuaWFuIDxjYW5hbmlhbkBhbHVtbmkucHJpbmNldG9uLmVkdT4KCi0gYWxsb3cgdW5yZWdpc3RlcmluZyBvZiBkZXZmcyBzeW1saW5rIGVudHJpZXMKCi0gZml4ZWQgYnVnIGluIFNDU0kgZGlzYyBuYW1pbmcgaW50cm9kdWNlZCBpbiBsYXN0IHBhdGNoIHZlcnNpb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTUKCi0gcG9ydGVkIHRvIGtlcm5lbCAyLjEuODEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTYKCi0gY3JlYXRlZCA8ZGV2ZnNfc2V0X3N5bWxpbmtfZGVzdGluYXRpb24+IGZ1bmN0aW9uCgotIG1vdmVkIERFVkZTX1NVUEVSX01BR0lDIGludG8gaGVhZGVyIGZpbGUKCi0gYWRkZWQgREVWRlNfRkxfSElERSBmbGFnCgotIGNyZWF0ZWQgPGRldmZzX2dldF9tYWpfbWluPgoKLSBjcmVhdGVkIDxkZXZmc19nZXRfaGFuZGxlX2Zyb21faW5vZGU+CgotIGZpeGVkIGJ1Z3MgaW4gc2VhcmNoaW5nIGJ5IG1ham9yJm1pbm9yCgotIGNoYW5nZWQgaW50ZXJmYWNlIHRvIDxkZXZmc191bnJlZ2lzdGVyPiwgPGRldmZzX2ZpbGxfZmlsZT4gYW5kCiAgPGRldmZzX2ZpbmRfaGFuZGxlPgoKLSBmaXhlZCBpbm9kZSB0aW1lcyB3aGVuIHN5bWxpbmsgY3JlYXRlZCB3aXRoIHN5bWxpbmsoMikKCi0gY2hhbmdlIHR0eSBkcml2ZXIgdG8gZG8gYXV0by1jcmVhdGlvbiBvZiBkZXZmcyBlbnRyaWVzCiAgVGhhbmtzIHRvIEMuIFNjb3R0IEFuYW5pYW4gPGNhbmFuaWFuQGFsdW1uaS5wcmluY2V0b24uZWR1PgoKLSBmaXhlZCBidWcgaW4gZ2VuaGQuYzogd2hvbGUgZGlzYyAobm9uLVNDU0kpIHdhcyBub3QgcmVnaXN0ZXJlZCB0bwogIGRldmZzCgotIHVwZGF0ZWQgbGliYyA1LjQuNDMgcGF0Y2ggZm9yIHR0eW5hbWUoKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxNwoKLSBhZGRlZCBDT05GSUdfREVWRlNfVFRZX0NPTVBBVAogIFRoYW5rcyB0byBDLiBTY290dCBBbmFuaWFuIDxjYW5hbmlhbkBhbHVtbmkucHJpbmNldG9uLmVkdT4KCi0gYnVnZml4IGluIGRldmZzIHN1cHBvcnQgZm9yIGRyaXZlcnMvY2hhci9scC5jCiAgVGhhbmtzIHRvIEMuIFNjb3R0IEFuYW5pYW4gPGNhbmFuaWFuQGFsdW1uaS5wcmluY2V0b24uZWR1PgoKLSBjbGVhbiB1cCBzZXJpYWwgZHJpdmVyIHNvIHRoYXQgUENNQ0lBIGRldmljZXMgdW5yZWdpc3RlciBjb3JyZWN0bHkKICBUaGFua3MgdG8gQy4gU2NvdHQgQW5hbmlhbiA8Y2FuYW5pYW5AYWx1bW5pLnByaW5jZXRvbi5lZHU+CgotIGZpeGVkIGJ1ZyBpbiBnZW5oZC5jOiB3aG9sZSBkaXNjIChub24tU0NTSSkgd2FzIG5vdCByZWdpc3RlcmVkIHRvCiAgZGV2ZnMgW3dhcyBtaXNzaW5nIGluIHBhdGNoIHYxNl0KCi0gdXBkYXRlZCBsaWJjIDUuNC40MyBwYXRjaCBmb3IgdHR5bmFtZSgpIFt3YXMgbWlzc2luZyBpbiBwYXRjaCB2MTZdCgotIGFsbCBTQ1NJIGRldmljZXMgbm93IHJlZ2lzdGVyZWQgaW4gL2Rldi9zZwoKLSBzdXBwb3J0IHJlbW92YWwgb2YgZGV2ZnMgZW50cmllcyB2aWEgdW5saW5rKDIpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE4CgotIGFkZGVkIGZsb3BweS8/dTcyMCBmbG9wcHkgZW50cnkKCi0gZml4ZWQga2VybmVsZCBzdXBwb3J0IGZvciBlbnRyaWVzIGluIGRldmZzIHN1YmRpcmVjdG9yaWVzCgotIGluY29ycG9yYXRlZCBsYXRlc3QgcGF0Y2ggZm9yIHR0eW5hbWUoKSBpbiBsaWJjIDUuNC40MyBmcm9tIEguSi4gTHUuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE5CgotIGJ1ZyBmaXggd2hlbiBsb29raW5nIHVwIHVucmVnaXN0ZXJlZCBlbnRyaWVzOiBrZXJuZWxkIHdhcyBub3QgY2FsbGVkCgotIGZpeGVzIGZvciBrZXJuZWwgMi4xLjg2IChub3cgcmVxdWlyZXMgMi4xLjg2KQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYyMAoKLSBvbmx5IGNyZWF0ZSBhdmFpbGFibGUgZmxvcHB5IGVudHJpZXMKICBUaGFua3MgdG8gQW5kcnplaiBLcnp5c3p0b2Zvd2ljeiA8YW5rcnlAZ3JlZW4ubWlmLnBnLmdkYS5wbD4KCi0gbmV3IElERSBuYW1pbmcgc2NoZW1lIGZvbGxvd2luZyBTQ1NJIGZvcm1hdCAoaS5lLiAvZGV2L2lkL2MwYjB0MHUwcDEKICBpbnN0ZWFkIG9mIC9kZXYvaGRhMSkKICBUaGFua3MgdG8gQW5kcnplaiBLcnp5c3p0b2Zvd2ljeiA8YW5rcnlAZ3JlZW4ubWlmLnBnLmdkYS5wbD4KCi0gbmV3IFhUIGRpc2MgbmFtaW5nIHNjaGVtZSBmb2xsb3dpbmcgU0NTSSBmb3JtYXQgKGkuZS4gL2Rldi94ZC9jMHQwcDEKICBpbnN0ZWFkIG9mIC9kZXYveGRhMSkKICBUaGFua3MgdG8gQW5kcnplaiBLcnp5c3p0b2Zvd2ljeiA8YW5rcnlAZ3JlZW4ubWlmLnBnLmdkYS5wbD4KCi0gbmV3IG5vbi1zdGFuZGFyZCBDRC1ST00gbmFtZXMgKGkuZS4gL2Rldi9zYnAvYyN0IykKICBUaGFua3MgdG8gQW5kcnplaiBLcnp5c3p0b2Zvd2ljeiA8YW5rcnlAZ3JlZW4ubWlmLnBnLmdkYS5wbD4KCi0gYWxsb3cgc3ltbGluayB0cmF2ZXJzYWwgd2hlbiBtb3VudGluZyB0aGUgcm9vdCBmaWxlc3lzdGVtCgotIENyZWF0ZSBlbnRyaWVzIGZvciBNRCBkZXZpY2VzIGF0IE1EIGluaXQKICBUaGFua3MgdG8gQ2hyaXN0b3BoZSBMZXJveSA8Y2hyaXN0b3BoZS5sZXJveTVAY2Fwd2F5LmNvbT4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MjEKCi0gcG9ydGVkIHRvIGtlcm5lbCAyLjEuOTEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MjIKCi0gU0NTSSBob3N0IG51bWJlciBwYXRjaCAoInNjc2lob3N0cz0iIGtlcm5lbCBvcHRpb24pCiAgVGhhbmtzIHRvIEFuZHJ6ZWogS3J6eXN6dG9mb3dpY3ogPGFua3J5QGdyZWVuLm1pZi5wZy5nZGEucGw+Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjIzCgotIEZpeGVkIHBlcnNpc3RlbmNlIGJ1ZyB3aXRoIGRldmljZSBudW1iZXJzIGZvciBtYW51YWxseSBjcmVhdGVkCiAgZGV2aWNlIGZpbGVzCgotIEZpeGVkIHByb2JsZW0gd2l0aCByZWNyZWF0aW5nIHN5bWxpbmtzIHdpdGggZGlmZmVyZW50IGNvbnRlbnQKCi0gQWRkZWQgQ09ORklHX0RFVkZTX01PVU5UIChtb3VudCBkZXZmcyBvbiAvZGV2IGF0IGJvb3QgdGltZSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MjQKCi0gU3dpdGNoZWQgZnJvbSBDT05GSUdfS0VSTkVMRCB0byBDT05GSUdfS01PRDogbW9kdWxlIGF1dG9sb2FkaW5nCiAgc2hvdWxkIG5vdyB3b3JrIGFnYWluCgotIEhpZGUgZW50cmllcyB3aGljaCBhcmUgbWFudWFsbHkgdW5saW5rZWQKCi0gQWx3YXlzIGludmFsaWRhdGUgZGV2ZnMgZGVudHJ5IGNhY2hlIHdoZW4gcmVnaXN0ZXJpbmcgZW50cmllcwoKLSBTdXBwb3J0IHJlbW92YWwgb2YgZGV2ZnMgZGlyZWN0b3JpZXMgdmlhIHJtZGlyKDIpCgotIEVuc3VyZSBkaXJlY3RvcmllcyBjcmVhdGVkIGJ5IDxkZXZmc19ta19kaXI+IGFyZSB2aXNpYmxlCgotIERlZmF1bHQgbm8gYWNjZXNzIGZvciAib3RoZXIiIGZvciBmbG9wcHkgZGV2aWNlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjI1CgotIFVwZGF0ZXMgdG8gQ1JFRElUUyBmaWxlIGFuZCBtaW5vciBJREUgbnVtYmVyaW5nIGNoYW5nZQogIFRoYW5rcyB0byBBbmRyemVqIEtyenlzenRvZm93aWN6IDxhbmtyeUBncmVlbi5taWYucGcuZ2RhLnBsPgoKLSBJbnZhbGlkYXRlIGRldmZzIGRlbnRyeSBjYWNoZSB3aGVuIG1ha2luZyBkaXJlY3RvcmllcwoKLSBJbnZhbGlkYXRlIGRldmZzIGRlbnRyeSBjYWNoZSB3aGVuIHJlbW92aW5nIGVudHJpZXMKCi0gTW9yZSBpbmZvcm1hdGl2ZSBtZXNzYWdlIGlmIHJvb3QgRlMgbW91bnQgZmFpbHMgd2hlbiBkZXZmcwogIGNvbmZpZ3VyZWQKCi0gRml4ZWQgcGVyc2lzdGVuY2UgYnVnIHdpdGggZmlmb3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MjYKCi0gcG9ydGVkIHRvIGtlcm5lbCAyLjEuOTcKCi0gQ2hhbmdlZCBzZXJpYWwgZGlyZWN0b3J5IGZyb20gIi9kZXYvc2VyaWFsIiB0byAiL2Rldi90dHMiIGFuZAogICIvZGV2L2NvbnNvbGVzIiB0byAiL2Rldi92YyIgdG8gYmUgbW9yZSBmcmllbmRseSB0byBuZXcgcHJvY3BzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjI3CgotIEFkZGVkIHN1cHBvcnQgZm9yIElERTQgYW5kIElERTUKICBUaGFua3MgdG8gQW5kcnplaiBLcnp5c3p0b2Zvd2ljeiA8YW5rcnlAZ3JlZW4ubWlmLnBnLmdkYS5wbD4KCi0gRG9jdW1lbnRlZCAic2NzaWhvc3RzPSIgYm9vdCBwYXJhbWV0ZXIKCi0gUHJpbnQgcHJvY2VzcyBjb21tYW5kIHdoZW4gZGVidWdnaW5nIGtlcm5lbGQva21vZAoKLSBBZGRlZCBkZWJ1Z2dpbmcgZm9yIHJlZ2lzdGVyL3VucmVnaXN0ZXIvY2hhbmdlIG9wZXJhdGlvbnMKCi0gQWRkZWQgImRldmZzPSIgYm9vdCBvcHRpb25zCgotIEhpZGUgdW5yZWdpc3RlcmVkIGVudHJpZXMgYnkgZGVmYXVsdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYyOAoKLSBObyBsb25nZXIgbG9jay91bmxvY2sgc3VwZXJibG9jayBpbiA8ZGV2ZnNfcHV0X3N1cGVyPiAoY29wZSB3aXRoCiAgcmVjZW50IFZGUyBpbnRlcmZhY2UgY2hhbmdlKQoKLSBEbyBub3QgYXV0b21hdGljYWxseSBjaGFuZ2Ugb3duZXJzaGlwL3Byb3RlY3Rpb24gb2YgL2Rldi90dHkKCi0gRHJvcCBuZWdhdGl2ZSBkZW50cmllcyB3aGVuIHRoZXkgYXJlIHJlbGVhc2VkCgotIE1hbmFnZSBkY2FjaGUgbW9yZSBlZmZpY2llbnRseQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYyOQoKLSBBZGRlZCBERVZGU19GTF9BVVRPX0RFVk5VTSBmbGFnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjMwCgotIE5vIGxvbmdlciBzZXQgdW5uZWNlc3NhcnkgbWV0aG9kcwoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMS45OS1wcmUzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjMxCgotIEFkZGVkIFBJRCBkaXNwbGF5IHRvIDxjYWxsX2tlcm5lbGQ+IGRlYnVnZ2luZyBtZXNzYWdlCgotIEFkZGVkICJkaXJlYWQiIGFuZCAiZGl3cml0ZSIgb3B0aW9ucwoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMS4xMDIKCi0gRml4ZWQgcGVyc2lzdGVuY2UgcHJvYmxlbSB3aXRoIHBlcm1pc3Npb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjMyCgotIEZpeGVkIGRldmZzIHN1cHBvcnQgaW4gZHJpdmVycy9ibG9jay9tZC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjMzCgotIFN1cHBvcnQgbGVnYWN5IGRldmljZSBub2RlcwoKLSBGaXhlZCBidWcgd2hlcmUgcmVjcmVhdGVkIGlub2RlcyB3ZXJlIGhpZGRlbgoKLSBOZXcgSURFIG5hbWluZyBzY2hlbWU6IGV2ZXJ5dGhpbmcgaXMgdW5kZXIgL2Rldi9pZGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MzQKCi0gSW1wcm92ZWQgZGVidWdnaW5nIGluIDxnZXRfdmZzX2lub2RlPgoKLSBQcmV2ZW50IGR1cGxpY2F0ZSBjYWxscyB0byA8ZGV2ZnNfbWtfZGlyPiBpbiBTQ1NJIGxheWVyCgotIE5vIGxvbmdlciBmcmVlIG9sZCBkZW50cmllcyBpbiA8ZGV2ZnNfbWtfZGlyPgoKLSBGcmVlIGFsbCBkZW50cmllcyBmb3IgYSBnaXZlbiBlbnRyeSB3aGVuIGRlbGV0aW5nIGlub2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYzNQoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMS4xMDUgKHNvdW5kIGRyaXZlciBjaGFuZ2VzKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYzNgoKLSBGaXhlZCBzb3VuZCBkcml2ZXIgcG9ydAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYzNwoKLSBNaW5vciBkb2N1bWVudGF0aW9uIHR3ZWFrcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYzOAoKLSBNb3JlIGRvY3VtZW50YXRpb24gdHdlYWtzCgotIEZpeCBmb3Igc291bmQgZHJpdmVyIHBvcnQKCi0gUmVtb3ZlZCB0dHluYW1lLXBhdGNoIChncmFiIGxpYmMgNS40LjQ0IGluc3RlYWQpCgotIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEwNy1wcmUyIChsb29wIGRyaXZlciBmaXgpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjM5CgotIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEwNyAoaGQuYyBodW5rIGJyb2tlIGR1ZSB0byBzcGVsbGluZyAiZml4ZXMiKS4gU2lnaAoKLSBSZW1vdmVkIG1hbnkgI2lmZGVmJ3MsIHJlcGxhY2VkIHdpdGggdHJpY2tlcnkgaW4gaW5jbHVkZS9kZXZmc19mcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjQwCgotIEZpeCBmb3Igc291bmQgZHJpdmVyIHBvcnQKCi0gTGltaXQgYXV0by1kZXZpY2UgbnVtYmVyaW5nIHRvIG1ham9ycyAxMjggdG8gMjM5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjQxCgotIEZpeGVkIGlub2RlIHRpbWVzIHBlcnNpc3RlbmNlIHByb2JsZW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2NDIKCi0gUG9ydGVkIHRvIGtlcm5lbCAyLjEuMTA4IChkcml2ZXJzL3Njc2kvaG9zdHMuYyBodW5rIGJyb2tlKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY0MwoKLSBGaXhlZCBzcGVsbGluZyBpbiA8ZGV2ZnNfcmVhZGxpbms+IGRlYnVnCgotIEZpeGVkIGJ1ZyBpbiA8ZGV2ZnNfc2V0dXA+IHBhcnNpbmcgImRpbG9va3VwIgoKLSBNb3JlICNpZmRlZidzIHJlbW92ZWQKCi0gU3VwcG9ydGVkIFNwYXJjIGtleWJvYXJkICgvZGV2L2tiZCkKCi0gU3VwcG9ydGVkIERTUDU2MDAxIGRpZ2l0YWwgc2lnbmFsIHByb2Nlc3NvciAoL2Rldi9kc3A1NmspCgotIFN1cHBvcnRlZCBBcHBsZSBEZXNrdG9wIEJ1cyAoL2Rldi9hZGIpCgotIFN1cHBvcnRlZCBDb2RhIG5ldHdvcmsgZmlsZSBzeXN0ZW0gKC9kZXYvY2ZzKikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2NDQKCi0gRml4ZWQgZGV2ZnMgaW5vZGUgbGVhayB3aGVuIG1hbnVhbGx5IHJlY3JlYXRpbmcgaW5vZGVzCgotIEZpeGVkIHBlcm1pc3Npb24gcGVyc2lzdGVuY2UgcHJvYmxlbSB3aGVuIHJlY3JlYXRpbmcgaW5vZGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjQ1CgotIFBvcnRlZCB0byBrZXJuZWwgMi4xLjExMAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY0NgoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMS4xMTItcHJlMQoKLSBSZW1vdmVkIGhhcm1sZXNzICJ1bnVzZWQgdmFyaWFibGUiIGNvbXBpbGVyIHdhcm5pbmcKCi0gRml4ZWQgbW9kZXMgZm9yIG1hbnVhbGx5IHJlY3JlYXRlZCBkZXZpY2Ugbm9kZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2NDcKCi0gQWRkZWQgTlVMTCBkZXZmcyBpbm9kZSB3YXJuaW5nIGluIDxkZXZmc19yZWFkX2lub2RlPgoKLSBGb3JjZSBhbGwgaW5vZGUgbmxpbmsgdmFsdWVzIHRvIDEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2NDgKCi0gQWRkZWQgImRpbWtub2QiIG9wdGlvbgoKLSBTZXQgaW5vZGUgbmxpbmsgdG8gMCB3aGVuIGZyZWVpbmcgZGVudHJpZXMKCi0gQWRkZWQgc3VwcG9ydCBmb3IgdmlydHVhbCBjb25zb2xlIGNhcHR1cmUgZGV2aWNlcyAoL2Rldi92Y3MqKQogIFRoYW5rcyB0byBEZW5uaXMgSG91IDxzbWlsYXhAbWluZG1lbGQueWkub3JnPgoKLSBGaXhlZCBtb2RlcyBmb3IgbWFudWFsbHkgcmVjcmVhdGVkIHN5bWxpbmtzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjQ5CgotIFBvcnRlZCB0byBrZXJuZWwgMi4xLjExMwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY1MAoKLSBGaXhlZCBidWdzIGluIHJlY3JlYXRlZCBkaXJlY3RvcmllcyBhbmQgc3ltbGlua3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2NTEKCi0gSW1wcm92ZWQgcm9idXN0bmVzcyBvZiByYy5kZXZmcyBzY3JpcHQKICBUaGFua3MgdG8gUm9kZXJpY2ggU2NodXBwIDxyc2NoQGV4cGVydGVhbS5kZT4KCi0gRml4ZWQgYnVncyBpbiByZWNyZWF0ZWQgZGV2aWNlIG5vZGVzCgotIEZpeGVkIGJ1ZyBpbiBjdXJyZW50bHkgdW51c2VkIDxkZXZmc19nZXRfaGFuZGxlX2Zyb21faW5vZGU+CgotIERlZmluZWQgbmV3IDxkZXZmc19oYW5kbGVfdD4gdHlwZQoKLSBJbXByb3ZlZCBkZWJ1Z2dpbmcgd2hlbiBnZXR0aW5nIGVudHJpZXMKCi0gRml4ZWQgYnVnIHdoZXJlIGRpcmVjdG9yaWVzIGNvdWxkIGJlIGVtcHRpZWQKCi0gUG9ydGVkIHRvIGtlcm5lbCAyLjEuMTE1Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjUyCgotIFJlcGxhY2VkIGR1bW15IC5lcG9jaCBpbm9kZSB3aXRoIC5kZXZmc2QgY2hhcmFjdGVyIGRldmljZQoKLSBNb2RpZmllZCByYy5kZXZmcyB0byB0YWtlIGFjY291bnQgb2YgYWJvdmUgY2hhbmdlCgotIFJlbW92ZWQgc3B1cmlvdXMgZHJpdmVyIHdhcm5pbmcgbWVzc2FnZXMgd2hlbiBDT05GSUdfREVWRlNfRlM9bgoKLSBJbXBsZW1lbnRlZCBkZXZmc2QgcHJvdG9jb2wgcmV2aXNpb24gMAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY1MwoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMS4xMTYgKGttb2QgY2hhbmdlIGJyb2tlIGh1bmspCgotIFVwZGF0ZWQgRG9jdW1lbnRhdGlvbi9Db25maWd1cmUuaGVscAoKLSBUZXN0IGFuZCB0dHkgcGF0dGVybiBwYXRjaCBmb3IgcmMuZGV2ZnMgc2NyaXB0CiAgVGhhbmtzIHRvIFJvZGVyaWNoIFNjaHVwcCA8cnNjaEBleHBlcnRlYW0uZGU+CgotIEFkZGVkIHNvb3RoaW5nIG1lc3NhZ2UgdG8gd2FybmluZyBpbiA8ZGV2ZnNfZF9pcHV0Pgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY1NAoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMS4xMTcKCi0gRml4ZWQgZGVmYXVsdCBwZXJtaXNzaW9ucyBpbiBzb3VuZCBkcml2ZXIKCi0gQWRkZWQgc3VwcG9ydCBmb3IgZnJhbWUgYnVmZmVyIGRldmljZXMgKC9kZXYvZmIqKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY1NQoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMS4xMTkKCi0gVXNlIEdDQyBleHRlbnNpb25zIGZvciBzdHJ1Y3R1cmUgaW5pdGlhbGlzYXRpb25zCgotIEltcGxlbWVudGVkIGFzeW5jIG9wZW4gbm90aWZpY2F0aW9uCgotIEluY3JlbWVudGVkIGRldmZzZCBwcm90b2NvbCByZXZpc2lvbiB0byAxCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjU2CgotIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEyMC1wcmUzCgotIE1vdmVkIGFzeW5jIG9wZW4gbm90aWZpY2F0aW9uIHRvIGVuZCBvZiA8ZGV2ZnNfb3Blbj4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2NTcKCi0gUG9ydGVkIHRvIGtlcm5lbCAyLjEuMTIxCgotIFByZXBlbmRlZCAiL2Rldi8iIHRvIG1vZHVsZSBsb2FkIHJlcXVlc3QKCi0gUmVuYW1lZCA8Y2FsbF9rZXJuZWxkPiB0byA8Y2FsbF9rbW9kPgoKLSBDcmVhdGVkIHNhbXBsZSBtb2R1bGVzLmNvbmYgZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY1OAoKLSBGaXhlZCB0eXBvICJBWVNOQyIgLT4gIkFTWU5DIgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY1OQoKLSBBZGRlZCBvcGVuIGZsYWcgZm9yIGZpbGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjYwCgotIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEyMy1wcmUyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjYxCgotIFNldCBpX2Jsb2Nrcz0wIGFuZCBpX2Jsa3NpemU9MTAyNCBpbiA8ZGV2ZnNfcmVhZF9pbm9kZT4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2NjIKCi0gUG9ydGVkIHRvIGtlcm5lbCAyLjEuMTIzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjYzCgotIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEyNC1wcmUyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjY0CgotIEZpeGVkIFVuaXg5OCBwdHkgc3VwcG9ydAoKLSBJbmNyZWFzZWQgYnVmZmVyIHNpemUgaW4gPGdldF9wYXJ0aXRpb25fbGlzdD4gdG8gYXZvaWQgY3Jhc2ggYW5kCiAgYnVybgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY2NQoKLSBNb3JlIFVuaXg5OCBwdHkgc3VwcG9ydCBmaXhlcwoKLSBBZGRlZCB0ZXN0IGZvciBlbXB0eSA8PG5hbWU+PiBpbiA8ZGV2ZnNfZmluZF9oYW5kbGU+CgotIFJlbmFtZWQgPGdlbmVyYXRlX3BhdGg+IHRvIDxkZXZmc19nZW5lcmF0ZV9wYXRoPiBhbmQgcHVibGlzaGVkCgotIENyZWF0ZWQgL2Rldi9yb290IHN5bWxpbmsKICBUaGFua3MgdG8gUm9kZXJpY2ggU2NodXBwIDxyc2NoQEV4cGVyVGVhbS5kZT4KICB3aXRoIGZ1cnRoZXIgbW9kaWZpY2F0aW9ucyBieSBtZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY2NgoKLSBZZXQgbW9yZSBVbml4OTggcHR5IHN1cHBvcnQgZml4ZXMgKG5vdyB0ZXN0ZWQpCgotIENyZWF0ZWQgPGRldmZzX2dldF9mb3BzPgoKLSBTdXBwb3J0IG1lZGlhIGNoYW5nZSBjaGVja3Mgd2hlbiBDT05GSUdfREVWRlNfT05MWT15CgotIEFib2xpc2hlZCBVbml4OTgtc3R5bGUgUFRZIG5hbWVzIGZvciBvbGQgUFRZIGRldmljZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2NjcKCi0gQWRkZWQgaW5saW5lIGRlY2xhcmF0aW9uIGZvciBkdW1teSA8ZGV2ZnNfZ2VuZXJhdGVfcGF0aD4KCi0gUmVtb3ZlZCBzcHVyaW91cyAidW5hYmxlIHRvIHJlZ2lzdGVyLi4uIGluIGRldmZzIiBtZXNzYWdlcyB3aGVuCiAgQ09ORklHX0RFVkZTX0ZTPW4KCi0gRml4ZWQgbWlzYy4gZGV2aWNlcyB3aGVuIENPTkZJR19ERVZGU19GUz1uCgotIExpbWl0IGF1dG8tZGV2aWNlIG51bWJlcmluZyB0byBtYWpvcnMgMTQ0IHRvIDIzOQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY2OAoKLSBIaWRlIHVub3BlbmVkIHZpcnR1YWwgY29uc29sZXMgZnJvbSBkaXJlY3RvcnkgbGlzdGluZ3MKCi0gQWRkZWQgc3VwcG9ydCBmb3IgdmlkZW8gY2FwdHVyZSBkZXZpY2VzCgotIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEyNQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY2OQoKLSBGaXggZm9yIENPTkZJR19WVD1uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjcwCgotIEFkZGVkIHN1cHBvcnQgZm9yIG5vbi1PU1MvRnJlZSBzb3VuZCBjYXJkcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY3MQoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMS4xMjYtcHJlMgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY3MgoKLSAjaWZkZWYncyBmb3IgQ09ORklHX0RFVkZTX0RJU0FCTEVfT0xEX05BTUVTIHJlbW92ZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2NzMKCi0gQ09ORklHX0RFVkZTX0RJU0FCTEVfT0xEX05BTUVTIHJlcGxhY2VkIHdpdGggIm5vY29tcGF0IiBib290IG9wdGlvbgoKLSBDT05GSUdfREVWRlNfQk9PVF9PUFRJT05TIHJlbW92ZWQ6IGJvb3Qgb3B0aW9ucyBhbHdheXMgYXZhaWxhYmxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjc0CgotIFJlbW92ZWQgQ09ORklHX0RFVkZTX01PVU5UIGFuZCAibW91bnQiIGJvb3Qgb3B0aW9uIGFuZCByZXBsYWNlZCB3aXRoCiAgIm5vbW91bnQiIGJvb3Qgb3B0aW9uCgotIERvY3VtZW50YXRpb24gdXBkYXRlcwoKLSBVcGRhdGVkIHNhbXBsZSBtb2R1bGVzLmNvbmYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2NzUKCi0gVXBkYXRlZCBzYW1wbGUgbW9kdWxlcy5jb25mCgotIFJlbW91bnQgZGV2ZnMgYWZ0ZXIgaW5pdHJkIGZpbmlzaGVzCgotIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEyNwoKLSBBZGRlZCBzdXBwb3J0IGZvciBJU0ROCiAgVGhhbmtzIHRvIENocmlzdG9waGUgTGVyb3kgPGNocmlzdG9waGUubGVyb3k1QGNhcHdheS5jb20+Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjc2CgotIFVwZGF0ZWQgYW4gZW1haWwgYWRkcmVzcyBpbiBDaGFuZ2VMb2cKCi0gQ09ORklHX0RFVkZTX09OTFkgcmVwbGFjZWQgd2l0aCAib25seSIgYm9vdCBvcHRpb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2NzcKCi0gQWRkZWQgREVWRlNfRkxfUkVNT1ZBQkxFIGZsYWcKCi0gQ2hlY2sgZm9yIGRpc2MgY2hhbmdlIHdoZW4gbGlzdGluZyBkaXJlY3RvcmllcyB3aXRoIHJlbW92YWJsZSBtZWRpYQogIGRldmljZXMKCi0gVXNlIERFVkZTX0ZMX1JFTU9WQUJMRSBpbiBzZC5jCgotIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEyOAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY3OAoKLSBPbmx5IGNhbGwgPHNjYW5fZGlyX2Zvcl9yZW1vdmFibGU+IG9uIGZpcnN0IGNhbGwgdG8gPGRldmZzX3JlYWRkaXI+CgotIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEyOS1wcmU1CgotIElTRE4gc3VwcG9ydCBpbXByb3ZlbWVudHMKICBUaGFua3MgdG8gQ2hyaXN0b3BoZSBMZXJveSA8Y2hyaXN0b3BoZS5sZXJveTVAY2Fwd2F5LmNvbT4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2NzkKCi0gUG9ydGVkIHRvIGtlcm5lbCAyLjEuMTMwCgotIFJlbmFtZWQgbWlzY2RldmljZSAiYXBtIiB0byAiYXBtX2Jpb3MiIHRvIGJlIGNvbnNpc3RlbnQgd2l0aAogIGRldmljZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjgwCgotIFBvcnRlZCB0byBrZXJuZWwgMi4xLjEzMQoKLSBVcGRhdGVkIDxkZXZmc19ybWRpcj4gZm9yIFZGUyBjaGFuZ2UgaW4gMi4xLjEzMQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY4MQoKLSBGaXhlZCBwZXJtaXNzaW9ucyBvbiAvZGV2L3B0bXgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2ODIKCi0gUG9ydGVkIHRvIGtlcm5lbCAyLjEuMTMyLXByZTQKCi0gQ2hhbmdlZCBpbml0aWFsIHBlcm1pc3Npb25zIG9uIC9kZXYvcHRzLyoKCi0gQ3JlYXRlZCA8ZGV2ZnNfbWtfY29tcGF0PgoKLSBBZGRlZCAic3ltbGlua3MiIGJvb3Qgb3B0aW9uCgotIENoYW5nZWQgZGV2ZnNfcmVnaXN0ZXJfYmxrZGV2KCkgYmFjayB0byByZWdpc3Rlcl9ibGtkZXYoKSBmb3IgSURFCgotIENoZWNrIGZvciBwYXJ0aXRpb25zIG9uIHJlbW92YWJsZSBtZWRpYSBpbiA8ZGV2ZnNfbG9va3VwPgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY4MwoKLSBGaXhlZCBzdXBwb3J0IGZvciByYW1kaXNjIHdoZW4gdXNpbmcgc3RyaW5nLWJhc2VkIHJvb3QgRlMgbmFtZQoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMi4wLXByZTEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2ODQKCi0gUG9ydGVkIHRvIGtlcm5lbCAyLjIuMC1wcmU3Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjg1CgotIENvbXBpbGUgZml4ZXMgZm9yIGRyaXZlci9zb3VuZC9zb3VuZF9jb21tb24uYyAobm9uLW1vZHVsZSkgYW5kCiAgZHJpdmVycy9pc2RuL2lzZG5fY29tbW9uLmMKICBUaGFua3MgdG8gQ2hyaXN0b3BoZSBMZXJveSA8Y2hyaXN0b3BoZS5sZXJveTVAY2Fwd2F5LmNvbT4KCi0gQWRkZWQgc3VwcG9ydCBmb3IgcmVnaXN0ZXJpbmcgcmVndWxhciBmaWxlcwoKLSBDcmVhdGVkIDxkZXZmc19zZXRfZmlsZV9zaXplPgoKLSBBZGRlZCAvZGV2L2NwdS9tdHJyIGFzIGFuIGFsdGVybmF0aXZlIGludGVyZmFjZSB0byAvcHJvYy9tdHJyCgotIFVwZGF0ZSBkZXZmcyBpbm9kZXMgZnJvbSBlbnRyaWVzIGlmIG5vdCBjaGFuZ2VkIHRocm91Z2ggRlMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2ODYKCi0gUG9ydGVkIHRvIGtlcm5lbCAyLjIuMC1wcmU5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjg3CgotIEZpeGVkIGJ1ZyB3aGVuIG1vdW50aW5nIG5vbi1kZXZmcyBkZXZpY2VzIGluIGEgZGV2ZnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2ODgKCi0gRml4ZWQgPGRldmZzX2ZpbGxfZmlsZT4gdG8gb25seSBpbml0aWFsaXNlIHRlbXBvcmFyeSBpbm9kZXMKCi0gVHJhcCBmb3IgTlVMTCBmb3BzIGluIDxkZXZmc19yZWdpc3Rlcj4KCi0gUmV0dXJuIC1FTk9ERVYgaW4gPGRldmZzX2ZpbGxfZmlsZT4gZm9yIG5vbi1kcml2ZXIgaW5vZGVzCgotIEZpeGVkIGJ1ZyB3aGVuIHVuc3dhcHBpbmcgbm9uLWRldmZzIGRldmljZXMgaW4gYSBkZXZmcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY4OQoKLSBTd2l0Y2hlZCB0byBDIGRhdGEgdHlwZXMgaW4gaW5jbHVkZS9saW51eC9kZXZmc19mcy5oCgotIFN3aXRjaGVkIGZyb20gUEFUSF9NQVggdG8gREVWRlNfUEFUSExFTgoKLSBVcGRhdGVkIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZGV2ZnMvbW9kdWxlcy5jb25mIHRvIHRha2UgYWNjb3VudAogIG9mIHJldmVyc2Ugc2Nhbm5pbmcgKCEpIGJ5IG1vZHByb2JlCgotIFBvcnRlZCB0byBrZXJuZWwgMi4yLjAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2OTAKCi0gQ09ORklHX0RFVkZTX0RJU0FCTEVfT0xEX1RUWV9OQU1FUyByZXBsYWNlZCB3aXRoICJub3R0eWNvbXBhdCIgYm9vdAogIG9wdGlvbgoKLSBDT05GSUdfREVWRlNfVFRZX0NPTVBBVCByZW1vdmVkOiBleGlzdGluZyAic3ltbGlua3MiIGJvb3Qgb3B0aW9uIG5vdwogIGNvbnRyb2xzIHRoaXMuIFRoaXMgbWVhbnMgeW91IG11c3QgaGF2ZSBsaWJjIDUuNC40NCBvciBsYXRlciwgb3IgYQogIHJlY2VudCB2ZXJzaW9uIG9mIGxpYmMgNiBpZiB5b3UgdXNlIHRoZSAic3ltbGlua3MiIG9wdGlvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY5MQoKLSBTd2l0Y2ggZnJvbSA8ZGV2ZnNfbWtfc3ltbGluaz4gdG8gPGRldmZzX21rX2NvbXBhdD4gaW4KICBkcml2ZXJzL2NoYXIvdmNfc2NyZWVuLmMgdG8gZml4IHByb2JsZW1zIHdpdGggTWlkbmlnaHQgQ29tbWFuZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjkyCgotIFBvcnRlZCB0byBrZXJuZWwgMi4yLjItcHJlNQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY5MwoKLSBNb2RpZmllZCA8c2RfbmFtZT4gaW4gZHJpdmVycy9zY3NpL3NkLmMgdG8gY29wZSB3aXRoIGRldmljZXMgdGhhdAogIGRvbid0IGV4aXN0ICh3aGljaCBoYXBwZW5zIHdpdGggbmV3IFJBSUQgYXV0b3N0YXJ0IGNvZGUgcHJpbnRrKClzKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY5NAoKLSBGaXhlZCBidWcgaW4gam95c3RpY2sgZHJpdmVyOiBvbmx5IGZpcnN0IGpveXN0aWNrIHdhcyByZWdpc3RlcmVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjk1CgotIEZpeGVkIGFub3RoZXIgYnVnIGluIGpveXN0aWNrIGRyaXZlcgoKLSBGaXhlZCA8ZGV2ZnNkX3JlYWQ+IHRvIG5vdCBvdmVycnVuIGV2ZW50IGJ1ZmZlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY5NgoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMi41LTIKCi0gQ3JlYXRlZCA8ZGV2ZnNfYXV0b191bnJlZ2lzdGVyPgoKLSBGaXhlZCBidWdzOiBjb21wYXRpYmlsaXR5IGVudHJpZXMgd2VyZSBub3QgdW5yZWdpc3RlcmVkIGZvcjoKICAgIGxvb3AgZHJpdmVyCiAgICBmbG9wcHkgZHJpdmVyCiAgICBSQU1ESVNDIGRyaXZlcgogICAgSURFIHRhcGUgZHJpdmVyCiAgICBTQ1NJIENELVJPTSBkcml2ZXIKICAgIFNDU0kgSEREIGRyaXZlcgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY5NwoKLSBGaXhlZCBidWdzOiBjb21wYXRpYmlsaXR5IGVudHJpZXMgd2VyZSBub3QgdW5yZWdpc3RlcmVkIGZvcjoKICAgIEFMU0Egc291bmQgZHJpdmVyCiAgICBwYXJ0aXRpb25zIGluIGdlbmVyaWMgZGlzYyBkcml2ZXIKCi0gRG9uJ3QgcmV0dXJuIHVucmVnaXN0cmVkIGVudHJpZXMgaW4gPGRldmZzX2ZpbmRfaGFuZGxlPgoKLSBQYW5pYyBpbiA8ZGV2ZnNfdW5yZWdpc3Rlcj4gaWYgZW50cnkgdW5yZWdpc3RlcmVkCgotIERvbid0IHBhbmljIGluIDxkZXZmc19hdXRvX3VucmVnaXN0ZXI+IGZvciBkdXBsaWNhdGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjk4CgotIERvbid0IHVucmVnaXN0ZXIgYWxyZWFkeSB1bnJlZ2lzdGVyZWQgZW50cmllcyBpbiA8dW5yZWdpc3Rlcj4KCi0gUmVnaXN0ZXIgZW50cnkgaW4gPHNkX2RldGVjdD4KCi0gVW5yZWdpc3RlciBlbnRyeSBpbiA8c2RfZGV0YWNoPgoKLSBDaGFuZ2VkIHRvIDxkZXZmc18qcmVnaXN0ZXJfY2hyZGV2PiBpbiBkcml2ZXJzL2NoYXIvdHR5X2lvLmMKCi0gUG9ydGVkIHRvIGtlcm5lbCAyLjIuNwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHY5OQoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMi44CgotIEZpeGVkIGJ1ZyBpbiBkcml2ZXJzL3Njc2kvc2QuYyB3aGVuID4xNiBTQ1NJIGRpc2NzCgotIERpc2FibGUgd2FybmluZyBtZXNzYWdlcyB3aGVuIHVuYWJsZSB0byByZWFkIHBhcnRpdGlvbiB0YWJsZSBmb3IKICByZW1vdmFibGUgbWVkaWEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTAwCgotIFBvcnRlZCB0byBrZXJuZWwgMi4zLjEtcHJlNQoKLSBBZGRlZCAib29wcy1vbi1wYW5pYyIgYm9vdCBvcHRpb24KCi0gSW1wcm92ZWQgZGVidWdnaW5nIGluIDxkZXZmc19yZWdpc3Rlcj4gYW5kIDxkZXZmc191bnJlZ2lzdGVyPgoKLSBSZWdpc3RlciBlbnRyeSBpbiA8c3JfZGV0ZWN0PgoKLSBVbnJlZ2lzdGVyIGVudHJ5IGluIDxzcl9kZXRhY2g+CgotIFJlZ2lzdGVyIGVudHJ5IGluIDxzZ19kZXRlY3Q+CgotIFVucmVnaXN0ZXIgZW50cnkgaW4gPHNnX2RldGFjaD4KCi0gQWRkZWQgc3VwcG9ydCBmb3IgQUxTQSBkcml2ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjEwMQoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy4yCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjEwMgoKLSBVcGRhdGUgc2VyaWFsIGRyaXZlciB0byByZWdpc3RlciBQQ01DSUEgZW50cmllcwogIFRoYW5rcyB0byBSb2NoLUFsZXhhbmRyZSBOb21pbmUtQmVndWluIDxyb2NoQHNhbWFya2FuZC5pbmZpbmkuZnI+CgotIFVwZGF0ZWQgYW4gZW1haWwgYWRkcmVzcyBpbiBDaGFuZ2VMb2cKCi0gSGlkZSB2aXJ0dWFsIGNvbnNvbGUgY2FwdHVyZSBlbnRyaWVzIGZyb20gZGlyZWN0b3J5IGxpc3RpbmdzIHdoZW4KICBjb3JyZXNwb25kaW5nIGNvbnNvbGUgZGV2aWNlIGlzIG5vdCBvcGVuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjEwMwoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy4zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjEwNAoKLSBBZGRlZCBkb2N1bWVudGF0aW9uIGZvciBzb21lIGZ1bmN0aW9ucwoKLSBBZGRlZCAiZG9jIiB0YXJnZXQgdG8gZnMvZGV2ZnMvTWFrZWZpbGUKCi0gQWRkZWQgInY0bCIgZGlyZWN0b3J5IGZvciB2aWRlbzRsaW51eCBkZXZpY2VzCgotIFJlcGxhY2VkIGNhbGwgdG8gPGRldmZzX3VucmVnaXN0ZXI+IGluIDxzZF9kZXRhY2g+IHdpdGggY2FsbCB0bwogIDxkZXZmc19yZWdpc3Rlcl9wYXJ0aXRpb25zPgoKLSBNb3ZlZCByZWdpc3RyYXRpb24gZm9yIHNyIGFuZCBzZyBkcml2ZXJzIGZyb20gZGV0ZWN0KCkgdG8gYXR0YWNoKCkKICBtZXRob2RzCgotIFJlZ2lzdGVyIGVudHJpZXMgaW4gPHN0X2F0dGFjaD4gYW5kIHVucmVnaXN0ZXIgaW4gPHN0X2RldGFjaD4KCi0gV29yayBhcm91bmQgSURFIGRyaXZlciB0cmVhdGluZyBDRC1ST00gYXMgZ2VuZGlzawoKLSBVc2UgPHNlZD4gaW5zdGVhZCBvZiA8dHI+IGluIHJjLmRldmZzCgotIFVwZGF0ZWQgVG9EbyBsaXN0CgotIFJlbW92ZWQgIm9vcHMtb24tcGFuaWMiIGJvb3Qgb3B0aW9uOiBub3cgYWx3YXlzIE9vcHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTA1CgotIFVucmVnaXN0ZXIgU0NTSSBob3N0IGZyb20gPHNjc2lfaG9zdF9ub19saXN0PiBpbiA8c2NzaV91bnJlZ2lzdGVyPgogIFRoYW5rcyB0byBab2x04W4gQvZzevZybelueWkgPHpib3N6b3JAbWFpbC5leHRlcm5ldC5odT4KCi0gRG9uJ3Qgc2F2ZSAvZGV2L2xvZyBpbiByYy5kZXZmcwoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy40LXByZTEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTA2CgotIEZpeGVkIHNpbGx5IHR5cG8gaW4gZHJpdmVycy9zY3NpL3N0LmMKCi0gSW1wcm92ZWQgZGVidWdnaW5nIGluIDxkZXZmc19yZWdpc3Rlcj4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTA3CgotIEFkZGVkICJkaXVubGluayIgYW5kICJub2ttb2QiIGJvb3Qgb3B0aW9ucwoKLSBSZW1vdmVkIHN1cGVyZmx1b3VzIHdhcm5pbmcgbWVzc2FnZSBpbiA8ZGV2ZnNfZF9pcHV0Pgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxMDgKCi0gUmVtb3ZlIGVudHJpZXMgd2hlbiB1bmxvYWRpbmcgc291bmQgbW9kdWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjEwOQoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy42LXByZTIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTEwCgotIFRvb2sgYWNjb3VudCBvZiBjaGFuZ2UgdG8gPGRfYWxsb2Nfcm9vdD4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTExCgotIENyZWF0ZWQgc2VwYXJhdGUgZXZlbnQgcXVldWUgZm9yIGVhY2ggbW91bnRlZCBkZXZmcwoKLSBSZW1vdmVkIDxkZXZmc19pbnZhbGlkYXRlX2RjYWNoZT4KCi0gQ3JlYXRlZCBuZXcgaW9jdGwoKXMgZm9yIGRldmZzZAoKLSBJbmNyZW1lbnRlZCBkZXZmc2QgcHJvdG9jb2wgcmV2aXNpb24gdG8gMwoKLSBGaXhlZCBidWcgd2hlbiByZS1jcmVhdGluZyBkaXJlY3RvcmllczogY29udGVudHMgd2VyZSBsb3N0CgotIEJsb2NrIGFjY2VzcyB0byBpbm9kZXMgdW50aWwgZGV2ZnNkIHVwZGF0ZXMgcGVybWlzc2lvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTEyCgotIE1vZGlmaWVkIHBhdGNoIHNvIGl0IGFwcGxpZXMgYWdhaW5zdCAyLjMuNSBhbmQgMi4zLjYKCi0gVXBkYXRlZCBhbiBlbWFpbCBhZGRyZXNzIGluIENoYW5nZUxvZwoKLSBEbyBub3QgYXV0b21hdGljYWxseSBjaGFuZ2Ugb3duZXJzaGlwL3Byb3RlY3Rpb24gb2YgL2Rldi90dHk8bj4KCi0gVXBkYXRlZCBzYW1wbGUgbW9kdWxlcy5jb25mCgotIFN3aXRjaGVkIHRvIHNlbmRpbmcgcHJvY2VzcyB1aWQvZ2lkIHRvIGRldmZzZAoKLSBSZW5hbWVkIDxjYWxsX2ttb2Q+IHRvIDx0cnlfbW9kbG9hZD4KCi0gQWRkZWQgREVWRlNEX05PVElGWV9MT09LVVAgZXZlbnQKCi0gQWRkZWQgREVWRlNEX05PVElGWV9DSEFOR0UgZXZlbnQKCi0gQWRkZWQgREVWRlNEX05PVElGWV9DUkVBVEUgZXZlbnQKCi0gSW5jcmVtZW50ZWQgZGV2ZnNkIHByb3RvY29sIHJldmlzaW9uIHRvIDQKCi0gTW92ZWQga2VybmVsLXNwZWNpZmljIHN0dWZmIHRvIGluY2x1ZGUvbGludXgvZGV2ZnNfZnNfa2VybmVsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTEzCgotIFBvcnRlZCB0byBrZXJuZWwgMi4zLjkKCi0gUmVzdHJpY3RlZCBwZXJtaXNzaW9ucyBvbiBzb21lIGJsb2NrIGRldmljZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTE0CgotIEFkZGVkIHN1cHBvcnQgZm9yIC9kZXYvbmV0bGluawogIFRoYW5rcyB0byBEZW5uaXMgSG91IDxzbWlsYXhAbWluZG1lbGQueWkub3JnPgoKLSBSZXR1cm4gRUlTRElSIHJhdGhlciB0aGFuIEVJTlZBTCBmb3IgcmVhZCgyKSBvbiBkaXJlY3RvcmllcwoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy4xMAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxMTUKCi0gQWRkZWQgc3VwcG9ydCBmb3IgYWxsIHJlbWFpbmluZyBjaGFyYWN0ZXIgZGV2aWNlcwogIFRoYW5rcyB0byBEZW5uaXMgSG91IDxzbWlsYXhAbWluZG1lbGQueWkub3JnPgoKLSBDbGVhbmVkIHVwIG5ldGxpbmsgc3VwcG9ydAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxMTYKCi0gQWRkZWQgc3VwcG9ydCBmb3IgL2Rldi9wYXJwb3J0JWQKICBUaGFua3MgdG8gVGltIFdhdWdoIDx0aW1AY3liZXJlbGsuZGVtb24uY28udWs+CgotIEZpeGVkIHBhcmFsbGVsIHBvcnQgQVRBUEkgdGFwZSBkcml2ZXIKCi0gRml4ZWQgQXRhcmkgU0xNIGxhc2VyIHByaW50ZXIgZHJpdmVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjExNwoKLSBBZGRlZCBzdXBwb3J0IGZvciBDT1NBIGNhcmQKICBUaGFua3MgdG8gRGVubmlzIEhvdSA8c21pbGF4QG1pbmRtZWxkLnlpLm9yZz4KCi0gRml4ZWQgZHJpdmVycy9jaGFyL3BwZGV2LmM6IG1pc3NpbmcgI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KCi0gRml4ZWQgZHJpdmVycy9jaGFyL2Z0YXBlL3pmdGFwZS96ZnRhcGUtaW5pdC5jCiAgVGhhbmtzIHRvIFZsYWRpbWlyIFBvcG92IDxtYXNoZ3JhZEB1c2EubmV0Pgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxMTgKCi0gUG9ydGVkIHRvIGtlcm5lbCAyLjMuMTUtcHJlMwoKLSBGaXhlZCBidWcgaW4gbG9vcCBkcml2ZXIKCi0gVW5yZWdpc3RlciAvZGV2L2xwJWQgZW50cmllcyBpbiBkcml2ZXJzL2NoYXIvbHAuYwogIFRoYW5rcyB0byBNYWNpZWogVy4gUm96eWNraSA8bWFjcm9AZHMyLnBnLmdkYS5wbD4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTE5CgotIFBvcnRlZCB0byBrZXJuZWwgMi4zLjE2Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjEyMAoKLSBGaXhlZCBidWcgaW4gZHJpdmVycy9zY3NpL3Njc2kuYwoKLSBBZGRlZCAvZGV2L3BwcAogIFRoYW5rcyB0byBEZW5uaXMgSG91IDxzbWlsYXhAbWluZG1lbGQueWkub3JnPgoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy4xNwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxMjEKCi0gRml4ZWQgYnVnIGluIGRyaXZlcnMvYmxvY2svbG9vcC5jCgotIFBvcnRlZCB0byBrZXJuZWwgMi4zLjE4Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjEyMgoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy4xOQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxMjMKCi0gUG9ydGVkIHRvIGtlcm5lbCAyLjMuMjAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTI0CgotIFBvcnRlZCB0byBrZXJuZWwgMi4zLjIxCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjEyNQoKLSBDcmVhdGVkIDxkZXZmc19nZXRfaW5mbz4sIDxkZXZmc19zZXRfaW5mbz4sCiAgPGRldmZzX2dldF9maXJzdF9jaGlsZD4gYW5kIDxkZXZmc19nZXRfbmV4dF9zaWJsaW5nPgogIEFkZGVkIDw8ZGlyPj4gcGFyYW1ldGVyIHRvIDxkZXZmc19yZWdpc3Rlcj4sIDxkZXZmc19ta19jb21wYXQ+LAogIDxkZXZmc19ta19kaXI+IGFuZCA8ZGV2ZnNfZmluZF9oYW5kbGU+CiAgV29yayBzcG9uc29yZWQgYnkgU0dJCgotIEZpeGVkIGFwcGFyZW50IGJ1ZyBpbiBDT1NBIGRyaXZlcgoKLSBSZS1pbnN0YXRlZCAic2NzaWhvc3RzPSIgYm9vdCBvcHRpb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTI2CgotIEFsd2F5cyBjcmVhdGUgL2Rldi9wdHMgaWYgQ09ORklHX1VOSVg5OF9QVFlTPXkKCi0gRml4ZWQgY2FsbCB0byA8ZGV2ZnNfbWtfZGlyPiBpbiBkcml2ZXJzL2Jsb2NrL2lkZS1kaXNrLmMKICBUaGFua3MgdG8gRGVubmlzIEhvdSA8c21pbGF4QG1pbmRtZWxkLnlpLm9yZz4KCi0gQWxsb3cgbXVsdGlwbGUgdW5yZWdpc3RyYXRpb25zCgotIENyZWF0ZWQgL2Rldi9zY3NpIGhpZXJhcmNoeQogIFdvcmsgc3BvbnNvcmVkIGJ5IFNHSQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxMjcKCldvcmsgc3BvbnNvcmVkIGJ5IFNHSQoKLSBObyBsb25nZXIgZGlzYWJsZSBkZXZwdHMgaWYgZGV2ZnMgZW5hYmxlZCAoY2F2ZWF0IGVtcHRvcikKCi0gQWRkZWQgZmxhZ3MgYXJyYXkgdG8gc3RydWN0IGdlbmRpc2sgYW5kIHJlbW92ZWQgY29kZSBmcm9tCiAgZHJpdmVycy9zY3NpL3NkLmMKCi0gQ3JlYXRlZCAvZGV2L2Rpc2NzIGhpZXJhcmNoeQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxMjgKCldvcmsgc3BvbnNvcmVkIGJ5IFNHSQoKLSBDcmVhdGVkIC9kZXYvY2Ryb21zIGhpZXJhcmNoeQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxMjkKCldvcmsgc3BvbnNvcmVkIGJ5IFNHSQoKLSBSZW1vdmVkIGNvbXBhdGliaWxpdHkgZW50cmllcyBmb3Igc291bmQgZGV2aWNlcwoKLSBSZW1vdmVkIGNvbXBhdGliaWxpdHkgZW50cmllcyBmb3IgcHJpbnRlciBkZXZpY2VzCgotIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciB2aWRlbzRsaW51eCBkZXZpY2VzCgotIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciBwYXJhbGxlbCBwb3J0IGRldmljZXMKCi0gUmVtb3ZlZCBjb21wYXRpYmlsaXR5IGVudHJpZXMgZm9yIGZyYW1lIGJ1ZmZlciBkZXZpY2VzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjEzMAoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIEFkZGVkIG1ham9yIGFuZCBtaW5vciBudW1iZXIgdG8gZGV2ZnNkIHByb3RvY29sCgotIEluY3JlbWVudGVkIGRldmZzZCBwcm90b2NvbCByZXZpc2lvbiB0byA1CgotIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciBTb3VuZEJsYXN0ZXIgQ0QtUk9NcwoKLSBSZW1vdmVkIGNvbXBhdGliaWxpdHkgZW50cmllcyBmb3IgbmV0bGluayBkZXZpY2VzCgotIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciBTQ1NJIGdlbmVyaWMgZGV2aWNlcwoKLSBSZW1vdmVkIGNvbXBhdGliaWxpdHkgZW50cmllcyBmb3IgU0NTSSB0YXBlIGRldmljZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTMxCgpXb3JrIHNwb25zb3JlZCBieSBTR0kKCi0gU3VwcG9ydCBpbmZvIHBvaW50ZXIgZm9yIGFsbCBkZXZmcyBlbnRyeSB0eXBlcwoKLSBBZGRlZCA8PGluZm8+PiBwYXJhbWV0ZXIgdG8gPGRldmZzX21rX2Rpcj4gYW5kIDxkZXZmc19ta19zeW1saW5rPgoKLSBSZW1vdmVkIC9kZXYvc3QgaGllcmFyY2h5CgotIFJlbW92ZWQgL2Rldi9zZyBoaWVyYXJjaHkKCi0gUmVtb3ZlZCBjb21wYXRpYmlsaXR5IGVudHJpZXMgZm9yIGxvb3AgZGV2aWNlcwoKLSBSZW1vdmVkIGNvbXBhdGliaWxpdHkgZW50cmllcyBmb3IgSURFIHRhcGUgZGV2aWNlcwoKLSBSZW1vdmVkIGNvbXBhdGliaWxpdHkgZW50cmllcyBmb3IgU0NTSSBDRC1ST01zCgotIFJlbW92ZWQgL2Rldi9zciBoaWVyYXJjaHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTMyCgpXb3JrIHNwb25zb3JlZCBieSBTR0kKCi0gUmVtb3ZlZCBjb21wYXRpYmlsaXR5IGVudHJpZXMgZm9yIGZsb3BweSBkZXZpY2VzCgotIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciBSQU1ESVNDcwoKLSBSZW1vdmVkIGNvbXBhdGliaWxpdHkgZW50cmllcyBmb3IgbWV0YS1kZXZpY2VzCgotIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciBTQ1NJIGRpc2NzCgotIENyZWF0ZWQgPGRldmZzX21ha2Vfcm9vdD4KCi0gUmVtb3ZlZCAvZGV2L3NkIGhpZXJhcmNoeQoKLSBTdXBwb3J0ICIuLi8iIHdoZW4gc2VhcmNoaW5nIGRldmZzIG5hbWVzcGFjZQoKLSBDcmVhdGVkIC9kZXYvaWRlL2hvc3QqIGhpZXJhcmNoeQoKLSBTdXBwb3J0ZWQgSURFIGhhcmQgZGlzY3MgaW4gL2Rldi9pZGUvaG9zdCogaGllcmFyY2h5CgotIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciBJREUgZGlzY3MKCi0gUmVtb3ZlZCAvZGV2L2lkZS9oZCBoaWVyYXJjaHkKCi0gU3VwcG9ydGVkIElERSBDRC1ST01zIGluIC9kZXYvaWRlL2hvc3QqIGhpZXJhcmNoeQoKLSBSZW1vdmVkIGNvbXBhdGliaWxpdHkgZW50cmllcyBmb3IgSURFIENELVJPTXMKCi0gUmVtb3ZlZCAvZGV2L2lkZS9jZCBoaWVyYXJjaHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTMzCgpXb3JrIHNwb25zb3JlZCBieSBTR0kKCi0gQ3JlYXRlZCA8ZGV2ZnNfZ2V0X3VucmVnaXN0ZXJfc2xhdmU+CgotIEZpeGVkIGJ1ZyBpbiBmcy9wYXJ0aXRpb25zL2NoZWNrLmMgd2hlbiByZXNjYW5uaW5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjEzNAoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIFJlbW92ZWQgL2Rldi9zZCwgL2Rldi9zciwgL2Rldi9zdCBhbmQgL2Rldi9zZyBkaXJlY3RvcmllcwoKLSBSZW1vdmVkIC9kZXYvaWRlL2hkIGRpcmVjdG9yeQoKLSBFeHBvcnRlZCA8ZGV2ZnNfZ2V0X3BhcmVudD4KCi0gQ3JlYXRlZCA8ZGV2ZnNfcmVnaXN0ZXJfdGFwZT4gYW5kIC9kZXYvdGFwZXMgaGllcmFyY2h5CgotIFJlbW92ZWQgL2Rldi9pZGUvbXQgaGllcmFyY2h5CgotIFJlbW92ZWQgL2Rldi9pZGUvZmQgaGllcmFyY2h5CgotIFBvcnRlZCB0byBrZXJuZWwgMi4zLjI1Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjEzNQoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciB2aXJ0dWFsIGNvbnNvbGUgY2FwdHVyZSBkZXZpY2VzCgotIFJlbW92ZWQgdW51c2VkIDxkZXZmc19zZXRfc3ltbGlua19kZXN0aW5hdGlvbj4KCi0gUmVtb3ZlZCBjb21wYXRpYmlsaXR5IGVudHJpZXMgZm9yIHNlcmlhbCBkZXZpY2VzCgotIFJlbW92ZWQgY29tcGF0aWJpbGl0eSBlbnRyaWVzIGZvciBjb25zb2xlIGRldmljZXMKCi0gRG8gbm90IGhpZGUgZW50cmllcyBmcm9tIGRldmZzZCBvciBjaGlsZHJlbgoKLSBSZW1vdmVkIERFVkZTX0ZMX1RUWV9DT01QQVQgZmxhZwoKLSBSZW1vdmVkICJub3R0eWNvbXBhdCIgYm9vdCBvcHRpb24KCi0gUmVtb3ZlZCA8ZGV2ZnNfbWtfY29tcGF0Pgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxMzYKCldvcmsgc3BvbnNvcmVkIGJ5IFNHSQoKLSBNb3ZlZCBCU0QgcHR5IGRldmljZXMgdG8gL2Rldi9wdHkKCi0gQWRkZWQgREVWRlNfRkxfV0FJVCBmbGFnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjEzNwoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIFJlYWxseSBmaXhlZCBidWcgaW4gZnMvcGFydGl0aW9ucy9jaGVjay5jIHdoZW4gcmVzY2FubmluZwoKLSBTdXBwb3J0IG5ldyAiZGlzYyIgbmFtaW5nIHNjaGVtZSBpbiA8Z2V0X3JlbW92YWJsZV9wYXJ0aXRpb24+CgotIEFsbG93IE5VTEwgZm9wcyBpbiA8ZGV2ZnNfcmVnaXN0ZXI+CgotIFJlbW92ZWQgcmVkdW5kYW50IG5hbWUgZnVuY3Rpb25zIGluIFNDU0kgZGlzYyBhbmQgSURFIGRyaXZlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTM4CgpXb3JrIHNwb25zb3JlZCBieSBTR0kKCi0gRml4ZWQgb2xkIGJ1Z3MgaW4gZHJpdmVycy9ibG9jay9wYXJpZGUvcHQuYywgZHJpdmVycy9jaGFyL3RwcWljMDIuYywKICBkcml2ZXJzL25ldC93YW4vY29zYS5jIGFuZCBkcml2ZXJzL3Njc2kvc2NzaS5jCiAgVGhhbmtzIHRvIFNlcmdleSBLdWJ1c2hpbiA8a3NpQGtzaS1saW51eC5jb20+CgotIEZhbGwgYmFjayB0byBtYWpvciB0YWJsZSBpZiBOVUxMIGZvcHMgZ2l2ZW4gdG8gPGRldmZzX3JlZ2lzdGVyPgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxMzkKCldvcmsgc3BvbnNvcmVkIGJ5IFNHSQoKLSBDb3JyZWN0ZWQgYW5kIG1vdmVkIDxnZXRfYmxrZm9wcz4gYW5kIDxnZXRfY2hyZm9wcz4gZGVjbGFyYXRpb25zCiAgZnJvbSBhcmNoL2FscGhhL2tlcm5lbC9vc2Zfc3lzLmMgdG8gaW5jbHVkZS9saW51eC9mcy5oCgotIFJlbW92ZWQgbmFtZSBmdW5jdGlvbiBmcm9tIHN0cnVjdCBnZW5kaXNrCgotIFVwZGF0ZWQgZGV2ZnMgRkFRCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE0MAoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIFBvcnRlZCB0byBrZXJuZWwgMi4zLjI3Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE0MQoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIEJ1ZyBmaXggaW4gYXJjaC9tNjhrL2F0YXJpL2pveXN0aWNrLmMKCi0gTW92ZWQgSVNETiBhbmQgY2FwaSBkZXZpY2VzIHRvIC9kZXYvaXNkbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxNDIKCldvcmsgc3BvbnNvcmVkIGJ5IFNHSQoKLSBCdWcgZml4IGluIGRyaXZlcnMvYmxvY2svaWRlLXByb2JlLmMgKHBhdGNoIGNvbmZ1c2lvbikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTQzCgpXb3JrIHNwb25zb3JlZCBieSBTR0kKCi0gQnVnIGZpeCBpbiBkcml2ZXJzL2Jsb2NrL2Jsa3BnLmM6cGFydGl0aW9uX25hbWUoKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxNDQKCldvcmsgc3BvbnNvcmVkIGJ5IFNHSQoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy4yOQoKLSBSZW1vdmVkIGNhbGxzIHRvIDxkZXZmc19yZWdpc3Rlcj4gZnJvbSBjZHUzMWEsIGNtMjA2LCBtY2QgYW5kIG1jZHgKICBDRC1ST00gZHJpdmVyczogZ2VuZXJpYyBkcml2ZXIgaGFuZGxlcyB0aGlzIG5vdwoKLSBNb3ZlZCBqb3lzdGljayBkZXZpY2VzIHRvIC9kZXYvam95c3RpY2tzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE0NQoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIFBvcnRlZCB0byBrZXJuZWwgMi4zLjMwLXByZTMKCi0gUmVnaXN0ZXIgd2hvbGUtZGlzYyBlbnRyeSBldmVuIGZvciBpbnZhbGlkIHBhcnRpdGlvbiB0YWJsZXMKCi0gRml4ZWQgYnVnIGluIG1vdW50aW5nIHJvb3QgRlMgd2hlbiBpbml0cmQgZW5hYmxlZAoKLSBGaXhlZCBkZXZpY2UgZW50cnkgbGVhayB3aXRoIElERSBDRC1ST01zCgotIEZpeGVkIGNvbXBpbGUgcHJvYmxlbSB3aXRoIGRyaXZlcnMvaXNkbi9pc2RuX2NvbW1vbi5jCgotIE1vdmVkIENPU0EgZGV2aWNlcyB0byAvZGV2L2Nvc2EKCi0gU3VwcG9ydCBmaWZvcyB3aGVuIHVucmVnaXN0ZXJpbmcKCi0gQ3JlYXRlZCA8ZGV2ZnNfcmVnaXN0ZXJfc2VyaWVzPiBhbmQgdXNlZCBpbiBtYW55IGRyaXZlcnMKCi0gTW92ZWQgQ29kYSBkZXZpY2VzIHRvIC9kZXYvY29kYQoKLSBNb3ZlZCBwYXJhbGxlbCBwb3J0IElERSB0YXBlcyB0byAvZGV2L3B0CgotIE1vdmVkIHBhcmFsbGVsIHBvcnQgSURFIGdlbmVyaWMgZGV2aWNlcyB0byAvZGV2L3BnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE0NgoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIFJlbW92ZWQgb2Jzb2xldGUgREVWRlNfRkxfQ09NUEFUIGFuZCBERVZGU19GTF9UT0xFUkFOVCBmbGFncwoKLSBGaXhlZCBjb21waWxlIHByb2JsZW0gd2l0aCBmcy9jb2RhL3BzZGV2LmMKCi0gUmVpbnN0YXRlIGNoYW5nZSB0byA8ZGV2ZnNfcmVnaXN0ZXJfYmxrZGV2PiBpbgogIGRyaXZlcnMvYmxvY2svaWRlLXByb2JlLmMgbm93IHRoYXQgZnMvaXNvZnMvaW5vZGUuYyBpcyBmaXhlZAoKLSBTd2l0Y2hlZCB0byA8ZGV2ZnNfcmVnaXN0ZXJfYmxrZGV2PiBpbiBkcml2ZXJzL2Jsb2NrL2Zsb3BweS5jLAogIGRyaXZlcnMvc2NzaS9zci5jIGFuZCBkcml2ZXJzL2Jsb2NrL21kLmMKCi0gTW92ZWQgREFDOTYwIGRldmljZXMgdG8gL2Rldi9kYWM5NjAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTQ3CgpXb3JrIHNwb25zb3JlZCBieSBTR0kKCi0gUG9ydGVkIHRvIGtlcm5lbCAyLjMuMzItcHJlNAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxNDgKCldvcmsgc3BvbnNvcmVkIGJ5IFNHSQoKLSBSZW1vdmVkIGttb2Qgc3VwcG9ydDogdXNlIGRldmZzZCBpbnN0ZWFkCgotIE1vdmVkIG1pc2NlbGxhbmVvdXMgY2hhcmFjdGVyIGRldmljZXMgdG8gL2Rldi9taXNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE0OQoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIEVuc3VyZSBpbmNsdWRlL2xpbnV4L2pveXN0aWNrLmggaXMgT0sgZm9yIHVzZXItc3BhY2UKCi0gSW1wcm92ZWQgZGVidWdnaW5nIGluIDxnZXRfdmZzX2lub2RlPgoKLSBFbnN1cmUgZGVudHJpZXMgY3JlYXRlZCBieSBkZXZmc2Qgd2lsbCBiZSBjbGVhbmVkIHVwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE1MAoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIFBvcnRlZCB0byBrZXJuZWwgMi4zLjM0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE1MQoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIFBvcnRlZCB0byBrZXJuZWwgMi4zLjM1LXByZTEKCi0gQ3JlYXRlZCA8ZGV2ZnNfZ2V0X25hbWU+Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE1MgoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIFVwZGF0ZWQgc2FtcGxlIG1vZHVsZXMuY29uZgoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy4zNi1wcmUxCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE1MwoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIFBvcnRlZCB0byBrZXJuZWwgMi4zLjQyCgotIFJlbW92ZWQgPGRldmZzX2ZpbGxfZmlsZT4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTU0CgpXb3JrIHNwb25zb3JlZCBieSBTR0kKCi0gVG9vayBhY2NvdW50IG9mIGRldmljZSBudW1iZXIgY2hhbmdlcyBmb3IgL2Rldi9mYioKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTU1CgpXb3JrIHNwb25zb3JlZCBieSBTR0kKCi0gUG9ydGVkIHRvIGtlcm5lbCAyLjMuNDMtcHJlOAoKLSBNb3ZlZCAvZGV2L3R0eTAgdG8gL2Rldi92Yy8wCgotIE1vdmVkIHNlcXVlbmNlIG51bWJlciBmb3JtYXR0aW5nIGZyb20gPF90dHlfbWFrZV9uYW1lPiB0byBkcml2ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE1NgoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIEZpeGVkIGJyZWFrYWdlIGluIGRyaXZlcnMvc2NzaS9zZC5jIGR1ZSB0byByZWNlbnQgU0NTSSBjaGFuZ2VzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE1NwoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIFBvcnRlZCB0byBrZXJuZWwgMi4zLjQ1Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE1OAoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIFBvcnRlZCB0byBrZXJuZWwgMi4zLjQ2LXByZTIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTU5CgpXb3JrIHNwb25zb3JlZCBieSBTR0kKCi0gRml4ZWQgZHJpdmVycy9ibG9jay9tZC5jCiAgVGhhbmtzIHRvIE1pa2UgR2FsYnJhaXRoIDxtaWtlZ0B3ZWlkZW4uZGU+CgotIERvY3VtZW50YXRpb24gZml4ZXMKCi0gTW92ZWQgZGV2aWNlIHJlZ2lzdHJhdGlvbiBmcm9tIDxscF9pbml0PiB0byA8bHBfcmVnaXN0ZXI+CiAgVGhhbmtzIHRvIFRpbSBXYXVnaCA8dHdhdWdoQHJlZGhhdC5jb20+Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE2MAoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIEZpeGVkIGRyaXZlcnMvY2hhci9qb3lzdGljay9qb3lzdGljay5jCiAgVGhhbmtzIHRvIFZvanRlY2ggUGF2bGlrIDx2b2p0ZWNoQHN1c2UuY3o+CgotIERvY3VtZW50YXRpb24gdXBkYXRlcwoKLSBGaXhlZCBhcmNoL2kzODYva2VybmVsL210cnIuYyBpZiBwcm9jZnMgYW5kIGRldmZzIG5vdCBlbmFibGVkCgotIEZpeGVkIGRyaXZlcnMvY2hhci9zdGFsbGlvbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE2MQoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIFJlbW92ZSAvZGV2L2lkZSB3aGVuIGlkZS1tb2QgaXMgdW5sb2FkZWQKCi0gRml4ZWQgYnVnIGluIGRyaXZlcnMvYmxvY2svaWRlLXByb2JlLmMgd2hlbiBzZWNvbmRhcnkgYnV0IG5vIHByaW1hcnkKCi0gQWRkZWQgREVWRlNfRkxfTk9fUEVSU0lTVEVOQ0UgZmxhZwoKLSBVc2VkIG5ldyBERVZGU19GTF9OT19QRVJTSVNURU5DRSBmbGFnIGZvciBVbml4OTggcHR5IHNsYXZlcwoKLSBSZW1vdmVkIHVubmVjZXNzYXJ5IGNhbGwgdG8gPHVwZGF0ZV9kZXZmc19pbm9kZV9mcm9tX2VudHJ5PiBpbgogIDxkZXZmc19yZWFkZGlyPgoKLSBPbmx5IHNldCBhdXRvLW93bmVyc2hpcCBmb3IgL2Rldi9wdHkvcyoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTYyCgpXb3JrIHNwb25zb3JlZCBieSBTR0kKCi0gU2V0IGlub2RlLT5pX3NpemUgdG8gY29ycmVjdCBzaXplIGZvciBzeW1saW5rcwogIFRoYW5rcyB0byBKZXJlbXkgRml0emhhcmRpbmdlIDxqZXJlbXlAZ29vcC5vcmc+CgotIE9ubHkgZ2l2ZSBsb29rdXAoKSBtZXRob2QgdG8gZGlyZWN0b3JpZXMgdG8gY29tcGx5IHdpdGggbmV3IFZGUwogIGFzc3VtcHRpb25zCgotIFJlbW92ZSB1bm5lY2Vzc2FyeSB0ZXN0cyBpbiBzeW1saW5rIG1ldGhvZHMKCi0gRG9uJ3Qga2lsbCBleGlzdGluZyBibG9jayBvcHMgaW4gPGRldmZzX3JlYWRfaW5vZGU+CgotIFJlc3RvcmUgYXV0by1vd25lcnNoaXAgZm9yIC9kZXYvcHR5L20qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE2MwoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIERvbid0IGNyZWF0ZSBtaXNzaW5nIGRpcmVjdG9yaWVzIGluIDxkZXZmc19maW5kX2hhbmRsZT4KCi0gUmVtb3ZlZCBEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2RldmZzL21rLWRldmxpbmtzCgotIFVwZGF0ZWQgRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9kZXZmcy9SRUFETUUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTY0CgpXb3JrIHNwb25zb3JlZCBieSBTR0kKCi0gRml4ZWQgQ09ORklHX0RFVkZTIGJyZWFrYWdlIGluIGRyaXZlcnMvY2hhci9zZXJpYWwuYyBpbnRyb2R1Y2VkIGluCiAgbGludXgtMi4zLjk5LXByZTYtNwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxNjUKCldvcmsgc3BvbnNvcmVkIGJ5IFNHSQoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuMy45OS1wcmU2Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE2NgoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIEFkZGVkIENPTkZJR19ERVZGU19NT1VOVAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxNjcKCldvcmsgc3BvbnNvcmVkIGJ5IFNHSQoKLSBVcGRhdGVkIERvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZGV2ZnMvUkVBRE1FCgotIFVwZGF0ZWQgc2FtcGxlIG1vZHVsZXMuY29uZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxNjgKCldvcmsgc3BvbnNvcmVkIGJ5IFNHSQoKLSBEaXNhYmxlZCBtdWx0aS1tb3VudCBjYXBhYmlsaXR5ICh1c2UgVkZTIGJpbmRpbmdzIGluc3RlYWQpCgotIFVwZGF0ZWQgUkVBRE1FIGZyb20gbWFzdGVyIEhUTUwgZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxNjkKCldvcmsgc3BvbnNvcmVkIGJ5IFNHSQoKLSBSZW1vdmVkIG11bHRpLW1vdW50IGNvZGUKCi0gUmVtb3ZlZCBjb21wYXRpYmlsaXR5IG1hY3JvczogVkZTIGhhcyBjaGFuZ2VkIHRvbyBtdWNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE3MAoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIFVwZGF0ZWQgUkVBRE1FIGZyb20gbWFzdGVyIEhUTUwgZmlsZQoKLSBNZXJnZWQgZGV2ZnMgaW5vZGUgaW50byBkZXZmcyBlbnRyeQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxNzEKCldvcmsgc3BvbnNvcmVkIGJ5IFNHSQoKLSBVcGRhdGVkIHNhbXBsZSBtb2R1bGVzLmNvbmYKCi0gUmVtb3ZlZCBkZWFkIGNvZGUgaW4gPGRldmZzX3JlZ2lzdGVyPiB3aGljaCB1c2VkIHRvIGNhbGwKICA8ZnJlZV9kZW50cmllcz4KCi0gUG9ydGVkIHRvIGtlcm5lbCAyLjQuMC10ZXN0Mi1wcmUzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE3MgoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIENoYW5nZWQgaW50ZXJmYWNlIHRvIDxkZXZmc19yZWdpc3Rlcj4KCi0gQ2hhbmdlZCBpbnRlcmZhY2UgdG8gPGRldmZzX3JlZ2lzdGVyX3Nlcmllcz4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTczCgpXb3JrIHNwb25zb3JlZCBieSBTR0kKCi0gU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gPGRldmZzX21rX3N5bWxpbms+CgotIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIDxkZXZmc19ta19kaXI+CgotIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIDxkZXZmc19maW5kX2hhbmRsZT4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTc0CgpXb3JrIHNwb25zb3JlZCBieSBTR0kKCi0gVXBkYXRlZCBSRUFETUUgZnJvbSBtYXN0ZXIgSFRNTCBmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE3NQoKV29yayBzcG9uc29yZWQgYnkgU0dJCgotIERvY0Jvb2sgdXBkYXRlIGZvciBmcy9kZXZmcy9iYXNlLmMKICBUaGFua3MgdG8gVGltIFdhdWdoIDx0d2F1Z2hAcmVkaGF0LmNvbT4KCi0gUmVtb3ZlZCBzdGFsZSBmcy90dW5uZWwuYyAod2FzIG5ldmVyIHVzZWQgb3IgY29tcGxldGVkKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxNzYKCldvcmsgc3BvbnNvcmVkIGJ5IFNHSQoKLSBVcGRhdGVkIFRvRG8gbGlzdAoKLSBSZW1vdmVkIHNhbXBsZSBtb2R1bGVzLmNvbmY6IG5vdyBkaXN0cmlidXRlZCB3aXRoIGRldmZzZAoKLSBVcGRhdGVkIFJFQURNRSBmcm9tIG1hc3RlciBIVE1MIGZpbGUKCi0gUG9ydGVkIHRvIGtlcm5lbCAyLjQuMC10ZXN0My1wcmU0ICh3aGljaCBoYWQgZGV2ZnMtcGF0Y2gtdjE3NCkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTc3CgotIFVwZGF0ZWQgUkVBRE1FIGZyb20gbWFzdGVyIEhUTUwgZmlsZQoKLSBEb2N1bWVudGF0aW9uIGNsZWFudXBzCgotIEVuc3VyZSA8ZGV2ZnNfZ2VuZXJhdGVfcGF0aD4gdGVybWluYXRlcyBzdHJpbmcgZm9yIHJvb3QgZW50cnkKICBUaGFua3MgdG8gVGltIEphbnNlbiA8dGltQHRqYW5zZW4uZGU+CgotIEV4cG9ydGVkIDxkZXZmc19nZXRfbmFtZT4gdG8gbW9kdWxlcwoKLSBNYWtlIDxkZXZmc19ta19zeW1saW5rPiBzZW5kIGV2ZW50cyB0byBkZXZmc2QKCi0gQ2xlYW5lZCB1cCBvcHRpb24gcHJvY2Vzc2luZyBpbiA8ZGV2ZnNfc2V0dXA+CgotIEZpeGVkIGJ1Z3MgaW4gaGFuZGxpbmcgc3ltbGlua3M6IGNvdWxkIGxlYWsgb3IgY2F1c2UgT29wcwoKLSBDbGVhbmVkIHVwIGRpcmVjdG9yeSBoYW5kbGluZyBieSBzZXBhcmF0aW5nIGZvcHMKICBUaGFua3MgdG8gQWxleGFuZGVyIFZpcm8gPHZpcm9AcGFyY2VsZmFyY2UubGludXgudGhlcGxhbmV0LmNvLnVrPgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxNzgKCi0gRml4ZWQgaGFuZGxpbmcgb2YgaW52ZXJ0ZWQgb3B0aW9ucyBpbiA8ZGV2ZnNfc2V0dXA+Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE3OQoKLSBBZGp1c3RlZCA8dHJ5X21vZGxvYWQ+IHRvIGFjY291bnQgZm9yIDxkZXZmc19nZW5lcmF0ZV9wYXRoPiBmaXgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTgwCgotIEZpeGVkICFDT05GSUdfREVWRlNfRlMgc3R1YiBkZWNsYXJhdGlvbiBvZiA8ZGV2ZnNfZ2V0X2luZm8+Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE4MQoKLSBBbnN3ZXJlZCBxdWVzdGlvbiBwb3NlZCBieSBBbCBWaXJvIGFuZCByZW1vdmVkIGhpcyBjb21tZW50cyBmcm9tIDxkZXZmc19vcGVuPgoKLSBNb3ZlZCBzZXR0aW5nIG9mIHJlZ2lzdGVyZWQgZmxhZyBhZnRlciBvdGhlciBmaWVsZHMgYXJlIGNoYW5nZWQKCi0gRml4ZWQgcmFjZSBiZXR3ZWVuIDxkZXZmc2RfY2xvc2U+IGFuZCA8ZGV2ZnNkX25vdGlmeV9vbmU+CgotIEdsb2JhbCBWRlMgY2hhbmdlcyBhZGRlZCBib2d1cyBCS0wgdG8gZGV2ZnNkX2Nsb3NlKCk6IHJlbW92ZWQKCi0gV2lkZW5lZCBsb2NraW5nIGluIDxkZXZmc19yZWFkbGluaz4gYW5kIDxkZXZmc19mb2xsb3dfbGluaz4KCi0gUmVwbGFjZWQgPGRldmZzZF9yZWFkPiBzdGFjayB1c2FnZSB3aXRoIDxkZXZmc2RfaW9jdGw+IGttYWxsb2MKCi0gU2ltcGxpZmllZCBsb2NraW5nIGluIDxkZXZmc2RfaW9jdGw+IGFuZCBmaXhlZCBtZW1vcnkgbGVhawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxODIKCi0gQ3JlYXRlZCA8ZGV2ZnNfKmFsbG9jX21ham9yPiBhbmQgPGRldmZzXyphbGxvY19kZXZudW0+CgotIFJlbW92ZWQgYnJva2VuIGRldm51bSBhbGxvY2F0aW9uIGFuZCB1c2UgPGRldmZzX2FsbG9jX2Rldm51bT4KCi0gRml4ZWQgb2xkIGRldm51bSBsZWFrIGJ5IGNhbGxpbmcgbmV3IDxkZXZmc19kZWFsbG9jX2Rldm51bT4KCi0gQ3JlYXRlZCA8ZGV2ZnNfKmFsbG9jX3VuaXF1ZV9udW1iZXI+CgotIEZpeGVkIG51bWJlciBsZWFrIGZvciAvZGV2L2Nkcm9tcy9jZHJvbSVkCgotIEZpeGVkIG51bWJlciBsZWFrIGZvciAvZGV2L2Rpc2NzL2Rpc2MlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxODMKCi0gRml4ZWQgYnVnIGluIDxkZXZmc19zZXR1cD4gd2hpY2ggY291bGQgaGFuZyBib290IHByb2Nlc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTg0CgotIERvY3VtZW50YXRpb24gdHlwbyBmaXggZm9yIGZzL2RldmZzL3V0aWwuYwoKLSBGaXhlZCBkcml2ZXJzL2NoYXIvc3RhbGxpb24uYyBmb3IgZGV2ZnMKCi0gQWRkZWQgREVWRlNEX05PVElGWV9ERUxFVEUgZXZlbnQKCi0gVXBkYXRlZCBSRUFETUUgZnJvbSBtYXN0ZXIgSFRNTCBmaWxlCgotIFJlbW92ZWQgI2luY2x1ZGUgPGFzbS9zZWdtZW50Lmg+IGZyb20gZnMvZGV2ZnMvYmFzZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE4NQoKLSBNYWRlIDxibG9ja19zZW1hcGhvcmU+IGFuZCA8Y2hhcl9zZW1hcGhvcmU+IGluIGZzL2RldmZzL3V0aWwuYwogIHByaXZhdGUKCi0gRml4ZWQgaW5vZGUgdGFibGUgcmFjZXMgYnkgcmVtb3ZpbmcgaXQgYW5kIHVzaW5nIGlub2RlLT51LmdlbmVyaWNfaXAKICBpbnN0ZWFkCgotIE1vdmVkIDxkZXZmc19yZWFkX2lub2RlPiBpbnRvIDxnZXRfdmZzX2lub2RlPgoKLSBNb3ZlZCA8ZGV2ZnNfd3JpdGVfaW5vZGU+IGludG8gPGRldmZzX25vdGlmeV9jaGFuZ2U+Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE4NgoKLSBGaXhlZCByYWNlIGluIDxkZXZmc19kb19zeW1saW5rPiBmb3IgdW5pLXByb2Nlc3NvcgoKLSBVcGRhdGVkIFJFQURNRSBmcm9tIG1hc3RlciBIVE1MIGZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTg3CgotIEZpeGVkIGRyaXZlcnMvY2hhci9zdGFsbGlvbi5jIGZvciBkZXZmcwoKLSBGaXhlZCBkcml2ZXJzL2NoYXIvcm9ja2V0LmMgZm9yIGRldmZzCgotIEZpeGVkIGJ1ZyBpbiA8ZGV2ZnNfYWxsb2NfdW5pcXVlX251bWJlcj46IGxpbWl0ZWQgdG8gMTI4IG51bWJlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTg4CgotIFVwZGF0ZWQgbWFqb3IgbWFza3MgaW4gZnMvZGV2ZnMvdXRpbC5jIHVwIHRvIExpbnVzJyAibm8gbmV3IG1ham9ycyIKICBwcm9jbGFtYXRpb24uIEJsb2NrOiB3ZXJlIDEyNiBub3cgMTIyIGZyZWUsIGNoYXI6IHdlcmUgMjYgbm93IDE5IGZyZWUKCi0gVXBkYXRlZCBSRUFETUUgZnJvbSBtYXN0ZXIgSFRNTCBmaWxlCgotIFJlbW92ZWQgcmVtbmFudCBvZiBtdWx0aS1tb3VudCBzdXBwb3J0IGluIDxkZXZmc19ta25vZD4KCi0gUmVtb3ZlZCB1bnVzZWQgREVWRlNfRkxfU0hPV19VTlJFRyBmbGFnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE4OQoKLSBSZW1vdmVkIG5saW5rIGZpZWxkIGZyb20gc3RydWN0IGRldmZzX2lub2RlCgotIFJlbW92ZWQgYXV0by1vd25lcnNoaXAgZm9yIC9kZXYvcHR5LyogKEJTRCBwdHlzKSBhbmQgdXNlZAogIERFVkZTX0ZMX0NVUlJFTlRfT1dORVJ8REVWRlNfRkxfTk9fUEVSU0lTVEVOQ0UgZm9yIC9kZXYvcHR5L3MqIChqdXN0CiAgbGlrZSBVbml4OTggcHR5IHNsYXZlcykgYW5kIG1hZGUgL2Rldi9wdHkvbSogcnctcnctcnctIGFjY2Vzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxOTAKCi0gVXBkYXRlZCBSRUFETUUgZnJvbSBtYXN0ZXIgSFRNTCBmaWxlCgotIFJlcGxhY2VkIEJLTCB3aXRoIGdsb2JhbCByd3NlbSB0byBwcm90ZWN0IHN5bWxpbmsgZGF0YSAocXVpY2sgYW5kCiAgZGlydHkgaGFjaykKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTkxCgotIFJlcGxhY2VkIGdsb2JhbCByd3NlbSBmb3Igc3ltbGluayB3aXRoIHBlci1saW5rIHJlZmNvdW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE5MgoKLSBSZW1vdmVkIHVubmVjZXNzYXJ5ICNpZmRlZiBDT05GSUdfREVWRlNfRlMgZnJvbSBhcmNoL2kzODYva2VybmVsL210cnIuYwoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuNC4xMC1wcmUxMQoKLSBTZXQgaW5vZGUtPmlfbWFwcGluZy0+YV9vcHMgZm9yIGJsb2NrIG5vZGVzIGluIDxnZXRfdmZzX2lub2RlPgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxOTMKCi0gV2VudCBiYWNrIHRvIGdsb2JhbCByd3NlbSBmb3Igc3ltbGlua3MgKHJlZmNvdW50IHNjaGVtZSBubyBnb29kKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxOTQKCi0gRml4ZWQgb3ZlcnJ1biBpbiA8ZGV2ZnNfbGluaz4gYnkgcmVtb3ZpbmcgZnVuY3Rpb24gKG5vdCBuZWVkZWQpCgotIFVwZGF0ZWQgUkVBRE1FIGZyb20gbWFzdGVyIEhUTUwgZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxOTUKCi0gRml4ZWQgYnVmZmVyIHVuZGVycnVuIGluIDx0cnlfbW9kbG9hZD4KCi0gTW92ZWQgZG93bl9yZWFkKCkgZnJvbSA8c2VhcmNoX2Zvcl9lbnRyeV9pbl9kaXI+IHRvIDxmaW5kX2VudHJ5Pgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYxOTYKCi0gRml4ZWQgcmFjZSBpbiA8ZGV2ZnNkX2lvY3RsPiB3aGVuIHNldHRpbmcgZXZlbnQgbWFzawogIFRoYW5rcyB0byBLYXJpIEh1cnR0YSA8aHVydHRhQGxlaWphLm1oLmZtaS5maT4KCi0gQXZvaWQgZGVhZGxvY2sgaW4gPGRldmZzX2ZvbGxvd19saW5rPiBieSB1c2luZyB0ZW1wb3JhcnkgYnVmZmVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjE5NwoKLSBGaXJzdCByZWxlYXNlIG9mIG5ldyBsb2NraW5nIGNvZGUgZm9yIGRldmZzIGNvcmUgKHYxLjApCgotIEZpeGVkIGJ1ZyBpbiBkcml2ZXJzL2Nkcm9tL2Nkcm9tLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTk4CgotIERpc2NhcmQgdGVtcG9yYXJ5IGJ1ZmZlciwgbm93IHVzZSAiJXMiIGZvciBkZW50cnkgbmFtZXMKCi0gRG9uJ3QgZ2VuZXJhdGUgcGF0aCBpbiA8dHJ5X21vZGxvYWQ+OiB1c2UgZmFrZSBlbnRyeSBpbnN0ZWFkCgotIFVzZSAiZXhpc3RpbmciIGRpcmVjdG9yeSBpbiA8X2RldmZzX21ha2VfcGFyZW50X2Zvcl9sZWFmPgoKLSBVc2Ugc2xhYiBjYWNoZSByYXRoZXIgdGhhbiBmaXhlZCBidWZmZXIgZm9yIGRldmZzZCBldmVudHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MTk5CgotIFJlbW92ZWQgb2Jzb2xldGUgdXNhZ2Ugb2YgREVWRlNfRkxfTk9fUEVSU0lTVEVOQ0UKCi0gU2VuZCBERVZGU0RfTk9USUZZX1JFR0lTVEVSRUQgZXZlbnRzIGluIDxkZXZmc19ta19kaXI+CgotIEZpeGVkIGxvY2tpbmcgYnVnIGluIDxkZXZmc19kX3JldmFsaWRhdGVfd2FpdD4gZHVlIHRvIHR5cG8KCi0gRG8gbm90IHNlbmQgQ1JFQVRFLCBDSEFOR0UsIEFTWU5DX09QRU4gb3IgREVMRVRFIGV2ZW50cyBmcm9tIGRldmZzZAogIG9yIGNoaWxkcmVuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjIwMAoKLSBQb3J0ZWQgdG8ga2VybmVsIDIuNS4xLXByZTIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MjAxCgotIEZpeGVkIGJ1ZyBpbiA8ZGV2ZnNkX3JlYWQ+OiB3YXMgZGVyZWZlcmVuY2luZyBmcmVlZCBwb2ludGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjIwMgoKLSBGaXhlZCBidWcgaW4gPGRldmZzZF9jbG9zZT46IHdhcyBkZXJlZmVyZW5jaW5nIGZyZWVkIHBvaW50ZXIKCi0gQWRkZWQgcHJvY2VzcyBncm91cCBjaGVjayBmb3IgZGV2ZnNkIHByaXZpbGVnZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MjAzCgotIFVzZSBTTEFCX0FUT01JQyBpbiA8ZGV2ZnNkX25vdGlmeV9kZT4gZnJvbSA8ZGV2ZnNfZF9kZWxldGU+Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjIwNAoKLSBSZW1vdmVkIGxvbmcgb2Jzb2xldGUgcmMuZGV2ZnMKCi0gUmV0dXJuIG9sZCBlbnRyeSBpbiA8ZGV2ZnNfbWtfZGlyPiBmb3IgMi40Lngga2VybmVscwoKLSBVcGRhdGVkIFJFQURNRSBmcm9tIG1hc3RlciBIVE1MIGZpbGUKCi0gSW5jcmVtZW50IHJlZmNvdW50IG9uIG1vZHVsZSBpbiA8Y2hlY2tfZGlzY19jaGFuZ2VkPgoKLSBDcmVhdGVkIDxkZXZmc19nZXRfaGFuZGxlPiBhbmQgZXhwb3J0ZWQgPGRldmZzX3B1dD4KCi0gSW5jcmVtZW50IHJlZmNvdW50IG9uIG1vZHVsZSBpbiA8ZGV2ZnNfZ2V0X29wcz4KCi0gQ3JlYXRlZCA8ZGV2ZnNfcHV0X29wcz4gYW5kIHVzZWQgd2hlcmUgbmVlZGVkIHRvIGZpeCByYWNlcwoKLSBBZGRlZCBjbGFyaWZ5aW5nIGNvbW1lbnRzIGluIHJlc3BvbnNlIHRvIHByZWxpbWluYXJ5IEVNQyBjb2RlIHJldmlldwoKLSBBZGRlZCBwb2lzb25pbmcgdG8gPGRldmZzX3B1dD4KCi0gSW1wcm92ZWQgZGVidWdnaW5nIG1lc3NhZ2VzCgotIEZpeGVkIHVucmVnaXN0ZXIgYnVncyBpbiBkcml2ZXJzL21kL2x2bS1mcy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjIwNQoKLSBDb3JyZWN0ZWQgKG1hZGUgdXNlZnVsKSBkZWJ1Z2dpbmcgbWVzc2FnZSBpbiA8dW5yZWdpc3Rlcj4KCi0gTW92ZWQgPGttZW1fY2FjaGVfY3JlYXRlPiBpbiA8bW91bnRfZGV2ZnNfZnM+IHRvIDxpbml0X2RldmZzX2ZzPgoKLSBGaXhlZCBkcml2ZXJzL21kL2x2bS1mcy5jIHRvIGNyZWF0ZSAibHZtIiBlbnRyeQoKLSBBZGRlZCBtYWdpYyBudW1iZXIgdG8gZ3VhcmQgYWdhaW5zdCBzY3JpYmJsaW5nIGRyaXZlcnMKCi0gT25seSByZXR1cm4gb2xkIGVudHJ5IGluIDxkZXZmc19ta19kaXI+IGlmIGEgZGlyZWN0b3J5CgotIERlZmluZWQgbWFjcm9zIGZvciBlcnJvciBhbmQgZGVidWcgbWVzc2FnZXMKCi0gVXBkYXRlZCBSRUFETUUgZnJvbSBtYXN0ZXIgSFRNTCBmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjIwNgoKLSBBZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBDb21wYXEgY3BxYXJyYXkgY29udHJvbGxlcnMKCi0gRml4ZWQgKHJhcmUsIG9sZCkgcmFjZSBpbiA8ZGV2ZnNfbG9va3VwPgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYyMDcKCi0gRml4ZWQgZGVhZGxvY2sgYnVnIGluIDxkZXZmc19kX3JldmFsaWRhdGVfd2FpdD4KCi0gVGFnIFZGUyBkZWxldGFibGUgaW4gPGRldmZzX21rX3N5bWxpbms+IGlmIGhhbmRsZSBpZ25vcmVkCgotIFVwZGF0ZWQgUkVBRE1FIGZyb20gbWFzdGVyIEhUTUwgZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYyMDgKCi0gQWRkZWQgS0VSTl8qIHRvIHJlbWFpbmluZyBtZXNzYWdlcwoKLSBDbGVhbmVkIHVwIGRlY2xhcmF0aW9uIG9mIDxzdGF0X3JlYWQ+CgotIFVwZGF0ZWQgUkVBRE1FIGZyb20gbWFzdGVyIEhUTUwgZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYyMDkKCi0gVXBkYXRlZCBSRUFETUUgZnJvbSBtYXN0ZXIgSFRNTCBmaWxlCgotIFJlbW92ZWQgc2lsZW50bHkgaW50cm9kdWNlZCBjYWxscyB0byBsb2NrX2tlcm5lbCgpIGFuZAogIHVubG9ja19rZXJuZWwoKSBkdWUgdG8gcmVjZW50IFZGUyBsb2NraW5nIGNoYW5nZXMuIEJLTCBpc24ndAogIHJlcXVpcmVkIGluIGRldmZzIAoKLSBDaGFuZ2VkIDxkZXZmc19ybWRpcj4gdG8gYWxsb3cgbGF0ZXIgYWRkaXRpb25zIGlmIG5vdCB5ZXQgZW1wdHkKCi0gQWRkZWQgY2FsbHMgdG8gPGRldmZzX3JlZ2lzdGVyX3BhcnRpdGlvbnM+IGluIGRyaXZlcnMvYmxvY2svYmxrcGMuYwogIDxhZGRfcGFydGl0aW9uPiBhbmQgPGRlbF9wYXJ0aXRpb24+CgotIEZpeGVkIGJ1ZyBpbiA8ZGV2ZnNfYWxsb2NfdW5pcXVlX251bWJlcj46IHdhcyBjbGVhcmluZyBiZXlvbmQKICBiaXRmaWVsZAoKLSBGaXhlZCBiaXRmaWVsZCBkYXRhIHR5cGUgZm9yIDxkZXZmc18qYWxsb2NfZGV2bnVtPgoKLSBNYWRlIG1ham9yIGJpdGZpZWxkIHR5cGUgYW5kIGluaXRpYWxpc2VyIDY0IGJpdCBzYWZlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjIxMAoKLSBVcGRhdGVkIGZzL2RldmZzL3V0aWwuYyB0byBmaXggc2hpZnQgd2FybmluZyBvbiA2NCBiaXQgbWFjaGluZXMKICBUaGFua3MgdG8gQW50b24gQmxhbmNoYXJkIDxhbnRvbkBzYW1iYS5vcmc+CgotIFVwZGF0ZWQgUkVBRE1FIGZyb20gbWFzdGVyIEhUTUwgZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNoYW5nZXMgZm9yIHBhdGNoIHYyMTEKCi0gRG8gbm90IHB1dCBtaXNjZWxsYW5lb3VzIGNoYXJhY3RlciBkZXZpY2VzIGluIC9kZXYvbWlzYyBpZiB0aGV5CiAgc3BlY2lmeSB0aGVpciBvd24gZGlyZWN0b3J5IChpLmUuIGNvbnRhaW4gYSAnLycgY2hhcmFjdGVyKQoKLSBDb3BpZWQgbWFjcm8gZm9yIGVycm9yIG1lc3NhZ2VzIGZyb20gZnMvZGV2ZnMvYmFzZS5jIHRvCiAgZnMvZGV2ZnMvdXRpbC5jIGFuZCBtYWRlIHVzZSBvZiB0aGlzIG1hY3JvCgotIFJlbW92ZWQgMi40LnggY29tcGF0aWJpbGl0eSBjb2RlIGZyb20gZnMvZGV2ZnMvYmFzZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjIxMgoKLSBBZGRlZCBCS0wgdG8gPGRldmZzX29wZW4+IGJlY2F1c2UgZHJpdmVycyBzdGlsbCBuZWVkIGl0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjIxMwoKLSBQcm90ZWN0ZWQgPHNjYW5fZGlyX2Zvcl9yZW1vdmFibGU+IGFuZCA8Z2V0X3JlbW92YWJsZV9wYXJ0aXRpb24+CiAgZnJvbSBjaGFuZ2luZyBkaXJlY3RvcnkgY29udGVudHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MjE0CgotIFN3aXRjaGVkIHRvIElTTyBDIHN0cnVjdHVyZSBmaWVsZCBpbml0aWFsaXNlcnMKCi0gU3dpdGNoIHRvIHNldF9jdXJyZW50X3N0YXRlKCkgYW5kIG1vdmUgYmVmb3JlIGFkZF93YWl0X3F1ZXVlKCkKCi0gVXBkYXRlZCBSRUFETUUgZnJvbSBtYXN0ZXIgSFRNTCBmaWxlCgotIEZpeGVkIGRldmZzIGVudHJ5IGxlYWsgaW4gPGRldmZzX3JlYWRkaXI+IHdoZW4gKnJlYWRkaXIgZmFpbHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDaGFuZ2VzIGZvciBwYXRjaCB2MjE1CgotIENyZWF0ZWQgPGRldmZzX2ZpbmRfYW5kX3VucmVnaXN0ZXI+CgotIFN3aXRjaGVkIG1hbnkgZnVuY3Rpb25zIGZyb20gPGRldmZzX2ZpbmRfaGFuZGxlPiB0bwogIDxkZXZmc19maW5kX2FuZF91bnJlZ2lzdGVyPgoKLSBTd2l0Y2hlZCBtYW55IGZ1bmN0aW9ucyBmcm9tIDxkZXZmc19maW5kX2hhbmRsZT4gdG8gPGRldmZzX2dldF9oYW5kbGU+Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjIxNgoKLSBTd2l0Y2hlZCBhcmNoL2lhNjQvc24vaW8vaGNsLmMgZnJvbSA8ZGV2ZnNfZmluZF9oYW5kbGU+IHRvCiAgPGRldmZzX2dldF9oYW5kbGU+CgotIFJlbW92ZWQgZGVwcmVjYXRlZCA8ZGV2ZnNfZmluZF9oYW5kbGU+Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjIxNwoKLSBFeHBvcnRlZCA8ZGV2ZnNfZmluZF9hbmRfdW5yZWdpc3Rlcj4gYW5kIDxkZXZmc19vbmx5PiB0byBtb2R1bGVzCgotIFVwZGF0ZWQgUkVBRE1FIGZyb20gbWFzdGVyIEhUTUwgZmlsZQoKLSBGaXhlZCBtb2R1bGUgdW5sb2FkIHJhY2UgaW4gPGRldmZzX29wZW4+Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2hhbmdlcyBmb3IgcGF0Y2ggdjIxOAoKLSBSZW1vdmVkIERFVkZTX0ZMX0FVVE9fT1dORVIgZmxhZwoKLSBTd2l0Y2hlZCBsaW5nZXJpbmcgc3RydWN0dXJlIGZpZWxkIGluaXRpYWxpc2VyIHRvIElTTyBDCgotIEFkZGVkIGxvY2tpbmcgd2hlbiBzZXR0aW5nL2NsZWFyaW5nIGZsYWdzCgotIERvY3VtZW50YXRpb24gZml4IGluIGZzL2RldmZzL3V0aWwuYwo=