LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQWdlcmUgU3lzdGVtcyBJbmMuCiAqIFdpcmVsZXNzIGRldmljZSBkcml2ZXIgZm9yIExpbnV4ICh3bGFnczQ5KS4KICoKICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMgQWdlcmUgU3lzdGVtcyBJbmMuCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAqICAgaHR0cDovL3d3dy5hZ2VyZS5jb20KICoKICogSW5pdGlhbGx5IGRldmVsb3BlZCBieSBUcmlwbGVQb2ludCwgSW5jLgogKiAgIGh0dHA6Ly93d3cudHJpcGxlcG9pbnQuY29tCiAqCiAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqCiAqICAgSGVhZGVyIGRlc2NyaWJpbmcgZGV2aWNlIHNwZWNpZmljIHJvdXRpbmVzIGFuZCBkcml2ZXIgaW5pdC91bi1pbml0LgogKgogKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKgogKiBTT0ZUV0FSRSBMSUNFTlNFCiAqCiAqIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHRlcm1zIGFuZCBjb25kaXRpb25zLAogKiB3aGljaCB5b3Ugc2hvdWxkIHJlYWQgY2FyZWZ1bGx5IGJlZm9yZSB1c2luZyB0aGUgc29mdHdhcmUuICBVc2luZyB0aGlzCiAqIHNvZnR3YXJlIGluZGljYXRlcyB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBJZiB5b3UgZG8KICogbm90IGFncmVlIHdpdGggdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMsIGRvIG5vdCB1c2UgdGhlIHNvZnR3YXJlLgogKgogKiBDb3B5cmlnaHQgqSAyMDAzIEFnZXJlIFN5c3RlbXMgSW5jLgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBvciBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogKiBtb2RpZmljYXRpb25zLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CiAqCiAqIC4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCiAqICAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGFzIGNvbW1lbnRzIGluIHRoZSBjb2RlIGFzCiAqICAgIHdlbGwgYXMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQogKiAgICBkaXN0cmlidXRpb24uCiAqCiAqIC4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAogKiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBEaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCiAqICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogKgogKiAuIE5laXRoZXIgdGhlIG5hbWUgb2YgQWdlcmUgU3lzdGVtcyBJbmMuIG5vciB0aGUgbmFtZXMgb2YgdGhlIGNvbnRyaWJ1dG9ycwogKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAqCiAqIERpc2NsYWltZXIKICoKICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCCTQVMgSVOUIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCiAqIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBJTkZSSU5HRU1FTlQgQU5EIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIEFOWQogKiBVU0UsIE1PRElGSUNBVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhJUyBTT0ZUV0FSRSBJUyBTT0xFTFkgQVQgVEhFIFVTRVJTIE9XTgogKiBSSVNLLiBJTiBOTyBFVkVOVCBTSEFMTCBBR0VSRSBTWVNURU1TIElOQy4gT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgQ09OVFJBQ1QsIFNUUklDVAogKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAogKiBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAogKiBEQU1BR0UuCiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgojaWZuZGVmIF9fV0xfTUFJTl9IX18KI2RlZmluZSBfX1dMX01BSU5fSF9fCgoKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgZnVuY3Rpb24gcHJvdG90eXBlcwogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwppbnQgd2xfaW5zZXJ0KCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ICk7Cgp2b2lkIHdsX3NldF93ZXBfa2V5cyggc3RydWN0IHdsX3ByaXZhdGUgKmxwICk7CgppbnQgd2xfcHV0X2x0dl9pbml0KCBzdHJ1Y3Qgd2xfcHJpdmF0ZSAqbHAgKTsKCmludCB3bF9wdXRfbHR2KCBzdHJ1Y3Qgd2xfcHJpdmF0ZSAqbHAgKTsKCnBfdTE2IHdsX2dldF9pcnFfbWFzayggdm9pZCApOwoKcF9zOCAqIHdsX2dldF9pcnFfbGlzdCggdm9pZCApOwoKaW50IHdsX3Jlc2V0KCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ICk7CgppbnQgd2xfZ28oIHN0cnVjdCB3bF9wcml2YXRlICpscCApOwoKaW50IHdsX2FwcGx5KCBzdHJ1Y3Qgd2xfcHJpdmF0ZSAqbHAgKTsKCmlycXJldHVybl90IHdsX2lzciggaW50IGlycSwgdm9pZCAqZGV2X2lkLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyApOwoKdm9pZCB3bF9yZW1vdmUoIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgKTsKCnZvaWQgd2xfc3VzcGVuZCggc3RydWN0IG5ldF9kZXZpY2UgKmRldiApOwoKdm9pZCB3bF9yZXN1bWUoIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgKTsKCnZvaWQgd2xfcmVsZWFzZSggc3RydWN0IG5ldF9kZXZpY2UgKmRldiApOwoKaW50IHdsX2VuYWJsZSggc3RydWN0IHdsX3ByaXZhdGUgKmxwICk7CgppbnQgd2xfY29ubmVjdCggc3RydWN0IHdsX3ByaXZhdGUgKmxwICk7CgppbnQgd2xfZGlzYWJsZSggc3RydWN0IHdsX3ByaXZhdGUgKmxwICk7CgppbnQgd2xfZGlzY29ubmVjdCggc3RydWN0IHdsX3ByaXZhdGUgKmxwICk7Cgp2b2lkIHdsX2VuYWJsZV93ZHNfcG9ydHMoIHN0cnVjdCB3bF9wcml2YXRlICogbHAgKTsKCnZvaWQgd2xfZGlzYWJsZV93ZHNfcG9ydHMoIHN0cnVjdCB3bF9wcml2YXRlICogbHAgKTsKCiNpZm5kZWYgVVNFX01CT1hfU1lOQwoKaW50IHdsX21ieCggc3RydWN0IHdsX3ByaXZhdGUgKmxwICk7CnZvaWQgd2xfZW5kaWFuX3RyYW5zbGF0ZV9tYWlsYm94KCBsdHZfdCAqbHR2ICk7CnZvaWQgd2xfcHJvY2Vzc19tYWlsYm94KCBzdHJ1Y3Qgd2xfcHJpdmF0ZSAqbHAgKTsKCiNlbmRpZiAgLyogVVNFX01CT1hfU1lOQyAqLwoKCiNpZmRlZiBVU0VfV0RTCgp2b2lkIHdsX3dkc19uZXRkZXZfcmVnaXN0ZXIoIHN0cnVjdCB3bF9wcml2YXRlICpscCApOwp2b2lkIHdsX3dkc19uZXRkZXZfZGVyZWdpc3Rlciggc3RydWN0IHdsX3ByaXZhdGUgKmxwICk7CgojZW5kaWYgIC8qIFVTRV9XRFMgKi8KCgojaWZkZWYgVVNFX1dEUwoKI2RlZmluZSBXTF9XRFNfTkVUREVWX1JFR0lTVEVSKCBBUkcgKSAgIHdsX3dkc19uZXRkZXZfcmVnaXN0ZXIoIEFSRyApCiNkZWZpbmUgV0xfV0RTX05FVERFVl9ERVJFR0lTVEVSKCBBUkcgKSB3bF93ZHNfbmV0ZGV2X2RlcmVnaXN0ZXIoIEFSRyApCgojZWxzZQoKI2RlZmluZSBXTF9XRFNfTkVUREVWX1JFR0lTVEVSKCBBUkcgKQojZGVmaW5lIFdMX1dEU19ORVRERVZfREVSRUdJU1RFUiggQVJHICkKCiNlbmRpZiAgLyogVVNFX1dEUyAqLwojZW5kaWYgIC8vIF9fV0xfTUFJTl9IX18K