LyoKICBUaGlzIHNvZnR3YXJlIGlzIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYSBjaG9pY2Ugb2Ygb25lIG9mIHR3bwogIGxpY2Vuc2VzLiAgWW91IG1heSBjaG9vc2UgdG8gYmUgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIFZlcnNpb24gMiwgYXZhaWxhYmxlIGF0CiAgPGh0dHA6Ly93d3cuZnNmLm9yZy9jb3B5bGVmdC9ncGwuaHRtbD4sIG9yIHRoZSBPcGVuSUIub3JnIEJTRAogIGxpY2Vuc2UsIGF2YWlsYWJsZSBpbiB0aGUgTElDRU5TRS5UWFQgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcwogIHNvZnR3YXJlLiAgVGhlc2UgZGV0YWlscyBhcmUgYWxzbyBhdmFpbGFibGUgYXQKICA8aHR0cDovL29wZW5pYi5vcmcvbGljZW5zZS5odG1sPi4KCiAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCiAgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCiAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKICBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTCiAgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOCiAgQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4KICBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCiAgU09GVFdBUkUuCgogIENvcHlyaWdodCAoYykgMjAwNCBNZWxsYW5veCBUZWNobm9sb2dpZXMgTHRkLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKi8KCkZJTEVfTElDRU5DRSAoIEdQTDJfT05MWSApOwoKLyoqKgogKioqIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGF0ICJNb24gQXByIDE2IDIzOjIyOjAyIDIwMDciCiAqKiogYnk6CiAqKiogICAgJSBjc3BfYmYgLWNvcHlyaWdodD0vbXN3Zy9taXNjL2xpY2Vuc2UtaGVhZGVyLnR4dCAtcHJlZml4IGhlcm1vbnBybV8gLWJpdHMgLWZpeG5hbWVzIE1UMjU0MDhfUFJNLmNzcAogKioqLwoKI2lmbmRlZiBIX3ByZWZpeF9oZXJtb25wcm1fYml0c19maXhuYW1lc19NVDI1NDA4X1BSTV9jc3BfSAojZGVmaW5lIEhfcHJlZml4X2hlcm1vbnBybV9iaXRzX2ZpeG5hbWVzX01UMjU0MDhfUFJNX2NzcF9ICgovKiBVRCBBZGRyZXNzIFZlY3RvciAqLwoKc3RydWN0IGhlcm1vbnBybV91ZF9hZGRyZXNzX3ZlY3Rvcl9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlwZFsweDAwMDE4XTsgICAgICAgICAgIC8qIFByb3RlY3Rpb24gRG9tYWluICovCiAgICBwc2V1ZG9fYml0X3QJcG9ydF9udW1iZXJbMHgwMDAwMl07ICAvKiBQb3J0IG51bWJlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAtIFBvcnQgMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAtIFBvcnQgMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgLSByZXNlcnZlZCAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDA1XTsKICAgIHBzZXVkb19iaXRfdAlmbFsweDAwMDAxXTsgICAgICAgICAgIC8qIGZvcmNlIGxvb3BiYWNrICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmxpZFsweDAwMDEwXTsgICAgICAgICAvKiBSZW1vdGUgKERlc3RpbmF0aW9uKSBMSUQgKi8KICAgIHBzZXVkb19iaXRfdAlteV9saWRfcGF0aF9iaXRzWzB4MDAwMDddOy8qIFNvdXJjZSBMSUQgLSB0aGUgbG93ZXIgNyBiaXRzICh1cHBlciBiaXRzIGFyZSB0YWtlbiBmcm9tIFBvcnRJbmZvKSAqLwogICAgcHNldWRvX2JpdF90CWdbMHgwMDAwMV07ICAgICAgICAgICAgLyogR2xvYmFsIGFkZHJlc3MgZW5hYmxlIC0gaWYgc2V0LCBHUkggd2lsbCBiZSBmb3JtZWQgZm9yIHBhY2tldCBoZWFkZXIgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAwOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJaG9wX2xpbWl0WzB4MDAwMDhdOyAgICAvKiBJUHY2IGhvcCBsaW1pdCAqLwogICAgcHNldWRvX2JpdF90CW1heF9zdGF0X3JhdGVbMHgwMDAwNF07LyogTWF4aW11bSBzdGF0aWMgcmF0ZSBjb250cm9sLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAtIDRYIGluamVjdGlvbiByYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gMVggaW5qZWN0aW9uIHJhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyIC0gcmVzZXJ2ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMlsweDAwMDA0XTsKICAgIHBzZXVkb19iaXRfdAltZ2lkX2luZGV4WzB4MDAwMDddOyAgIC8qIEluZGV4IHRvIHBvcnQgR0lEIHRhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZ2lkX2luZGV4ID0gKHBvcnRfbnVtYmVyLTEpICogMl5sb2dfbWF4X2dpZCArIGdpZF9pbmRleAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlcmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLiBsb2dfbWF4X2dpZCBpcyB0YWtlbiBmcm9tIFFVRVJZX0RFVl9DQVAgY29tbWFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4gZ2lkX2luZGV4IGlzIHRoZSBpbmRleCB0byB0aGUgR0lEIHRhYmxlICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzWzB4MDAwMDldOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWZsb3dfbGFiZWxbMHgwMDAxNF07ICAgLyogSVB2NiBmbG93IGxhYmVsICovCiAgICBwc2V1ZG9fYml0X3QJdGNsYXNzWzB4MDAwMDhdOyAgICAgICAvKiBJUHY2IFRDbGFzcyAqLwogICAgcHNldWRvX2JpdF90CXNsWzB4MDAwMDRdOyAgICAgICAgICAgLyogSW5maW5pQmFuZCBTZXJ2aWNlIExldmVsIChTTCkgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZ2lkXzEyN185NlsweDAwMDIwXTsgIC8qIFJlbW90ZSBHSURbMTI3Ojk2XSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJnaWRfOTVfNjRbMHgwMDAyMF07ICAgLyogUmVtb3RlIEdJRFs5NTo2NF0gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZ2lkXzYzXzMyWzB4MDAwMjBdOyAgIC8qIFJlbW90ZSBHSURbNjM6MzJdICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmdpZF8zMV8wWzB4MDAwMjBdOyAgICAvKiBSZW1vdGUgR0lEWzMxOjBdIGlmIEcgYml0IGlzIHNldC4gTXVzdCBiZSBzZXQgdG8gMHgyIGlmIEcgYml0IGlzIGNsZWFyZWQuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBTZW5kIGRvb3JiZWxsICovCgpzdHJ1Y3QgaGVybW9ucHJtX3NlbmRfZG9vcmJlbGxfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJbm9wY29kZVsweDAwMDA1XTsgICAgICAvKiBPcGNvZGUgb2YgZGVzY3JpcHRvciB0byBiZSBleGVjdXRlZCAqLwogICAgcHNldWRvX2JpdF90CWZbMHgwMDAwMV07ICAgICAgICAgICAgLyogRmVuY2UgYml0LiBJZiBzZXQsIGRlc2NyaXB0b3IgaXMgZmVuY2VkICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMDJdOwogICAgcHNldWRvX2JpdF90CXdxZV9jb3VudGVyWzB4MDAwMTBdOyAgLyogTW9kdWxvLTY0SyBjb3VudGVyIG9mIFdRRXMgcG9zdGVkIHRvIHRoZSBRUCBzaW5jZSBpdHMgY3JlYXRpb24gZXhjbHVkaW5nIHRoZSBuZXdseSBwb3N0ZWQgV1FFcyBpbiB0aGlzIGRvb3JiZWxsLiBTaG91bGQgYmUgemVybyBmb3IgdGhlIGZpcnN0IGRvb3JiZWxsIG9uIHRoZSBRUCAqLwogICAgcHNldWRvX2JpdF90CXdxZV9jbnRbMHgwMDAwOF07ICAgICAgLyogTnVtYmVyIG9mIFdRRXMgcG9zdGVkIHdpdGggdGhpcyBkb29yYmVsbC4gTXVzdCBiZSBncmF0ZXIgdGhlbiB6ZXJvLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW5kc1sweDAwMDA2XTsgICAgICAgICAgLyogTmV4dCBkZXNjcmlwdG9yIHNpemUgKGluIDE2LWJ5dGUgY2h1bmtzKSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMDAyXTsKICAgIHBzZXVkb19iaXRfdAlxcG5bMHgwMDAxOF07ICAgICAgICAgIC8qIFFQIG51bWJlciB0aGlzIGRvb3JiZWxsIGlzIHJ1bmcgb24gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIFNlbmQgd3FlIHNlZ21lbnQgZGF0YSBpbmxpbmUgKi8KCnN0cnVjdCBoZXJtb25wcm1fd3FlX3NlZ21lbnRfZGF0YV9pbmxpbmVfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJYnl0ZV9jb3VudFsweDAwMDBhXTsgICAvKiBOb3QgaW5jbHVkaW5nIHBhZGRpbmcgZm9yIDE2Qnl0ZSBjaHVua3MgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAxNV07CiAgICBwc2V1ZG9fYml0X3QJYWx3YXlzMVsweDAwMDAxXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlkYXRhWzB4MDAwMThdOyAgICAgICAgIC8qIERhdGEgbWF5IGJlIG1vcmUgdGhpcyBzZWdtZW50IHNpemUgLSBpbiAxNkJ5dGUgY2h1bmtzICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMlsweDAwMDQwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIFNlbmQgd3FlIHNlZ21lbnQgZGF0YSBwdHIgKi8KCnN0cnVjdCBoZXJtb25wcm1fd3FlX3NlZ21lbnRfZGF0YV9wdHJfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJYnl0ZV9jb3VudFsweDAwMDFmXTsKICAgIHBzZXVkb19iaXRfdAlhbHdheXMwWzB4MDAwMDFdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWxfa2V5WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWxvY2FsX2FkZHJlc3NfaFsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlsb2NhbF9hZGRyZXNzX2xbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBTZW5kIHdxZSBzZWdtZW50IHJkICovCgpzdHJ1Y3QgaGVybW9ucHJtX2xvY2FsX2ludmFsaWRhdGVfc2VnbWVudF9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDA0MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbWVtX2tleVsweDAwMDE4XTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAwOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwYTBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogRmFzdF9SZWdpc3RyYXRpb25fU2VnbWVudCAgICMjIyNtaWNoYWwgLSBkb2Vzbid0IG1hdGNoIFBSTSAoZmllbGRzIHdlcmUgYWRkZWQsIHNlZSBiZWxvdykgbmV3IHRhYmxlIHNpemUgaW4gYnl0ZXMgLSAgMHgzMCAqLwoKc3RydWN0IGhlcm1vbnBybV9mYXN0X3JlZ2lzdHJhdGlvbl9zZWdtZW50X3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDFiXTsKICAgIHBzZXVkb19iaXRfdAlsclsweDAwMDAxXTsgICAgICAgICAgIC8qIElmIHNldCAtIExvY2FsIFJlYWQgYWNjZXNzIHdpbGwgYmUgZW5hYmxlZCAqLwogICAgcHNldWRvX2JpdF90CWx3WzB4MDAwMDFdOyAgICAgICAgICAgLyogSWYgc2V0IC0gTG9jYWwgV3JpdGUgYWNjZXNzIHdpbGwgYmUgZW5hYmxlZCAqLwogICAgcHNldWRvX2JpdF90CXJyWzB4MDAwMDFdOyAgICAgICAgICAgLyogSWYgc2V0IC0gUmVtb3RlIFJlYWQgYWNjZXNzIHdpbGwgYmUgZW5hYmxlZCAqLwogICAgcHNldWRvX2JpdF90CXJ3WzB4MDAwMDFdOyAgICAgICAgICAgLyogSWYgc2V0IC0gUmVtb3RlIFdyaXRlIGFjY2VzcyB3aWxsIGJlIGVuYWJsZWQgKi8KICAgIHBzZXVkb19iaXRfdAlhWzB4MDAwMDFdOyAgICAgICAgICAgIC8qIElmIHNldCAtIFJlbW90ZSBBdG9taWMgYWNjZXNzIHdpbGwgYmUgZW5hYmxlZCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXBibF9wdHJfNjNfMzJbMHgwMDAyMF07LyogUGh5c2ljYWwgYWRkcmVzcyBwb2ludGVyIFs2MzozMl0gdG8gdGhlIHBoeXNpY2FsIGJ1ZmZlciBsaXN0ICAjIyMgbWljaGFsIC0gdGhpcyBmaWVsZCBpcyByZXBsYWNlZCB3aXRoIG1lbV9rZXkgLjMyICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbWVtX2tleVsweDAwMDIwXTsgICAgICAvKiBNZW1vcnkgS2V5IG9uIHdoaWNoIHRoZSBmYXN0IHJlZ2lzdHJhdGlvbiBpcyBleGVjdXRlZCBvbi4gIyMjbWljaGFsLXRoaXMgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCBwYmxfcHRyXzYzXzMyICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcGFnZV9zaXplWzB4MDAwMDVdOyAgICAvKiBQYWdlIHNpemUgdXNlZCBmb3IgdGhlIHJlZ2lvbi4gQWN0dWFsIHNpemUgaXMgWzRLXSoyXlBhZ2Vfc2l6ZSBieXRlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2Vfc2l6ZSBzaG91bGQgYmUgbGVzcyB0aGFuIDIwLiAjIyNtaWNoYWwgLSBmaWVsZCBkb2Vzbid0IGV4c2lzdCAoc2VlIHJlcGxhY2VtZW50IGFib3ZlKSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMDAyXTsKICAgIHBzZXVkb19iaXRfdAl6YlsweDAwMDAxXTsgICAgICAgICAgIC8qIFplcm8gQmFzZWQgUmVnaW9uICAgICAgICAgICAgICAgIyMjbWljaGFsIC0gZmllbGQgZG9lc24ndCBleHNpc3QgKHNlZSByZXBsYWNlbWVudCBhYm92ZSkgKi8KICAgIHBzZXVkb19iaXRfdAlwYmxfcHRyXzMxXzhbMHgwMDAxOF07IC8qIFBoeXNpY2FsIGFkZHJlc3MgcG9pbnRlciBbMzE6OF0gdG8gdGhlIHBoeXNpY2FsIGJ1ZmZlciBsaXN0ICAgICMjI21pY2hhbCAtIGZpZWxkIGRvZXNuJ3QgZXhzaXN0IChzZWUgcmVwbGFjZW1lbnQgYWJvdmUpICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJc3RhcnRfYWRkcmVzc19oWzB4MDAwMjBdOy8qIFN0YXJ0IEFkZHJlc3NbNjM6MzJdIC0gVmlydHVhbCBBZGRyZXNzIHdoZXJlIHRoaXMgcmVnaW9uIHN0YXJ0cyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXN0YXJ0X2FkZHJlc3NfbFsweDAwMDIwXTsvKiBTdGFydCBBZGRyZXNzWzMxOjBdIC0gVmlydHVhbCBBZGRyZXNzIHdoZXJlIHRoaXMgcmVnaW9uIHN0YXJ0cyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlZ19sZW5faFsweDAwMDIwXTsgICAgLyogUmVnaW9uIExlbmd0aFs2MzozMl0gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZWdfbGVuX2xbMHgwMDAyMF07ICAgIC8qIFJlZ2lvbiBMZW5ndGhbMzE6MF0gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIFNlbmQgd3FlIHNlZ21lbnQgYXRvbWljICovCgpzdHJ1Y3QgaGVybW9ucHJtX3dxZV9zZWdtZW50X2F0b21pY19zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlzd2FwX2FkZF9oWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXN3YXBfYWRkX2xbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJY29tcGFyZV9oWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWNvbXBhcmVfbFsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIFNlbmQgd3FlIHNlZ21lbnQgcmVtb3RlIGFkZHJlc3MgKi8KCnN0cnVjdCBoZXJtb25wcm1fd3FlX3NlZ21lbnRfcmVtb3RlX2FkZHJlc3Nfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJcmVtb3RlX3ZpcnRfYWRkcl9oWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlbW90ZV92aXJ0X2FkZHJfbFsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlya2V5WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIGVuZCB3cWUgc2VnbWVudCBiaW5kICovCgpzdHJ1Y3QgaGVybW9ucHJtX3dxZV9zZWdtZW50X2JpbmRfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMWRdOwogICAgcHNldWRvX2JpdF90CXJyWzB4MDAwMDFdOyAgICAgICAgICAgLyogSWYgc2V0LCBSZW1vdGUgUmVhZCBFbmFibGUgZm9yIGJvdW5kIHdpbmRvdy4gKi8KICAgIHBzZXVkb19iaXRfdAlyd1sweDAwMDAxXTsgICAgICAgICAgIC8qIElmIHNldCwgUmVtb3RlIFdyaXRlIEVuYWJsZSBmb3IgYm91bmQgd2luZG93LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICBwc2V1ZG9fYml0X3QJYVsweDAwMDAxXTsgICAgICAgICAgICAvKiBJZiBzZXQsIEF0b21pYyBFbmFibGUgZm9yIGJvdW5kIHdpbmRvdy4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAxZV07CiAgICBwc2V1ZG9fYml0X3QJemJbMHgwMDAwMV07ICAgICAgICAgICAvKiBJZiBzZXQsIFdpbmRvdyBpcyBaZXJvIEJhc2VkLiAqLwogICAgcHNldWRvX2JpdF90CXR5cGVbMHgwMDAwMV07ICAgICAgICAgLyogV2luZG93IHR5cGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC0gVHlwZSBvbmUgd2luZG93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gVHlwZSB0d28gd2luZG93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAluZXdfcmtleVsweDAwMDIwXTsgICAgIC8qIFRoZSBuZXcgUktleSBvZiB3aW5kb3cgdG8gYmluZCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlZ2lvbl9sa2V5WzB4MDAwMjBdOyAgLyogTG9jYWwga2V5IG9mIHJlZ2lvbiwgd2hpY2ggd2luZG93IHdpbGwgYmUgYm91bmQgdG8gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlzdGFydF9hZGRyZXNzX2hbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJc3RhcnRfYWRkcmVzc19sWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWxlbmd0aF9oWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWxlbmd0aF9sWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogU2VuZCB3cWUgc2VnbWVudCB1ZCAqLwoKc3RydWN0IGhlcm1vbnBybV93cWVfc2VnbWVudF91ZF9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fdWRfYWRkcmVzc192ZWN0b3Jfc3QJdWRfYWRkcmVzc192ZWN0b3I7LyogVUQgQWRkcmVzcyBWZWN0b3IgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlkZXN0aW5hdGlvbl9xcFsweDAwMDE4XTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAwOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcV9rZXlbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwNDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogU2VuZCB3cWUgc2VnbWVudCByZCAqLwoKc3RydWN0IGhlcm1vbnBybV93cWVfc2VnbWVudF9yZF9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlkZXN0aW5hdGlvbl9xcFsweDAwMDE4XTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAwOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcV9rZXlbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwNDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogU2VuZCB3cWUgc2VnbWVudCBjdHJsICovCgpzdHJ1Y3QgaGVybW9ucHJtX3dxZV9zZWdtZW50X2N0cmxfc2VuZF9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlvcGNvZGVbMHgwMDAwNV07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMWFdOwogICAgcHNldWRvX2JpdF90CW93bmVyWzB4MDAwMDFdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWRzWzB4MDAwMDZdOyAgICAgICAgICAgLyogZGVzY3JpcHRvciAod3FlKSBzaXplIGluIDE2Ynl0ZXMgY2h1bmsgKi8KICAgIHBzZXVkb19iaXRfdAlmWzB4MDAwMDFdOyAgICAgICAgICAgIC8qIGZlbmNlICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwMTldOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWZsWzB4MDAwMDFdOyAgICAgICAgICAgLyogRm9yY2UgTG9vcEJhY2sgKi8KICAgIHBzZXVkb19iaXRfdAlzWzB4MDAwMDFdOyAgICAgICAgICAgIC8qIFJlbW90ZSBTb2xpY2l0ZWQgRXZlbnQgKi8KICAgIHBzZXVkb19iaXRfdAljWzB4MDAwMDJdOyAgICAgICAgICAgIC8qIGNvbXBsZXRpb24gcmVxdWlyZWQ6IDBiMDAgLSBubyAgIDBiMTEgLSB5ZXMgKi8KICAgIHBzZXVkb19iaXRfdAlpcFsweDAwMDAxXTsgICAgICAgICAgIC8qIFdoZW4gc2V0LCBJbmZpbmlIb3N0IElJSSBFeCB3aWxsIGNhbGN1bGF0ZSB0aGUgSVAgY2hlY2tzdW0gb2YgdGhlIElQIGhlYWRlciB0aGF0IGlzIHByZXNlbnQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIElQb3ZlcklCIGVuY2Fwc3VsYXRpb24gaGVhZGVyLiBJbiB0aGUgY2FzZSBvZiBtdWx0aXBsZSBoZWFkZXJzIChlbmNhcHN1bGF0aW9uKSwgSW5maW5pSG9zdCBJSUkgRXggd2lsbCBjYWxjdWxhdGUgdGhlIGNoZWNrc3VtIG9ubHkgZm9yIHRoZSBmaXJzdCBJUCBoZWFkZXIgZm9sbG93aW5nIHRoZSBJUG92ZXJJQiBlbmNhcHN1bGF0aW9uIGhlYWRlci4gTm90IFZhbGlkIGZvciBJUHY2IHBhY2tldHMgKi8KICAgIHBzZXVkb19iaXRfdAl0Y3BfdWRwWzB4MDAwMDFdOyAgICAgIC8qIFdoZW4gc2V0LCBJbmZpbmlIb3N0IElJSSBFeCB3aWxsIGNhbGN1bGF0ZSB0aGUgVENQL1VEUCBjaGVja3N1bSBvZiB0aGUgcGFja2V0IHRoYXQgaXMgcHJlc2VudCBpbW1lZGlhdGVseSBhZnRlciB0aGUgSVAgaGVhZGVyLiBJbiB0aGUgY2FzZSBvZiBtdWx0aXBsZSBoZWFkZXJzIChlbmNhcHN1bGF0aW9uKSwgSW5maW5pSG9zdCBJSUkgRXggd2lsbCBjYWxjdWxhdGUgdGhlIGNoZWNrc3VtIG9ubHkgZm9yIHRoZSBmaXJzdCBUQ1AgaGVhZGVyIGZvbGxvd2luZyB0aGUgSVAgaGVhZGVyLiBUaGlzIGJpdCBtYXkgYmUgc2V0IG9ubHkgaWYgdGhlIGVudGlyZSBUQ1AvVURQIHNlZ21lbnQgaXMgcHJlc2VudCBpbiBvbmUgSUIgcGFja2V0ICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CXNvWzB4MDAwMDFdOyAgICAgICAgICAgLyogU3Ryb25nIE9yZGVyaW5nIC0gd2hlbiBzZXQsIHRoZSBXUUUgd2lsbCBiZSBleGVjdXRlZCBvbmx5IGFmdGVyIGFsbCBwcmV2aW91cyBXUUVzIGhhdmUgYmVlbiBleGVjdXRlZC4gQ2FuIGJlIHNldCBmb3IgUkMgV1FFcyBvbmx5LiBUaGlzIGJpdCBtdXN0IGJlIHNldCBpbiB0eXBlIHR3byBCSU5ELCBGYXN0IFJlZ2lzdHJhdGlvbiBhbmQgTG9jYWwgaW52YWxpZGF0ZSBvcGVyYXRpb25zLiAqLwogICAgcHNldWRvX2JpdF90CXNyY19yZW1vdGVfYnVmWzB4MDAwMThdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWltbWVkaWF0ZVsweDAwMDIwXTsgICAgLyogSWYgdGhlIE9wQ29kZSBlbmNvZGVzIGFuIG9wZXJhdGlvbiB3aXRoIEltbWVkaWF0ZSAoUkRNQS13cml0ZS9TRU5EKSwgVGhpcyBmaWVsZCB3aWxsIGhvbGQgdGhlIEltbWVkaWF0ZSBkYXRhIHRvIGJlIHNlbnQuIElmIHRoZSBPcENvZGUgZW5jb2RlcyBzZW5kIGFuZCBpbnZhbGlkYXRlIG9wZXJhdGlvbnMsIHRoaXMgZmllbGQgaG9sZHMgdGhlIEludmFsaWRhdGlvbiBrZXkgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgcGFja2V0OyBvdGhlcndpc2UsIHRoaXMgZmllbGQgaXMgcmVzZXJ2ZWQuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBBZGRyZXNzIFBhdGgJIyAjIyNtaWNoYWwgLSBtYXRjaCB0byBQUk0gKi8KCnN0cnVjdCBoZXJtb25wcm1fYWRkcmVzc19wYXRoX3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CXBrZXlfaW5kZXhbMHgwMDAwN107ICAgLyogUEtleSB0YWJsZSBpbmRleCAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDE2XTsKICAgIHBzZXVkb19iaXRfdAlzdlsweDAwMDAxXTsgICAgICAgICAgIC8qIFNlcnZpY2UgIFZMQU4gb24gUVAgKi8KICAgIHBzZXVkb19iaXRfdAljdlsweDAwMDAxXTsgICAgICAgICAgIC8qIEN1c3RvbWVyIFZMQU4gaW4gUVAgKi8KICAgIHBzZXVkb19iaXRfdAlmbFsweDAwMDAxXTsgICAgICAgICAgIC8qIEZvcmNlIExvb3BCYWNrICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmxpZFsweDAwMDEwXTsgICAgICAgICAvKiBSZW1vdGUgKERlc3RpbmF0aW9uKSBMSUQgKi8KICAgIHBzZXVkb19iaXRfdAlteV9saWRfc21hY19pZHhbMHgwMDAwN107LyogU291cmNlIExJRCAtIHRoZSBsb3dlciA3IGJpdHMgKHVwcGVyIGJpdHMgYXJlIHRha2VuIGZyb20gUG9ydEluZm8pICovCiAgICBwc2V1ZG9fYml0X3QJZ3JoX2lwWzB4MDAwMDFdOyAgICAgICAvKiBHbG9iYWwgYWRkcmVzcyBlbmFibGUgLSBpZiBzZXQsIEdSSCB3aWxsIGJlIGZvcm1lZCBmb3IgcGFja2V0IGhlYWRlciAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMDA4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlob3BfbGltaXRbMHgwMDAwOF07ICAgIC8qIElQdjYgaG9wIGxpbWl0ICovCiAgICBwc2V1ZG9fYml0X3QJbWF4X3N0YXRfcmF0ZVsweDAwMDA0XTsvKiBNYXhpbXVtIHN0YXRpYyByYXRlIGNvbnRyb2wuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC0gMTAwJSBpbmplY3Rpb24gcmF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAtIDI1JSBpbmplY3Rpb24gcmF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiAtIDEyLjUlIGluamVjdGlvbiByYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzIC0gNTAlIGluamVjdGlvbiByYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3OiAyLjUgR2Ivcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg6IDEwIEdiL3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5OiAzMCBHYi9zLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA6IDUgR2Ivcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExOiAyMCBHYi9zLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI6IDQwIEdiL3MuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzogNjAgR2Ivcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0OiA4MCBHYi9zLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU6IDEyMCBHYi9zLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMlsweDAwMDA0XTsKICAgIHBzZXVkb19iaXRfdAltZ2lkX2luZGV4WzB4MDAwMDddOyAgIC8qIEluZGV4IHRvIHBvcnQgR0lEIHRhYmxlICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzWzB4MDAwMDRdOwogICAgcHNldWRvX2JpdF90CWFja190aW1lb3V0WzB4MDAwMDVdOyAgLyogTG9jYWwgQUNLIHRpbWVvdXQgLSBUcmFuc3BvcnQgdGltZXIgZm9yIGFjdGl2YXRpb24gb2YgcmV0cmFuc21pc3Npb24gbWVjaGFuaXNtLiBSZWZlciB0byBJQiBzcGVjIFZvbDEgOS43LjYuMS4zIGZvciBmdXJ0aGVyIGRldGFpbHMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgdHJhbnNwb3J0IHRpbWVyIGlzIHNldCB0byA0LjA5NnVzKjJeYWNrX3RpbWVvdXQsIGlmIGFja190aW1lb3V0IGlzIDAgdGhlbiB0cmFuc3BvcnQgdGltZXIgaXMgZGlzYWJsZWQuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZmxvd19sYWJlbFsweDAwMDE0XTsgICAvKiBJUHY2IGZsb3cgbGFiZWwgKi8KICAgIHBzZXVkb19iaXRfdAl0Y2xhc3NbMHgwMDAwOF07ICAgICAgIC8qIElQdjYgVENsYXNzICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0WzB4MDAwMDRdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJnaWRfMTI3Xzk2WzB4MDAwMjBdOyAgLyogUmVtb3RlIEdJRFsxMjc6OTZdICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmdpZF85NV82NFsweDAwMDIwXTsgICAvKiBSZW1vdGUgR0lEWzk1OjY0XSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJnaWRfNjNfMzJbMHgwMDAyMF07ICAgLyogUmVtb3RlIEdJRFs2MzozMl0gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZ2lkXzMxXzBbMHgwMDAyMF07ICAgIC8qIFJlbW90ZSBHSURbMzE6MF0gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDVbMHgwMDAwOF07CiAgICBwc2V1ZG9fYml0X3QJc3BbMHgwMDAwMV07ICAgICAgICAgICAvKiBpZiBzZXQsIHNwb29maW5nIHByb3RlY3Rpb24gaXMgZW5mb3JjZWQgb24gdGhpcyBRUCBhbmQgRXRoZXJ0eXBlIGhlYWRlcnMgYXJlIHJlc3RyaWN0ZWQgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDZbMHgwMDAwMl07CiAgICBwc2V1ZG9fYml0X3QJZnZsWzB4MDAwMDFdOyAgICAgICAgICAvKiBmb3JjZSBWTEFOICovCiAgICBwc2V1ZG9fYml0X3QJZnNpcFsweDAwMDAxXTsgICAgICAgICAvKiBmb3JjZSBzb3VyY2UgSVAgKi8KICAgIHBzZXVkb19iaXRfdAlmc21bMHgwMDAwMV07ICAgICAgICAgIC8qIGZvcmNlIHNvdXJjZSBNQUMgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDdbMHgwMDAwYV07CiAgICBwc2V1ZG9fYml0X3QJc2NoZWRfcXVldWVbMHgwMDAwOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZG1hY180N18zMlsweDAwMDEwXTsKICAgIHBzZXVkb19iaXRfdAl2bGFuX2luZGV4WzB4MDAwMDddOwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkOFsweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAljb3VudGVyX2luZGV4WzB4MDAwMDhdOy8qIEluZGV4IHRvIGEgdGFibGUgb2YgY291bnRlcnMgdGhhdCBjb3VudHMgZWdyZXNzIHBhY2tldHMgYW5kIGJ5dGVzLCAweEZGIG5vdCB2YWxpZCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWRtYWNfMzFfMFsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIEhDQSBDb21tYW5kIFJlZ2lzdGVyIChIQ1IpICAgICMjIyMgbWljaGFsIC0gbWF0Y2ggUFJNICovCgpzdHJ1Y3QgaGVybW9ucHJtX2hjYV9jb21tYW5kX3JlZ2lzdGVyX3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CWluX3BhcmFtX2hbMHgwMDAyMF07ICAgLyogSW5wdXQgUGFyYW1ldGVyOiBwYXJhbWV0ZXJbNjM6MzJdIG9yIHBvaW50ZXJbNjM6MzJdIHRvIGlucHV0IG1haWxib3ggKHNlZSBjb21tYW5kIGRlc2NyaXB0aW9uKSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWluX3BhcmFtX2xbMHgwMDAyMF07ICAgLyogSW5wdXQgUGFyYW1ldGVyOiBwYXJhbWV0ZXJbMzE6MF0gb3IgcG9pbnRlclszMTowXSB0byBpbnB1dCBtYWlsYm94IChzZWUgY29tbWFuZCBkZXNjcmlwdGlvbikgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlpbnB1dF9tb2RpZmllclsweDAwMDIwXTsvKiBJbnB1dCBQYXJhbWV0ZXIgTW9kaWZpZXIgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlvdXRfcGFyYW1faFsweDAwMDIwXTsgIC8qIE91dHB1dCBQYXJhbWV0ZXI6IHBhcmFtZXRlcls2MzozMl0gb3IgcG9pbnRlcls2MzozMl0gdG8gb3V0cHV0IG1haWxib3ggKHNlZSBjb21tYW5kIGRlc2NyaXB0aW9uKSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW91dF9wYXJhbV9sWzB4MDAwMjBdOyAgLyogT3V0cHV0IFBhcmFtZXRlcjogcGFyYW1ldGVyWzMxOjBdIG9yIHBvaW50ZXJbMzE6MF0gdG8gb3V0cHV0IG1haWxib3ggKHNlZSBjb21tYW5kIGRlc2NyaXB0aW9uKSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDEwXTsKICAgIHBzZXVkb19iaXRfdAl0b2tlblsweDAwMDEwXTsgICAgICAgIC8qIFNvZnR3YXJlIGFzc2lnbmVkIHRva2VuIHRvIHRoZSBjb21tYW5kLCB0byB1bmlxdWVseSBpZGVudGlmeSBpdC4gVGhlIHRva2VuIGlzIHJldHVybmVkIHRvIHRoZSBzb2Z0d2FyZSBpbiB0aGUgRVFFIHJlcG9ydGVkLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW9wY29kZVsweDAwMDBjXTsgICAgICAgLyogQ29tbWFuZCBvcGNvZGUgKi8KICAgIHBzZXVkb19iaXRfdAlvcGNvZGVfbW9kaWZpZXJbMHgwMDAwNF07LyogT3Bjb2RlIE1vZGlmaWVyLCBzZWUgc3BlY2lmaWMgZGVzY3JpcHRpb24gZm9yIGVhY2ggY29tbWFuZC4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAwNV07CiAgICBwc2V1ZG9fYml0X3QJdFsweDAwMDAxXTsJICAgICAgIC8qIFRvZ2dsZSAqLwogICAgcHNldWRvX2JpdF90CWVbMHgwMDAwMV07ICAgICAgICAgICAgLyogRXZlbnQgUmVxdWVzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAtIERvbid0IHJlcG9ydCBldmVudCAoc29mdHdhcmUgd2lsbCBwb2xsIHRoZSBHTyBiaXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gUmVwb3J0IGV2ZW50IHRvIEVRIHdoZW4gdGhlIGNvbW1hbmQgY29tcGxldGVzICovCiAgICBwc2V1ZG9fYml0X3QJZ29bMHgwMDAwMV07ICAgICAgICAgICAvKiBHbyAoMD1Tb2Z0d2FyZSBvd25lcnNoaXAgZm9yIHRoZSBIQ1IsIDE9SGFyZHdhcmUgb3duZXJzaGlwIGZvciB0aGUgSENSKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29mdHdhcmUgY2FuIHdyaXRlIHRvIHRoZSBIQ1Igb25seSBpZiBHbyBiaXQgaXMgY2xlYXJlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvZnR3YXJlIG11c3Qgc2V0IHRoZSBHbyBiaXQgdG8gdHJpZ2dlciB0aGUgSFcgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZC4gU29mdHdhcmUgbXVzdCBub3Qgd3JpdGUgdG8gdGhpcyByZWdpc3RlciB2YWx1ZSBvdGhlciB0aGFuIDEgZm9yIHRoZSBHbyBiaXQuICovCiAgICBwc2V1ZG9fYml0X3QJc3RhdHVzWzB4MDAwMDhdOyAgICAgICAvKiBDb21tYW5kIGV4ZWN1dGlvbiBzdGF0dXMgcmVwb3J0LiBWYWxpZCBvbmx5IGlmIGNvbW1hbmQgaW50ZXJmYWNlIGluIHVuZGVyIFNXIG93bmVyc2hpcCAoR28gYml0IGlzIGNsZWFyZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC0gY29tbWFuZCBjb21wbGV0ZWQgd2l0aG91dCBlcnJvci4gSWYgZGlmZmVyZW50IHRoYW4gemVybywgY29tbWFuZCBleGVjdXRpb24gY29tcGxldGVkIHdpdGggZXJyb3IuIFN5bmRyb20gZW5jb2RpbmcgaXMgZGVwZW5kZWQgb24gY29tbWFuZCBleGVjdXRlZCBhbmQgaXMgZGVmaW5lZCBmb3IgZWFjaCBjb21tYW5kICovCi8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBDUSBEb29yYmVsbCAqLwoKc3RydWN0IGhlcm1vbnBybV9jcV9jbWRfZG9vcmJlbGxfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJY3FuWzB4MDAwMThdOyAgICAgICAgICAvKiBDUSBudW1iZXIgYWNjZXNzZWQgKi8KICAgIHBzZXVkb19iaXRfdAljbWRbMHgwMDAwM107ICAgICAgICAgIC8qIENvbW1hbmQgdG8gYmUgZXhlY3V0ZWQgb24gQ1EKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCAtIFJlc2VydmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEgLSBSZXF1ZXN0IG5vdGlmaWNhdGlvbiBmb3IgbmV4dCBTb2xpY2l0ZWQgY29tcGxldGlvbiBldmVudC4gQ1FfcGFyYW0gc3BlY2lmaWVzIHRoZSBjdXJyZW50IENRIENvbnN1bWVyIENvdW50ZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIgLSBSZXF1ZXN0IG5vdGlmaWNhdGlvbiBmb3IgbmV4dCBTb2xpY2l0ZWQgb3IgVW5zb2xpY2l0ZWQgY29tcGxldGlvbiBldmVudC4gQ1FfcGFyYW0gc3BlY2lmaWVzIHRoZSBjdXJyZW50IENRIENvbnN1bWVyIENvdW50ZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMgLSBSZXF1ZXN0IG5vdGlmaWNhdGlvbiBmb3IgbXVsdGlwbGUgY29tcGxldGlvbnMgKEFybS1OKS4gQ1FfcGFyYW0gc3BlY2lmaWVzIHRoZSB2YWx1ZSBvZiB0aGUgQ1EgQ291bnRlciB0aGF0IHdoZW4gcmVhY2hlZCBieSBIVyAoaS5lLiBIVyBnZW5lcmF0ZXMgYSBDUUUgaW50byB0aGlzIENvdW50ZXIpIEV2ZW50IHdpbGwgYmUgZ2VuZXJhdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdGhlciAtIFJlc2VydmVkICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CWNtZF9zblsweDAwMDAyXTsgICAgICAgLyogQ29tbWFuZCBTZXF1ZW5jZSBOdW1iZXIgLSBUaGlzIGZpZWxkIHNob3VsZCBiZSBpbmNyZW1lbnRlZCB1cG9uIHJlY2VpdmluZyBjb21wbGV0aW9uIG5vdGlmaWNhdGlvbiBvZiB0aGUgcmVzcGVjdGl2ZSBDUS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgdHJhbnNpdGlvbiBpcyBkb25lIGJ5IHJpbmdpbmcgUmVxdWVzdCBub3RpZmljYXRpb24gZm9yIG5leHQgU29saWNpdGVkLCBSZXF1ZXN0IG5vdGlmaWNhdGlvbiBmb3IgbmV4dCBTb2xpY2l0ZWQgb3IgVW5zb2xpY2l0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb24gb3IgUmVxdWVzdCBub3RpZmljYXRpb24gZm9yIG11bHRpcGxlIGNvbXBsZXRpb25zIGRvb3JiZWxscyBhZnRlciByZWNlaXZpbmcgY29tcGxldGlvbiBub3RpZmljYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZpZWxkIGlzIGluaXRpYWxpemVkIHRvIFplcm8gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAwMl07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJY3FfcGFyYW1bMHgwMDAyMF07ICAgICAvKiBwYXJhbWV0ZXIgdG8gYmUgdXNlZCBieSBDUSBjb21tYW5kICovCi8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBSRC1zZW5kIGRvb3JiZWxsICovCgpzdHJ1Y3QgaGVybW9ucHJtX3JkX3NlbmRfZG9vcmJlbGxfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMDhdOwogICAgcHNldWRvX2JpdF90CWVlblsweDAwMDE4XTsgICAgICAgICAgLyogRW5kLXRvLWVuZCBjb250ZXh0IG51bWJlciAocmVsaWFibGUgZGF0YWdyYW0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIHplcm8gZm9yIE5vcCBhbmQgQmluZCBvcGVyYXRpb25zICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwMDhdOwogICAgcHNldWRvX2JpdF90CXFwblsweDAwMDE4XTsgICAgICAgICAgLyogUVAgbnVtYmVyIHRoaXMgZG9vcmJlbGwgaXMgcnVuZyBvbiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9zZW5kX2Rvb3JiZWxsX3N0CXNlbmRfZG9vcmJlbGw7LyogU2VuZCBQYXJhbWV0ZXJzICovCi8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBNdWx0aWNhc3QgR3JvdXAgTWVtYmVyIFFQICAgIyMjIyBtaWNoYWwgLSBtYXRjaCBQUk0gKi8KCnN0cnVjdCBoZXJtb25wcm1fbWdtcXBfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJcXBuX2lbMHgwMDAxOF07ICAgICAgICAvKiBRUE5faTogUVAgbnVtYmVyIHdoaWNoIGlzIGEgbWVtYmVyIGluIHRoaXMgbXVsdGljYXN0IGdyb3VwLiBWYWxpZCBvbmx5IGlmIFFpIGJpdCBpcyBzZXQuIExlbmd0aCBvZiB0aGUgUVBOX2kgbGlzdCBpcyBzZXQgaW4gSU5JVF9IQ0EgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAwNl07CiAgICBwc2V1ZG9fYml0X3QJYmxja19sYlsweDAwMDAxXTsgICAgICAvKiBCbG9jayBzZWxmLWxvb3BiYWNrIG1lc3NhZ2VzIGFycml2aW5nIHRvIHRoaXMgcXAgKi8KICAgIHBzZXVkb19iaXRfdAlxaVsweDAwMDAxXTsgICAgICAgICAgIC8qIFFpOiBRUE5faSBpcyB2YWxpZCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogdnNkICovCgpzdHJ1Y3QgaGVybW9ucHJtX3ZzZF9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAl2c2RfZHcwWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzFbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJdnNkX2R3MlsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAl2c2RfZHczWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzRbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJdnNkX2R3NVsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAl2c2RfZHc2WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzdbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJdnNkX2R3OFsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAl2c2RfZHc5WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzEwWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzExWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzEyWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzEzWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzE0WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzE1WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzE2WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzE3WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzE4WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzE5WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzIwWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzIxWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzIyWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzIzWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzI0WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzI1WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzI2WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzI3WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzI4WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzI5WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzMwWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzMxWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzMyWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzMzWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzM0WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzM1WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzM2WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzM3WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzM4WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzM5WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzQwWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzQxWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzQyWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzQzWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzQ0WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzQ1WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzQ2WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzQ3WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzQ4WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzQ5WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzUwWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzUxWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzUyWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzUzWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzU0WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZzZF9kdzU1WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogVUFSIFBhcmFtZXRlcnMgKi8KCnN0cnVjdCBoZXJtb25wcm1fdWFyX3BhcmFtc19zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDA0MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJdWFyX3BhZ2Vfc3pbMHgwMDAwOF07ICAvKiBUaGlzIGZpZWxkIGRlZmluZXMgdGhlIHNpemUgb2YgZWFjaCBVQVIgcGFnZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemUgb2YgVUFSIFBhZ2UgaXMgNEtCKjJeVUFSX1BhZ2VfU2l6ZSAqLwogICAgcHNldWRvX2JpdF90CWxvZ19tYXhfdWFyc1sweDAwMDA0XTsgLyogTnVtYmVyIG9mIFVBUnMgc3VwcG9ydGVkIGlzIDJebG9nX21heF9VQVJzICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwMTRdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMlsweDAwMGEwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIFRyYW5zbGF0aW9uIGFuZCBQcm90ZWN0aW9uIFRhYmxlcyBQYXJhbWV0ZXJzICovCgpzdHJ1Y3QgaGVybW9ucHJtX3RwdHBhcmFtc19zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlkbXB0X2Jhc2VfYWRyX2hbMHgwMDAyMF07LyogZE1QVCAtIE1lbW9yeSBQcm90ZWN0aW9uIFRhYmxlIGJhc2UgcGh5c2ljYWwgYWRkcmVzcyBbNjM6MzJdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW50cnkgc2l6ZSBpcyA2NCBieXRlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlIG11c3QgYmUgYWxpZ25lZCB0byBpdHMgc2l6ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MgbWF5IGJlIHNldCB0byAweEZGRkZGRkZGIGlmIGFkZHJlc3MgdHJhbnNsYXRpb24gYW5kIHByb3RlY3Rpb24gaXMgbm90IHN1cHBvcnRlZC4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlkbXB0X2Jhc2VfYWRyX2xbMHgwMDAyMF07LyogZE1QVCAtIE1lbW9yeSBQcm90ZWN0aW9uIFRhYmxlIGJhc2UgcGh5c2ljYWwgYWRkcmVzcyBbMzE6MF0uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnRyeSBzaXplIGlzIDY0IGJ5dGVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgbXVzdCBiZSBhbGlnbmVkIHRvIGl0cyBzaXplLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBtYXkgYmUgc2V0IHRvIDB4RkZGRkZGRkYgaWYgYWRkcmVzcyB0cmFuc2xhdGlvbiBhbmQgcHJvdGVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWxvZ19kbXB0X3N6WzB4MDAwMDZdOyAgLyogTG9nIChiYXNlIDIpIG9mIHRoZSBudW1iZXIgb2YgcmVnaW9uL3dpbmRvd3MgZW50cmllcyBpbiB0aGUgZE1QVCB0YWJsZS4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAwMl07CiAgICBwc2V1ZG9fYml0X3QJcGZ0b1sweDAwMDA1XTsgICAgICAgICAvKiBQYWdlIEZhdWx0IFJOUiBUaW1lb3V0IC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaWVsZCByZXR1cm5lZCBpbiBSTlIgTmFrcyBnZW5lcmF0ZWQgd2hlbiBhIHBhZ2UgZmF1bHQgaXMgZGV0ZWN0ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdCBoYXMgbm8gZWZmZWN0IHdoZW4gb24tZGVtYW5kLXBhZ2luZyBpcyBub3QgdXNlZC4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAxM107Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW10dF9iYXNlX2FkZHJfaFsweDAwMDIwXTsvKiBNVFQgLSBNZW1vcnkgVHJhbnNsYXRpb24gdGFibGUgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIFs2MzozMl0uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSBtdXN0IGJlIGFsaWduZWQgdG8gaXRzIHNpemUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzIG1heSBiZSBzZXQgdG8gMHhGRkZGRkZGRiBpZiBhZGRyZXNzIHRyYW5zbGF0aW9uIGFuZCBwcm90ZWN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbXR0X2Jhc2VfYWRkcl9sWzB4MDAwMjBdOy8qIE1UVCAtIE1lbW9yeSBUcmFuc2xhdGlvbiB0YWJsZSBiYXNlIHBoeXNpY2FsIGFkZHJlc3MgWzMxOjBdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgbXVzdCBiZSBhbGlnbmVkIHRvIGl0cyBzaXplLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBtYXkgYmUgc2V0IHRvIDB4RkZGRkZGRkYgaWYgYWRkcmVzcyB0cmFuc2xhdGlvbiBhbmQgcHJvdGVjdGlvbiBpcyBub3Qgc3VwcG9ydGVkLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWNtcHRfYmFzZV9hZHJfaFsweDAwMDIwXTsvKiBjTVBUIC0gTWVtb3J5IFByb3RlY3Rpb24gVGFibGUgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIFs2MzozMl0uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnRyeSBzaXplIGlzIDY0IGJ5dGVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgbXVzdCBiZSBhbGlnbmVkIHRvIGl0cyBzaXplLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWNtcHRfYmFzZV9hZHJfbFsweDAwMDIwXTsvKiBjTVBUIC0gTWVtb3J5IFByb3RlY3Rpb24gVGFibGUgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIFszMTowXS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudHJ5IHNpemUgaXMgNjQgYnl0ZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSBtdXN0IGJlIGFsaWduZWQgdG8gaXRzIHNpemUuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBNdWx0aWNhc3QgU3VwcG9ydCBQYXJhbWV0ZXJzICAgIyMjIyBtaWNoYWwgLSBtYXRjaCBQUk0gKi8KCnN0cnVjdCBoZXJtb25wcm1fbXVsdGljYXN0cGFyYW1fc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJbWNfYmFzZV9hZGRyX2hbMHgwMDAyMF07LyogQmFzZSBBZGRyZXNzIG9mIHRoZSBNdWx0aWNhc3QgVGFibGUgWzYzOjMyXS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBiYXNlIGFkZHJlc3MgbXVzdCBiZSBhbGlnbmVkIHRvIHRoZSBlbnRyeSBzaXplLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBtYXkgYmUgc2V0IHRvIDB4RkZGRkZGRkYgaWYgbXVsdGljYXN0IGlzIG5vdCBzdXBwb3J0ZWQuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbWNfYmFzZV9hZGRyX2xbMHgwMDAyMF07LyogQmFzZSBBZGRyZXNzIG9mIHRoZSBNdWx0aWNhc3QgVGFibGUgWzMxOjBdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJhc2UgYWRkcmVzcyBtdXN0IGJlIGFsaWduZWQgdG8gdGhlIGVudHJ5IHNpemUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzIG1heSBiZSBzZXQgdG8gMHhGRkZGRkZGRiBpZiBtdWx0aWNhc3QgaXMgbm90IHN1cHBvcnRlZC4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDA0MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbG9nX21jX3RhYmxlX2VudHJ5X3N6WzB4MDAwMDVdOy8qIExvZzIgb2YgdGhlIFNpemUgb2YgbXVsdGljYXN0IGdyb3VwIG1lbWJlciAoTUdNKSBlbnRyeS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgZ3JlYXRlciB0aGFuIDUgKHRvIGFsbG93IENUUkwgYW5kIEdJRCBzZWN0aW9ucykuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGF0IGltcGxpZXMgdGhlIG51bWJlciBvZiBRUHMgcGVyIE1DIHRhYmxlIGVudHJ5LiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMDBiXTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDJbMHgwMDAxMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbG9nX21jX3RhYmxlX2hhc2hfc3pbMHgwMDAwNV07LyogTnVtYmVyIG9mIGVudHJpZXMgaW4gbXVsdGljYXN0IERHSUQgaGFzaCB0YWJsZSAobXVzdCBiZSBwb3dlciBvZiAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5JVF9IQ0EgLSB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGVudHJpZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZX0hDQSAtIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGVudHJpZXMgYXNzaWduZWQgYnkgZmlybXdhcmUgKHdpbGwgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBhbW91bnQgcmVxdWlyZWQgaW4gSU5JVF9IQ0EpICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzWzB4MDAwMWJdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWxvZ19tY190YWJsZV9zelsweDAwMDA1XTsvKiBMb2cyIG9mIHRoZSBvdmVyYWxsIG51bWJlciBvZiBNQyBlbnRyaWVzIGluIHRoZSBNQ0cgdGFibGUgKGluY2x1ZGVzIGJvdGggaGFzaCBhbmQgYXV4aWxpYXJ5IHRhYmxlcykgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDRbMHgwMDAxM107CiAgICBwc2V1ZG9fYml0X3QJbWNfaGFzaF9mblsweDAwMDAzXTsgICAvKiBNdWx0aWNhc3QgaGFzaCBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAtIERlZmF1bHQgaGFzaCBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgLSByZXNlcnZlZCAqLwogICAgcHNldWRvX2JpdF90CXVjX2dyb3VwX3N0ZWVyaW5nWzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNVsweDAwMDA0XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDZbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBRUEMvRUVDL0NRQy9FUUMvUkRCIFBhcmFtZXRlcnMgICAjIyMjIG1pY2hhbCAtIGRvZXNuJ3QgbWF0Y2ggUFJNIChmaWVsZCBuYW1lIGFyZSBkaWZmZXJzLiBzZWUgYmVsb3cpICovCgpzdHJ1Y3QgaGVybW9ucHJtX3FwY2Jhc2VhZGRyX3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDgwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlxcGNfYmFzZV9hZGRyX2hbMHgwMDAyMF07LyogUVBDIEJhc2UgQWRkcmVzcyBbNjM6MzJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSBtdXN0IGJlIGFsaWduZWQgb24gaXRzIHNpemUgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlsb2dfbnVtX29mX3FwWzB4MDAwMDVdOy8qIExvZyBiYXNlIDIgb2YgbnVtYmVyIG9mIHN1cHBvcnRlZCBRUHMgKi8KICAgIHBzZXVkb19iaXRfdAlxcGNfYmFzZV9hZGRyX2xbMHgwMDAxYl07LyogUVBDIEJhc2UgQWRkcmVzcyBbMzE6N10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlIG11c3QgYmUgYWxpZ25lZCBvbiBpdHMgc2l6ZSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMDQwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDJbMHgwMDA0MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJc3JxY19iYXNlX2FkZHJfaFsweDAwMDIwXTsvKiBTUlEgQ29udGV4dCBCYXNlIEFkZHJlc3MgWzYzOjMyXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgbXVzdCBiZSBhbGlnbmVkIG9uIGl0cyBzaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzIG1heSBiZSBzZXQgdG8gMHhGRkZGRkZGRiBpZiBTUlEgaXMgbm90IHN1cHBvcnRlZC4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlsb2dfbnVtX29mX3NycVsweDAwMDA1XTsvKiBMb2cgYmFzZSAyIG9mIG51bWJlciBvZiBzdXBwb3J0ZWQgU1JRcy4gKi8KICAgIHBzZXVkb19iaXRfdAlzcnFjX2Jhc2VfYWRkcl9sWzB4MDAwMWJdOy8qIFNSUSBDb250ZXh0IEJhc2UgQWRkcmVzcyBbMzE6NV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlIG11c3QgYmUgYWxpZ25lZCBvbiBpdHMgc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBtYXkgYmUgc2V0IHRvIDB4RkZGRkZGRkYgaWYgU1JRIGlzIG5vdCBzdXBwb3J0ZWQuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJY3FjX2Jhc2VfYWRkcl9oWzB4MDAwMjBdOy8qIENRQyBCYXNlIEFkZHJlc3MgWzYzOjMyXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgbXVzdCBiZSBhbGlnbmVkIG9uIGl0cyBzaXplICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbG9nX251bV9vZl9jcVsweDAwMDA1XTsvKiBMb2cgYmFzZSAyIG9mIG51bWJlciBvZiBzdXBwb3J0ZWQgQ1FzLiAqLwogICAgcHNldWRvX2JpdF90CWNxY19iYXNlX2FkZHJfbFsweDAwMDFiXTsvKiBDUUMgQmFzZSBBZGRyZXNzIFszMTo2XQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgbXVzdCBiZSBhbGlnbmVkIG9uIGl0cyBzaXplICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzWzB4MDAwNDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWFsdGNfYmFzZV9hZGRyX2hbMHgwMDAyMF07LyogQWx0QyBCYXNlIEFkZHJlc3MgKGFsdGNfYmFzZV9hZGRyX2gpIFs2MzozMl0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlIGhhcyBzYW1lIG51bWJlciBvZiBlbnRyaWVzIGFzIFFQQyB0YWJsZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlIG11c3QgYmUgYWxpZ25lZCB0byBlbnRyeSBzaXplLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWFsdGNfYmFzZV9hZGRyX2xbMHgwMDAyMF07LyogQWx0QyBCYXNlIEFkZHJlc3MgKGFsdGNfYmFzZV9hZGRyX2wpIFszMTowXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgaGFzIHNhbWUgbnVtYmVyIG9mIGVudHJpZXMgYXMgUVBDIHRhYmxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgbXVzdCBiZSBhbGlnbmVkIHRvIGVudHJ5IHNpemUuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0WzB4MDAwNDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWF1eGNfYmFzZV9hZGRyX2hbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJYXV4Y19iYXNlX2FkZHJfbFsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDVbMHgwMDA0MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZXFjX2Jhc2VfYWRkcl9oWzB4MDAwMjBdOy8qIEVRQyBCYXNlIEFkZHJlc3MgWzYzOjMyXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBtYXkgYmUgc2V0IHRvIDB4RkZGRkZGRkYgaWYgRVFzIGFyZSBub3Qgc3VwcG9ydGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgbXVzdCBiZSBhbGlnbmVkIHRvIGVudHJ5IHNpemUuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbG9nX251bV9vZl9lcVsweDAwMDA1XTsvKiBMb2cgYmFzZSAyIG9mIG51bWJlciBvZiBzdXBwb3J0ZWQgRVFzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBiZSA2IG9yIGxlc3MgaW4gSW5maW5pSG9zdC1JSUktRVguICovCiAgICBwc2V1ZG9fYml0X3QJZXFjX2Jhc2VfYWRkcl9sWzB4MDAwMWJdOy8qIEVRQyBCYXNlIEFkZHJlc3MgWzMxOjZdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzIG1heSBiZSBzZXQgdG8gMHhGRkZGRkZGRiBpZiBFUXMgYXJlIG5vdCBzdXBwb3J0ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSBtdXN0IGJlIGFsaWduZWQgdG8gZW50cnkgc2l6ZS4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDZbMHgwMDA0MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmRtYXJkY19iYXNlX2FkZHJfaFsweDAwMDIwXTsvKiByZG1hcmRjX2Jhc2VfYWRkcl9oOiBCYXNlIGFkZHJlc3Mgb2YgdGFibGUgdGhhdCBob2xkcyByZW1vdGUgcmVhZCBhbmQgcmVtb3RlIGF0b21pYyByZXF1ZXN0cyBbNjM6MzJdLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWxvZ19udW1fcmRbMHgwMDAwM107ICAgLyogTG9nIChiYXNlIDIpIG9mIHRoZSBtYXhpbXVtIG51bWJlciBvZiBSZG1hUmRDIGVudHJpZXMgcGVyIFFQLiBUaGlzIGRlbm90ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIG91dHN0YW5kaW5nIHJlYWRzL2F0b21pY3MgYXMgYSByZXNwb25kZXIuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ3WzB4MDAwMDJdOwogICAgcHNldWRvX2JpdF90CXJkbWFyZGNfYmFzZV9hZGRyX2xbMHgwMDAxYl07LyogcmRtYXJkY19iYXNlX2FkZHJfbDogQmFzZSBhZGRyZXNzIG9mIHRhYmxlIHRoYXQgaG9sZHMgcmVtb3RlIHJlYWQgYW5kIHJlbW90ZSBhdG9taWMgcmVxdWVzdHMgWzMxOjBdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFibGUgbXVzdCBiZSBhbGlnbmVkIHRvIFJEQiBlbnRyeSBzaXplICgzMiBieXRlcykuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ4WzB4MDAwNDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogSGVhZGVyX0xvZ19SZWdpc3RlciAqLwoKc3RydWN0IGhlcm1vbnBybV9oZWFkZXJfbG9nX3JlZ2lzdGVyX3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CXBsYWNlX2hvbGRlclsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDA2MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBQZXJmb3JtYW5jZSBNb25pdG9ycyAqLwoKc3RydWN0IGhlcm1vbnBybV9wZXJmb3JtYW5jZV9tb25pdG9yc19zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAllMFsweDAwMDAxXTsgICAgICAgICAgIC8qIEVuYWJsZXMgY291bnRpbmcgb2YgcmVzcGVjdGl2ZSBwZXJmb3JtYW5jZSBjb3VudGVyICovCiAgICBwc2V1ZG9fYml0X3QJZTFbMHgwMDAwMV07ICAgICAgICAgICAvKiBFbmFibGVzIGNvdW50aW5nIG9mIHJlc3BlY3RpdmUgcGVyZm9ybWFuY2UgY291bnRlciAqLwogICAgcHNldWRvX2JpdF90CWUyWzB4MDAwMDFdOyAgICAgICAgICAgLyogRW5hYmxlcyBjb3VudGluZyBvZiByZXNwZWN0aXZlIHBlcmZvcm1hbmNlIGNvdW50ZXIgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAwMV07CiAgICBwc2V1ZG9fYml0X3QJcjBbMHgwMDAwMV07ICAgICAgICAgICAvKiBJZiB3cml0dGVuIHRvIGFzICcxIC0gcmVzZXRzIHJlc3BlY3RpdmUgcGVyZm9ybWFuY2UgY291bnRlciwgaWYgd3JpdHRlbiB0byBheiAnMCAtIG5vIGNoYW5nZSB0byBtYXR0ZXIgKi8KICAgIHBzZXVkb19iaXRfdAlyMVsweDAwMDAxXTsgICAgICAgICAgIC8qIElmIHdyaXR0ZW4gdG8gYXMgJzEgLSByZXNldHMgcmVzcGVjdGl2ZSBwZXJmb3JtYW5jZSBjb3VudGVyLCBpZiB3cml0dGVuIHRvIGF6ICcwIC0gbm8gY2hhbmdlIHRvIG1hdHRlciAqLwogICAgcHNldWRvX2JpdF90CXIyWzB4MDAwMDFdOyAgICAgICAgICAgLyogSWYgd3JpdHRlbiB0byBhcyAnMSAtIHJlc2V0cyByZXNwZWN0aXZlIHBlcmZvcm1hbmNlIGNvdW50ZXIsIGlmIHdyaXR0ZW4gdG8gYXogJzAgLSBubyBjaGFuZ2UgdG8gbWF0dGVyICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CWkwWzB4MDAwMDFdOyAgICAgICAgICAgLyogSW50ZXJydXB0IGVuYWJsZSBvbiByZXNwZWN0aXZlIGNvdW50ZXIgb3ZlcmZsb3cuICcxIC0gaW50ZXJydXB0IGVuYWJsZWQsICcwIC0gaW50ZXJydXB0IGRpc2FibGVkLiAqLwogICAgcHNldWRvX2JpdF90CWkxWzB4MDAwMDFdOyAgICAgICAgICAgLyogSW50ZXJydXB0IGVuYWJsZSBvbiByZXNwZWN0aXZlIGNvdW50ZXIgb3ZlcmZsb3cuICcxIC0gaW50ZXJydXB0IGVuYWJsZWQsICcwIC0gaW50ZXJydXB0IGRpc2FibGVkLiAqLwogICAgcHNldWRvX2JpdF90CWkyWzB4MDAwMDFdOyAgICAgICAgICAgLyogSW50ZXJydXB0IGVuYWJsZSBvbiByZXNwZWN0aXZlIGNvdW50ZXIgb3ZlcmZsb3cuICcxIC0gaW50ZXJydXB0IGVuYWJsZWQsICcwIC0gaW50ZXJydXB0IGRpc2FibGVkLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMlsweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAlmMFsweDAwMDAxXTsgICAgICAgICAgIC8qIE92ZXJmbG93IGZsYWcuIElmIHNldCwgb3ZlcmZsb3cgb2NjdXJyZWQgb24gcmVzcGVjdGl2ZSBjb3VudGVyLiBDbGVhcmVkIGlmIHdyaXR0ZW4gdG8gYXMgJzEgKi8KICAgIHBzZXVkb19iaXRfdAlmMVsweDAwMDAxXTsgICAgICAgICAgIC8qIE92ZXJmbG93IGZsYWcuIElmIHNldCwgb3ZlcmZsb3cgb2NjdXJyZWQgb24gcmVzcGVjdGl2ZSBjb3VudGVyLiBDbGVhcmVkIGlmIHdyaXR0ZW4gdG8gYXMgJzEgKi8KICAgIHBzZXVkb19iaXRfdAlmMlsweDAwMDAxXTsgICAgICAgICAgIC8qIE92ZXJmbG93IGZsYWcuIElmIHNldCwgb3ZlcmZsb3cgb2NjdXJyZWQgb24gcmVzcGVjdGl2ZSBjb3VudGVyLiBDbGVhcmVkIGlmIHdyaXR0ZW4gdG8gYXMgJzEgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDNbMHgwMDAwMV07CiAgICBwc2V1ZG9fYml0X3QJZXZfY250MVsweDAwMDA1XTsgICAgICAvKiBTcGVjaWZpZXMgZXZlbnQgdG8gYmUgY291bnRlZCBieSBFdmVudF9jb3VudGVyMSBTZWUgWFhYIGZvciBldmVudHMnIGRlZmluaXRpb24uICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0WzB4MDAwMDNdOwogICAgcHNldWRvX2JpdF90CWV2X2NudDJbMHgwMDAwNV07ICAgICAgLyogU3BlY2lmaWVzIGV2ZW50IHRvIGJlIGNvdW50ZWQgYnkgRXZlbnRfY291bnRlcjIgU2VlIFhYWCBmb3IgZXZlbnRzJyBkZWZpbml0aW9uLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNVsweDAwMDAzXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAljbG9ja19jb3VudGVyWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWV2ZW50X2NvdW50ZXIxWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWV2ZW50X2NvdW50ZXIyWzB4MDAwMjBdOy8qIFJlYWQvd3JpdGUgZXZlbnQgY291bnRlciwgY291bnRpbmcgZXZlbnRzIHNwZWNpZmllZCBieSBFdkNudGwgYW5kIEV2Q250MiBmaWVsZHMgcmVwc2VjdGl2ZWx5LiBXaGVuIHRoZSBldmVudCBjb3VudGVyIHJlYWNoZXMgaXMgbWF4aW11bSB2YWx1ZSBvZiAweEZGRkZGRiwgdGhlIG5leHQgZXZlbnQgd2lsbCBjYXVzZSBpdCB0byByb2xsIG92ZXIgdG8gemVybywgc2V0IEYxIG9yIEYyIGJpdCByZXNwZWN0aXZlbHkgYW5kIGdlbmVyYXRlIGludGVycnVwdCBieSBJMSBJMiBiaXQgcmVzcGVjdGl2ZWx5LiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogTUxYIFdRRSBzZWdtZW50IGZvcm1hdCAqLwoKc3RydWN0IGhlcm1vbnBybV93cWVfc2VnbWVudF9jdHJsX21seF9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlvcGNvZGVbMHgwMDAwNV07ICAgICAgIC8qIG11c3QgYmUgMHhBID0gU0VORCAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDFhXTsKICAgIHBzZXVkb19iaXRfdAlvd25lclsweDAwMDAxXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlkc1sweDAwMDA2XTsgICAgICAgICAgIC8qIERlc2NyaXB0b3IgU2l6ZSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMDFhXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlmbFsweDAwMDAxXTsgICAgICAgICAgIC8qIEZvcmNlIExvb3BCYWNrICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CWNbMHgwMDAwMl07ICAgICAgICAgICAgLyogQ3JlYXRlIENRRSAoZm9yICJyZXF1ZXN0ZWQgc2lnbmFsbGluZyIgUVApICovCiAgICBwc2V1ZG9fYml0X3QJaWNyY1sweDAwMDAxXTsgICAgICAgICAvKiBsYXN0IGR3b3JkIG9mIHRoZSBwYWNrZXQ6IDAgLSBDYWxjdWxhdGUgSUNSQyBhbmQgcHV0IGl0IGluc3RlYWQgb2YgbGFzdCBkd29yZC4gMSAtIExlYXZlIGxhc3QgZHdvcmQgYXMgaXMuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzWzB4MDAwMDNdOwogICAgcHNldWRvX2JpdF90CXNsWzB4MDAwMDRdOwogICAgcHNldWRvX2JpdF90CW1heF9zdGF0cmF0ZVsweDAwMDA0XTsKICAgIHBzZXVkb19iaXRfdAlzbHJbMHgwMDAwMV07ICAgICAgICAgIC8qIDA9IHRha2Ugc2xpZCBmcm9tIHBvcnQuIDE9IHRha2Ugc2xpZCBmcm9tIGdpdmVuIGhlYWRlcnMgKi8KICAgIHBzZXVkb19iaXRfdAl2MTVbMHgwMDAwMV07ICAgICAgICAgIC8qIFNlbmQgcGFja2V0IG92ZXIgVkwxNSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNFsweDAwMDBlXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDVbMHgwMDAxMF07CiAgICBwc2V1ZG9fYml0X3QJcmxpZFsweDAwMDEwXTsgICAgICAgICAvKiBEZXN0aW5hdGlvbiBMSUQgKG11c3QgbWF0Y2ggZ2l2ZW4gaGVhZGVycykgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIFNlbmQgV1FFIHNlZ21lbnQgZm9ybWF0ICovCgpzdHJ1Y3QgaGVybW9ucHJtX3NlbmRfd3FlX3NlZ21lbnRfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX3dxZV9zZWdtZW50X2N0cmxfc2VuZF9zdAl3cWVfc2VnbWVudF9jdHJsX3NlbmQ7LyogU2VuZCB3cWUgc2VnbWVudCBjdHJsICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX3dxZV9zZWdtZW50X3JkX3N0CXdxZV9zZWdtZW50X3JkOy8qIFNlbmQgd3FlIHNlZ21lbnQgcmQgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fd3FlX3NlZ21lbnRfdWRfc3QJd3FlX3NlZ21lbnRfdWQ7LyogU2VuZCB3cWUgc2VnbWVudCB1ZCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV93cWVfc2VnbWVudF9iaW5kX3N0CXdxZV9zZWdtZW50X2JpbmQ7LyogU2VuZCB3cWUgc2VnbWVudCBiaW5kICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAxODBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV93cWVfc2VnbWVudF9yZW1vdGVfYWRkcmVzc19zdAl3cWVfc2VnbWVudF9yZW1vdGVfYWRkcmVzczsvKiBTZW5kIHdxZSBzZWdtZW50IHJlbW90ZSBhZGRyZXNzICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX3dxZV9zZWdtZW50X2F0b21pY19zdAl3cWVfc2VnbWVudF9hdG9taWM7LyogU2VuZCB3cWUgc2VnbWVudCBhdG9taWMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fZmFzdF9yZWdpc3RyYXRpb25fc2VnbWVudF9zdAlmYXN0X3JlZ2lzdHJhdGlvbl9zZWdtZW50Oy8qIEZhc3QgUmVnaXN0cmF0aW9uIFNlZ21lbnQgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fbG9jYWxfaW52YWxpZGF0ZV9zZWdtZW50X3N0CWxvY2FsX2ludmFsaWRhdGVfc2VnbWVudDsvKiBsb2NhbCBpbnZhbGlkYXRlIHNlZ21lbnQgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fd3FlX3NlZ21lbnRfZGF0YV9wdHJfc3QJd3FlX3NlZ21lbnRfZGF0YV9wdHI7LyogU2VuZCB3cWUgc2VnbWVudCBkYXRhIHB0ciAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV93cWVfc2VnbWVudF9kYXRhX2lubGluZV9zdAl3cWVfc2VnbWVudF9kYXRhX2lubGluZTsvKiBTZW5kIHdxZSBzZWdtZW50IGRhdGEgaW5saW5lICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAyMDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogUVAgYW5kIEVFIENvbnRleHQgRW50cnkgKi8KCnN0cnVjdCBoZXJtb25wcm1fcXVldWVfcGFpcl9lZV9jb250ZXh0X2VudHJ5X3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDA4XTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAwMV07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMDJdOwogICAgcHNldWRvX2JpdF90CXBtX3N0YXRlWzB4MDAwMDJdOyAgICAgLyogUGF0aCBtaWdyYXRpb24gc3RhdGUgKE1pZ3JhdGVkLCBBcm1lZCBvciBSZWFybSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLU1pZ3JhdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMC1Bcm1lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDEtUmVhcm0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLVJlc2VydmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaG91bGQgYmUgc2V0IHRvIDExIGZvciBVRCBRUHMgYW5kIGZvciBRUHMgd2hpY2ggZG8gbm90IHN1cHBvcnQgQVBNICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzWzB4MDAwMDNdOwogICAgcHNldWRvX2JpdF90CXN0WzB4MDAwMDRdOyAgICAgICAgICAgLyogVHJhbnNwb3J0IFNlcnZpY2UgVHlwZTogUkM6IDAsIFVDOiAxLCBSRDogMiwgVUQ6IDMsIEZDTU5EOjQsIEZFWENIOjUsIFNSQzo2LCBNTFggNywgUmF3IEV0aCAxMSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNFsweDAwMDA4XTsKICAgIHBzZXVkb19iaXRfdAlzdGF0ZVsweDAwMDA0XTsgICAgICAgIC8qIFFQL0VFIHN0YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAtIFJTVAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAtIElOSVQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgLSBSVFIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMgLSBSVFMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgLSBTUUVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1IC0gU1FEIChTZW5kIFF1ZXVlIERyYWluZWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2IC0gRVJSCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3IC0gU2VuZCBRdWV1ZSBEcmFpbmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCAtIFJlc2VydmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5IC0gU3VzcGVuZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBLSBGIC0gUmVzZXJ2ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChWYWxpZCBmb3IgUVVFUllfUVBFRSBhbmQgRVJSMlJTVF9RUEVFIGNvbW1hbmRzIG9ubHkpICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcGRbMHgwMDAxOF07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ1WzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNlsweDAwMDA0XTsKICAgIHBzZXVkb19iaXRfdAlybGt5WzB4MDAwMDFdOyAgICAgICAgIC8qIFdoZW4gc2V0IHRoaXMgUVAgY2FuIHVzZSB0aGUgUmVzZXJ2ZWQgTF9LZXkgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDdbMHgwMDAwM107CiAgICBwc2V1ZG9fYml0X3QJbG9nX3NxX3N0cmlkZVsweDAwMDAzXTsvKiBTdHJpZGUgb24gdGhlIHNlbmQgcXVldWUuIFdRIGVudHJ5IGlzIDE2KigyXmxvZ19TUV9zdHJpZGUpIGJ5dGVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaWRlIG11c3QgYmUgZXF1YWwgb3IgYmlnZ2VyIHRoZW4gNjQgYnl0ZXMgKG1pbmltdW0gbG9nX1JRX3N0cmlkZSB2YWx1ZSBhbGxvd2VkIGlzIDIpLiAqLwogICAgcHNldWRvX2JpdF90CWxvZ19zcV9zaXplWzB4MDAwMDRdOyAgLyogTG9nMiBvZiB0aGUgTnVtYmVyIG9mIFdRRXMgaW4gdGhlIFNlbmQgUXVldWUuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ4WzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CWxvZ19ycV9zdHJpZGVbMHgwMDAwM107LyogU3RyaWRlIG9uIHRoZSByZWNlaXZlIHF1ZXVlLiBXUSBlbnRyeSBpcyAxNiooMl5sb2dfUlFfc3RyaWRlKSBieXRlcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmlkZSBtdXN0IGJlIGVxdWFsIG9yIGJpZ2dlciB0aGVuIDY0IGJ5dGVzIChtaW5pbXVtIGxvZ19SUV9zdHJpZGUgdmFsdWUgYWxsb3dlZCBpcyAyKS4gKi8KICAgIHBzZXVkb19iaXRfdAlsb2dfcnFfc2l6ZVsweDAwMDA0XTsgIC8qIExvZzIgb2YgdGhlIE51bWJlciBvZiBXUUVzIGluIHRoZSBSZWNlaXZlIFF1ZXVlLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkOVsweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAltc2dfbWF4WzB4MDAwMDVdOyAgICAgIC8qIE1heCBtZXNzYWdlIHNpemUgYWxsb3dlZCBvbiB0aGUgUVAuIE1heGltdW0gbWVzc2FnZSBzaXplIGlzIDJebXNnX01heC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgZXF1YWwgdG8gTVRVIGZvciBVRCBhbmQgTUxYIFFQcy4gKi8KICAgIHBzZXVkb19iaXRfdAltdHVbMHgwMDAwM107ICAgICAgICAgIC8qIE1UVSBvZiB0aGUgUVAgKE11c3QgYmUgdGhlIHNhbWUgZm9yIGJvdGggcGF0aHM6IHByaW1hcnkgYW5kIGFsdGVybmF0aXZlKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MSAtIDI1NiBieXRlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyIC0gNTEyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDMgLSAxMDI0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQgLSAyMDQ4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciAtIHJlc2VydmVkCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hvdWxkIGJlIGNvbmZpZ3VyZWQgdG8gMHg0IGZvciBVRCBhbmQgTUxYIFFQcy4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAl1c3JfcGFnZVsweDAwMDE4XTsgICAgIC8qIFVBUiBudW1iZXIgdG8gcmluZyBkb29yYmVsbHMgZm9yIHRoaXMgUVAgKGFsaWFzZWQgdG8gZG9vcmJlbGwgYW5kIEJsdWUgRmxhbWUgcGFnZXMpICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxMFsweDAwMDA4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlsb2NhbF9xcG5fZWVuWzB4MDAwMThdOy8qIExvY2FsIFFQL0VFIG51bWJlciBMb3dlciBiaXRzIGRldGVybWluZSBwb3NpdGlvbiBvZiB0aGlzIHJlY29yZCBpbiBRUEMgdGFibGUsIGFuZCAtIHRodXMgLSBjb25zdHJhaW5lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWVsZCBpcyB2YWxpZCBmb3IgUVVFUlkgYW5kIEVSUjJSU1QgY29tbWFuZHMgb25seS4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDExWzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlbW90ZV9xcG5fZWVuWzB4MDAwMThdOy8qIFJlbW90ZSBRUC9FRSBudW1iZXIgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDEyWzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9hZGRyZXNzX3BhdGhfc3QJcHJpbWFyeV9hZGRyZXNzX3BhdGg7LyogUHJpbWFyeSBhZGRyZXNzIHBhdGggZm9yIHRoZSBRUC9FRSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9hZGRyZXNzX3BhdGhfc3QJYWx0ZXJuYXRpdmVfYWRkcmVzc19wYXRoOy8qIEFsdGVybmF0ZSBhZGRyZXNzIHBhdGggZm9yIHRoZSBRUC9FRSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMTNbMHgwMDAwM107CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxNFsweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDE1WzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CWN1cl9yZXRyeV9jbnRbMHgwMDAwM107LyogQ3VycmVudCB0cmFuc3BvcnQgcmV0cnkgY291bnRlciAoUVVFUllfUVBFRSBvbmx5KS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjdXJyZW50IHRyYW5zcG9ydCByZXRyeSBjb3VudGVyIGNhbiB2YXJ5IGZyb20gcmV0cnlfY291bnQgZG93biB0byAxLCB3aGVyZSAxIG1lYW5zIHRoYXQgdGhlIGxhc3QgcmV0cnkgYXR0ZW1wdCBpcyBjdXJyZW50bHkgZXhlY3V0aW5nLiAqLwogICAgcHNldWRvX2JpdF90CWN1cl9ybnJfcmV0cnlbMHgwMDAwM107LyogQ3VycmVudCBSTlIgcmV0cnkgY291bnRlciAoUVVFUllfUVBFRSBvbmx5KS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBjdXJyZW50IFJOUiByZXRyeSBjb3VudGVyIGNhbiB2YXJ5IGZyb20gcm5yX3JldHJ5IHRvIDEsIHdoZXJlIDEgbWVhbnMgdGhhdCB0aGUgbGFzdCByZXRyeSBhdHRlbXB0IGlzIGN1cnJlbnRseSBleGVjdXRpbmcuICovCiAgICBwc2V1ZG9fYml0X3QJZnJlWzB4MDAwMDFdOyAgICAgICAgICAvKiBGYXN0IFJlZ2lzdHJhdGlvbiBXb3JrIFJlcXVlc3QgRW5hYmxlZC4gKFJlc2VydmVkIGZvciBFRSkgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDE2WzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CXJucl9yZXRyeVsweDAwMDAzXTsKICAgIHBzZXVkb19iaXRfdAlyZXRyeV9jb3VudFsweDAwMDAzXTsgIC8qIFRyYW5zcG9ydCB0aW1lb3V0IFJldHJ5IGNvdW50ICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxN1sweDAwMDAyXTsKICAgIHBzZXVkb19iaXRfdAlzcmFfbWF4WzB4MDAwMDNdOyAgICAgIC8qIE1heGltdW0gbnVtYmVyIG9mIG91dHN0YW5kaW5nIFJETUEtcmVhZC9BdG9taWMgb3BlcmF0aW9ucyBhbGxvd2VkIGluIHRoZSBzZW5kIHF1ZXVlLiBNYXhpbXVtIG51bWJlciBpcyAyXlNSQV9NYXguIE11c3QgYmUgemVybyBpbiBFRSBjb250ZXh0LiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMThbMHgwMDAwNF07CiAgICBwc2V1ZG9fYml0X3QJYWNrX3JlcV9mcmVxWzB4MDAwMDRdOyAvKiBBQ0sgcmVxdWlyZWQgZnJlcXVlbmN5LiBBQ0sgcmVxdWlyZWQgYml0IHdpbGwgYmUgc2V0IGluIGV2ZXJ5IDJeQWNrUmVxRnJlcSBwYWNrZXRzIGF0IGxlYXN0LiBOb3QgdmFsaWQgZm9yIFJEIFFQLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMTlbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbmV4dF9zZW5kX3BzblsweDAwMDE4XTsvKiBOZXh0IFBTTiB0byBiZSBzZW50ICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyMFsweDAwMDA4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAljcW5fc25kWzB4MDAwMThdOyAgICAgIC8qIENRIG51bWJlciBjb21wbGV0aW9ucyBmcm9tIHRoZSBzZW5kIHF1ZXVlIHRvIGJlIHJlcG9ydGVkIHRvLiBOb3QgdmFsaWQgKHJlc2VydmVkKSBpbiBFRSBjb250ZXh0LiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMjFbMHgwMDAwOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyMlsweDAwMDQwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlsYXN0X2Fja2VkX3BzblsweDAwMDE4XTsvKiBUaGUgbGFzdCBhY2tub3dsZWRnZWQgUFNOIGZvciB0aGUgcmVxdWVzdGVyIChRVUVSWV9RUEVFIG9ubHkpICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyM1sweDAwMDA4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlzc25bMHgwMDAxOF07ICAgICAgICAgIC8qIFJlcXVlc3RlciBTZW5kIFNlcXVlbmNlIE51bWJlciAoUVVFUllfUVBFRSBvbmx5KSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMjRbMHgwMDAwOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyNVsweDAwMDA0XTsKICAgIHBzZXVkb19iaXRfdAlyaWNbMHgwMDAwMV07ICAgICAgICAgIC8qIEludmFsaWQgQ3JlZGl0cy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLSBwbGFjZSAiSW52YWxpZCBDcmVkaXRzIiB0byBBQ0tzIHNlbnQgZnJvbSB0aGlzIHF1ZXVlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAtIEFDS3MgcmVwb3J0IHRoZSBhY3R1YWwgbnVtYmVyIG9mIGVuZCB0byBlbmQgY3JlZGl0cyBvbiB0aGUgY29ubmVjdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdCB2YWxpZCAocmVzZXJ2ZWQpIGluIEVFIGNvbnRleHQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIHNldCB0byAxIG9uIFFQcyB3aGljaCBhcmUgYXR0YWNoZWQgdG8gU1JRLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMjZbMHgwMDAwMV07CiAgICBwc2V1ZG9fYml0X3QJcGFnZV9vZmZzZXRbMHgwMDAwNl07ICAvKiBzdGFydCBhZGRyZXNzIG9mIHdxZXMgaW4gZmlyc3QgcGFnZSAoMTE6NiksIGJpdHMgWzU6MF0gcmVzZXJ2ZWQgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDI3WzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CXJhZVsweDAwMDAxXTsgICAgICAgICAgLyogSWYgc2V0IC0gQXRvbWljIG9wZXJhdGlvbnMgZW5hYmxlZC4gb24gcmVjZWl2ZSBxdWV1ZS4gTm90IHZhbGlkIChyZXNlcnZlZCkgaW4gRUUgY29udGV4dC4gKi8KICAgIHBzZXVkb19iaXRfdAlyd2VbMHgwMDAwMV07ICAgICAgICAgIC8qIElmIHNldCAtIFJETUEgLSB3cml0ZSBlbmFibGVkIG9uIHJlY2VpdmUgcXVldWUuIE5vdCB2YWxpZCAocmVzZXJ2ZWQpIGluIEVFIGNvbnRleHQuICovCiAgICBwc2V1ZG9fYml0X3QJcnJlWzB4MDAwMDFdOyAgICAgICAgICAvKiBJZiBzZXQgLSBSRE1BIC0gcmVhZCBlbmFibGVkIG9uIHJlY2VpdmUgcXVldWUuIE5vdCB2YWxpZCAocmVzZXJ2ZWQpIGluIEVFIGNvbnRleHQuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyOFsweDAwMDA1XTsKICAgIHBzZXVkb19iaXRfdAlycmFfbWF4WzB4MDAwMDNdOyAgICAgIC8qIE1heGltdW0gbnVtYmVyIG9mIG91dHN0YW5kaW5nIFJETUEtcmVhZC9BdG9taWMgb3BlcmF0aW9ucyBhbGxvd2VkIG9uIHJlY2VpdmUgcXVldWUgaXMgMl5SUkFfTWF4LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBiZSAwIGZvciBFRSBjb250ZXh0LiAqLwogICAgcHNldWRvX2JpdF90CXBoeXNpY2FsX2Z1bmN0aW9uWzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW5leHRfcmN2X3BzblsweDAwMDE4XTsgLyogTmV4dCAoZXhwZWN0ZWQpIFBTTiBvbiByZWNlaXZlICovCiAgICBwc2V1ZG9fYml0X3QJbWluX3Jucl9uYWtbMHgwMDAwNV07ICAvKiBNaW5pbXVtIFJOUiBOQUsgdGltZXIgdmFsdWUgKFRUVFRUIGZpZWxkIGVuY29kaW5nIGFjY29yZGluZyB0byB0aGUgSUIgc3BlYyBWb2wxIDkuNy41LjIuOCkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3QgdmFsaWQgKHJlc2VydmVkKSBpbiBFRSBjb250ZXh0LiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMzBbMHgwMDAwM107Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJc3JjZFsweDAwMDEwXTsgICAgICAgICAvKiBTY2FsYWJsZSBSZWxpYWJsZSBDb25uZWN0aW9uIERvbWFpbi4gVmFsaWQgZm9yIFNSQyB0cmFuc3BvcnQgc2VydmljZSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMzFbMHgwMDAxMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJY3FuX3JjdlsweDAwMDE4XTsgICAgICAvKiBDUSBudW1iZXIgY29tcGxldGlvbnMgZnJvbSByZWNlaXZlIHF1ZXVlIHRvIGJlIHJlcG9ydGVkIHRvLiBOb3QgdmFsaWQgKHJlc2VydmVkKSBpbiBFRSBjb250ZXh0LiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMzJbMHgwMDAwOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZGJfcmVjb3JkX2FkZHJfaFsweDAwMDIwXTsvKiBRUCBEQiBSZWNvcmQgcGh5c2ljYWwgYWRkcmVzcyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMzNbMHgwMDAwMl07CiAgICBwc2V1ZG9fYml0X3QJZGJfcmVjb3JkX2FkZHJfbFsweDAwMDFlXTsvKiBRUCBEQiBSZWNvcmQgcGh5c2ljYWwgYWRkcmVzcyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXFfa2V5WzB4MDAwMjBdOyAgICAgICAgLyogUV9LZXkgdG8gYmUgdmFsaWRhdGVkIGFnYWluc3QgcmVjZWl2ZWQgZGF0YWdyYW1zLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT24gc2VuZCBkYXRhZ3JhbXMsIGlmIFFfS2V5WzMxXSBzcGVjaWZpZWQgaW4gdGhlIFdRRSBpcyBzZXQsIHRoZW4gdGhpcyBRX0tleSB3aWxsIGJlIHRyYW5zbWl0dGVkIGluIHRoZSBvdXRnb2luZyBtZXNzYWdlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IHZhbGlkIChyZXNlcnZlZCkgaW4gRUUgY29udGV4dC4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlzcnFuWzB4MDAwMThdOyAgICAgICAgIC8qIFNSUU4gLSBTaGFyZWQgUmVjZWl2ZSBRdWV1ZSBOdW1iZXIgLSBzcGVjaWZpZXMgdGhlIFNSUSBudW1iZXIgZnJvbSB3aGljaCB0aGUgUVAgZGVxdWV1ZXMgcmVjZWl2ZSBkZXNjcmlwdG9ycy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNSUU4gaXMgdmFsaWQgb25seSBpZiBTUlEgYml0IGlzIHNldC4gTm90IHZhbGlkIChyZXNlcnZlZCkgaW4gRUUgY29udGV4dC4gKi8KICAgIHBzZXVkb19iaXRfdAlzcnFbMHgwMDAwMV07ICAgICAgICAgIC8qIFNSUSAtIFNoYXJlZCBSZWNlaXZlIFF1ZXVlLiBJZiB0aGlzIGJpdCBpcyBzZXQsIHRoZW4gdGhlIFFQIGlzIGFzc29jaWF0ZWQgd2l0aCBhIFNSUS4gTm90IHZhbGlkIChyZXNlcnZlZCkgaW4gRUUgY29udGV4dC4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM0WzB4MDAwMDddOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJtc25bMHgwMDAxOF07ICAgICAgICAgLyogUmVzcG9uZGVyIGN1cnJlbnQgbWVzc2FnZSBzZXF1ZW5jZSBudW1iZXIgKFFVRVJZX1FQRUUgb25seSkgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM1WzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXNxX3dxZV9jb3VudGVyWzB4MDAwMTBdOy8qIEEgMTZiaXRzIGNvdW50ZXIgdGhhdCBpcyBpbmNyZW1lbnRlZCBmb3IgZWFjaCBXUUUgcG9zdGVkIHRvIHRoZSBTUS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgMHgwIGluIFNRIGluaXRpYWxpemF0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFFVRVJZX1FQRUUgb25seSkuICovCiAgICBwc2V1ZG9fYml0X3QJcnFfd3FlX2NvdW50ZXJbMHgwMDAxMF07LyogQSAxNmJpdHMgY291bnRlciB0aGF0IGlzIGluY3JlbWVudGVkIGZvciBlYWNoIFdRRSBwb3N0ZWQgdG8gdGhlIFJRLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBiZSAweDAgaW4gUlEgaW5pdGlhbGl6YXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUVVFUllfUVBFRSBvbmx5KS4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM2WzB4MDAwNDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJtY19wYXJlbnRfcXBuWzB4MDAwMThdOy8qIHJlbGlhYmxlIG11bHRpY2FzdCBwYXJlbnQgcXVldWUgbnVtYmVyICovCiAgICBwc2V1ZG9fYml0X3QJaHNbMHgwMDAwMV07ICAgICAgICAgICAvKiBIZWFkZXIgU2VwYXJhdGlvbi4gSWYgc2V0LCB0aGUgYnl0ZSBjb3VudCBvZiB0aGUgZmlyc3Qgc2NhdHRlciBlbnRyeSB3aWxsIGJlIGlnbm9yZWQuIFRoZSBidWZmZXIgc3BlY2lmaWVkIGJ5IHRoZSBmaXJzdCBzY2F0dGVyIGVudHJ5IHdpbGwgY29udGFpbiBwYWNrZXQgaGVhZGVycyAodXAgdG8gVENQKS4gQ1FFIHdpbGwgcmVwb3J0IG51bWJlciBvZiBieXRlcyBzY2F0dGVyZWQgdG8gdGhlIGZpcnN0IHNjYXR0ZXIgZW50cnkuIEludGVuZGVkIGZvciB1c2Ugb24gSVBvdmVySUIgb24gVUQgUVAgb3IgUmF3IEV0aGVybmV0IFFQLiAqLwogICAgcHNldWRvX2JpdF90CWlzWzB4MDAwMDFdOyAgICAgICAgICAgLyogd2hlbiBzZXQgLSBpbmxpbmUgc2NhdHRlciBpcyBlbmFibGVkIGZvciB0aGlzIFJRICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzN1sweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAlybWVbMHgwMDAwMl07ICAgICAgICAgIC8qIFJlbGlhYmxlIE11bHRpY2FzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAgLSBkaXNhYmxlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDEgLSBwYXJlbnQgUVAgKHJlcXVlc3RlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwIC0gY2hpbGQgUVAgKHJlcXVlc3RlcikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExIC0gcmVzcG9uZGVyIFFQCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlIHRoYXQgUmVsaWFibGUgTXVsdGljYXN0IGlzIGEgcHJlbGltaW5hcnkgZGVmaW5pdGlvbiB3aGljaCBjYW4gYmUgc3ViamVjdCB0byBjaGFuZ2UuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzOFsweDAwMDAyXTsKICAgIHBzZXVkb19iaXRfdAlta2V5X3JtcFsweDAwMDAxXTsgICAgIC8qIElmIHNldCwgTUtleSB1c2VkIHRvIGFjY2VzcyBUUFQgZm9yIGluY29taW5nIFJETUEtd3JpdGUgcmVxdWVzdCBpcyBjYWxjdWxhdGVkIGJ5IGFkZGluZyBNS2V5IGZyb20gdGhlIHBhY2tldCB0byBiYXNlX01LZXkgZmllbGQgaW4gdGhlIFFQQy4gQ2FuIGJlIHNldCBvbmx5IGZvciBRUHMgdGhhdCBhcmUgbm90IHRhcmdldCBmb3IgUkRNQS1yZWFkIHJlcXVlc3QuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJYmFzZV9ta2V5WzB4MDAwMThdOyAgICAvKiBCYXNlIE1rZXkgYml0cyBbMzE6OF0uIExvd2VyIDggYml0cyBtdXN0IGJlIHplcm8uICovCiAgICBwc2V1ZG9fYml0X3QJbnVtX3JtY19wZWVyc1sweDAwMDA4XTsvKiBOdW1iZXIgb2YgcmVtb3RlIHBlZXJzIGluIFJlbGlhYmxlIE11bHRpY2FzdCBncm91cCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW10dF9iYXNlX2FkZHJfaFsweDAwMDA4XTsvKiBNVFQgQmFzZSBBZGRyZXNzIFszOTozMl0gaW4gSUNNIHJlbGF0aXZlIHRvIElOSVRfSENBLm10dF9iYXNlX2FkZHIgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM5WzB4MDAwMTBdOwogICAgcHNldWRvX2JpdF90CWxvZzJfcGFnZV9zaXplWzB4MDAwMDZdOy8qIExvZyAoYmFzZSAyKSBvZiBNVFQgcGFnZSBzaXplIGluIHVuaXRzIG9mIDRLQnl0ZSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNDBbMHgwMDAwMl07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0MVsweDAwMDAzXTsKICAgIHBzZXVkb19iaXRfdAltdHRfYmFzZV9hZGRyX2xbMHgwMDAxZF07LyogTVRUIEJhc2UgQWRkcmVzcyBbMzE6M10gaW4gSUNNIHJlbGF0aXZlIHRvIElOSVRfSENBLm10dF9iYXNlX2FkZHIgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAl2ZnRfbGFuWzB4MDAwMGNdOwogICAgcHNldWRvX2JpdF90CXZmdF9wcmlvWzB4MDAwMDNdOyAgICAgLyogVGhlIFByaW9yaXR5IGZpbGVkIGluIHRoZSBWRlQgaGVhZGVyIGZvciBGQ1AgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQyWzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CWNzX2N0bFsweDAwMDA5XTsgICAgICAgLyogVGhlIFByaW9yaXR5IGZpbGVkIGluIHRoZSBWRlQgaGVhZGVyIGZvciBGQ1AgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQzWzB4MDAwMDZdOwogICAgcHNldWRvX2JpdF90CXZlWzB4MDAwMDFdOyAgICAgICAgICAgLyogU2hvdWxkIHdlIGFkZC9jaGVjayB0aGUgVkZUIGhlYWRlciAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWV4Y2hfYmFzZVsweDAwMDEwXTsgICAgLyogRm9yIGluaXQgUVAgb25seSAtIFRoZSBiYXNlIGV4Y2hhbmdlcyAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNDRbMHgwMDAwOF07CiAgICBwc2V1ZG9fYml0X3QJZXhjaF9zaXplWzB4MDAwMDRdOyAgICAvKiBGb3IgQ01NRCBRUCBvbmx5IC0gVGhlIHNpemUgKGZyb20gYmFzZSkgZXhjaGFuZ2VzIGlzIDJleGNoYW5nZXNfc2l6ZSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNDVbMHgwMDAwM107CiAgICBwc2V1ZG9fYml0X3QJZmNbMHgwMDAwMV07ICAgICAgICAgICAvKiBXaGVuIHNldCBpdCBtZWFuIHRoYXQgdGhpcyBRUCBpcyB1c2VkIGZvciBGSUJSRSBDSEFOTkVMLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlbW90ZV9pZFsweDAwMDE4XTsgICAgLyogUGVlciBOWCBwb3J0IElEICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0NlsweDAwMDA4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlmY3BfbXR1WzB4MDAwMGFdOyAgICAgIC8qIEluIDQqQnl0ZXMgdW5pdHMuIFRoZSBNVFUgU2l6ZSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNDdbMHgwMDAwNl07CiAgICBwc2V1ZG9fYml0X3QJbXlfaWRfaW5keFsweDAwMDA4XTsgICAvKiBJbmRleCB0byBNeSBOWCBwb3J0IElEIHRhYmxlICovCiAgICBwc2V1ZG9fYml0X3QJdmZ0X2hvcF9jb3VudFsweDAwMDA4XTsvKiBIb3BDbnQgdmFsdWUgZm9yIHRoZSBWRlQgaGVhZGVyICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0OFsweDAwMGMwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qICAqLwoKc3RydWN0IGhlcm1vbnBybV9tY2dfcXBfZHdfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJcXBuWzB4MDAwMThdOwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDA2XTsKICAgIHBzZXVkb19iaXRfdAlibGNrX2xiWzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMDAxXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIENsZWFyIEludGVycnVwdCBbNjM6MF0gICAgICAgICAgICAgICMjIyMgbWljaGFsIC0gbWF0Y2ggdG8gUFJNICovCgpzdHJ1Y3QgaGVybW9ucHJtX2Nscl9pbnRfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJY2xyX2ludF9oWzB4MDAwMjBdOyAgICAvKiBDbGVhciBJbnRlcnJ1cHQgWzYzOjMyXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUgdHJhbnNhY3Rpb25zIHRvIHRoaXMgcmVnaXN0ZXIgd2lsbCBjbGVhciAoZGUtYXNzZXJ0KSB0aGUgdmlydHVhbCBpbnRlcnJ1cHQgb3V0cHV0IHBpbnMgb2YgSW5maW5pSG9zdC1JSUktRVguIFRoZSB2YWx1ZSB0byBiZSB3cml0dGVuIGluIHRoaXMgcmVnaXN0ZXIgaXMgb2J0YWluZWQgYnkgZXhlY3V0aW5nIFFVRVJZX0FEQVBURVIgY29tbWFuZCBvbiBjb21tYW5kIGludGVyZmFjZSBhZnRlciBzeXN0ZW0gYm9vdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcmVnaXN0ZXIgaXMgd3JpdGUtb25seS4gUmVhZGluZyBmcm9tIHRoaXMgcmVnaXN0ZXIgd2lsbCBjYXVzZSB1bmRlZmluZWQgcmVzdWx0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAljbHJfaW50X2xbMHgwMDAyMF07ICAgIC8qIENsZWFyIEludGVycnVwdCBbMzE6MF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlIHRyYW5zYWN0aW9ucyB0byB0aGlzIHJlZ2lzdGVyIHdpbGwgY2xlYXIgKGRlLWFzc2VydCkgdGhlIHZpcnR1YWwgaW50ZXJydXB0IG91dHB1dCBwaW5zIG9mIEluZmluaUhvc3QtSUlJLUVYLiBUaGUgdmFsdWUgdG8gYmUgd3JpdHRlbiBpbiB0aGlzIHJlZ2lzdGVyIGlzIG9idGFpbmVkIGJ5IGV4ZWN1dGluZyBRVUVSWV9BREFQVEVSIGNvbW1hbmQgb24gY29tbWFuZCBpbnRlcmZhY2UgYWZ0ZXIgc3lzdGVtIGJvb3QuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHJlZ2lzdGVyIGlzIHdyaXRlLW9ubHkuIFJlYWRpbmcgZnJvbSB0aGlzIHJlZ2lzdGVyIHdpbGwgY2F1c2UgdW5kZWZpbmVkIHJlc3VsdCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogRVEgU2V0IENJIERCcyBUYWJsZSAqLwoKc3RydWN0IGhlcm1vbnBybV9lcV9zZXRfY2lfdGFibGVfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJZXEwX3NldF9jaVsweDAwMDIwXTsgICAvKiBFUTBfU2V0X0NJICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMV9zZXRfY2lbMHgwMDAyMF07ICAgLyogRVExX1NldF9DSSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAllcTJfc2V0X2NpWzB4MDAwMjBdOyAgIC8qIEVRMl9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDJbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZXEzX3NldF9jaVsweDAwMDIwXTsgICAvKiBFUTNfU2V0X0NJICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNF9zZXRfY2lbMHgwMDAyMF07ICAgLyogRVE0X1NldF9DSSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNFsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAllcTVfc2V0X2NpWzB4MDAwMjBdOyAgIC8qIEVRNV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDVbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZXE2X3NldF9jaVsweDAwMDIwXTsgICAvKiBFUTZfU2V0X0NJICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ2WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxN19zZXRfY2lbMHgwMDAyMF07ICAgLyogRVE3X1NldF9DSSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkN1sweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAllcThfc2V0X2NpWzB4MDAwMjBdOyAgIC8qIEVROF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDhbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZXE5X3NldF9jaVsweDAwMDIwXTsgICAvKiBFUTlfU2V0X0NJICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ5WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMTBfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVExMF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDEwWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMTFfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVExMV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDExWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMTJfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVExMl9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDEyWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMTNfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVExM19TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDEzWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMTRfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVExNF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDE0WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMTVfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVExNV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDE1WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMTZfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVExNl9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDE2WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMTdfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVExN19TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDE3WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMThfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVExOF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDE4WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMTlfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVExOV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDE5WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMjBfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEyMF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDIwWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMjFfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEyMV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDIxWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMjJfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEyMl9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDIyWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMjNfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEyM19TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDIzWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMjRfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEyNF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDI0WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMjVfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEyNV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDI1WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMjZfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEyNl9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDI2WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMjdfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEyN19TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDI3WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMjhfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEyOF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDI4WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMjlfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEyOV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDI5WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMzBfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEzMF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDMwWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMzFfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEzMV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDMxWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMzJfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEzMl9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDMyWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMzNfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEzM19TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDMzWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMzRfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEzNF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM0WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMzVfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEzNV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM1WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMzZfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEzNl9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM2WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMzdfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEzN19TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM3WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMzhfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEzOF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM4WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxMzlfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVEzOV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM5WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNDBfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE0MF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQwWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNDFfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE0MV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQxWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNDJfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE0Ml9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQyWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNDNfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE0M19TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQzWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNDRfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE0NF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQ0WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNDVfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE0NV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQ1WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNDZfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE0Nl9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQ2WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNDdfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE0N19TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQ3WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNDhfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE0OF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQ4WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNDlfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE0OV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQ5WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNTBfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE1MF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDUwWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNTFfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE1MV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDUxWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNTJfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE1Ml9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDUyWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNTNfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE1M19TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDUzWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNTRfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE1NF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDU0WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNTVfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE1NV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDU1WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNTZfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE1Nl9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDU2WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNTdfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE1N19TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDU3WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNThfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE1OF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDU4WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNTlfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE1OV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDU5WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNjBfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE2MF9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDYwWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNjFfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE2MV9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDYxWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNjJfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE2Ml9TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDYyWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVxNjNfc2V0X2NpWzB4MDAwMjBdOyAgLyogRVE2M19TZXRfQ0kgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDYzWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogSW5maW5pSG9zdC1JSUktRVggQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMgICAgICMjIyMgbWljaGFsIC0gbWF0Y2ggdG8gUFJNICovCgpzdHJ1Y3QgaGVybW9ucHJtX2NvbmZpZ3VyYXRpb25fcmVnaXN0ZXJzX3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDQwMzQwMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX2hjYV9jb21tYW5kX3JlZ2lzdGVyX3N0CWhjYV9jb21tYW5kX2ludGVyZmFjZV9yZWdpc3RlcjsvKiBIQ0EgQ29tbWFuZCBSZWdpc3RlciAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDNmY2IyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBRUF9EQl9SZWNvcmQgICAgICAgICAjIyMgbWljaGFsID0gZ2Ryb3IgZml4ZWQgKi8KCnN0cnVjdCBoZXJtb25wcm1fcXBfZGJfcmVjb3JkX3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CXJlY2VpdmVfd3FlX2NvdW50ZXJbMHgwMDAxMF07LyogTW9kdWxvLTY0SyBjb3VudGVyIG9mIFdRRXMgcG9zdGVkIHRvIHRoZSBRUCBzaW5jZSBpdHMgY3JlYXRpb24uIFNob3VsZCBiZSBpbml0aWFsaXplZCB0byB6ZXJvLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDEwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIENRX0FSTV9EQl9SZWNvcmQgKi8KCnN0cnVjdCBoZXJtb25wcm1fY3FfYXJtX2RiX3JlY29yZF9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAljb3VudGVyWzB4MDAwMjBdOyAgICAgIC8qIENRIGNvdW50ZXIgZm9yIHRoZSBhcm1pbmcgcmVxdWVzdCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWNtZFsweDAwMDAzXTsgICAgICAgICAgLyogMHgwIC0gTm8gY29tbWFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxIC0gUmVxdWVzdCBub3RpZmljYXRpb24gZm9yIG5leHQgU29saWNpdGVkIGNvbXBsZXRpb24gZXZlbnQuIENvdW50ZXIgZmlsZWQgc3BlY2lmaWVzIHRoZSBjdXJyZW50IENRIENvbnN1bWVyIENvdW50ZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIgLSBSZXF1ZXN0IG5vdGlmaWNhdGlvbiBmb3IgbmV4dCBTb2xpY2l0ZWQgb3IgVW5zb2xpY2l0ZWQgY29tcGxldGlvbiBldmVudC4gQ291bnRlciBmaWxlZCBzcGVjaWZpZXMgdGhlIGN1cnJlbnQgQ1EgQ29uc3VtZXIgY291bnRlci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MyAtIFJlcXVlc3Qgbm90aWZpY2F0aW9uIGZvciBtdWx0aXBsZSBjb21wbGV0aW9ucyAoQXJtLU4pLiBDb3VudGVyIGZpbGVkIHNwZWNpZmllcyB0aGUgdmFsdWUgb2YgdGhlIENRIEluZGV4IHRoYXQgd2hlbiByZWFjaGVkIGJ5IEhXIChpLmUuIEhXIGdlbmVyYXRlcyBhIENRRSBpbnRvIHRoaXMgSW5kZXgpIEV2ZW50IHdpbGwgYmUgZ2VuZXJhdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdGhlciAtIFJlc2VydmVkICovCiAgICBwc2V1ZG9fYml0X3QJY21kX3NuWzB4MDAwMDJdOyAgICAgICAvKiBDb21tYW5kIFNlcXVlbmNlIE51bWJlciAtIFNlZSBUYWJsZSAzNSwgIkNRIERvb3JiZWxsIExheW91dCIgZm9yIGRlZmluaXRpb24gb2YgdGhpcyBmaWxlZCAqLwogICAgcHNldWRvX2JpdF90CXJlc1sweDAwMDAzXTsgICAgICAgICAgLyogTXVzdCBiZSAweDIgKi8KICAgIHBzZXVkb19iaXRfdAljcV9udW1iZXJbMHgwMDAxOF07ICAgIC8qIENRIG51bWJlciAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogQ1FfQ0lfREJfUmVjb3JkICovCgpzdHJ1Y3QgaGVybW9ucHJtX2NxX2NpX2RiX3JlY29yZF9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAljb3VudGVyWzB4MDAwMjBdOyAgICAgIC8qIENRIGNvdW50ZXIgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAwNV07CiAgICBwc2V1ZG9fYml0X3QJcmVzWzB4MDAwMDNdOyAgICAgICAgICAvKiBNdXN0IGJlIDB4MSAqLwogICAgcHNldWRvX2JpdF90CWNxX251bWJlclsweDAwMDE4XTsgICAgLyogQ1EgbnVtYmVyICovCi8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBWaXJ0dWFsX1BoeXNpY2FsX01hcHBpbmcgKi8KCnN0cnVjdCBoZXJtb25wcm1fdmlydHVhbF9waHlzaWNhbF9tYXBwaW5nX3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CXZhX2hbMHgwMDAyMF07ICAgICAgICAgLyogVmlydHVhbCBBZGRyZXNzWzYzOjMyXS4gVmFsaWQgb25seSBmb3IgTUFQX0lDTSBjb21tYW5kLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDBjXTsKICAgIHBzZXVkb19iaXRfdAl2YV9sWzB4MDAwMTRdOyAgICAgICAgIC8qIFZpcnR1YWwgQWRkcmVzc1szMToxMl0uIFZhbGlkIG9ubHkgZm9yIE1BUF9JQ00gY29tbWFuZC4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlwYV9oWzB4MDAwMjBdOyAgICAgICAgIC8qIFBoeXNpY2FsIEFkZHJlc3NbNjM6MzJdICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbG9nMnNpemVbMHgwMDAwNl07ICAgICAvKiBMb2cyIG9mIHRoZSBzaXplIGluIDRLQiBwYWdlcyBvZiB0aGUgcGh5c2ljYWwgYW5kIHZpcnR1YWwgY29udGlndW91cyBtZW1vcnkgdGhhdCBzdGFydHMgYXQgUEFfTC9IIGFuZCBWQV9ML0ggKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAwNl07CiAgICBwc2V1ZG9fYml0X3QJcGFfbFsweDAwMDE0XTsgICAgICAgICAvKiBQaHlzaWNhbCBBZGRyZXNzWzMxOjEyXSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogTU9EX1NUQVRfQ0ZHICAgICAgICAgICAgIyMjIyBtaWNoYWwgLSBnZHJvciBmaXggKi8KCnN0cnVjdCBoZXJtb25wcm1fbW9kX3N0YXRfY2ZnX3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CWxvZ19wZ19zelsweDAwMDA4XTsKICAgIHBzZXVkb19iaXRfdAlsb2dfcGdfc3pfbVsweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAwNV07CiAgICBwc2V1ZG9fYml0X3QJZGlmZVsweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAlkaWZlX21bMHgwMDAwMV07CiAgICBwc2V1ZG9fYml0X3QJcnhfb3B0aW9uc1sweDAwMDA0XTsgICAvKiBudW1iZXIgb2YgUlggb3B0aW9ucyB0byBzd2VlcCB3aGVuIGRvaW5nIFNlckRlcyBwYXJhbWV0ZXJzIEF1dG9OZWdvdGlhdGlvbi4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAwM107CiAgICBwc2V1ZG9fYml0X3QJcnhfb3B0aW9uc19tWzB4MDAwMDFdOyAvKiBNb2RpZnkgcnhfb3B0aW9ucyAqLwogICAgcHNldWRvX2JpdF90CXR4X29wdGlvbnNbMHgwMDAwNF07ICAgLyogbnVtYmVyIG9mIFRYIG9wdGlvbnMgdG8gc3dlZXAgd2hlbiBkb2luZyBTZXJEZXMgcGFyYW1ldGVycyBBdXRvTmVnb3RpYXRpb24uICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMDNdOwogICAgcHNldWRvX2JpdF90CXR4X29wdGlvbnNfbVsweDAwMDAxXTsgLyogTW9kaWZ5IHR4X29wdGlvbnMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDNbMHgwMDAxMF07CiAgICBwc2V1ZG9fYml0X3QJcWRyX3J4X29wdGlvbnNbMHgwMDAwNF07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0WzB4MDAwMDNdOwogICAgcHNldWRvX2JpdF90CXFkcl9yeF9vcHRpb25zX21bMHgwMDAwMV07CiAgICBwc2V1ZG9fYml0X3QJcWRyX3R4X29wdGlvbnNbMHgwMDAwNF07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ1WzB4MDAwMDNdOwogICAgcHNldWRvX2JpdF90CXFkcl90eF9vcHRpb25zX21bMHgwMDAwMV07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ2WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWxpZFsweDAwMDEwXTsgICAgICAgICAgLyogZGVmYXVsdCBMSUQgKi8KICAgIHBzZXVkb19iaXRfdAlsaWRfbVsweDAwMDAxXTsgICAgICAgIC8qIE1vZGlmeSBkZWZhdWx0IExJRCAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkN1sweDAwMDAzXTsKICAgIHBzZXVkb19iaXRfdAlwb3J0X2VuWzB4MDAwMDFdOyAgICAgIC8qIGVuYWJsZSBwb3J0IChFX0tleSkgKi8KICAgIHBzZXVkb19iaXRfdAlwb3J0X2VuX21bMHgwMDAwMV07ICAgIC8qIE1vZGlmeSAgcG9ydF9lbiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkOFsweDAwMDAyXTsKICAgIHBzZXVkb19iaXRfdAlwb3J0X3BhdXNlX21vZGVbMHgwMDAwMl07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ5WzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CXBvcnRfcGF1c2VfbW9kZV9tWzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMTBbMHgwMDAwNF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxMVsweDAwMDFmXTsKICAgIHBzZXVkb19iaXRfdAlndWlkX2hpX21bMHgwMDAwMV07ICAgIC8qIE1vZGlmeSBndWlkX2hpICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZ3VpZF9oaVsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDEyWzB4MDAwMWZdOwogICAgcHNldWRvX2JpdF90CWd1aWRfbG9fbVsweDAwMDAxXTsgICAgLyogTW9kaWZ5IGd1aWRfbG8gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlndWlkX2xvWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMTNbMHgwMDAxZl07CiAgICBwc2V1ZG9fYml0X3QJbm9kZWd1aWRfaGlfbVsweDAwMDAxXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlub2RlZ3VpZF9oaVsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDE0WzB4MDAwMWZdOwogICAgcHNldWRvX2JpdF90CW5vZGVndWlkX2xvX21bMHgwMDAwMV07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbm9kZWd1aWRfbG9bMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJb2JfcHJlZW1wX3ByZVsweDAwMDA1XTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDE1WzB4MDAwMDNdOwogICAgcHNldWRvX2JpdF90CW9iX3ByZWVtcF9wb3N0WzB4MDAwMDVdOwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMTZbMHgwMDAwM107CiAgICBwc2V1ZG9fYml0X3QJb2JfcHJlZW1wX21haW5bMHgwMDAwNV07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxN1sweDAwMDAzXTsKICAgIHBzZXVkb19iaXRfdAlvYl9wcmVlbXBbMHgwMDAwNV07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxOFsweDAwMDAyXTsKICAgIHBzZXVkb19iaXRfdAlzZXJkZXNfbVsweDAwMDAxXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlpbmJ1Zl9pbmRfZW5bMHgwMDAwM107CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxOVsweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAlzZF9tYWluWzB4MDAwMDRdOwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMjBbMHgwMDAwNF07CiAgICBwc2V1ZG9fYml0X3QJc2RfZXF1YWxbMHgwMDAwNF07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyMVsweDAwMDA0XTsKICAgIHBzZXVkb19iaXRfdAlzZF9tdXhfbWFpblsweDAwMDAyXTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDIyWzB4MDAwMDJdOwogICAgcHNldWRvX2JpdF90CW11eF9lcVsweDAwMDAyXTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDIzWzB4MDAwMDJdOwogICAgcHNldWRvX2JpdF90CXNpZ2RldF90aFsweDAwMDAzXTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDI0WzB4MDAwMDFdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMjVbMHgwMDA0MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcG9ydF9wcm90b2NvbFsweDAwMDA4XTsKICAgIHBzZXVkb19iaXRfdAlwb3J0X2R1YWxbMHgwMDAwMV07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyNlsweDAwMDA2XTsKICAgIHBzZXVkb19iaXRfdAlwb3J0X3Byb3RvY29sX21bMHgwMDAwMV07CiAgICBwc2V1ZG9fYml0X3QJbnVtX3BvcnRbMHgwMDAwOF07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyN1sweDAwMDA4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlwb3J0X3Byb3RvY29sX3ZwaVsweDAwMDA4XTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDI4WzB4MDAwMThdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMjlbMHgwMDE4MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZndfcmV2X21ham9yWzB4MDAwMTBdOwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMzBbMHgwMDAwZl07CiAgICBwc2V1ZG9fYml0X3QJZndfcmV2X3N1cHBvcnRbMHgwMDAwMV07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZndfcmV2X21pbm9yWzB4MDAwMTBdOwogICAgcHNldWRvX2JpdF90CWZ3X3Jldl9zdWJtaW5vclsweDAwMDEwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAljbWRfaW50ZXJmYWNlX3JldlsweDAwMDEwXTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDMxWzB4MDAwMTBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMzJbMHgwMDA2MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbWFjX2hpZ2hbMHgwMDAxMF07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzM1sweDAwMDBmXTsKICAgIHBzZXVkb19iaXRfdAltYWNfbVsweDAwMDAxXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAltYWNfbG93WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMzRbMHgwMDAxMF07CiAgICBwc2V1ZG9fYml0X3QJbnVtX3ZlcHNbMHgwMDAwOF07CiAgICBwc2V1ZG9fYml0X3QJbnVtX3ZlcF9ncm91cHNbMHgwMDAwOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzNVsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM2WzB4MDAwMThdOwogICAgcHNldWRvX2JpdF90CW91dGVyX3ZsYW5fZW5bMHgwMDAwMV07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzN1sweDAwMDAyXTsKICAgIHBzZXVkb19iaXRfdAlvdXRlcl92bGFuX2VuX21bMHgwMDAwMV07CiAgICBwc2V1ZG9fYml0X3QJcG9ydF9uZXRfYm9vdFsweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM4WzB4MDAwMDJdOwogICAgcHNldWRvX2JpdF90CXBvcnRfbmV0X2Jvb3RfbVsweDAwMDAxXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM5WzB4MDAwNjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXBvcnRfZXRoX21vZGVfY2FwYWJpbGl0eVsweDAwMDFmXTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQwWzB4MDAwMDFdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXBvcnRfZXRoX21vZGVfZW5hYmxlZFsweDAwMDFmXTsKICAgIHBzZXVkb19iaXRfdAlwb3J0X2V0aF9tb2RfbVsweDAwMDAxXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlwb3J0X2V0aF9tb2RlX2N1cnJlbnRbMHgwMDAxZl07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0MVsweDAwMDAxXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQyWzB4MDAyMjBdOwp9OwoKLyogU1JRIENvbnRleHQgKi8KCnN0cnVjdCBoZXJtb25wcm1fc3JxX2NvbnRleHRfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJc3JxblsweDAwMDE4XTsgICAgICAgICAvKiBTUlEgbnVtYmVyICovCiAgICBwc2V1ZG9fYml0X3QJbG9nX3NycV9zaXplWzB4MDAwMDRdOyAvKiBMb2cyIG9mIHRoZSBOdW1iZXIgb2YgV1FFcyBpbiB0aGUgUmVjZWl2ZSBRdWV1ZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heGltdW0gdmFsdWUgaXMgMHgxMCwgaS5lLiAxNk0gV1FFcy4gKi8KICAgIHBzZXVkb19iaXRfdAlzdGF0ZVsweDAwMDA0XTsgICAgICAgIC8qIFNSUSBTdGF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTEgLSBTVyBPd25lcnNoaXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAwMDAgLSBIVyBPd25lcnNoaXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAwMDEgLSBFcnJvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWQgb25seSBvbiBRVUVSWV9TUlEgYW5kIEhXMlNXX1NSUSBjb21tYW5kcy4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlzcmNfZG9tYWluWzB4MDAwMTBdOyAgIC8qIFRoZSBTY2FsYWJsZSBSQyBEb21haW4uIE1lc3NhZ2VzIGNvbWluZyB0byByZWNlaXZlIHBvcnRzIHNwZWNpZnlpbmcgdGhpcyBTUlEgYXMgcmVjZWl2ZSBxdWV1ZSB3aWxsIGJlIHNlcnZlZCBvbmx5IGlmIFNSQ19Eb21haW4gb2YgdGhlIFNSUSBtYXRjaGVzIFNSQ19Eb21haW4gb2YgdGhlIHRyYW5zcG9ydCBRUCBvZiB0aGlzIG1lc3NhZ2UuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMDhdOwogICAgcHNldWRvX2JpdF90CWxvZ19zcnFfc3RyaWRlWzB4MDAwMDNdOy8qIFN0cmlkZSAobWF4IFdRRSBzaXplKSBvbiB0aGUgcmVjZWl2ZSBxdWV1ZS4gV1EgZW50cnkgaXMgMTYqKDJebG9nX1JRX3N0cmlkZSkgYnl0ZXMuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwMDVdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWNxblsweDAwMDE4XTsgICAgICAgICAgLyogQ29tcGxldGlvbiBRdWV1ZSB0byByZXBvcnQgU1JDIG1lc3NhZ2VzIGRpcmVjdGVkIHRvIHRoaXMgU1JRLiAqLwogICAgcHNldWRvX2JpdF90CXBhZ2Vfb2Zmc2V0WzB4MDAwMDZdOyAgLyogVGhlIG9mZnNldCBvZiB0aGUgZmlyc3QgV1FFIGZyb20gdGhlIGJlZ2lubmluZyBvZiA0S2J5dGUgcGFnZSAoRmlndXJlIDUyLJNXb3JrIFF1ZXVlIEJ1ZmZlciBTdHJ1Y3R1cmWUKSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMlsweDAwMDAyXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDNbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbXR0X2Jhc2VfYWRkcl9oWzB4MDAwMDhdOy8qIE1UVCBCYXNlIEFkZHJlc3MgWzM5OjMyXSBpbiBJQ00gcmVsYXRpdmUgdG8gSU5JVF9IQ0EubXR0X2Jhc2VfYWRkciAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNFsweDAwMDEwXTsKICAgIHBzZXVkb19iaXRfdAlsb2cyX3BhZ2Vfc2l6ZVsweDAwMDA2XTsvKiBMb2cgKGJhc2UgMikgb2YgTVRUIHBhZ2Ugc2l6ZSBpbiB1bml0cyBvZiA0S0J5dGUgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDVbMHgwMDAwMl07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ2WzB4MDAwMDNdOwogICAgcHNldWRvX2JpdF90CW10dF9iYXNlX2FkZHJfbFsweDAwMDFkXTsvKiBNVFQgQmFzZSBBZGRyZXNzIFszMTozXSBpbiBJQ00gcmVsYXRpdmUgdG8gSU5JVF9IQ0EubXR0X2Jhc2VfYWRkciAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXBkWzB4MDAwMThdOyAgICAgICAgICAgLyogU1JRIHByb3RlY3Rpb24gZG9tYWluICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ3WzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXdxZV9jbnRbMHgwMDAxMF07ICAgICAgLyogV1FFIGNvdW50IG9uIHRoZSBTUlEuIFZhbGlkIG9ubHkgdXBvbiBRVUVSWV9TUlEgYW5kIEhXMlNXX1NSUSBjb21tYW5kcy4gKi8KICAgIHBzZXVkb19iaXRfdAlsd21bMHgwMDAxMF07ICAgICAgICAgIC8qIExpbWl0IFdhdGVyIE1hcmsgLSBpZiB0aGUgTFdNIGlzIG5vdCB6ZXJvLCBhbmQgdGhlIHdxZV9jbnQgZHJvcHMgYmVsb3cgTFdNIHdoZW4gYSBXUUUgaXMgZGVxdWV1ZWQgZnJvbSB0aGUgU1JRLCB0aGVuIGFuIFNSUSBsaW1pdCBldmVudCBpcyBmaXJlZCBhbmQgdGhlIExXTSBpcyBzZXQgdG8gemVyby4gVmFsaWQgb25seSB1cG9uIFFVRVJZX1NSUSBhbmQgSFcyU1dfU1JRIGNvbW1hbmRzLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXNycV93cWVfY291bnRlclsweDAwMDEwXTsvKiBBIDE2LWJpdCBjb3VudGVyIGluY3JlbWVudGVkIGZvciBlYWNoIFdRRSBwb3N0ZWQgdG8gdGhlIFNSUS4gTXVzdCBiZSAweDAgaW4gU1JRIGluaXRpYWxpemF0aW9uLiBWYWxpZCBvbmx5IHVwb24gdGhlIFFVRVJZX1NSUSBjb21tYW5kLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkOFsweDAwMDEwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDlbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZGJfcmVjb3JkX2FkZHJfaFsweDAwMDIwXTsvKiBTUlEgREIgUmVjb3JkIHBoeXNpY2FsIGFkZHJlc3MgWzYzOjMyXSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMTBbMHgwMDAwMl07CiAgICBwc2V1ZG9fYml0X3QJZGJfcmVjb3JkX2FkZHJfbFsweDAwMDFlXTsvKiBTUlEgREIgUmVjb3JkIHBoeXNpY2FsIGFkZHJlc3MgWzMxOjJdICovCi8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBQQkwgKi8KCnN0cnVjdCBoZXJtb25wcm1fcGJsX3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CW10dF8wX2hbMHgwMDAyMF07ICAgICAgLyogRmlyc3QgTVRUWzYzOjMyXSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW10dF8wX2xbMHgwMDAyMF07ICAgICAgLyogRmlyc3QgTVRUWzMxOjBdICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbXR0XzFfaFsweDAwMDIwXTsgICAgICAvKiBTZWNvbmQgTVRUWzYzOjMyXSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW10dF8xX2xbMHgwMDAyMF07ICAgICAgLyogU2Vjb25kIE1UVFszMTowXSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW10dF8yX2hbMHgwMDAyMF07ICAgICAgLyogVGhpcmQgTVRUWzYzOjMyXSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW10dF8yX2xbMHgwMDAyMF07ICAgICAgLyogVGhpcmQgTVRUWzMxOjBdICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbXR0XzNfaFsweDAwMDIwXTsgICAgICAvKiBGb3VydGggTVRUWzYzOjMyXSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW10dF8zX2xbMHgwMDAyMF07ICAgICAgLyogRm91cnRoIE1UVFszMTowXSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogUGVyZm9ybWFuY2UgQ291bnRlcnMgICAjIyMjIG1pY2hhbCAtIGdkcm9yIGZpeGVkICovCgpzdHJ1Y3QgaGVybW9ucHJtX3BlcmZvcm1hbmNlX2NvdW50ZXJzX3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDgwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDA4MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwODBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkM1sweDAwMDYwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDRbMHgwMDYyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBUcmFuc3BvcnQgYW5kIENJIEVycm9yIENvdW50ZXJzICovCgpzdHJ1Y3QgaGVybW9ucHJtX3RyYW5zcG9ydF9hbmRfY2lfZXJyb3JfY291bnRlcnNfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJcnFfbnVtX2xsZVsweDAwMDIwXTsgICAvKiBSZXNwb25kZXIgLSBudW1iZXIgb2YgbG9jYWwgbGVuZ3RoIGVycm9ycyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXNxX251bV9sbGVbMHgwMDAyMF07ICAgLyogUmVxdWVzdGVyIC0gbnVtYmVyIG9mIGxvY2FsIGxlbmd0aCBlcnJvcnMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlycV9udW1fbHFwb2VbMHgwMDAyMF07IC8qIFJlc3BvbmRlciAtIG51bWJlciBsb2NhbCBRUCBvcGVyYXRpb24gZXJyb3IgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlzcV9udW1fbHFwb2VbMHgwMDAyMF07IC8qIFJlcXVlc3RlciAtIG51bWJlciBsb2NhbCBRUCBvcGVyYXRpb24gZXJyb3IgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlycV9udW1fbGVlb2VbMHgwMDAyMF07IC8qIFJlc3BvbmRlciAtIG51bWJlciBsb2NhbCBFRSBvcGVyYXRpb24gZXJyb3IgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlzcV9udW1fbGVlb2VbMHgwMDAyMF07IC8qIFJlcXVlc3RlciAtIG51bWJlciBsb2NhbCBFRSBvcGVyYXRpb24gZXJyb3IgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlycV9udW1fbHBlWzB4MDAwMjBdOyAgIC8qIFJlc3BvbmRlciAtIG51bWJlciBvZiBsb2NhbCBwcm90ZWN0aW9uIGVycm9ycyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXNxX251bV9scGVbMHgwMDAyMF07ICAgLyogUmVxdWVzdGVyIC0gbnVtYmVyIG9mIGxvY2FsIHByb3RlY3Rpb24gZXJyb3JzICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcnFfbnVtX3dyZmVbMHgwMDAyMF07ICAvKiBSZXNwb25kZXIgLSBudW1iZXIgb2YgQ1FFcyB3aXRoIGVycm9yLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50ZWQgZWFjaCB0aW1lIGEgQ1FFIHdpdGggZXJyb3IgaXMgZ2VuZXJhdGVkICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJc3FfbnVtX3dyZmVbMHgwMDAyMF07ICAvKiBSZXF1ZXN0ZXIgLSBudW1iZXIgb2YgQ1FFcyB3aXRoIGVycm9yLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50ZWQgZWFjaCB0aW1lIGEgQ1FFIHdpdGggZXJyb3IgaXMgZ2VuZXJhdGVkICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXNxX251bV9td2JlWzB4MDAwMjBdOyAgLyogUmVxdWVzdGVyIC0gbnVtYmVyIG9mIG1lbW9yeSB3aW5kb3cgYmluZCBlcnJvcnMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJc3FfbnVtX2JyZVsweDAwMDIwXTsgICAvKiBSZXF1ZXN0ZXIgLSBudW1iZXIgb2YgYmFkIHJlc3BvbnNlIGVycm9ycyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJxX251bV9sYWVbMHgwMDAyMF07ICAgLyogUmVzcG9uZGVyIC0gbnVtYmVyIG9mIGxvY2FsIGFjY2VzcyBlcnJvcnMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDJbMHgwMDA0MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJc3FfbnVtX3JpcmVbMHgwMDAyMF07ICAvKiBSZXF1ZXN0ZXIgLSBudW1iZXIgb2YgcmVtb3RlIGludmFsaWQgcmVxdWVzdCBlcnJvcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BSy1JbnZhbGlkIFJlcXVlc3Qgb246CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLiBVbnN1cHBvcnRlZCBPcENvZGU6IFJlc3BvbmRlciBkZXRlY3RlZCBhbiB1bnN1cHBvcnRlZCBPcENvZGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLiBVbmV4cGVjdGVkIE9wQ29kZTogUmVzcG9uZGVyIGRldGVjdGVkIGFuIGVycm9yIGluIHRoZSBzZXF1ZW5jZSBvZiBPcENvZGVzLCBzdWNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcyBhIG1pc3NpbmcgIkxhc3QiIHBhY2tldC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IHRoZXJlIGlzIG5vIFBTTiBlcnJvciwgdGh1cyB0aGlzIGRvZXMgbm90IGluZGljYXRlIGEgZHJvcHBlZCBwYWNrZXQuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcnFfbnVtX3JpcmVbMHgwMDAyMF07ICAvKiBSZXNwb25kZXIgLSBudW1iZXIgb2YgcmVtb3RlIGludmFsaWQgcmVxdWVzdCBlcnJvcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQUsgbWF5IG9yIG1heSBub3QgYmUgc2VudC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuIFFQIEFzeW5jIEFmZmlsaWF0ZWQgRXJyb3I6IFVuc3VwcG9ydGVkIG9yIFJlc2VydmVkIE9wQ29kZSAoUkMsUkQgb25seSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmJvdW5kIHJlcXVlc3QgT3BDb2RlIHdhcyBlaXRoZXIgcmVzZXJ2ZWQsIG9yIHdhcyBmb3IgYSBmdW5jdGlvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFQLiAoRS5nLiBSRE1BIG9yIEFUT01JQyBvbiBRUCBub3Qgc2V0IHVwIGZvciB0aGlzKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuIE1pc2FsaWduZWQgQVRPTUlDOiBWQSBkb2VzIG5vdCBwb2ludCB0byBhbiBhbGlnbmVkIGFkZHJlc3Mgb24gYW4gYXRvbWljIG9wZXJhLXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLiBUb28gbWFueSBSRE1BIFJFQUQgb3IgQVRPTUlDIFJlcXVlc3RzOiBUaGVyZSB3ZXJlIG1vcmUgcmVxdWVzdHMgcmVjZWl2ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBub3QgQUNLZWQgdGhhbiBhbGxvd2VkIGZvciB0aGUgY29ubmVjdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuIE91dCBvZiBTZXF1ZW5jZSBPcENvZGUsIGN1cnJlbnQgcGFja2V0IGlzICJGaXJzdCIgb3IgIk9ubHkiOiBUaGUgUmVzcG9uZGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRlY3RlZCBhbiBlcnJvciBpbiB0aGUgc2VxdWVuY2Ugb2YgT3BDb2RlczsgYSBtaXNzaW5nICJMYXN0IiBwYWNrZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuIE91dCBvZiBTZXF1ZW5jZSBPcENvZGUsIGN1cnJlbnQgcGFja2V0IGlzIG5vdCAiRmlyc3QiIG9yICJPbmx5IjogVGhlIFJlc3BvbmRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0ZWN0ZWQgYW4gZXJyb3IgaW4gdGhlIHNlcXVlbmNlIG9mIE9wQ29kZXM7IGEgbWlzc2luZyAiRmlyc3QiIHBhY2tldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4gTG9jYWwgTGVuZ3RoIEVycm9yOiBJbmJvdW5kICJTZW5kIiByZXF1ZXN0IG1lc3NhZ2UgZXhjZWVkZWQgdGhlIHJlc3BvbmRlci5zIGF2YWlsLWFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciBzcGFjZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuIExlbmd0aCBlcnJvcjogUkRNQSBXUklURSByZXF1ZXN0IG1lc3NhZ2UgY29udGFpbmVkIHRvbyBtdWNoIG9yIHRvbyBsaXR0bGUgcGF5LWxvYWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgY29tcGFyZWQgdG8gdGhlIERNQSBsZW5ndGggYWR2ZXJ0aXNlZCBpbiB0aGUgZmlyc3Qgb3Igb25seSBwYWNrZXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LiBMZW5ndGggZXJyb3I6IFBheWxvYWQgbGVuZ3RoIHdhcyBub3QgY29uc2lzdGVudCB3aXRoIHRoZSBvcGNvZGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhOiAwIGJ5dGUgPD0gIm9ubHkiIDw9IFBNVFUgYnl0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGI6ICgiZmlyc3QiIG9yICJtaWRkbGUiKSA9PSBQTVRVIGJ5dGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjOiAxYnl0ZSA8PSAibGFzdCIgPD0gUE1UVSBieXRlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS4gTGVuZ3RoIGVycm9yOiBJbmJvdW5kIG1lc3NhZ2UgZXhjZWVkZWQgdGhlIHNpemUgc3VwcG9ydGVkIGJ5IHRoZSBDQSBwb3J0LiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXNxX251bV9yYWVbMHgwMDAyMF07ICAgLyogUmVxdWVzdGVyIC0gbnVtYmVyIG9mIHJlbW90ZSBhY2Nlc3MgZXJyb3JzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFLLVJlbW90ZSBBY2Nlc3MgRXJyb3Igb246CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSX0tleSBWaW9sYXRpb246IFJlc3BvbmRlciBkZXRlY3RlZCBhbiBpbnZhbGlkIFJfS2V5IHdoaWxlIGV4ZWN1dGluZyBhbiBSRE1BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0LiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJxX251bV9yYWVbMHgwMDAyMF07ICAgLyogUmVzcG9uZGVyIC0gbnVtYmVyIG9mIHJlbW90ZSBhY2Nlc3MgZXJyb3JzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUl9LZXkgVmlvbGF0aW9uIFJlc3BvbmRlciBkZXRlY3RlZCBhbiBSX0tleSB2aW9sYXRpb24gd2hpbGUgZXhlY3V0aW5nIGFuIFJETUEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQUsgbWF5IG9yIG1heSBub3QgYmUgc2VudC4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlzcV9udW1fcm9lWzB4MDAwMjBdOyAgIC8qIFJlcXVlc3RlciAtIG51bWJlciBvZiByZW1vdGUgb3BlcmF0aW9uIGVycm9ycy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BSy1SZW1vdGUgT3BlcmF0aW9uIEVycm9yIG9uOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIE9wZXJhdGlvbiBFcnJvcjogUmVzcG9uZGVyIGVuY291bnRlcmVkIGFuIGVycm9yLCAobG9jYWwgdG8gdGhlIHJlc3BvbmRlciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCBwcmV2ZW50ZWQgaXQgZnJvbSBjb21wbGV0aW5nIHRoZSByZXF1ZXN0LiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJxX251bV9yb2VbMHgwMDAyMF07ICAgLyogUmVzcG9uZGVyIC0gbnVtYmVyIG9mIHJlbW90ZSBvcGVyYXRpb24gZXJyb3JzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFLLVJlbW90ZSBPcGVyYXRpb24gRXJyb3Igb246CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLiBNYWxmb3JtZWQgV1FFOiBSZXNwb25kZXIgZGV0ZWN0ZWQgYSBtYWxmb3JtZWQgUmVjZWl2ZSBRdWV1ZSBXUUUgd2hpbGUgcHJvLWNlc3NpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBwYWNrZXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLiBSZW1vdGUgT3BlcmF0aW9uIEVycm9yOiBSZXNwb25kZXIgZW5jb3VudGVyZWQgYW4gZXJyb3IsIChsb2NhbCB0byB0aGUgcmVzcG9uZGVyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHByZXZlbnRlZCBpdCBmcm9tIGNvbXBsZXRpbmcgdGhlIHJlcXVlc3QuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJc3FfbnVtX3RyZWVbMHgwMDAyMF07ICAvKiBSZXF1ZXN0ZXIgLSBudW1iZXIgb2YgdHJhbnNwb3J0IHJldHJpZXMgZXhjZWVkZWQgZXJyb3JzICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXNxX251bV9ycmVlWzB4MDAwMjBdOyAgLyogUmVxdWVzdGVyIC0gbnVtYmVyIG9mIFJOUiBuYWsgcmV0cmllcyBleGNlZWRlZCBlcnJvcnMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlycV9udW1fcm5yWzB4MDAwMjBdOyAgIC8qIFJlc3BvbmRlciAtIHRoZSBudW1iZXIgb2YgUk5SIE5ha3Mgc2VudCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXNxX251bV9ybnJbMHgwMDAyMF07ICAgLyogUmVxdWVzdGVyIC0gdGhlIG51bWJlciBvZiBSTlIgTmFrcyByZWNlaXZlZCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNFsweDAwMDQwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDVbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJc3FfbnVtX3JhYnJ0ZVsweDAwMDIwXTsvKiBSZXF1ZXN0ZXIgLSBudW1iZXIgb2YgcmVtb3RlIGFib3J0ZWQgZXJyb3JzICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ2WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXNxX251bV9pZWVjbmVbMHgwMDAyMF07LyogUmVxdWVzdGVyIC0gbnVtYmVyIG9mIGludmFsaWQgRUUgY29udGV4dCBudW1iZXIgZXJyb3JzICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ3WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXNxX251bV9pZWVjc2VbMHgwMDAyMF07LyogUmVxdWVzdGVyIC0gaW52YWxpZCBFRSBjb250ZXh0IHN0YXRlIGVycm9ycyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkOFsweDAwMzgwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlycV9udW1fb29zWzB4MDAwMjBdOyAgIC8qIFJlc3BvbmRlciAtIG51bWJlciBvZiBvdXQgb2Ygc2VxdWVuY2UgcmVxdWVzdHMgcmVjZWl2ZWQgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlzcV9udW1fb29zWzB4MDAwMjBdOyAgIC8qIFJlcXVlc3RlciAtIG51bWJlciBvZiBvdXQgb2Ygc2VxdWVuY2UgTmFrcyByZWNlaXZlZCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJxX251bV9tY2VbMHgwMDAyMF07ICAgLyogUmVzcG9uZGVyIC0gbnVtYmVyIG9mIGJhZCBtdWx0aWNhc3QgcGFja2V0cyByZWNlaXZlZCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkOVsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlycV9udW1fcnN5bmNbMHgwMDAyMF07IC8qIFJlc3BvbmRlciAtIG51bWJlciBvZiBSRVNZTkMgb3BlcmF0aW9ucyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXNxX251bV9yc3luY1sweDAwMDIwXTsgLyogUmVxdWVzdGVyIC0gbnVtYmVyIG9mIFJFU1lOQyBvcGVyYXRpb25zICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcnFfbnVtX3Vkc2RwcmRbMHgwMDAyMF07LyogVGhlIG51bWJlciBvZiBVRCBwYWNrZXRzIHNpbGVudGx5IGRpc2NhcmRlZCBvbiB0aGUgcmVjZWl2ZSBxdWV1ZSBkdWUgdG8gbGFjayBvZiByZWNlaXZlIGRlc2NyaXB0b3IuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxMFsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlycV9udW1fdWNzZHByZFsweDAwMDIwXTsvKiBUaGUgbnVtYmVyIG9mIFVDIHBhY2tldHMgc2lsZW50bHkgZGlzY2FyZGVkIG9uIHRoZSByZWNlaXZlIHF1ZXVlIGR1ZSB0byBsYWNrIG9mIHJlY2VpdmUgZGVzY3JpcHRvci4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDExWzB4MDAzZTBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW51bV9jcW92ZlsweDAwMDIwXTsgICAgLyogTnVtYmVyIG9mIENRIG92ZXJmbG93cyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW51bV9lcW92ZlsweDAwMDIwXTsgICAgLyogTnVtYmVyIG9mIEVRIG92ZXJmbG93cyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW51bV9iYWRkYlsweDAwMDIwXTsgICAgLyogTnVtYmVyIG9mIGJhZCBkb29yYmVsbHMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDEyWzB4MDAyYTBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogRXZlbnRfZGF0YSBGaWVsZCAtIEhDUiBDb21wbGV0aW9uIEV2ZW50ICAgIyMjIyBtaWNoYWwgLSBtYXRjaCBQUk0gKi8KCnN0cnVjdCBoZXJtb25wcm1faGNyX2NvbXBsZXRpb25fZXZlbnRfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJdG9rZW5bMHgwMDAxMF07ICAgICAgICAvKiBIQ1IgVG9rZW4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAxMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXN0YXR1c1sweDAwMDA4XTsgICAgICAgLyogSENSIFN0YXR1cyAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMlsweDAwMDE4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlvdXRfcGFyYW1faFsweDAwMDIwXTsgIC8qIEhDUiBPdXRwdXQgUGFyYW1ldGVyIFs2MzozMl0gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlvdXRfcGFyYW1fbFsweDAwMDIwXTsgIC8qIEhDUiBPdXRwdXQgUGFyYW1ldGVyIFszMTowXSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkM1sweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIENvbXBsZXRpb24gd2l0aCBFcnJvciBDUUUgICAgICAgICAgICAgIyMjIyBtaWNoYWwgLSBnZHJvciBmaXhlZCAqLwoKc3RydWN0IGhlcm1vbnBybV9jb21wbGV0aW9uX3dpdGhfZXJyb3Jfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJcXBuWzB4MDAwMThdOyAgICAgICAgICAvKiBJbmRpY2F0ZXMgdGhlIFFQIGZvciB3aGljaCBjb21wbGV0aW9uIGlzIGJlaW5nIHJlcG9ydGVkICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMGEwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlzeW5kcm9tZVsweDAwMDA4XTsgICAgIC8qIENvbXBsZXRpb24gd2l0aCBlcnJvciBzeW5kcm9tZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSAtIExvY2FsIExlbmd0aCBFcnJvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyIC0gTG9jYWwgUVAgT3BlcmF0aW9uIEVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMgLSBMb2NhbCBFRSBDb250ZXh0IE9wZXJhdGlvbiBFcnJvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA0IC0gTG9jYWwgUHJvdGVjdGlvbiBFcnJvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA1IC0gV29yayBSZXF1ZXN0IEZsdXNoZWQgRXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNiAtIE1lbW9yeSBXaW5kb3cgQmluZCBFcnJvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwIC0gQmFkIFJlc3BvbnNlIEVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTEgLSBMb2NhbCBBY2Nlc3MgRXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMiAtIFJlbW90ZSBJbnZhbGlkIFJlcXVlc3QgRXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxMyAtIFJlbW90ZSBBY2Nlc3MgRXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNCAtIFJlbW90ZSBPcGVyYXRpb24gRXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNSAtIFRyYW5zcG9ydCBSZXRyeSBDb3VudGVyIEV4Y2VlZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYgLSBSTlIgUmV0cnkgQ291bnRlciBFeGNlZWRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIwIC0gTG9jYWwgUkREIFZpb2xhdGlvbiBFcnJvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIxIC0gUmVtb3RlIEludmFsaWQgUkQgUmVxdWVzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDIyIC0gUmVtb3RlIEFib3J0ZWQgRXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMyAtIEludmFsaWQgRUUgQ29udGV4dCBOdW1iZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyNCAtIEludmFsaWQgRUUgQ29udGV4dCBTdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciAtIFJlc2VydmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW5kcm9tZSBpcyBkZWZpbmVkIGFjY29yZGluZyB0byB0aGUgSUIgc3BlY2lmaWNhdGlvbiB2b2x1bWUgMS4gRm9yIGRldGFpbGVkIGV4cGxhbmF0aW9uIG9mIHRoZSBzeW5kcm9tZXMsIHJlZmVyIHRvIGNoYXB0ZXJzIDEwLTExIG9mIHRoZSBJQiBzcGVjaWZpY2F0aW9uIHJldiAxLjEuICovCiAgICBwc2V1ZG9fYml0X3QJdmVuZG9yX2Vycm9yX3N5bmRyb21lWzB4MDAwMDhdOwogICAgcHNldWRvX2JpdF90CXdxZV9jb3VudGVyWzB4MDAwMTBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW9wY29kZVsweDAwMDA1XTsgICAgICAgLyogVGhlIG9wY29kZSBvZiBXUUUgY29tcGxldGlvbiBpcyByZXBvcnRlZCBmb3IuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIHJlcG9ydGVkIGluIGNhc2Ugb2YgY29tcGxldGlvbiB3aXRoIGVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhGRSAtIEZvciBjb21wbGV0aW9uIHdpdGggZXJyb3Igb24gUmVjZWl2ZSBRdWV1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkYgLSBGb3IgY29tcGxldGlvbiB3aXRoIGVycm9yIG9uIFNlbmQgUXVldWVzICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CXNfclsweDAwMDAxXTsgICAgICAgICAgLyogc2VuZCAxIC8gcmVjZWl2ZSAwICovCiAgICBwc2V1ZG9fYml0X3QJb3duZXJbMHgwMDAwMV07ICAgICAgICAvKiBIVyBGbGlwcyB0aGlzIGJpdCBmb3IgZXZlcnkgQ1Egd2FycCBhcm91bmQuIEluaXRpYWxpemVkIHRvIFplcm8uICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzWzB4MDAwMThdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogUmVzaXplIENRIElucHV0IE1haWxib3ggKi8KCnN0cnVjdCBoZXJtb25wcm1fcmVzaXplX2NxX3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDQwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAwNl07CiAgICBwc2V1ZG9fYml0X3QJcGFnZV9vZmZzZXRbMHgwMDAwNl07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMTRdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkM1sweDAwMDE4XTsKICAgIHBzZXVkb19iaXRfdAlsb2dfY3Ffc2l6ZVsweDAwMDA1XTsgIC8qIExvZyAoYmFzZSAyKSBvZiB0aGUgQ1Egc2l6ZSAoaW4gZW50cmllcykgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDRbMHgwMDAwM107Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ1WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW10dF9iYXNlX2FkZHJfaFsweDAwMDA4XTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDZbMHgwMDAxMF07CiAgICBwc2V1ZG9fYml0X3QJbG9nMl9wYWdlX3NpemVbMHgwMDAwNl07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ3WzB4MDAwMDJdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkOFsweDAwMDAzXTsKICAgIHBzZXVkb19iaXRfdAltdHRfYmFzZV9hZGRyX2xbMHgwMDAxZF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ5WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMTBbMHgwMDEwMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBNQURfSUZDIElucHV0IE1vZGlmaWVyICovCgpzdHJ1Y3QgaGVybW9ucHJtX21hZF9pZmNfaW5wdXRfbW9kaWZpZXJfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJcG9ydF9udW1iZXJbMHgwMDAwOF07ICAvKiBUaGUgcGFja2V0IHJlY2VwdGlvbiBwb3J0IG51bWJlciAoMSBvciAyKS4gKi8KICAgIHBzZXVkb19iaXRfdAltYWRfZXh0ZW5kZWRfaW5mb1sweDAwMDAxXTsvKiBNYWRfRXh0ZW5kZWRfSW5mbyB2YWxpZCBiaXQgKE1BRF9JRkMgSW5wdXQgTWFpbGJveCBkYXRhIGZyb20gb2Zmc2V0IDAwMTAwaCBhbmQgZG93bikuIE1BRF9FeHRlbmRlZF9JbmZvIGlzIHJlYWQgb25seSBpZiB0aGlzIGJpdCBpcyBzZXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZCBmb3IgdHJhcCBnZW5lcmF0aW9uIHdoZW4gQktleSBjaGVjayBpcyBlbmFibGVkIGFuZCBmb3IgZ2xvYmFsIHJvdXRlZCBwYWNrZXRzLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDA3XTsKICAgIHBzZXVkb19iaXRfdAlybGlkWzB4MDAwMTBdOyAgICAgICAgIC8qIFJlbW90ZSAoc291cmNlKSBMSUQgIGZyb20gdGhlIHJlY2VpdmVkIE1BRC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmllbGQgaXMgcmVxdWlyZWQgZm9yIHRyYXAgZ2VuZXJhdGlvbiB1cG9uIE1LZXkvQktleSB2YWxpZGF0aW9uLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogTUFEX0lGQyBJbnB1dCBNYWlsYm94ICAgICAjIyNtaWNoYWwgLWdkcm9yIGZpeGVkICovCgpzdHJ1Y3QgaGVybW9ucHJtX21hZF9pZmNfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJcmVxdWVzdF9tYWRfcGFja2V0WzY0XVsweDAwMDIwXTsvKiBSZXF1ZXN0IE1BRCBQYWNrZXQgKDI1NmJ5dGVzKSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW15X3FwblsweDAwMDE4XTsgICAgICAgLyogRGVzdGluYXRpb24gUVAgbnVtYmVyIGZyb20gdGhlIHJlY2VpdmVkIE1BRC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmllbGQgaXMgcmVzZXJ2ZWQgaWYgTWFkX2V4dGVuZGVkX2luZm8gaW5kaWNhdGlvbiBpbiB0aGUgaW5wdXQgbW9kaWZpZXIgaXMgY2xlYXIuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlycXBuWzB4MDAwMThdOyAgICAgICAgIC8qIFJlbW90ZSAoc291cmNlKSBRUCBudW1iZXIgIGZyb20gdGhlIHJlY2VpdmVkIE1BRC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmllbGQgaXMgcmVzZXJ2ZWQgaWYgTWFkX2V4dGVuZGVkX2luZm8gaW5kaWNhdGlvbiBpbiB0aGUgaW5wdXQgbW9kaWZpZXIgaXMgY2xlYXIuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkM1sweDAwMDEwXTsKICAgIHBzZXVkb19iaXRfdAltbF9wYXRoWzB4MDAwMDddOyAgICAgIC8qIE15IChkZXN0aW5hdGlvbikgTElEIHBhdGggYml0cyAgZnJvbSB0aGUgcmVjZWl2ZWQgTUFELgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWVsZCBpcyByZXNlcnZlZCBpZiBNYWRfZXh0ZW5kZWRfaW5mbyBpbmRpY2F0aW9uIGluIHRoZSBpbnB1dCBtb2RpZmllciBpcyBjbGVhci4gKi8KICAgIHBzZXVkb19iaXRfdAlnWzB4MDAwMDFdOyAgICAgICAgICAgIC8qIElmIHNldCwgdGhlIEdSSCBmaWVsZCBpbiB2YWxpZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmllbGQgaXMgcmVzZXJ2ZWQgaWYgTWFkX2V4dGVuZGVkX2luZm8gaW5kaWNhdGlvbiBpbiB0aGUgaW5wdXQgbW9kaWZpZXIgaXMgY2xlYXIuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0WzB4MDAwMDRdOwogICAgcHNldWRvX2JpdF90CXNsWzB4MDAwMDRdOyAgICAgICAgICAgLyogU2VydmljZSBMZXZlbCBvZiB0aGUgcmVjZWl2ZWQgTUFELgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmaWVsZCBpcyByZXNlcnZlZCBpZiBNYWRfZXh0ZW5kZWRfaW5mbyBpbmRpY2F0aW9uIGluIHRoZSBpbnB1dCBtb2RpZmllciBpcyBjbGVhci4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlwa2V5X2luZHhbMHgwMDAxMF07ICAgIC8qIEluZGV4IGluIFBLZXkgdGFibGUgdGhhdCBtYXRjaGVzIFBLZXkgb2YgdGhlIHJlY2VpdmVkIE1BRC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmllbGQgaXMgcmVzZXJ2ZWQgaWYgTWFkX2V4dGVuZGVkX2luZm8gaW5kaWNhdGlvbiBpbiB0aGUgaW5wdXQgbW9kaWZpZXIgaXMgY2xlYXIuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ1WzB4MDAwMTBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNlsweDAwMTYwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlncmhbMTBdWzB4MDAwMjBdOyAgICAgIC8qIFRoZSBHUkggZmllbGQgb2YgdGhlIE1BRCBwYWNrZXQgdGhhdCB3YXMgc2NhdHRlcmVkIHRvIHRoZSBmaXJzdCA0MCBieXRlcyBwb2ludGVkIHRvIGJ5IHRoZSBzY2F0dGVyIGxpc3QuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZCBpZiBNYWRfZXh0ZW5kZWRfaW5mbyBiaXQgKGluIHRoZSBpbnB1dCBtb2RpZmllcikgYW5kIGcgYml0IGFyZSBzZXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdGhlcndpc2UgdGhpcyBmaWVsZCBpcyByZXNlcnZlZC4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDdbMHgwMDRjMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBRdWVyeSBEZWJ1ZyBNZXNzYWdlICAgICAjIyMjIG1pY2hhbCAtIGdkcm9yIGZpeGVkICovCgpzdHJ1Y3QgaGVybW9ucHJtX3F1ZXJ5X2RlYnVnX21zZ19zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlwaHlfYWRkcl9oWzB4MDAwMjBdOyAgIC8qIFRyYW5zbGF0aW9uIG9mIHRoZSBhZGRyZXNzIGluIGZpcm13YXJlIGFyZWEuIEhpZ2ggMzIgYml0cy4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAl2WzB4MDAwMDFdOyAgICAgICAgICAgIC8qIFBoeXNpY2FsIHRyYW5zbGF0aW9uIGlzIHZhbGlkICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMGJdOwogICAgcHNldWRvX2JpdF90CXBoeV9hZGRyX2xbMHgwMDAxNF07ICAgLyogVHJhbnNsYXRpb24gb2YgdGhlIGFkZHJlc3MgaW4gZmlybXdhcmUgYXJlYS4gTG93IDMyIGJpdHMuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZndfYXJlYV9iYXNlWzB4MDAwMjBdOyAvKiBGaXJtd2FyZSBhcmVhIGJhc2UgYWRkcmVzcy4gVGhlIGZvcm1hdCBzdHJpbmdzIGFuZCB0aGUgdHJhY2UgYnVmZmVycyBtYXkgYmUgbG9jYXRlZCBzdGFydGluZyBmcm9tIHRoaXMgYWRkcmVzcy4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlmd19hcmVhX3NpemVbMHgwMDAyMF07IC8qIEZpcm13YXJlIGFyZWEgc2l6ZSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXRyY19oZHJfc3pbMHgwMDAyMF07ICAgLyogVHJhY2UgbWVzc2FnZSBoZWFkZXIgc2l6ZSBpbiBkd29yZHMuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJdHJjX2FyZ19udW1bMHgwMDAyMF07ICAvKiBUaGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwZXIgdHJhY2UgbWVzc2FnZS4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDBjMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZGJnX21za19oWzB4MDAwMjBdOyAgICAvKiBEZWJ1ZyBtZXNzYWdlcyBtYXNrIFs2MzozMl0gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlkYmdfbXNrX2xbMHgwMDAyMF07ICAgIC8qIERlYnVnIG1lc3NhZ2VzIG1hc2sgWzMxOjBdICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwNDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWJ1ZmYwX2FkZHJbMHgwMDAyMF07ICAgLyogQWRkcmVzcyBpbiBmaXJtd2FyZSBhcmVhIG9mIFRyYWNlIEJ1ZmZlciAwICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJYnVmZjBfc2l6ZVsweDAwMDIwXTsgICAvKiBTaXplIG9mIFRyYWNlIEJ1ZmZlciAwICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJYnVmZjFfYWRkclsweDAwMDIwXTsgICAvKiBBZGRyZXNzIGluIGZpcm13YXJlIGFyZWEgb2YgVHJhY2UgQnVmZmVyIDEgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlidWZmMV9zaXplWzB4MDAwMjBdOyAgIC8qIFNpemUgb2YgVHJhY2UgQnVmZmVyIDEgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlidWZmMl9hZGRyWzB4MDAwMjBdOyAgIC8qIEFkZHJlc3MgaW4gZmlybXdhcmUgYXJlYSBvZiBUcmFjZSBCdWZmZXIgMiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWJ1ZmYyX3NpemVbMHgwMDAyMF07ICAgLyogU2l6ZSBvZiBUcmFjZSBCdWZmZXIgMiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWJ1ZmYzX2FkZHJbMHgwMDAyMF07ICAgLyogQWRkcmVzcyBpbiBmaXJtd2FyZSBhcmVhIG9mIFRyYWNlIEJ1ZmZlciAzICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJYnVmZjNfc2l6ZVsweDAwMDIwXTsgICAvKiBTaXplIG9mIFRyYWNlIEJ1ZmZlciAzICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJYnVmZjRfYWRkclsweDAwMDIwXTsgICAvKiBBZGRyZXNzIGluIGZpcm13YXJlIGFyZWEgb2YgVHJhY2UgQnVmZmVyIDQgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlidWZmNF9zaXplWzB4MDAwMjBdOyAgIC8qIFNpemUgb2YgVHJhY2UgQnVmZmVyIDQgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlidWZmNV9hZGRyWzB4MDAwMjBdOyAgIC8qIEFkZHJlc3MgaW4gZmlybXdhcmUgYXJlYSBvZiBUcmFjZSBCdWZmZXIgNSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWJ1ZmY1X3NpemVbMHgwMDAyMF07ICAgLyogU2l6ZSBvZiBUcmFjZSBCdWZmZXIgNSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkM1sweDAwMDgwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlod19idWZmX2FkZHJbMHgwMDAyMF07IC8qIERyb3IgTXV4IEJvaHJlciB0cmFjZXIgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlod19idWZmX3NpemVbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0WzB4MDAzYzBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogVXNlciBBY2Nlc3MgUmVnaW9uICovCgpzdHJ1Y3QgaGVybW9ucHJtX3Vhcl9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fcmRfc2VuZF9kb29yYmVsbF9zdAlyZF9zZW5kX2Rvb3JiZWxsOy8qIFJlbGlhYmxlIERhdGFncmFtIHNlbmQgZG9vcmJlbGwgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fc2VuZF9kb29yYmVsbF9zdAlzZW5kX2Rvb3JiZWxsOy8qIFNlbmQgZG9vcmJlbGwgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDA0MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX2NxX2NtZF9kb29yYmVsbF9zdAljcV9jb21tYW5kX2Rvb3JiZWxsOy8qIENRIERvb3JiZWxsICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDNlYzBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogUmVjZWl2ZSBkb29yYmVsbCAqLwoKc3RydWN0IGhlcm1vbnBybV9yZWNlaXZlX2Rvb3JiZWxsX3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDA4XTsKICAgIHBzZXVkb19iaXRfdAl3cWVfY291bnRlclsweDAwMDEwXTsgIC8qIE1vZHVsby02NEsgY291bnRlciBvZiBXUUVzIHBvc3RlZCBvbiB0aGlzIHF1ZXVlIHNpbmNlIGl0cyBjcmVhdGlvbi4gU2hvdWxkIGJlIHplcm8gZm9yIHRoZSBmaXJzdCBkb29yYmVsbCBvbiB0aGUgUVAgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAwOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMDVdOwogICAgcHNldWRvX2JpdF90CXNycVsweDAwMDAxXTsgICAgICAgICAgLyogSWYgc2V0LCB0aGlzIGlzIGEgU2hhcmVkIFJlY2VpdmUgUXVldWUgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDNbMHgwMDAwMl07CiAgICBwc2V1ZG9fYml0X3QJcXBuWzB4MDAwMThdOyAgICAgICAgICAvKiBRUCBudW1iZXIgb3IgU1JRIG51bWJlciB0aGlzIGRvb3JiZWxsIGlzIHJ1bmcgb24gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIFNFVF9JQiBQYXJhbWV0ZXJzICovCgpzdHJ1Y3QgaGVybW9ucHJtX3NldF9pYl9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlycWtbMHgwMDAwMV07ICAgICAgICAgIC8qIFJlc2V0IFFLZXkgVmlvbGF0aW9uIENvdW50ZXIgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAxMV07CiAgICBwc2V1ZG9fYml0X3QJc2lnWzB4MDAwMDFdOyAgICAgICAgICAvKiBTZXQgU3lzdGVtIEltYWdlIEdVSUQgdG8gc3lzdGVtX2ltYWdlX2d1aWQgc3BlY2lmaWVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtX2ltYWdlX2d1aWQgYW5kIHNpZyBtdXN0IGJlIHRoZSBzYW1lIGZvciBhbGwgcG9ydHMuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwMGRdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWNhcGFiaWxpdHlfbWFza1sweDAwMDIwXTsvKiBQb3J0SW5mbyBDYXBhYmlsaXR5IE1hc2sgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlzeXN0ZW1faW1hZ2VfZ3VpZF9oWzB4MDAwMjBdOy8qIFN5c3RlbSBJbWFnZSBHVUlEWzYzOjMyXSwgdGFrZXMgZWZmZWN0IG9ubHkgaWYgdGhlIFNJRyBiaXQgaXMgc2V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIHRoZSBzYW1lIGZvciBib3RoIHBvcnRzLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXN5c3RlbV9pbWFnZV9ndWlkX2xbMHgwMDAyMF07LyogU3lzdGVtIEltYWdlIEdVSURbMzE6MF0sIHRha2VzIGVmZmVjdCBvbmx5IGlmIHRoZSBTSUcgYml0IGlzIHNldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBiZSB0aGUgc2FtZSBmb3IgYm90aCBwb3J0cy4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDJbMHgwMDE4MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBNdWx0aWNhc3QgR3JvdXAgTWVtYmVyICAgICMjIyMgbWljaGFsIC0gZ2Ryb3IgZml4ZWQgKi8KCnN0cnVjdCBoZXJtb25wcm1fbWdtX2VudHJ5X3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDA2XTsKICAgIHBzZXVkb19iaXRfdAluZXh0X2dpZF9pbmRleFsweDAwMDFhXTsvKiBJbmRleCBvZiBuZXh0IE11bHRpY2FzdCBHcm91cCBNZW1iZXIgd2hvc2UgR0lEIG1hcHMgdG8gc2FtZSBNR0lEX0hBU0ggbnVtYmVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGluZGV4IGlzIGludG8gdGhlIE11bHRpY2FzdCBHcm91cCBUYWJsZSwgd2hpY2ggaXMgdGhlIGNvbXByaXNlZCB0aGUgTUdIVCBhbmQgQU1HTSB0YWJsZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0X2dpZF9pbmRleD0wIG1lYW5zIGVuZCBvZiB0aGUgY2hhaW4uICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwNjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW1naWRfMTI4Xzk2WzB4MDAwMjBdOyAgLyogTXVsdGljYXN0IGdyb3VwIEdJRFsxMjg6OTZdIGluIGJpZyBlbmRpYW4gZm9ybWF0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBSZXNlcnZlZCBHSUQgMDowOjA6MDowOjA6MDowIGZvciBhbiBpbnZhbGlkIGVudHJ5LiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW1naWRfOTVfNjRbMHgwMDAyMF07ICAgLyogTXVsdGljYXN0IGdyb3VwIEdJRFs5NTo2NF0gaW4gYmlnIGVuZGlhbiBmb3JtYXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIFJlc2VydmVkIEdJRCAwOjA6MDowOjA6MDowOjAgZm9yIGFuIGludmFsaWQgZW50cnkuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbWdpZF82M18zMlsweDAwMDIwXTsgICAvKiBNdWx0aWNhc3QgZ3JvdXAgR0lEWzYzOjMyXSBpbiBiaWcgZW5kaWFuIGZvcm1hdC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZSB0aGUgUmVzZXJ2ZWQgR0lEIDA6MDowOjA6MDowOjA6MCBmb3IgYW4gaW52YWxpZCBlbnRyeS4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAltZ2lkXzMxXzBbMHgwMDAyMF07ICAgIC8qIE11bHRpY2FzdCBncm91cCBHSURbMzE6MF0gaW4gYmlnIGVuZGlhbiBmb3JtYXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2UgdGhlIFJlc2VydmVkIEdJRCAwOjA6MDowOjA6MDowOjAgZm9yIGFuIGludmFsaWQgZW50cnkuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX21nbXFwX3N0CW1nbXFwXzA7ICAgLyogTXVsdGljYXN0IEdyb3VwIE1lbWJlciBRUCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9tZ21xcF9zdAltZ21xcF8xOyAgIC8qIE11bHRpY2FzdCBHcm91cCBNZW1iZXIgUVAgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fbWdtcXBfc3QJbWdtcXBfMjsgICAvKiBNdWx0aWNhc3QgR3JvdXAgTWVtYmVyIFFQICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX21nbXFwX3N0CW1nbXFwXzM7ICAgLyogTXVsdGljYXN0IEdyb3VwIE1lbWJlciBRUCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9tZ21xcF9zdAltZ21xcF80OyAgIC8qIE11bHRpY2FzdCBHcm91cCBNZW1iZXIgUVAgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fbWdtcXBfc3QJbWdtcXBfNTsgICAvKiBNdWx0aWNhc3QgR3JvdXAgTWVtYmVyIFFQICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX21nbXFwX3N0CW1nbXFwXzY7ICAgLyogTXVsdGljYXN0IEdyb3VwIE1lbWJlciBRUCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9tZ21xcF9zdAltZ21xcF83OyAgIC8qIE11bHRpY2FzdCBHcm91cCBNZW1iZXIgUVAgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIElOSVRfUE9SVCBQYXJhbWV0ZXJzICAgICMjIyMgbWljaGFsIC0gbWF0Y2ggUFJNICovCgpzdHJ1Y3QgaGVybW9ucHJtX2luaXRfcG9ydF9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAwNF07CiAgICBwc2V1ZG9fYml0X3QJdmxfY2FwWzB4MDAwMDRdOyAgICAgICAvKiBNYXhpbXVtIFZMcyBzdXBwb3J0ZWQgb24gdGhlIHBvcnQsIGV4Y2x1ZGluZyBWTDE1LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVnYWwgdmFsdWVzIGFyZSAxLDIsNCBhbmQgOC4gKi8KICAgIHBzZXVkb19iaXRfdAlwb3J0X3dpZHRoX2NhcFsweDAwMDA0XTsvKiBJQiBQb3J0IFdpZHRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxICAgLSAxeAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMyAgIC0gMXgsIDR4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMSAtIDF4LCA0eCBvciAxMnggKG11c3Qgbm90IGJlIHVzZWQgaW4gSW5maW5pSG9zdC1JSUktRVggTVQyNTIwOCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgLSBSZXNlcnZlZCAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMDA0XTsKICAgIHBzZXVkb19iaXRfdAlnMFsweDAwMDAxXTsgICAgICAgICAgIC8qIFNldCBwb3J0IEdVSUQwIHRvIEdVSUQwIHNwZWNpZmllZCAqLwogICAgcHNldWRvX2JpdF90CW5nWzB4MDAwMDFdOyAgICAgICAgICAgLyogU2V0IG5vZGUgR1VJRCB0byBub2RlX2d1aWQgc3BlY2lmaWVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZV9ndWlkIGFuZCBuZyBtdXN0IGJlIHRoZSBzYW1lIGZvciBhbGwgcG9ydHMuICovCiAgICBwc2V1ZG9fYml0X3QJc2lnWzB4MDAwMDFdOyAgICAgICAgICAvKiBTZXQgU3lzdGVtIEltYWdlIEdVSUQgdG8gc3lzdGVtX2ltYWdlX2d1aWQgc3BlY2lmaWVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtX2ltYWdlX2d1aWQgYW5kIHNpZyBtdXN0IGJlIHRoZSBzYW1lIGZvciBhbGwgcG9ydHMuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMGRdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW1heF9naWRbMHgwMDAxMF07ICAgICAgLyogTWF4aW11bSBudW1iZXIgb2YgR0lEcyBmb3IgdGhlIHBvcnQgKi8KICAgIHBzZXVkb19iaXRfdAltdHVbMHgwMDAxMF07ICAgICAgICAgIC8qIE1heGltdW0gTVRVIFN1cHBvcnRlZCBpbiBieXRlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVzdCBiZTogMjU2LCA1MTIsIDEwMjQsIDIwNDggb3IgNDA5NgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIEV0aCBwb3J0LCBjYW4gYmUgYW55CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZCBtdXN0IG5vdCBjcm9zcyBkZXZpY2UgY2FwYWJpbGl0aWVzIGFzIHJlcG9ydGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAltYXhfcGtleVsweDAwMDEwXTsgICAgIC8qIE1heGltdW0gcGtleXMgZm9yIHRoZSBwb3J0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBiZSB0aGUgc2FtZSBmb3IgYm90aCBwb3J0cy4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDNbMHgwMDAxMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWd1aWQwX2hbMHgwMDAyMF07ICAgICAgLyogRVVJLTY0IEdVSUQgYXNzaWduZWQgYnkgdGhlIG1hbnVmYWN0dXJlciwgdGFrZXMgZWZmZWN0IG9ubHkgaWYgdGhlIEcwIGJpdCBpcyBzZXQgKGJpdHMgNjM6MzIpICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZ3VpZDBfbFsweDAwMDIwXTsgICAgICAvKiBFVUktNjQgR1VJRCBhc3NpZ25lZCBieSB0aGUgbWFudWZhY3R1cmVyLCB0YWtlcyBlZmZlY3Qgb25seSBpZiB0aGUgRzAgYml0IGlzIHNldCAoYml0cyAzMTowKSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW5vZGVfZ3VpZF9oWzB4MDAwMjBdOyAgLyogTm9kZSBHVUlEWzYzOjMyXSwgdGFrZXMgZWZmZWN0IG9ubHkgaWYgdGhlIE5HIGJpdCBpcyBzZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgdGhlIHNhbWUgZm9yIGJvdGggcG9ydHMuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbm9kZV9ndWlkX2xbMHgwMDAyMF07ICAvKiBOb2RlIEdVSURbMzE6MF0sIHRha2VzIGVmZmVjdCBvbmx5IGlmIHRoZSBORyBiaXQgaXMgc2V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIHRoZSBzYW1lIGZvciBib3RoIHBvcnRzLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXN5c3RlbV9pbWFnZV9ndWlkX2hbMHgwMDAyMF07LyogU3lzdGVtIEltYWdlIEdVSURbNjM6MzJdLCB0YWtlcyBlZmZlY3Qgb25seSBpZiB0aGUgU0lHIGJpdCBpcyBzZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11c3QgYmUgdGhlIHNhbWUgZm9yIGJvdGggcG9ydHMuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJc3lzdGVtX2ltYWdlX2d1aWRfbFsweDAwMDIwXTsvKiBTeXN0ZW0gSW1hZ2UgR1VJRFszMTowXSwgdGFrZXMgZWZmZWN0IG9ubHkgaWYgdGhlIFNJRyBiaXQgaXMgc2V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdXN0IGJlIHRoZSBzYW1lIGZvciBib3RoIHBvcnRzLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNVsweDAwNmMwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIFF1ZXJ5IERldmljZSBDYXBhYmxpdGllcyAgICAgIyMjIyBtaWNoYWwgLSBnZHJvciBmaXhlZCAqLwoKc3RydWN0IGhlcm1vbnBybV9xdWVyeV9kZXZfY2FwX3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDgwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlsb2dfbWF4X3FwWzB4MDAwMDVdOyAgIC8qIExvZzIgb2YgdGhlIE1heGltdW0gbnVtYmVyIG9mIFFQcyBzdXBwb3J0ZWQgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAwM107CiAgICBwc2V1ZG9fYml0X3QJbG9nMl9yc3ZkX3Fwc1sweDAwMDA0XTsvKiBMb2cgKGJhc2UgMikgb2YgdGhlIG51bWJlciBvZiBRUHMgcmVzZXJ2ZWQgZm9yIGZpcm13YXJlIHVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc2VydmVkIHJlc291cmNlcyBhcmUgbnVtYmVyZWQgZnJvbSAwIHRvIDJebG9nMl9yc3ZkX3Fwcy0xICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMDRdOwogICAgcHNldWRvX2JpdF90CWxvZ19tYXhfcXBfc3pbMHgwMDAwOF07LyogVGhlIG1heGltdW0gbnVtYmVyIG9mIFdRRXMgYWxsb3dlZCBvbiB0aGUgUlEgb3IgdGhlIFNRIGlzIDJebG9nX21heF9xcF9zei0xICovCiAgICBwc2V1ZG9fYml0X3QJbG9nX21heF9zcnFfc3pbMHgwMDAwOF07LyogVGhlIG1heGltdW0gbnVtYmVyIG9mIFdRRXMgYWxsb3dlZCBvbiB0aGUgU1JRIGlzIDJebG9nX21heF9zcnFfc3otMSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWxvZ19tYXhfc2Nxc1sweDAwMDA0XTsgLyogbG9nIGJhc2UgMiBvZiBudW1iZXIgb2Ygc3VwcG9ydGVkIHNjaGVkdWxlIHF1ZXVlcyAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkM1sweDAwMDA0XTsKICAgIHBzZXVkb19iaXRfdAludW1fcnN2ZF9zY3FzWzB4MDAwMDZdOwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNFsweDAwMDAyXTsKICAgIHBzZXVkb19iaXRfdAlsb2dfbWF4X3NycXNbMHgwMDAwNV07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ1WzB4MDAwMDddOwogICAgcHNldWRvX2JpdF90CWxvZzJfcnN2ZF9zcnFzWzB4MDAwMDRdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWxvZ19tYXhfY3FbMHgwMDAwNV07ICAgLyogTG9nMiBvZiB0aGUgTWF4aW11bSBudW1iZXIgb2YgQ1FzIHN1cHBvcnRlZCAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNlsweDAwMDAzXTsKICAgIHBzZXVkb19iaXRfdAlsb2cyX3JzdmRfY3FzWzB4MDAwMDRdOy8qIExvZyAoYmFzZSAyKSBvZiB0aGUgbnVtYmVyIG9mIENRcyByZXNlcnZlZCBmb3IgZmlybXdhcmUgdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzZXJ2ZWQgcmVzb3VyY2VzIGFyZSBudW1iZXJlZCBmcm9tIDAgdG8gMl5sb2cyX3JzcnZkX2Nxcy0xICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ3WzB4MDAwMDRdOwogICAgcHNldWRvX2JpdF90CWxvZ19tYXhfY3Ffc3pbMHgwMDAwOF07LyogTG9nMiBvZiB0aGUgTWF4aW11bSBDUUVzIGFsbG93ZWQgaW4gYSBDUSAqLwogICAgcHNldWRvX2JpdF90CW51bV9yc3ZkX2Vxc1sweDAwMDA4XTsgLyogVGhlIG51bWJlciBvZiBFUXMgcmVzZXJ2ZWQgZm9yIGZpcm13YXJlIHVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc2VydmVkIHJlc291cmNlcyBhcmUgbnVtYmVyZWQgZnJvbSAwIHRvIG51bV9yc3ZkX2Vxcy0xCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAwIC0gbm8gcmVzb3VyY2VzIGFyZSByZXNlcnZlZC4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlsb2dfbWF4X2VxWzB4MDAwMDRdOyAgIC8qIExvZzIgb2YgdGhlIE1heGltdW0gbnVtYmVyIG9mIEVRcyAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkOVsweDAwMDA0XTsKICAgIHBzZXVkb19iaXRfdAlsb2cyX3JzdmRfZXFzWzB4MDAwMDRdOyAvKiBUaGUgbnVtYmVyIG9mIEVRcyByZXNlcnZlZCBmb3IgZmlybXdhcmUgdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzZXJ2ZWQgcmVzb3VyY2VzIGFyZSBudW1iZXJlZCBmcm9tIDAgdG8gbnVtX3JzdmRfZXFzLTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIDAgLSBubyByZXNvdXJjZXMgYXJlIHJlc2VydmVkLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMTBbMHgwMDAwNF07CiAgICBwc2V1ZG9fYml0X3QJbG9nX21heF9kX21wdHNbMHgwMDAwNl07LyogTG9nIChiYXNlIDIpIG9mIHRoZSBtYXhpbXVtIG51bWJlciBvZiBkYXRhIE1QVCBlbnRyaWVzICh0aGUgbnVtYmVyIG9mIFJlZ2lvbnMvV2luZG93cykgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDExWzB4MDAwMDJdOwogICAgcHNldWRvX2JpdF90CWxvZ19tYXhfZXFfc3pbMHgwMDAwOF07LyogTG9nMiBvZiB0aGUgTWF4aW11bSBFUUVzIGFsbG93ZWQgaW4gYSBFUSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWxvZ19tYXhfbXR0c1sweDAwMDA2XTsgLyogTG9nMiBvZiB0aGUgTWF4aW11bSBudW1iZXIgb2YgTVRUIGVudHJpZXMgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDEyWzB4MDAwMDJdOwogICAgcHNldWRvX2JpdF90CWxvZzJfcnN2ZF9tcndzWzB4MDAwMDRdOy8qIExvZyAoYmFzZSAyKSBvZiB0aGUgbnVtYmVyIG9mIE1QVHMgcmVzZXJ2ZWQgZm9yIGZpcm13YXJlIHVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc2VydmVkIHJlc291cmNlcyBhcmUgbnVtYmVyZWQgZnJvbSAwIHRvIDJebG9nMl9yc3ZkX21yd3MtMSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMTNbMHgwMDAwNF07CiAgICBwc2V1ZG9fYml0X3QJbG9nX21heF9tcndfc3pbMHgwMDAwN107LyogTG9nMiBvZiB0aGUgTWF4aW11bSBTaXplIG9mIE1lbW9yeSBSZWdpb24vV2luZG93LiBpcyBpdCBpbiBQUk0gbGF5b3V0PyAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMTRbMHgwMDAwNV07CiAgICBwc2V1ZG9fYml0X3QJbG9nMl9yc3ZkX210dHNbMHgwMDAwNF07LyogTG9nIChiYXNlIDIpIG9mIHRoZSBudW1iZXIgb2YgTVRUIGVudHJpZXMgcmVzZXJ2ZWQgZm9yIGZpcm13YXJlIHVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc2VydmVkIHJlc291cmNlcyBhcmUgbnVtYmVyZWQgZnJvbSAwIHRvIDJebG9nMl9yc3ZkX210dHMtMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxNVsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlsb2dfbWF4X3JhX3Jlc19xcFsweDAwMDA2XTsvKiBMb2cyIG9mIHRoZSBNYXhpbXVtIG51bWJlciBvZiBvdXRzdGFuZGluZyBSRE1BIHJlYWQvQXRvbWljIHBlciBRUCBhcyBhIHJlc3BvbmRlciAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMTZbMHgwMDAwYV07CiAgICBwc2V1ZG9fYml0X3QJbG9nX21heF9yYV9yZXFfcXBbMHgwMDAwNl07LyogTG9nMiBvZiB0aGUgbWF4aW11bSBudW1iZXIgb2Ygb3V0c3RhbmRpbmcgUkRNQSByZWFkL0F0b21pYyBwZXIgUVAgYXMgYSByZXF1ZXN0ZXIgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDE3WzB4MDAwMGFdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWxvZ19tYXhfcmFfcmVzX2dsb2JhbFsweDAwMDA2XTsvKiBMb2cyIG9mIHRoZSBtYXhpbXVtIG51bWJlciBvZiBSRE1BIHJlYWQvYXRvbWljIG9wZXJhdGlvbnMgdGhlIEhDQSByZXNwb25kZXIgY2FuIHN1cHBvcnQgZ2xvYmFsbHkuIFRoYXQgaW1wbGllcyB0aGUgUkRCIHRhYmxlIHNpemUuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxOFsweDAwMDFhXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyc3pfc3JxWzB4MDAwMDFdOyAgICAgIC8qIEFiaWxpdHkgdG8gbW9kaWZ5IHRoZSBtYXhpbXVtIG51bWJlciBvZiBXUnMgcGVyIFNSUS4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDE5WzB4MDAwMWZdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW51bV9wb3J0c1sweDAwMDA0XTsgICAgLyogTnVtYmVyIG9mIElCIHBvcnRzLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNDdbMHgwMDAwNF07CiAgICBwc2V1ZG9fYml0X3QJcGNpX3BmX251bVsweDAwMDA4XTsgICAgLyogTnVtYmVyIG9mIHN1cHBvcnRlZCBwaHlzaWNhbCBmdW5jdGlvbnMgKi8KICAgIHBzZXVkb19iaXRfdAlsb2NhbF9jYV9hY2tfZGVsYXlbMHgwMDAwNV07LyogVGhlIExvY2FsIENBIEFDSyBEZWxheS4gVGhpcyBpcyB0aGUgdmFsdWUgcmVjb21tZW5kZWQgdG8gYmUgcmV0dXJuZWQgaW4gUXVlcnkgSENBIHZlcmIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgZGVsYXkgdmFsdWUgaW4gbWljcm9zZWNvbmRzIGlzIGNvbXB1dGVkIHVzaW5nIDQuMDk2dXMgKiAyXihsb2NhbF9jYV9hY2tfZGVsYXkpLiAqLwogICAgcHNldWRvX2JpdF90CXBvcnRfdHlwZVsweDAwMDA0XTsgICAgLyogSGVybW9uIE5ldy4gYml0IHBlciBwb3J0LiBiaXQwIGlzIGZpcnN0IHBvcnQuIHZhbHVlICcxJyBpcyBlaHRlcm5ldC4gJzAnIGlzIElCICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyMFsweDAwMDA0XTsKICAgIHBzZXVkb19iaXRfdAl3WzB4MDAwMDFdOyAgICAgICAgICAgIC8qIEhlcm1vbiBOZXcuIDEwR0IgZXRoIHN1cHBvcnQgKi8KICAgIHBzZXVkb19iaXRfdAlqWzB4MDAwMDFdOyAgICAgICAgICAgIC8qIEhlcm1vbiBOZXcuIEp1bWJvIGZyYW1lIHN1cHBvcnQgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDIxWzB4MDAwMDFdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWxvZ19tYXhfZ2lkWzB4MDAwMDRdOyAgLyogTG9nMiBvZiB0aGUgbWF4aW11bSBudW1iZXIgb2YgR0lEcyBwZXIgcG9ydCAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMjJbMHgwMDAwNF07CiAgICBwc2V1ZG9fYml0X3QJbG9nX2V0aHR5cGVbMHgwMDAwNF07ICAvKiBIZXJtb24gTmV3LiBsb2cyIGV0aCB0eXBlIHRhYmxlIHNpemUgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDIzWzB4MDAwMDRdOwogICAgcHNldWRvX2JpdF90CWxvZ19kcmFpbl9zaXplWzB4MDAwMDhdOy8qIExvZyAoYmFzZSAyKSBvZiBtaW5pbXVtIHNpemUgb2YgdGhlIE5vRHJvcFZMRHJhaW4gYnVmZmVyLCBzcGVjaWZpZWQgaW4gNEtwYWdlcyB1bml0cyAqLwogICAgcHNldWRvX2JpdF90CWxvZ19tYXhfbXNnWzB4MDAwMDVdOyAgLyogTG9nIChiYXNlIDIpIG9mIHRoZSBtYXhpbXVtIG1lc3NhZ2Ugc2l6ZSBzdXBwb3J0ZWQgYnkgdGhlIGRldmljZSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMjRbMHgwMDAwM107Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbG9nX21heF9wa2V5WzB4MDAwMDRdOyAvKiBMb2cyIG9mIHRoZSBtYXggUEtleSBUYWJsZSBTaXplIChwZXIgSUIgcG9ydCkgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDI1WzB4MDAwMGNdOwogICAgcHNldWRvX2JpdF90CXN0YXRfcmF0ZV9zdXBwb3J0WzB4MDAwMTBdOy8qIGJpdCBtYXNrIG9mIHN0YXQgcmF0ZSBzdXBwb3J0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdCAwIC0gZnVsbCBidwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0IDEgLSAxLzQgYncKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdCAyIC0gMS84IGJ3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXQgMyAtIDEvMiBidzsgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDI2WzB4MDAwMDhdOwogICAgcHNldWRvX2JpdF90CXJzc191ZHBbMHgwMDAwMV07CiAgICBwc2V1ZG9fYml0X3QJdmVwX3VjX3N0ZWVyaW5nWzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CXZlcF9tY19zdGVlcmluZ1sweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDI3WzB4MDAwMTVdOwoKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyY1sweDAwMDAxXTsgICAgICAgICAgIC8qIFJDIFRyYW5zcG9ydCBzdXBwb3J0ZWQgKi8KICAgIHBzZXVkb19iaXRfdAl1Y1sweDAwMDAxXTsgICAgICAgICAgIC8qIFVDIFRyYW5zcG9ydCBTdXBwb3J0ZWQgKi8KICAgIHBzZXVkb19iaXRfdAl1ZFsweDAwMDAxXTsgICAgICAgICAgIC8qIFVEIFRyYW5zcG9ydCBTdXBwb3J0ZWQgKi8KICAgIHBzZXVkb19iaXRfdAlzcmNbMHgwMDAwMV07ICAgICAgICAgIC8qIFNSQyBUcmFuc3BvcnQgU3VwcG9ydGVkLiBIZXJtb24gTmV3IGluc3RlYWQgb2YgUkQuICovCiAgICBwc2V1ZG9fYml0X3QJcmNtWzB4MDAwMDFdOyAgICAgICAgICAvKiBSZWxpYWJsZSBNdWx0aWNhc3Qgc3VwcG9ydC4gSGVybW9uIE5ldyBpbnN0ZWFkIG9mIElQdjYgVHJhbnNwb3J0IFN1cHBvcnRlZCAqLwogICAgcHNldWRvX2JpdF90CWZjb2liWzB4MDAwMDFdOyAgICAgICAgLyogSGVybW9uIE5ldyAqLwogICAgcHNldWRvX2JpdF90CXNycVsweDAwMDAxXTsgICAgICAgICAgLyogU1JRIGlzIHN1cHBvcnRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICBwc2V1ZG9fYml0X3QJY2hlY2tzdW1bMHgwMDAwMV07ICAgICAvKiBJUCBvdmVyIElCIGNoZWNrc3VtIGlzIHN1cHBvcnRlZCAqLwogICAgcHNldWRvX2JpdF90CXBrdlsweDAwMDAxXTsgICAgICAgICAgLyogUEtleSBWaW9sYXRpb24gQ291bnRlciBTdXBwb3J0ZWQgKi8KICAgIHBzZXVkb19iaXRfdAlxa3ZbMHgwMDAwMV07ICAgICAgICAgIC8qIFFLZXkgVmlvbGF0aW9uIENvdXRuZXIgU3VwcG9ydGVkICovCiAgICBwc2V1ZG9fYml0X3QJdm1tWzB4MDAwMDFdOyAgICAgICAgICAvKiBIZXJtb24gTmV3ICovCiAgICBwc2V1ZG9fYml0X3QJZmNvZVsweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAlkcGRwWzB4MDAwMDFdOwkgICAgICAgLyogRHVhbCBQb3J0IERpZmZlcmVudCBQcm90b2NvbHMgKi8KICAgIHBzZXVkb19iaXRfdAlyYXdfZXRoZXJ0eXBlWzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CXJhd19pcHY2WzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CWJsaFsweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAltd1sweDAwMDAxXTsgICAgICAgICAgIC8qIE1lbW9yeSB3aW5kb3dzIHN1cHBvcnRlZCAqLwogICAgcHNldWRvX2JpdF90CWFwbVsweDAwMDAxXTsgICAgICAgICAgLyogQXV0b21hdGljIFBhdGggTWlncmF0aW9uIFN1cHBvcnRlZCAqLwogICAgcHNldWRvX2JpdF90CWF0bVsweDAwMDAxXTsgICAgICAgICAgLyogQXRvbWljIG9wZXJhdGlvbnMgc3VwcG9ydGVkIChhdG9taWNpdHkgaXMgZ3VhcmFudGVlZCBiZXR3ZWVuIFFQcyBvbiB0aGlzIEhDQSkgKi8KICAgIHBzZXVkb19iaXRfdAlybVsweDAwMDAxXTsgICAgICAgICAgIC8qIFJhdyBNdWx0aWNhc3QgU3VwcG9ydGVkICovCiAgICBwc2V1ZG9fYml0X3QJYXZwWzB4MDAwMDFdOyAgICAgICAgICAvKiBBZGRyZXNzIFZlY3RvciBQb3J0IGNoZWNraW5nIHN1cHBvcnRlZCAqLwogICAgcHNldWRvX2JpdF90CXVkbVsweDAwMDAxXTsgICAgICAgICAgLyogVUQgTXVsdGljYXN0IFN1cHBvcnRlZCAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMjhbMHgwMDAwMl07CiAgICBwc2V1ZG9fYml0X3QJcGdbMHgwMDAwMV07ICAgICAgICAgICAvKiBQYWdpbmcgb24gZGVtYW5kIHN1cHBvcnRlZCAqLwogICAgcHNldWRvX2JpdF90CXJbMHgwMDAwMV07ICAgICAgICAgICAgLyogUm91dGVyIG1vZGUgc3VwcG9ydGVkICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyOVsweDAwMDA2XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlsb2dfcGdfc3pbMHgwMDAwOF07ICAgIC8qIE1pbmltdW0gc3lzdGVtIHBhZ2Ugc2l6ZSBzdXBwb3J0ZWQgKGxvZzIpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHByb3BlciBvcGVyYXRpb24gaXQgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdGhlIGhvc3RpbmcgcGxhdGZvcm0gKENQVSkgbWluaW11bSBwYWdlIHNpemUuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzMFsweDAwMDA4XTsKICAgIHBzZXVkb19iaXRfdAl1YXJfc3pbMHgwMDAwNl07ICAgICAgIC8qIFVBUiBBcmVhIFNpemUgPSAxTUIgKiAyXnVhcl9zeiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMzFbMHgwMDAwNl07CiAgICBwc2V1ZG9fYml0X3QJbnVtX3JzdmRfdWFyc1sweDAwMDA0XTsvKiBUaGUgbnVtYmVyIG9mIFVBUnMgcmVzZXJ2ZWQgZm9yIGZpcm13YXJlIHVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc2VydmVkIHJlc291cmNlcyBhcmUgbnVtYmVyZWQgZnJvbSAwIHRvIG51bV9yZXNlcnZlZF91YXJzLTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCBVQVIgbnVtYmVyIG51bV9yZXNlcnZlZF91YXJzIGlzIGFsd2F5cyBmb3IgdGhlIGtlcm5lbC4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlsb2dfbWF4X2JmX3BhZ2VzWzB4MDAwMDZdOy8qIE1heGltdW0gbnVtYmVyIG9mIEJsdWVGbGFtZSBwYWdlcyBpcyAyXmxvZ19tYXhfYmZfcGFnZXMgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDMyWzB4MDAwMDJdOwogICAgcHNldWRvX2JpdF90CWxvZ19tYXhfYmZfcmVnc19wZXJfcGFnZVsweDAwMDA2XTsvKiBNYXhpbXVtIG51bWJlciBvZiBCbHVlRmxhbWUgcmVnaXN0ZXJzIHBlciBwYWdlIGlzIDJebG9nX21heF9iZl9yZWdzX3Blcl9wYWdlLiBJdCBtYXkgYmUgdGhhdCBvbmx5IHRoZSBiZWdpbm5pbmcgb2YgYSBwYWdlIGNvbnRhaW5zIEJsdWVGbGFtZSByZWdpc3RlcnMuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzM1sweDAwMDAyXTsKICAgIHBzZXVkb19iaXRfdAlsb2dfYmZfcmVnX3NpemVbMHgwMDAwNV07LyogQmx1ZUZsYW1lIHJlZ2lzdGVyIHNpemUgaW4gYnl0ZXMgaXMgMl5sb2dfYmZfcmVnX3NpemUgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM0WzB4MDAwMGFdOwogICAgcHNldWRvX2JpdF90CWJmWzB4MDAwMDFdOyAgICAgICAgICAgLyogSWYgc2V0IHRvICIxIiB0aGVuIEJsdWVGbGFtZSBtYXkgYmUgdXNlZC4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAltYXhfZGVzY19zel9zcVsweDAwMDEwXTsvKiBNYXggZGVzY3JpcHRvciBzaXplIGluIGJ5dGVzIGZvciB0aGUgc2VuZCBxdWV1ZSAqLwogICAgcHNldWRvX2JpdF90CW1heF9zZ19zcVsweDAwMDA4XTsgICAgLyogVGhlIG1heGltdW0gUy9HIGxpc3QgZWxlbWVudHMgaW4gYSBTUSBXUUUgKG1heF9kZXNjX3N6LzE2IC0gMykgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM1WzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW1heF9kZXNjX3N6X3JxWzB4MDAwMTBdOy8qIE1heCBkZXNjcmlwdG9yIHNpemUgaW4gYnl0ZXMgZm9yIHRoZSByZWNlaXZlIHF1ZXVlICovCiAgICBwc2V1ZG9fYml0X3QJbWF4X3NnX3JxWzB4MDAwMDhdOyAgICAvKiBUaGUgbWF4aW11bSBTL0cgbGlzdCBlbGVtZW50cyBpbiBhIFJRIFdRRSAobWF4X2Rlc2Nfc3ovMTYgLSAzKSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMzZbMHgwMDAwOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzN1sweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAlmZXhjaF9iYXNlX21wdF8zMV8yNVsweDAwMDA3XTsvKiBIZXJtb24gTmV3LiBGQyBtcHQgYmFzZSBtcHQgbnVtYmVyICovCiAgICBwc2V1ZG9fYml0X3QJZmNwX3VkX2Jhc2VfMjNfOFsweDAwMDEwXTsvKiBIZXJtb24gTmV3LiBGQyB1ZCBRUCAgYmFzZSBRUE4gKi8KICAgIHBzZXVkb19iaXRfdAlmZXhjaF9iYXNlX3FwXzIzXzE2WzB4MDAwMDhdOy8qIEhlcm1vbiBOZXcuIEZDIEV4Y2hhbmdlIFFQIGJhc2UgUVBOICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzOFsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlsb2dfbWF4X21jZ1sweDAwMDA4XTsgIC8qIExvZzIgb2YgdGhlIG1heGltdW0gbnVtYmVyIG9mIG11bHRpY2FzdCBncm91cHMgKi8KICAgIHBzZXVkb19iaXRfdAludW1fcnN2ZF9tY2dzWzB4MDAwMDRdOy8qIFRoZSBudW1iZXIgb2YgTUdNcyByZXNlcnZlZCBmb3IgZmlybXdhcmUgdXNlIGluIHRoZSBNR0hULgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc2VydmVkIHJlc291cmNlcyBhcmUgbnVtYmVyZWQgZnJvbSAwIHRvIG51bV9yZXNlcnZlZF9tY2dzLTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIDAgLSBubyByZXNvdXJjZXMgYXJlIHJlc2VydmVkLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMzlbMHgwMDAwNF07CiAgICBwc2V1ZG9fYml0X3QJbG9nX21heF9xcF9tY2dbMHgwMDAwOF07LyogTG9nMiBvZiB0aGUgbWF4aW11bSBudW1iZXIgb2YgUVBzIHBlciBtdWx0aWNhc3QgZ3JvdXAgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQwWzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWxvZ19tYXhfc3JjZHNbMHgwMDAwNF07LyogTG9nMiBvZiB0aGUgbWF4aW11bSBudW1iZXIgb2YgU1JDIERvbWFpbnMgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQxWzB4MDAwMDhdOwogICAgcHNldWRvX2JpdF90CW51bV9yc3ZkX3NjcmRzWzB4MDAwMDRdOy8qIFRoZSBudW1iZXIgb2YgU1JDRHMgcmVzZXJ2ZWQgZm9yIGZpcm13YXJlIHVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc2VydmVkIHJlc291cmNlcyBhcmUgbnVtYmVyZWQgZnJvbSAwIHRvIG51bV9yZXNlcnZlZF9yZGRzLTEuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAwIC0gbm8gcmVzb3VyY2VzIGFyZSByZXNlcnZlZC4gKi8KICAgIHBzZXVkb19iaXRfdAlsb2dfbWF4X3BkWzB4MDAwMDVdOyAgIC8qIExvZzIgb2YgdGhlIG1heGltdW0gbnVtYmVyIG9mIFBEcyAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNDJbMHgwMDAwN107CiAgICBwc2V1ZG9fYml0X3QJbnVtX3JzdmRfcGRzWzB4MDAwMDRdOyAvKiBUaGUgbnVtYmVyIG9mIFBEcyByZXNlcnZlZCBmb3IgZmlybXdhcmUgdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzZXJ2ZWQgcmVzb3VyY2VzIGFyZSBudW1iZXJlZCBmcm9tIDAgdG8gbnVtX3Jlc2VydmVkX3Bkcy0xCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiAwIC0gbm8gcmVzb3VyY2VzIGFyZSByZXNlcnZlZC4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQzWzB4MDAwYzBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXFwY19lbnRyeV9zelsweDAwMDEwXTsgLyogUVBDIEVudHJ5IFNpemUgZm9yIHRoZSBkZXZpY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciB0aGUgSW5maW5pSG9zdC1JSUktRVggTVQyNTIwOCBlbnRyeSBzaXplIGlzIDI1NiBieXRlcyAqLwogICAgcHNldWRvX2JpdF90CXJkbWFyZGNfZW50cnlfc3pbMHgwMDAxMF07LyogUmRtYVJkQyBFbnRyeSBTaXplIGZvciB0aGUgZGV2aWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIEluZmluaUhvc3QtSUlJLUVYIE1UMjUyMDggZW50cnkgc2l6ZSBpcyAyNTYgYnl0ZXMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlhbHRjX2VudHJ5X3N6WzB4MDAwMTBdOy8qIEV4dGVuZGVkIFFQQyBlbnRyeSBzaXplIGZvciB0aGUgZGV2aWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIEluZmluaUhvc3QtSUlJLUVYIE1UMjUyMDggZW50cnkgc2l6ZSBpcyAzMiBieXRlcyAqLwogICAgcHNldWRvX2JpdF90CWF1eF9lbnRyeV9zelsweDAwMDEwXTsgLyogQXV4aWxhcnkgY29udGV4dCBlbnRyeSBzaXplICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJY3FjX2VudHJ5X3N6WzB4MDAwMTBdOyAvKiBDUUMgZW50cnkgc2l6ZSBmb3IgdGhlIGRldmljZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBJbmZpbmlIb3N0LUlJSS1FWCBNVDI1MjA4IGVudHJ5IHNpemUgaXMgNjQgYnl0ZXMgKi8KICAgIHBzZXVkb19iaXRfdAllcWNfZW50cnlfc3pbMHgwMDAxMF07IC8qIEVRIGNvbnRleHQgZW50cnkgc2l6ZSBmb3IgdGhlIGRldmljZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBJbmZpbmlIb3N0LUlJSS1FWCBNVDI1MjA4IGVudHJ5IHNpemUgaXMgNjQgYnl0ZXMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAljX21wdF9lbnRyeV9zelsweDAwMDEwXTsvKiBjTVBUIGVudHJ5IHNpemUgaW4gQnl0ZXMgZm9yIHRoZSBkZXZpY2UuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIEluZmluaUhvc3QtSUlJLUVYIE1UMjUyMDggZW50cnkgc2l6ZSBpcyA2NCBieXRlcyAqLwogICAgcHNldWRvX2JpdF90CXNycV9lbnRyeV9zelsweDAwMDEwXTsgLyogU1JRIGNvbnRleHQgZW50cnkgc2l6ZSBmb3IgdGhlIGRldmljZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHRoZSBJbmZpbmlIb3N0LUlJSS1FWCBNVDI1MjA4IGVudHJ5IHNpemUgaXMgMzIgYnl0ZXMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlkX21wdF9lbnRyeV9zelsweDAwMDEwXTsvKiBkTVBUIGVudHJ5IHNpemUgaW4gQnl0ZXMgZm9yIHRoZSBkZXZpY2UuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIEluZmluaUhvc3QtSUlJLUVYIE1UMjUyMDggZW50cnkgc2l6ZSBpcyA2NCBieXRlcyAqLwogICAgcHNldWRvX2JpdF90CW10dF9lbnRyeV9zelsweDAwMDEwXTsgLyogTVRUIGVudHJ5IHNpemUgaW4gQnl0ZXMgZm9yIHRoZSBkZXZpY2UuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgdGhlIEluZmluaUhvc3QtSUlJLUVYIE1UMjUyMDggZW50cnkgc2l6ZSBpcyA4IGJ5dGVzICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJYm1tZVsweDAwMDAxXTsgICAgICAgICAvKiBCYXNlIE1lbW9yeSBNYW5hZ2VtZW50IEV4dGVuc2lvbiBTdXBwb3J0ICovCiAgICBwc2V1ZG9fYml0X3QJd2luX3R5cGVbMHgwMDAwMV07ICAgICAvKiBCb3VuZCBUeXBlIDIgTWVtb3J5IFdpbmRvdyBBc3NvY2lhdGlvbiBtZWNoYW5pc206CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC0gVHlwZSAyQSAtIFFQIE51bWJlciBBc3NvY2lhdGlvbjsgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLSBUeXBlIDJCIC0gUVAgTnVtYmVyIGFuZCBQRCBBc3NvY2lhdGlvbi4gKi8KICAgIHBzZXVkb19iaXRfdAltcHNbMHgwMDAwMV07ICAgICAgICAgIC8qIEFiaWxpdHkgb2YgdGhpcyBIQ0EgdG8gc3VwcG9ydCBtdWx0aXBsZSBwYWdlIHNpemVzIHBlciBNZW1vcnkgUmVnaW9uLiAqLwogICAgcHNldWRvX2JpdF90CWJsWzB4MDAwMDFdOyAgICAgICAgICAgLyogQWJpbGl0eSBvZiB0aGlzIEhDQSB0byBzdXBwb3J0IEJsb2NrIExpc3QgUGh5c2ljYWwgQnVmZmVyIExpc3RzLiAqLwogICAgcHNldWRvX2JpdF90CXpiWzB4MDAwMDFdOyAgICAgICAgICAgLyogWmVybyBCYXNlZCByZWdpb24vd2luZG93cyBzdXBwb3J0ZWQgKi8KICAgIHBzZXVkb19iaXRfdAlsaWZbMHgwMDAwMV07ICAgICAgICAgIC8qIEFiaWxpdHkgb2YgdGhpcyBIQ0EgdG8gc3VwcG9ydCBMb2NhbCBJbnZhbGlkYXRlIEZlbmNpbmcuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0NFsweDAwMDFhXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNkX2xrZXlbMHgwMDAyMF07ICAgIC8qIFRoZSB2YWx1ZSBvZiB0aGUgcmVzZXJ2ZWQgTGtleSBmb3IgQmFzZSBNZW1vcnkgTWFuYWdlbWVudCBFeHRlbnNpb24gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQ1WzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW1heF9pY21fc2l6ZV9oWzB4MDAwMjBdOy8qIEJpdHMgWzYzOjMyXSBvZiBtYXhpbXVtIElDTSBzaXplIEluZmluaUhvc3QgSUlJIEV4IHN1cHBvcnQgaW4gYnl0ZXMuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbWF4X2ljbV9zaXplX2xbMHgwMDAyMF07LyogQml0cyBbMzE6MF0gb2YgbWF4aW11bSBJQ00gc2l6ZSBJbmZpbmlIb3N0IElJSSBFeCBzdXBwb3J0IGluIGJ5dGVzLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNDZbMHgwMDJjMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBRVUVSWV9BREFQVEVSIFBhcmFtZXRlcnMgQmxvY2sgICAgIyMjIyBtaWNoYWwgLSBnZHJvciBmaXhlZCAqLwoKc3RydWN0IGhlcm1vbnBybV9xdWVyeV9hZGFwdGVyX3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDgwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAxOF07CiAgICBwc2V1ZG9fYml0X3QJaW50YXBpblsweDAwMDA4XTsgICAgICAvKiBEcml2ZXIgc2hvdWxkIHNldCB0aGlzIGZpZWxkIHRvIElOVFIgdmFsdWUgaW4gdGhlIGV2ZW50IHF1ZXVlIGluIG9yZGVyIHRvIGdldCBFeHByZXNzIGludGVycnVwdCBtZXNzYWdlcy4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDJbMHgwMDA2MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX3ZzZF9zdAl2c2Q7ICAgICAgICAgLyogIyMjbWljaGFsLSB0aGlzIGZpZWxkIHdhcyByZXBsYWNlZCBieSAyIGZpZWxkcyA6IHZzZCAuMTY2NDsgdnNkKGNvbnRpbnVlZC9wc2lkIC4xMjg7ICovCi8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBRVUVSWV9GVyBQYXJhbWV0ZXJzIEJsb2NrICAgICAgIyMjIyBtaWNoYWwgLSBkb2Vzbid0IG1hdGNoIFBSTSAqLwoKc3RydWN0IGhlcm1vbnBybV9xdWVyeV9md19zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlmd19yZXZfbWFqb3JbMHgwMDAxMF07IC8qIEZpcm13YXJlIFJldmlzaW9uIC0gTWFqb3IgKi8KICAgIHBzZXVkb19iaXRfdAlmd19wYWdlc1sweDAwMDEwXTsgICAgIC8qIEFtb3VudCBvZiBwaHlzaWNhbCBtZW1vcnkgdG8gYmUgYWxsb2NhdGVkIGZvciBGVyB1c2FnZSBpcyBpbiA0S0J5dGUgcGFnZXMuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZndfcmV2X21pbm9yWzB4MDAwMTBdOyAvKiBGaXJtd2FyZSBSZXZpc2lvbiAtIE1pbm9yICovCiAgICBwc2V1ZG9fYml0X3QJZndfcmV2X3N1Ym1pbm9yWzB4MDAwMTBdOy8qIEZpcm13YXJlIFN1Yi1taW5vciB2ZXJzaW9uIChQYXRjaCBsZXZlbCkuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJY21kX2ludGVyZmFjZV9yZXZbMHgwMDAxMF07LyogQ29tbWFuZCBJbnRlcmZhY2UgSW50ZXJwcmV0ZXIgUmV2aXNpb24gSUQgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAxMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbG9nX21heF9vdXRzdGFuZGluZ19jbWRbMHgwMDAwOF07LyogTG9nMiBvZiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29tbWFuZHMgdGhlIEhDUiBjYW4gc3VwcG9ydCBzaW11bHRhbmVvdXNseSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMDE3XTsKICAgIHBzZXVkb19iaXRfdAlkdFsweDAwMDAxXTsgICAgICAgICAgIC8qIERlYnVnIFRyYWNlIFN1cHBvcnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgLSBEZWJ1ZyB0cmFjZSBpcyBub3Qgc3VwcG9ydGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gRGVidWcgdHJhY2UgaXMgc3VwcG9ydGVkICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CWNjcVsweDAwMDAxXTsgICAgICAgICAgLyogQ0NRIHN1cHBvcnQgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDNbMHgwMDAwNl07CiAgICBwc2V1ZG9fYml0X3QJZndfc2Vjb25kc1sweDAwMDA4XTsgICAvKiBGVyB0aW1lc3RhbXAgLSBzZWNvbmRzLiBEaXNwYWx5ZWQgYXMgSGV4YWRlY2ltYWwgbnVtYmVyICovCiAgICBwc2V1ZG9fYml0X3QJZndfbWludXRlc1sweDAwMDA4XTsgICAvKiBGVyB0aW1lc3RhbXAgLSBtaW51dGVzLiBEaXNwYWx5ZWQgYXMgSGV4YWRlY2ltYWwgbnVtYmVyICovCiAgICBwc2V1ZG9fYml0X3QJZndfaG91clsweDAwMDA4XTsgICAgICAvKiBGVyB0aW1lc3RhbXAgLSBob3VyLiAgICBEaXNwYWx5ZWQgYXMgSGV4YWRlY2ltYWwgbnVtYmVyICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZndfZGF5WzB4MDAwMDhdOyAgICAgICAvKiBGVyB0aW1lc3RhbXAgLSBkYXkuICAgICBEaXNwYWx5ZWQgYXMgSGV4YWRlY2ltYWwgbnVtYmVyICovCiAgICBwc2V1ZG9fYml0X3QJZndfbW9udGhbMHgwMDAwOF07ICAgICAvKiBGVyB0aW1lc3RhbXAgLSBtb250aC4gICBEaXNwYWx5ZWQgYXMgSGV4YWRlY2ltYWwgbnVtYmVyICovCiAgICBwc2V1ZG9fYml0X3QJZndfeWVhclsweDAwMDEwXTsgICAgICAvKiBGVyB0aW1lc3RhbXAgLSB5ZWFyLiAgICBEaXNwYWx5ZWQgYXMgSGV4YWRlY2ltYWwgbnVtYmVyIChlLmcuIDB4MjAwNSkgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDRbMHgwMDA0MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJY2xyX2ludF9iYXNlX29mZnNldF9oWzB4MDAwMjBdOy8qIEJpdHMgWzYzOjMyXSBvZiB0aGUgQ2xlYXIgSW50ZXJydXB0IHJlZ2lzdGVywpJzIG9mZnNldCBmcm9tIGNscl9pbnRfYmFyIHJlZ2lzdGVyIGluIFBDSWFkZHJlc3Mgc3BhY2UuIFBvaW50cyB0byBhIDY0LWJpdCByZWdpc3Rlci4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAljbHJfaW50X2Jhc2Vfb2Zmc2V0X2xbMHgwMDAyMF07LyogQml0cyBbMzE6MF0gb2YgdGhlIENsZWFyIEludGVycnVwdCByZWdpc3RlcsKScyBvZmZzZXQgZnJvbSBjbHJfaW50X2JhciByZWdpc3RlciBpbiBQQ0lhZGRyZXNzIHNwYWNlLiBQb2ludHMgdG8gYSA2NC1iaXQgcmVnaXN0ZXIuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ1WzB4MDAwMWVdOwogICAgcHNldWRvX2JpdF90CWNscl9pbnRfYmFyWzB4MDAwMDJdOyAgLyogUENJIGJhc2UgYWRkcmVzcyByZWdpc3RlciAoQkFSKSB3aGVyZSBjbHJfaW50IHJlZ2lzdGVyIGlzIGxvY2F0ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMCAtIEJBUiAwLTEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAxIC0gQkFSIDItMwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAgLSBCQVIgNC01CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMSAtIFJlc2VydmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgUENJIEJBUnMgb2YgQ29ubmVjdFggYXJlIDY0IGJpdCBCQVJzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gQ29ubmVjdFgsIGNscl9pbnQgcmVnaXN0ZXIgaXMgbG9jYXRlZCBvbiBCQVIgMC0xLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNlsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAllcnJvcl9idWZfb2Zmc2V0X2hbMHgwMDAyMF07LyogUmVhZCBPbmx5IGJ1ZmZlciBmb3IgY2F0YXN0cm9waGljIGVycm9yIHJlcG9ydHMgKGJpdHMgWzYzOjMyXSBvZiBvZmZzZXQgZnJvbSBlcnJvcl9idWZfYmFyIHJlZ2lzdGVyIGluIFBDSSBhZGRyZXNzIHNwYWNlLikgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAllcnJvcl9idWZfb2Zmc2V0X2xbMHgwMDAyMF07LyogUmVhZCBPbmx5IGJ1ZmZlciBmb3IgY2F0YXN0cm9waGljIGVycm9yIHJlcG9ydHMgKGJpdHMgWzMxOjBdICBvZiBvZmZzZXQgZnJvbSBlcnJvcl9idWZfYmFyIHJlZ2lzdGVyIGluIFBDSSBhZGRyZXNzIHNwYWNlLikgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAllcnJvcl9idWZfc2l6ZVsweDAwMDIwXTsvKiBTaXplIGluIHdvcmRzICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ3WzB4MDAwMWVdOwogICAgcHNldWRvX2JpdF90CWVycm9yX2J1Zl9iYXJbMHgwMDAwMl07LyogUENJIGJhc2UgYWRkcmVzcyByZWdpc3RlciAoQkFSKSB3aGVyZSBlcnJvcl9idWYgcmVnaXN0ZXIgaXMgbG9jYXRlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAwIC0gQkFSIDAtMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDEgLSBCQVIgMi0zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCAtIEJBUiA0LTUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExIC0gUmVzZXJ2ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBQQ0kgQkFScyBvZiBDb25uZWN0WCBhcmUgNjQgYml0IEJBUnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiBDb25uZWN0WCwgZXJyb3JfYnVmIHJlZ2lzdGVyIGlzIGxvY2F0ZWQgb24gQkFSIDAtMS4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDhbMHgwMDYwMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBNZW1vcnkgQWNjZXNzIFBhcmFtZXRlcnMgZm9yIFVEIEFkZHJlc3MgVmVjdG9yIFRhYmxlICovCgpzdHJ1Y3QgaGVybW9ucHJtX3VkYXZ0YWJsZV9tZW1vcnlfcGFyYW1ldGVyc19zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlsX2tleVsweDAwMDIwXTsgICAgICAgIC8qIExfS2V5IHVzZWQgdG8gYWNjZXNzIFRQVCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXBkWzB4MDAwMThdOyAgICAgICAgICAgLyogUEQgdXNlZCBieSBUUFQgZm9yIG1hdGNoaW5nIGFnYWluc3QgUEQgb2YgcmVnaW9uIGVudHJ5IGJlaW5nIGFjY2Vzc2VkLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDA1XTsKICAgIHBzZXVkb19iaXRfdAl4bGF0aW9uX2VuWzB4MDAwMDFdOyAgIC8qIFdoZW4gY2xlYXJlZCwgYWRkcmVzcyBpcyBwaHlzaWNhbCBhZGRyZXNzIGFuZCBubyB0cmFuc2xhdGlvbiB3aWxsIGJlIGRvbmUuIFdoZW4gc2V0LCBhZGRyZXNzIGlzIHZpcnR1YWwuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwMDJdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogSU5JVF9IQ0EgJiBRVUVSWV9IQ0EgUGFyYW1ldGVycyBCbG9jayAjIyMjbWljaGFsLWRvZXNuJ3QgbWF0Y2ggUFJNIChzZWUgZGlmZmVycyBiZWxvdykgbmV3IHNpemUgaW4gYnl0ZXM6MHgzMDAgKi8KCnN0cnVjdCBoZXJtb25wcm1faW5pdF9oY2Ffc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMThdOwogICAgcHNldWRvX2JpdF90CXZlcnNpb25bMHgwMDAwOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwNDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMlsweDAwMDEwXTsKICAgIHBzZXVkb19iaXRfdAloY2FfY29yZV9jbG9ja1sweDAwMDEwXTsvKiBJbnRlcm5hbCBDbG9jayBmcmVxIGluIE1IeiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJvdXRlcl9xcFsweDAwMDE4XTsgICAgLyogUVAgbnVtYmVyIGZvciByb3V0ZXIgbW9kZSAoOCBMU0JpdHMgc2hvdWxkIGJlIDApLiBMb3cgb3JkZXIgOCBiaXRzIGFyZSB0YWtlbiBmcm9tIHRoZSBUQ2xhc3MgZmllbGQgb2YgdGhlIGluY29taW5nIHBhY2tldC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkIG9ubHkgaWYgUkUgYml0IGlzIHNldCAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkM1sweDAwMDA1XTsKICAgIHBzZXVkb19iaXRfdAlpcHIyWzB4MDAwMDFdOyAgICAgICAgIC8qIEhlcm1vbiBOZXcuIElQIHJvdXRlciBvbiBwb3J0IDIgKi8KICAgIHBzZXVkb19iaXRfdAlpcHIxWzB4MDAwMDFdOyAgICAgICAgIC8qIEhlcm1vbiBOZXcuIElQIHJvdXRlciBvbiBwb3J0IDEgKi8KICAgIHBzZXVkb19iaXRfdAlpYnJbMHgwMDAwMV07ICAgICAgICAgIC8qIEluZmluaUJhbmQgUm91dGVyIE1vZGUgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAl1ZHBbMHgwMDAwMV07ICAgICAgICAgIC8qIFVEIFBvcnQgQ2hlY2sgRW5hYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIC0gUG9ydCBmaWVsZCBpbiBBZGRyZXNzIFZlY3RvciBpcyBpZ25vcmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gSENBIHdpbGwgY2hlY2sgdGhlIHBvcnQgZmllbGQgaW4gQVYgZW50cnkgKGZldGNoZWQgZm9yIFVEIGRlc2NyaXB0b3IpIGFnYWluc3QgdGhlIFBvcnQgb2YgdGhlIFVEIFFQIGV4ZWN1dGluZyB0aGUgZGVzY3JpcHRvci4gKi8KICAgIHBzZXVkb19iaXRfdAloZVsweDAwMDAxXTsgICAgICAgICAgIC8qIEhvc3QgRW5kaWFuZXNzIC0gVXNlZCBmb3IgQXRvbWljIE9wZXJhdGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgLSBIb3N0IGlzIExpdHRsZSBFbmRpYW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLSBIb3N0IGlzIEJpZyBlbmRpYW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNFsweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAljZVsweDAwMDAxXTsgICAgICAgICAgIC8qIENoZWNrc3VtIEVuYWJsZWQgLSB3aGVuIFNldCBJUG92ZXJJQiBjaGVja3N1bSBnZW5lcmF0aW9uICYgY2hlY2tpbmcgaXMgZW5hYmxlZCAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNVsweDAwMDFjXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDZbMHgwMDA0MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX3FwY2Jhc2VhZGRyX3N0CXFwY19lZWNfY3FjX2VxY19yZGJfcGFyYW1ldGVyczsvKiAjIyBtaWNoYWwgLSB0aGlzIGZpZWxkIGhhcyBjaGVuZ2VkIHRvIC0gInFwY19jcWNfZXFjX3BhcmFtZXRlcnMiIC0gZ2Ryb3IsIHRoaXMgaXMgb2sgZm9yIG5vdyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkN1sweDAwMTAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fbXVsdGljYXN0cGFyYW1fc3QJbXVsdGljYXN0X3BhcmFtZXRlcnM7LyogIyNtaWNoYWwtIHRoaXMgZmllbGQgaGFzIGNoZW5nZWQgdG8gLSAiSUJVRC9JUHY2X211bHRpY2FzdF9wYXJhbWV0ZXJzIiAtIGdkcm9yIC0gdGhpcyBpcyBPSyBmb3Igbm93ICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ4WzB4MDAwODBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV90cHRwYXJhbXNfc3QJdHB0X3BhcmFtZXRlcnM7Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ5WzB4MDAwODBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV91YXJfcGFyYW1zX3N0CXVhcl9wYXJhbWV0ZXJzOy8qIFVBUiBQYXJhbWV0ZXJzICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxMFsweDAwNjAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIEV2ZW50IFF1ZXVlIENvbnRleHQgVGFibGUgRW50cnkgICAgICMjIyMgbWljaGFsIC0gZ2Ryb3IgZml4ZWQgKi8KCnN0cnVjdCBoZXJtb25wcm1fZXFjX3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDA4XTsKICAgIHBzZXVkb19iaXRfdAlzdFsweDAwMDA0XTsgICAgICAgICAgIC8qIEV2ZW50IGRlbGl2ZXJ5IHN0YXRlIG1hY2hpbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSAtIEFybWVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweEEgLSBGaXJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhCIC0gQWx3YXlzX0FybWVkIChhdXRvLXJlYXJtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgLSByZXNlcnZlZCAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMDA1XTsKICAgIHBzZXVkb19iaXRfdAlvaVsweDAwMDAxXTsgICAgICAgICAgIC8qIE9lcnJ1biBpZ25vcmUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBzZXQsIEhXIHdpbGwgbm90IGNoZWNrIEVRIGZ1bGwgY29uZGl0aW9uIHdoZW4gd3JpdGluZyBuZXcgRVFFcy4gKi8KICAgIHBzZXVkb19iaXRfdAllY1sweDAwMDAxXTsgICAgICAgICAgIC8qIGlzIHNldCwgYWxsIEVRRXMgYXJlIHdyaXR0ZW4gKGNvYWxlc2NlZCkgdG8gZmlyc3QgRVEgZW50cnkgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDJbMHgwMDAwOV07CiAgICBwc2V1ZG9fYml0X3QJc3RhdHVzWzB4MDAwMDRdOyAgICAgICAvKiBFUSBzdGF0dXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMDAwIC0gT0sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMTAgLSBFUSB3cml0ZSBmYWlsdXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZCBmb3IgdGhlIFFVRVJZX0VRIGFuZCBIVzJTV19FUSBjb21tYW5kcyBvbmx5ICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNFsweDAwMDA1XTsKICAgIHBzZXVkb19iaXRfdAlwYWdlX29mZnNldFsweDAwMDA3XTsgIC8qIG9mZnNldCBiaXRzWzExOjVdIG9mIGZpcnN0IEVRRSBpbiB0aGUgRVEgcmVsYXRpdmUgdG8gdGhlIGZpcnN0IHBhZ2UgaW4gbWVtb3J5IHJlZ2lvbiBtYXBwaW5nIHRoaXMgRVEgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDVbMHgwMDAxNF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ2WzB4MDAwMThdOwogICAgcHNldWRvX2JpdF90CWxvZ19lcV9zaXplWzB4MDAwMDVdOyAgLyogTG9nIChiYXNlIDIpIG9mIHRoZSBFUSBzaXplIChpbiBlbnRyaWVzKS4gIE1heGltdW0gRVEgc2l6ZSBpcyAyXjIyIEVRRXMgKG1heCBsb2dfZXFfc2l6ZSBpcyAyMikgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDdbMHgwMDAwM107Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZXFfbWF4X2NvdW50WzB4MDAwMTBdOyAvKiBFdmVudCBHZW5lcmF0aW9uIE1vZGVyYXRpb24gY291bnRlciAqLwogICAgcHNldWRvX2JpdF90CWVxX3BlcmlvZFsweDAwMDEwXTsgICAgLyogRXZlbnQgR2VuZXJhdGlvbiBtb2RlcmF0aW9uIHRpbWVkLCBtaWNyb3NlY29uZHMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlpbnRyWzB4MDAwMGFdOyAgICAgICAgIC8qIE1TSS1YIHRhYmxlIGVudHJ5IGluZGV4IHRvIGJlIHVzZWQgdG8gc2lnbmFsIGludGVycnVwdHMgb24gdGhpcyBFUS4gIFJlc2VydmVkIGlmIE1TSS1YIGFyZSBub3QgZW5hYmxlZCBpbiB0aGUgUENJIGNvbmZpZ3VyYXRpb24gaGVhZGVyLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkOFsweDAwMDE2XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAltdHRfYmFzZV9hZGRyX2hbMHgwMDAwOF07LyogTVRUIEJhc2UgQWRkcmVzcyBbMzk6MzJdIHJlbGF0aXZlIHRvIElOSVRfSENBLm10dF9iYXNlX2FkZHIgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDlbMHgwMDAxMF07CiAgICBwc2V1ZG9fYml0X3QJbG9nMl9wYWdlX3NpemVbMHgwMDAwNl07LyogTG9nIChiYXNlIDIpIG9mIE1UVCBwYWdlIHNpemUgaW4gdW5pdHMgb2YgNEtCeXRlICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxMFsweDAwMDAyXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDExWzB4MDAwMDNdOwogICAgcHNldWRvX2JpdF90CW10dF9iYXNlX2FkZHJfbFsweDAwMDFkXTsvKiBNVFQgQmFzZSBBZGRyZXNzIFszMTozXSByZWxhdGl2ZSB0byBJTklUX0hDQS5tdHRfYmFzZV9hZGRyICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxMlsweDAwMDQwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAljb25zdW1lcl9jb3VudGVyWzB4MDAwMThdOy8qIENvbnN1bWVyIGNvdW50ZXIuIFRoZSBjb3VudGVyIGlzIGluY3JlbWVudGVkIGZvciBlYWNoIEVRRSBwb2xsZWQgZnJvbSB0aGUgRVEuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBiZSAweDAgaW4gRVEgaW5pdGlhbGl6YXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbnRhaW5lZCBieSBIVyAodmFsaWQgZm9yIHRoZSBRVUVSWV9FUSBjb21tYW5kIG9ubHkpLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMTNbMHgwMDAwOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcHJvZHVjZXJfY291bnRlclsweDAwMDE4XTsvKiBQcm9kdWNlciBDb3V0bmVyLiBUaGUgY291bnRlciBpcyBpbmNyZW1lbnRlZCBmb3IgZWFjaCBFUUUgdGhhdCBpcyB3cml0dGVuIGJ5IHRoZSBIVyB0byB0aGUgRVEuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVEgb3ZlcnJ1biBpcyByZXBvcnRlZCBpZiBQcm9kdWNlcl9jb3VudGVyICsgMSBlcXVhbHMgdG8gQ29uc3VtZXJfY291bnRlciBhbmQgYSBFUUUgbmVlZHMgdG8gYmUgYWRkZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbnRhaW5lZCBieSBIVyAodmFsaWQgZm9yIHRoZSBRVUVSWV9FUSBjb21tYW5kIG9ubHkpICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxNFsweDAwMDA4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDE1WzB4MDAwODBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogTWVtb3J5IFRyYW5zbGF0aW9uIFRhYmxlIChNVFQpIEVudHJ5ICAgICAjIyMjIG1pY2hhbCAtIG1hdGNoIHRvIFBSTSAqLwoKc3RydWN0IGhlcm1vbnBybV9tdHRfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJcHRhZ19oWzB4MDAwMjBdOyAgICAgICAvKiBIaWdoLW9yZGVyIGJpdHMgb2YgcGh5c2ljYWwgdGFnLiBUaGUgc2l6ZSBvZiB0aGUgZmllbGQgZGVwZW5kcyBvbiB0aGUgcGFnZSBzaXplIG9mIHRoZSByZWdpb24uIE1heGltdW0gUFRBRyBzaXplIGlzIDUyIGJpdHMuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcFsweDAwMDAxXTsgICAgICAgICAgICAvKiBQcmVzZW50IGJpdC4gSWYgc2V0LCBwYWdlIGVudHJ5IGlzIHZhbGlkLiBJZiBjbGVhcmVkLCBhY2Nlc3MgdG8gdGhpcyBwYWdlIHdpbGwgZ2VuZXJhdGUgbm9uLXByZXNlbnQgcGFnZSBhY2Nlc3MgZmF1bHQuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMDJdOwogICAgcHNldWRvX2JpdF90CXB0YWdfbFsweDAwMDFkXTsgICAgICAgLyogTG93LW9yZGVyIGJpdHMgb2YgUGh5c2ljYWwgdGFnLiBUaGUgc2l6ZSBvZiB0aGUgZmllbGQgZGVwZW5kcyBvbiB0aGUgcGFnZSBzaXplIG9mIHRoZSByZWdpb24uIE1heGltdW0gUFRBRyBzaXplIGlzIDUyIGJpdHMuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBNZW1vcnkgUHJvdGVjdGlvbiBUYWJsZSAoTVBUKSBFbnRyeSAgICMjIyBkb2Vzbid0IG1hdGNoIFBSTSAobmV3IGZpZWxkcyB3ZXJlIGFkZGVkKS4gbmV3IHNpemUgaW4gYnl0ZXMgOiAweDU0ICovCgpzdHJ1Y3QgaGVybW9ucHJtX21wdF9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAwOF07CiAgICBwc2V1ZG9fYml0X3QJcl93WzB4MDAwMDFdOyAgICAgICAgICAvKiBEZWZpbmVzIHdoZXRoZXIgdGhpcyBlbnRyeSBpcyBSZWdpb24gKDEpIG9yIFdpbmRvdyAoMCkgKi8KICAgIHBzZXVkb19iaXRfdAlwYVsweDAwMDAxXTsgICAgICAgICAgIC8qIFBoeXNpY2FsIGFkZHJlc3MuIElmIHNldCwgbm8gdmlydHVhbC10by1waHlzaWNhbCBhZGRyZXNzIHRyYW5zbGF0aW9uIGlzIHBlcmZvcm1lZCBmb3IgdGhpcyByZWdpb24gKi8KICAgIHBzZXVkb19iaXRfdAlsclsweDAwMDAxXTsgICAgICAgICAgIC8qIElmIHNldCAtIGxvY2FsIHJlYWQgYWNjZXNzIGlzIGVuYWJsZWQuIE11c3QgYmUgc2V0IGZvciBhbGwgTVBUIEVudHJpZXMuICovCiAgICBwc2V1ZG9fYml0X3QJbHdbMHgwMDAwMV07ICAgICAgICAgICAvKiBJZiBzZXQgLSBsb2NhbCB3cml0ZSBhY2Nlc3MgaXMgZW5hYmxlZCAqLwogICAgcHNldWRvX2JpdF90CXJyWzB4MDAwMDFdOyAgICAgICAgICAgLyogSWYgc2V0IC0gcmVtb3RlIHJlYWQgYWNjZXNzIGlzIGVuYWJsZWQuICovCiAgICBwc2V1ZG9fYml0X3QJcndbMHgwMDAwMV07ICAgICAgICAgICAvKiBJZiBzZXQgLSByZW1vdGUgd3JpdGUgYWNjZXNzIGlzIGVuYWJsZWQgKi8KICAgIHBzZXVkb19iaXRfdAlhdG9taWNbMHgwMDAwMV07ICAgICAgIC8qIElmIHNldCAtIHJlbW90ZSBBdG9taWMgYWNjZXNzIGlzIGFsbG93ZWQuICovCiAgICBwc2V1ZG9fYml0X3QJZWJbMHgwMDAwMV07ICAgICAgICAgICAvKiBJZiBzZXQgLSBiaW5kIGlzIGVuYWJsZWQuIFZhbGlkIG9ubHkgZm9yIHJlZ2lvbnMuICovCiAgICBwc2V1ZG9fYml0X3QJYXRjX3JlcVsweDAwMDAxXTsgICAgICAvKiBJZiBzZXQsIHNlY29uZCBob3Agb2YgYWRkcmVzcyB0cmFuc2xhdGlvbiAoUEEgdG8gTUEpIHRvIGJlIHBlcmZvcm1lZCBpbiB0aGUgZGV2aWNlIHByaW9yIHRvIGlzc3VpbmcgdGhlIHVwbGluayByZXF1ZXN0LiAqLwogICAgcHNldWRvX2JpdF90CWF0Y194bGF0ZWRbMHgwMDAwMV07ICAgLyogSWYgc2V0LCB1cGxpbmsgY3ljbGUgdG8gYmUgaXNzdWVzIHdpdGggwpNBVENfdHJhbnNsYXRlZMKUIGluZGljYXRvciB0byBmb3JjZSBieXBhc3Mgb2YgdGhlIGNoaXBzZXQgSU9NTVUuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CW5vX3Nub29wWzB4MDAwMDFdOyAgICAgLyogSWYgc2V0LCBpc3N1ZSBQQ0llIGN5Y2xlIHdpdGggw7tubyBTbm9vcMO/IGF0dHJpYnV0ZSAtIGN5Y2xlIG5vdCB0byBiZSBzbm9vcGVkIGluIENQVSBjYWNoZXMgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDJbMHgwMDAwOF07CiAgICBwc2V1ZG9fYml0X3QJc3RhdHVzWzB4MDAwMDRdOyAgICAgICAvKiAweEYgLSBOb3QgVmFsaWQgMHgzIC0gRnJlZS4gZWxzZSAtIEhXIG93bmVyc2hpcC5VbmJvdW5kIFR5cGUxIHdpbmRvd3MgYXJlIGRlbm90ZWQgYnkgcmVnX3duZF9sZW49MC4gVW5ib3VuZCBUeXBlIElJIHdpbmRvd3MgYXJlIGRlbm90ZWQgYnkgU3RhdHVzID0gRnJlZS4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDNbMHgwMDAwN107CiAgICBwc2V1ZG9fYml0X3QJYnFwWzB4MDAwMDFdOyAgICAgICAgICAvKiAwIC0gbm90IGJvdW5kIHRvIHFwICh0eXBlIDEgd2luZG93LCBNUikxIC0gYm91bmQgdG8gcXAgKHR5cGUgMiB3aW5kb3cpICovCiAgICBwc2V1ZG9fYml0X3QJcXBuWzB4MDAwMThdOyAgICAgICAgICAvKiBRUCBudW1iZXIgdGhpcyBNVyBpcyBhdHRhY2hlZCB0by4gVmFsaWQgZm9yIHR5cGUyIG1lbW9yeSB3aW5kb3dzIGFuZCBvbiBRVUVSWV9NUFQgb25seSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW1lbV9rZXlbMHgwMDAyMF07ICAgICAgLyogVGhlIG1lbW9yeSBLZXkuIFRoZSBmaWVsZCBob2xkcyB0aGUgbWVtX2tleSBmaWVsZCBpbiB0aGUgZm9sbG93aW5nIHNlbWFudGljczoge2tleVs3OjBdLGtleVszMTo4XX0uICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcGRbMHgwMDAxOF07ICAgICAgICAgICAvKiBQcm90ZWN0aW9uIERvbWFpbi4gSWYgVk1NIHN1cHBvcnQgaXMgZW5hYmxlZCBQRFsxNzoyM10gc3BlY2lmeSBHdWVzdCBWTSBJZGVudGlmaWVyICovCiAgICBwc2V1ZG9fYml0X3QJZW5fcmludlsweDAwMDAxXTsgICAgICAvKiBFbmFibGUgcmVtb3RlIGludmFsaWRhdGlvbiAqLwogICAgcHNldWRvX2JpdF90CWVpWzB4MDAwMDFdOyAgICAgICAgICAgLyogRW5hYmxlIEludmFsaWRhdGlvbiAtIFdoZW4gc2V0LCBMb2NhbC9SZW1vdGUgaW52YWxpZGF0aW9uIGNhbiBiZSBleGVjdXRlZCBvbiB0aGlzIHdpbmRvdy9yZWdpb24uIE11c3QgYmUgc2V0IGZvciB0eXBlMiB3aW5kb3dzIGFuZCBub24tc2hhcmVkIHBoeXNpY2FsIG1lbW9yeSByZWdpb25zLiBNdXN0IGJlIGNsZWFyIGZvciByZWdpb25zIHRoYXQgYXJlIHVzZWQgdG8gYWNjZXNzIFdvcmsgUXVldWVzLCBDb21wbGV0aW9uIFF1ZXVlcyBhbmQgRXZlbnQgUXVldWVzICovCiAgICBwc2V1ZG9fYml0X3QJbmNlWzB4MDAwMDFdOyAgICAgICAgICAvKiBEYXRhIGNhbiBiZSBjYWNoZWQgaW4gTmV0d29yayBDYWNoZSAoc2VlIMO7TmV0d29yayBDYWNoZcO/IG9uIHBhZ2UgODEpICovCiAgICBwc2V1ZG9fYml0X3QJZnJlWzB4MDAwMDFdOyAgICAgICAgICAvKiBXaGVuIHNldCwgRmFzdCBSZWdpc3RyYXRpb24gT3BlcmF0aW9ucyBjYW4gYmUgZXhlY3V0ZWQgb24gdGhpcyByZWdpb24gKi8KICAgIHBzZXVkb19iaXRfdAlyYWVbMHgwMDAwMV07ICAgICAgICAgIC8qIFdoZW4gc2V0LCByZW1vdGUgYWNjZXNzIGNhbiBiZSBlbmFibGVkIG9uIHRoaXMgcmVnaW9uLiBVc2VkIHdoZW4gZXhlY3V0aW5nIEZhc3QgUmVnaXN0cmF0aW9uIFdvcmsgUmVxdWVzdCB0byB2YWxpZGF0ZSB0aGF0IHJlbW90ZSBhY2Nlc3MgcmlnaHRzIGNhbiBiZSBncmFudGVkIHRvIHRoaXMgTVBULiBJZiB0aGUgYml0IGlzIGNsZWFyZWQsIEZhc3QgUmVnaXN0cmF0aW9uIFdvcmsgUmVxdWVzdCByZXF1ZXN0aW5nIHJlbW90ZSBhY2Nlc3MgcmlnaHRzIHdpbGwgZmFpbCAqLwogICAgcHNldWRvX2JpdF90CXdfZGlmWzB4MDAwMDFdOyAgICAgICAgLyogV2lyZSBzcGFjZSBjb250YWlucyBkaWYgKi8KICAgIHBzZXVkb19iaXRfdAltX2RpZlsweDAwMDAxXTsgICAgICAgIC8qIE1lbW9yeSBzcGFjZSBjb250YWlucyBkaWYgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDRbMHgwMDAwMV07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJc3RhcnRfYWRkcl9oWzB4MDAwMjBdOyAvKiBTdGFydCBBZGRyZXNzIC0gVmlydHVhbCBBZGRyZXNzIHdoZXJlIHRoaXMgcmVnaW9uL3dpbmRvdyBzdGFydHMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlzdGFydF9hZGRyX2xbMHgwMDAyMF07IC8qIFN0YXJ0IEFkZHJlc3MgLSBWaXJ0dWFsIEFkZHJlc3Mgd2hlcmUgdGhpcyByZWdpb24vd2luZG93IHN0YXJ0cyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWxlbl9oWzB4MDAwMjBdOyAgICAgICAgLyogUmVnaW9uL1dpbmRvdyBMZW5ndGggKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlsZW5fbFsweDAwMDIwXTsgICAgICAgIC8qIFJlZ2lvbi9XaW5kb3cgTGVuZ3RoICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbGtleVsweDAwMDIwXTsgICAgICAgICAvKiBNdXN0IGJlIDAgZm9yIFNXMkhXX01QVC4gT24gUVVFUllfTVBUIGFuZCBIVzJTV19NUFQgY29tbWFuZHMgZm9yIE1lbW9yeSBXaW5kb3cgaXQgcmVmbGVjdHMgdGhlIExLZXkgb2YgdGhlIFJlZ2lvbiB0aGF0IHRoZSBXaW5kb3cgaXMgYm91bmQgdG8uVGhlIGZpZWxkIGhvbGRzIHRoZSBsa2V5IGZpZWxkIGluIHRoZSBmb2xsb3dpbmcgc2VtYW50aWNzOiB7a2V5Wzc6MF0sa2V5WzMxOjhdfS4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAl3aW5fY250WzB4MDAwMThdOyAgICAgIC8qIE51bWJlciBvZiB3aW5kb3dzIGJvdW5kIHRvIHRoaXMgcmVnaW9uLiBWYWxpZCBmb3IgcmVnaW9ucyBvbmx5LlRoZSBmaWVsZCBpcyB2YWxpZCBvbmx5IGZvciB0aGUgUVVFUllfTVBUIGFuZCBIVzJTV19NUFQgY29tbWFuZHMuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ1WzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW10dF9yZXBbMHgwMDAwNF07ICAgICAgLyogTG9nIChiYXNlIDIpIG9mIHRoZSBudW1iZXIgb2YgdGltZSBhbiBNVFQgaXMgcmVwbGljYXRlZC5FLmcuIGZvciA2NEtCIHZpcnR1YWwgYmxvY2tzIGZyb20gNTEyQiBibG9ja3MsIGEgcmVwbGljYXRpb24gZmFjdG9yIG9mIDJeNyBpcyBuZWVkZWQgKE1UVF9SRVBMSUNBVElPTl9GQUNUT1I9NykuVXAgdG8gMU1CIG9mIHJlcGxpY2F0ZWQgYmxvY2sgd29ya3MgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDZbMHgwMDAxMV07CiAgICBwc2V1ZG9fYml0X3QJYmxvY2tfbW9kZVsweDAwMDAxXTsgICAvKiBJZiBzZXQsIHRoZSBwYWdlIHNpemUgaXMgbm90IHBvd2VyIG9mIHR3bywgYW5kIGVudGl0eV9zaXplIGlzIGluIGJ5dGVzLiAqLwogICAgcHNldWRvX2JpdF90CWxlbjY0WzB4MDAwMDFdOyAgICAgICAgLyogUmVnaW9uL1dpbmRvdyBMZW5ndGhbNjRdLiBUaGlzIGJpdCBhZGRlZCB0byBlbmFibGUgcmVnaXN0ZXJpbmcgMl42NCBieXRlcyBwZXIgcmVnaW9uICovCiAgICBwc2V1ZG9fYml0X3QJZmJvX2VuWzB4MDAwMDFdOyAgICAgICAvKiBJZiBzZXQsIG10dF9mYm8gZmllbGQgaXMgdmFsaWQsIG90aGVyd2lzZSBpdCBpcyBjYWxjdWxhdGVkIGZyb20gbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZXMgb2YgdGhlIGFkZHJlc3MuIE11c3QgYmUgc2V0IHdoZW4gbXR0X3JlcCBpcyB1c2VkIG9yIE1QVCBpcyBibG9jay1tb2RlIHJlZ2lvbiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkN1sweDAwMDA4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAltdHRfYWRyX2hbMHgwMDAwOF07ICAgIC8qIE9mZnNldCB0byBNVFQgbGlzdCBmb3IgdGhpcyByZWdpb24uIE11c3QgYmUgYWxpZ25lZCBvbiA4IGJ5dGVzLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkOFsweDAwMDE4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAltdHRfYWRyX2xbMHgwMDAyMF07ICAgIC8qIE9mZnNldCB0byBNVFQgbGlzdCBmb3IgdGhpcyByZWdpb24uIE11c3QgYmUgYWxpZ25lZCBvbiA4IGJ5dGVzLiMjI21pY2hhbC1yZWxwYWNlZCB3aXRoOiBSRVNFUlZFRCAuMzttdHRfYWRyX2wgLjI5OyBnZHJvciAtIHRoaXMgaXMgT0sgdG8gbGVhdmUgaXQgdGhpcyB3YXkuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbXR0X3NpemVbMHgwMDAyMF07ICAgICAvKiBOdW1iZXIgb2YgTVRUIGVudHJpZXMgYWxsb2NhdGVkIGZvciB0aGlzIE1SLldoZW4gRmFzdCBSZWdpc3RyYXRpb24gT3BlcmF0aW9ucyBjYW5ub3QgYmUgZXhlY3V0ZWQgb24gdGhpcyByZWdpb24gKEZSRSBiaXQgaXMgemVybykgdGhpcyBmaWVsZCBpcyByZXNlcnZlZC5XaGVuIEZhc3QgUmVnaXN0cmF0aW9uIE9wZXJhdGlvbiBpcyBlbmFibGVkIChGUkUgYml0IGlzIHNldCkgdGhpcyBmaWVsZCBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBNVFRzIGFsbG9jYXRlZCBmb3IgdGhpcyBNUi4gSWYgbXR0X3N6IHZhbHVlIGNhbm5vdCBiZSB6ZXJvLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWVudGl0eV9zaXplWzB4MDAwMTVdOyAgLyogUGFnZS9ibG9jayBzaXplLiBJZiBNUFQgbWFwcyBwYWdlcywgdGhlIHBhZ2Ugc2l6ZSBpcyAyZW50aXJ5X3NpemUuIElmIE1QVCBtYXBzIGJsb2NrcywgdGhlIGVudGl0eV9zaXplIGZpZWxkIHNwZWNpZmllcyBibG9jayBzaXplIGluIGJ5dGVzLiBUaGUgbWluaW11bSBhbW91bnQgb2YgbWVtb3J5IHRoYXQgY2FuIGJlIG1hcHBlZCB3aXRoIHNpbmdsZSBNVFQgaXMgNTEyIGJ5dGVzLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkOVsweDAwMDBiXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAltdHRfZmJvWzB4MDAwMTVdOyAgICAgIC8qIEZpcnN0IGJ5dGUgb2Zmc2V0IGluIHRoZSB6ZXJvLWJhc2VkIHJlZ2lvbiAtIHRoZSBmaXJzdCBieXRlIHdpdGhpbiB0aGUgZmlyc3QgYmxvY2svcGFnZSBzdGFydCBhZGRyZXNzIHJlZmVycyB0by4gV2hlbiBtdHRfcmVwIGlzIGJlaW5nIHVzZWQsIGZibyBwb2ludHMgd2l0aGluIHRoZSByZXBsaWNhdGVkIGJsb2NrIChpLmUuIGJsb2NrLXNpemUgeCAyXm10dF9yZXApICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxMFsweDAwMDBiXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIENvbXBsZXRpb24gUXVldWUgQ29udGV4dCBUYWJsZSBFbnRyeQkjIyMjIG1pY2hhbCAtIG1hdGNoIFBSTSAqLwoKc3RydWN0IGhlcm1vbnBybV9jb21wbGV0aW9uX3F1ZXVlX2NvbnRleHRfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMDhdOwogICAgcHNldWRvX2JpdF90CXN0WzB4MDAwMDRdOyAgICAgICAgICAgLyogRXZlbnQgZGVsaXZlcnkgc3RhdGUgbWFjaGluZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwIC0gcmVzZXJ2ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OSAtIEFSTUVEIChSZXF1ZXN0IGZvciBOb3RpZmljYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDYgLSBBUk1FRCBTT0xJQ0lURUQgKFJlcXVlc3QgU29saWNpdGVkIE5vdGlmaWNhdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4QSAtIEZJUkVECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlciAtIHJlc2VydmVkCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVzdCBiZSAweDAgaW4gQ1EgaW5pdGlhbGl6YXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZCBmb3IgdGhlIFFVRVJZX0NRIGFuZCBIVzJTV19DUSBjb21tYW5kcyBvbmx5LiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMDA1XTsKICAgIHBzZXVkb19iaXRfdAlvaVsweDAwMDAxXTsgICAgICAgICAgIC8qIFdoZW4gc2V0LCBvdmVycnVuIGlnbm9yZSBpcyBlbmFibGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hlbiBzZXQsIFVwZGF0ZXMgb2YgQ1EgY29uc3VtZXIgY291bnRlciAocG9sbCBmb3IgY29tcGxldGlvbikgb3IgUmVxdWVzdCBjb21wbGV0aW9uIG5vdGlmaWNhdGlvbnMgKEFybSBDUSkgZG9vcmJlbGxzIHNob3VsZCBub3QgYmUgcmFuZyBvbiB0aGF0IENRLiAqLwogICAgcHNldWRvX2JpdF90CWNjWzB4MDAwMDFdOyAgICAgICAgICAgLyogaXMgc2V0LCBhbGwgQ1FFcyBhcmUgd3JpdHRlbiAoY29hbGVzY2VkKSB0byBmaXJzdCBDUSBlbnRyeSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMlsweDAwMDA5XTsKICAgIHBzZXVkb19iaXRfdAlzdGF0dXNbMHgwMDAwNF07ICAgICAgIC8qIENRIHN0YXR1cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwMCAtIE9LCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAxIC0gQ1Egb3ZlcmZsb3cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMTAgLSBDUSB3cml0ZSBmYWlsdXJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZCBmb3IgdGhlIFFVRVJZX0NRIGFuZCBIVzJTV19DUSBjb21tYW5kcyBvbmx5ICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNFsweDAwMDA1XTsKICAgIHBzZXVkb19iaXRfdAlwYWdlX29mZnNldFsweDAwMDA3XTsgIC8qIG9mZnNldCBvZiBmaXJzdCBDUUUgaW4gdGhlIENRIHJlbGF0aXZlIHRvIHRoZSBmaXJzdCBwYWdlIGluIG1lbW9yeSByZWdpb24gbWFwcGluZyB0aGlzIENRICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ1WzB4MDAwMTRdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXVzcl9wYWdlWzB4MDAwMThdOyAgICAgLyogVUFSIHBhZ2UgdGhpcyBDUSBjYW4gYmUgYWNjZXNzZWQgdGhyb3VnaCAocmluZ2luaWcgQ1EgZG9vcmJlbGxzKSAqLwogICAgcHNldWRvX2JpdF90CWxvZ19jcV9zaXplWzB4MDAwMDVdOyAgLyogTG9nIChiYXNlIDIpIG9mIHRoZSBDUSBzaXplIChpbiBlbnRyaWVzKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heGltdW0gQ1Egc2l6ZSBpcyAyXjE3IENRRXMgKG1heCBsb2dfY3Ffc2l6ZSBpcyAxNykgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDZbMHgwMDAwM107Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJY3FfbWF4X2NvdW50WzB4MDAwMTBdOyAvKiBFdmVudCBHZW5lcmF0aW9uIE1vZGVyYXRpb24gY291bnRlciAqLwogICAgcHNldWRvX2JpdF90CWNxX3BlcmlvZFsweDAwMDEwXTsgICAgLyogRXZlbnQgR2VuZXJhdGlvbiBtb2RlcmF0aW9uIHRpbWVkLCBtaWNyb3NlY29uZHMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAljX2VxblsweDAwMDA5XTsgICAgICAgIC8qIEV2ZW50IFF1ZXVlIHRoaXMgQ1EgcmVwb3J0cyBjb21wbGV0aW9uIGV2ZW50cyB0by4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkIHZhbHVlcyBhcmUgMCB0byA2MwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgY29uZmlndXJlZCB0byB2YWx1ZSBvdGhlciB0aGFuIDAtNjMsIGNvbXBsZXRpb24gZXZlbnRzIHdpbGwgbm90IGJlIHJlcG9ydGVkIG9uIHRoZSBDUS4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDdbMHgwMDAxN107Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbXR0X2Jhc2VfYWRkcl9oWzB4MDAwMDhdOy8qIE1UVCBCYXNlIEFkZHJlc3MgWzM5OjMyXSBpbiBJQ00gcmVsYXRpdmUgdG8gSU5JVF9IQ0EubXR0X2Jhc2VfYWRkciAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkOFsweDAwMDEwXTsKICAgIHBzZXVkb19iaXRfdAlsb2cyX3BhZ2Vfc2l6ZVsweDAwMDA2XTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDlbMHgwMDAwMl07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxMFsweDAwMDAzXTsKICAgIHBzZXVkb19iaXRfdAltdHRfYmFzZV9hZGRyX2xbMHgwMDAxZF07LyogTVRUIEJhc2UgQWRkcmVzcyBbMzE6M10gaW4gSUNNIHJlbGF0aXZlIHRvIElOSVRfSENBLm10dF9iYXNlX2FkZHIgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlsYXN0X25vdGlmaWVkX2luZHhbMHgwMDAxOF07LyogTWFpbnRhaW5lZCBieSBIVy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkIGZvciBRVUVSWV9DUSBhbmQgSFcyU1dfQ1EgY29tbWFuZHMgb25seS4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDExWzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXNvbGljaXRfcHJvZHVjZXJfaW5keFsweDAwMDE4XTsvKiBNYWludGFpbmVkIGJ5IEhXLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWQgZm9yIFFVRVJZX0NRIGFuZCBIVzJTV19DUSBjb21tYW5kcyBvbmx5LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxMlsweDAwMDA4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAljb25zdW1lcl9jb3VudGVyWzB4MDAwMThdOy8qIENvbnN1bWVyIGNvdW50ZXIgaXMgYSAzMmJpdHMgY291bnRlciB0aGF0IGlzIGluY3JlbWVudGVkIGZvciBlYWNoIENRRSBwb29sZWQgZnJvbSB0aGUgQ1EuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDEzWzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXByb2R1Y2VyX2NvdW50ZXJbMHgwMDAxOF07LyogUHJvZHVjZXIgY291bnRlciBpcyBhIDMyYml0cyBjb3VudGVyIHRoYXQgaXMgaW5jcmVtZW50ZWQgZm9yIGVhY2ggQ1FFIHRoYXQgaXMgd3JpdHRlbiBieSB0aGUgSFcgdG8gdGhlIENRLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1Egb3ZlcnJ1biBpcyByZXBvcnRlZCBpZiBQcm9kdWNlcl9jb3VudGVyICsgMSBlcXVhbHMgdG8gQ29uc3VtZXJfY291bnRlciBhbmQgYSBDUUUgbmVlZHMgdG8gYmUgYWRkZWQuLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbnRhaW5lZCBieSBIVyAodmFsaWQgZm9yIHRoZSBRVUVSWV9DUSBhbmQgSFcyU1dfQ1EgY29tbWFuZHMgb25seSkgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDE0WzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMTVbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxNlsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlkYl9yZWNvcmRfYWRkcl9oWzB4MDAwMjBdOy8qIENRIERCIFJlY29yZCBwaHlzaWNhbCBhZGRyZXNzIFs2MzozMl0gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDE3WzB4MDAwMDNdOwogICAgcHNldWRvX2JpdF90CWRiX3JlY29yZF9hZGRyX2xbMHgwMDAxZF07LyogQ1EgREIgUmVjb3JkIHBoeXNpY2FsIGFkZHJlc3MgWzMxOjNdICovCi8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBHUElPX2V2ZW50X2RhdGEgICAjIyMjIG1pY2hhbCAtIGdkcm9yIGZpeGVkICovCgpzdHJ1Y3QgaGVybW9ucHJtX2dwaW9fZXZlbnRfZGF0YV9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDA2MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZ3Bpb19ldmVudF9oaVsweDAwMDIwXTsvKiBJZiBhbnkgYml0IGlzIHNldCB0byAxLCB0aGVuIGEgcmlzaW5nL2ZhbGxpbmcgZXZlbnQgaGFzIG9jY3VycmVkIG9uIHRoZSBjb3Jyc3BvbmRpbmcgR1BJTyBwaW4uICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZ3Bpb19ldmVudF9sb1sweDAwMDIwXTsvKiBJZiBhbnkgYml0IGlzIHNldCB0byAxLCB0aGVuIGEgcmlzaW5nL2ZhbGxpbmcgZXZlbnQgaGFzIG9jY3VycmVkIG9uIHRoZSBjb3Jyc3BvbmRpbmcgR1BJTyBwaW4uICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogRXZlbnRfZGF0YSBGaWVsZCAtIFFQL0VFIEV2ZW50cyAgICAgIyMjIyBtaWNoYWwgLSBkb2Vzbid0IG1hdGNoIFBSTSAqLwoKc3RydWN0IGhlcm1vbnBybV9xcF9lZV9ldmVudF9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlxcG5fZWVuWzB4MDAwMThdOyAgICAgIC8qIFFQL0VFL1NSUSBudW1iZXIgZXZlbnQgaXMgcmVwb3J0ZWQgZm9yICAjIyNtaWNoYWwgLSBmaWVsZCBjaGFuZ2VkIHRvIFFQIG51bWJlciAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDA4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMWNdOwogICAgcHNldWRvX2JpdF90CWVfcVsweDAwMDAxXTsgICAgICAgICAgLyogSWYgc2V0IC0gRUVOIGlmIGNsZWFyZWQgLSBRUCBpbiB0aGUgUVBOL0VFTiBmaWVsZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IHZhbGlkIG9uIFNSUSBldmVudHMgICMjI21pY2hhbCAtIGZpZWxkIHJlcGxhY2VkIHdpdGggUkVTRVJWRUQgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDNbMHgwMDAwM107Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0WzB4MDAwNjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogSW5maW5pSG9zdC1JSUktRVggVHlwZTAgQ29uZmlndXJhdGlvbiBIZWFkZXIgICAjIyMjbWljaGFsIC0gZG9lc24ndCBtYXRjaCBQUk0gKG5ldyBmaWVsZHMgYWRkZWQsIHNlZSBiZWxvdykgKi8KCnN0cnVjdCBoZXJtb25wcm1fbXQyNTIwOF90eXBlMF9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAl2ZW5kb3JfaWRbMHgwMDAxMF07ICAgIC8qIEhhcmR3aXJlZCB0byAweDE1QjMgKi8KICAgIHBzZXVkb19iaXRfdAlkZXZpY2VfaWRbMHgwMDAxMF07ICAgIC8qIDI1MjA4IChkZWNpbWFsKSAtIEluZmluaUhvc3QtSUlJIGNvbXBhdGlibGUgbW9kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU0MDggKGRlY2ltYWwpIC0gSW5maW5pSG9zdC1JSUkgRVggbW9kZSAodGhlIG1vZGUgZGVzY3JpYmVkIGluIHRoaXMgbWFudWFsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUyMDkgKGRlY2ltYWwpIC0gRmxhc2ggYnVybmVyIG1vZGUgLSBzZWUgRmxhc2ggYnVybmluZyBhcHBsaWNhdGlvbiBub3RlIGZvciBmdXJ0aGVyIGRldGFpbHMgb24gdGhpcyBtb2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAljb21tYW5kWzB4MDAwMTBdOyAgICAgIC8qIFBDSSBDb21tYW5kIFJlZ2lzdGVyICovCiAgICBwc2V1ZG9fYml0X3QJc3RhdHVzWzB4MDAwMTBdOyAgICAgICAvKiBQQ0kgU3RhdHVzIFJlZ2lzdGVyICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmV2aXNpb25faWRbMHgwMDAwOF07CiAgICBwc2V1ZG9fYml0X3QJY2xhc3NfY29kZV9oY2FfY2xhc3NfY29kZVsweDAwMDE4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAljYWNoZV9saW5lX3NpemVbMHgwMDAwOF07LyogQ2FjaGUgTGluZSBTaXplICovCiAgICBwc2V1ZG9fYml0X3QJbGF0ZW5jeV90aW1lclsweDAwMDA4XTsKICAgIHBzZXVkb19iaXRfdAloZWFkZXJfdHlwZVsweDAwMDA4XTsgIC8qIGhhcmR3aXJlZCB0byB6ZXJvICovCiAgICBwc2V1ZG9fYml0X3QJYmlzdFsweDAwMDA4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAliYXIwX2N0cmxbMHgwMDAwNF07ICAgIC8qIGhhcmQtd2lyZWQgdG8gMDEwMCAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDEwXTsKICAgIHBzZXVkb19iaXRfdAliYXIwX2xbMHgwMDAwY107ICAgICAgIC8qIExvd2VyIGJpdHMgb2YgQkFSMCAoRGV2aWNlIENvbmZpZ3VyYXRpb24gU3BhY2UpICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJYmFyMF9oWzB4MDAwMjBdOyAgICAgICAvKiBVcHBlciAzMiBiaXRzIG9mIEJBUjAgKERldmljZSBDb25maWd1cmF0aW9uIFNwYWNlKSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWJhcjFfY3RybFsweDAwMDA0XTsgICAgLyogSGFyZHdpcmVkIHRvIDExMDAgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAxMF07CiAgICBwc2V1ZG9fYml0X3QJYmFyMV9sWzB4MDAwMGNdOyAgICAgICAvKiBMb3dlciBiaXRzIG9mIEJBUjEgKFVzZXIgQWNjZXNzIFJlZ2lvbiAtIFVBUiAtIHNwYWNlKSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWJhcjFfaFsweDAwMDIwXTsgICAgICAgLyogdXBwZXIgMzIgYml0cyBvZiBCQVIxIChVc2VyIEFjY2VzcyBSZWdpb24gLSBVQVIgLSBzcGFjZSkgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAliYXIyX2N0cmxbMHgwMDAwNF07ICAgIC8qIEhhcmR3aXJlZCB0byAxMTAwICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMTBdOwogICAgcHNldWRvX2JpdF90CWJhcjJfbFsweDAwMDBjXTsgICAgICAgLyogTG93ZXIgYml0cyBvZiBCQVIyIC0gTG9jYWwgQXR0YWNoZWQgTWVtb3J5IGlmIHByZXNlbnQgYW5kIGVuYWJsZWQuIEVsc2UgemVyb2VkLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWJhcjJfaFsweDAwMDIwXTsgICAgICAgLyogVXBwZXIgMzIgYml0cyBvZiBCQVIyIC0gTG9jYWwgQXR0YWNoZWQgTWVtb3J5IGlmIHByZXNlbnQgYW5kIGVuYWJsZWQuIEVsc2UgemVyb2VkLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWNhcmRidXNfY2lzX3BvaW50ZXJbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJc3Vic3lzdGVtX3ZlbmRvcl9pZFsweDAwMDEwXTsvKiBTcGVjaWZpZWQgYnkgdGhlIGRldmljZSBOVk1FTSBjb25maWd1cmF0aW9uICovCiAgICBwc2V1ZG9fYml0X3QJc3Vic3lzdGVtX2lkWzB4MDAwMTBdOyAvKiBTcGVjaWZpZWQgYnkgdGhlIGRldmljZSBOVk1FTSBjb25maWd1cmF0aW9uICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZXhwYW5zaW9uX3JvbV9lbmFibGVbMHgwMDAwMV07LyogRXhwYW5zaW9uIFJPTSBFbmFibGUuIEhhcmR3aXJlZCB0byAwIGlmIGV4cGFuc2lvbiBST00gaXMgZGlzYWJsZWQgaW4gdGhlIGRldmljZSBOVk1FTSBjb25maWd1cmF0aW9uLiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkM1sweDAwMDBhXTsKICAgIHBzZXVkb19iaXRfdAlleHBhbnNpb25fcm9tX2Jhc2VfYWRkcmVzc1sweDAwMDE1XTsvKiBFeHBhbnNpb24gUk9NIEJhc2UgQWRkcmVzcyAodXBwZXIgMjEgYml0KS4gSGFyZHdpcmVkIHRvIDAgaWYgZXhwYW5zaW9uIFJPTSBpcyBkaXNhYmxlZCBpbiB0aGUgZGV2aWNlIE5WTUVNIGNvbmZpZ3VyYXRpb24uICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJY2FwYWJpbGl0aWVzX3BvaW50ZXJbMHgwMDAwOF07LyogU3BlY2lmaWVkIGJ5IHRoZSBkZXZpY2UgTlZNRU0gY29uZmlndXJhdGlvbiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNFsweDAwMDE4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDVbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJaW50ZXJydXB0X2xpbmVbMHgwMDAwOF07CiAgICBwc2V1ZG9fYml0X3QJaW50ZXJydXB0X3BpblsweDAwMDA4XTsKICAgIHBzZXVkb19iaXRfdAltaW5fZ250WzB4MDAwMDhdOwogICAgcHNldWRvX2JpdF90CW1heF9sYXRlbmN5WzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNlsweDAwMTAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAltc2lfY2FwX2lkWzB4MDAwMDhdOwogICAgcHNldWRvX2JpdF90CW1zaV9uZXh0X2NhcF9wdHJbMHgwMDAwOF07CiAgICBwc2V1ZG9fYml0X3QJbXNpX2VuWzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CW11bHRpcGxlX21zZ19jYXBbMHgwMDAwM107CiAgICBwc2V1ZG9fYml0X3QJbXVsdGlwbGVfbXNnX2VuWzB4MDAwMDNdOwogICAgcHNldWRvX2JpdF90CWNhcF82NF9iaXRfYWRkclsweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDdbMHgwMDAwOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbXNnX2FkZHJfbFsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAltc2dfYWRkcl9oWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW1zZ19kYXRhWzB4MDAwMTBdOwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkOFsweDAwMDEwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDlbMHgwMDA4MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcG1fY2FwX2lkWzB4MDAwMDhdOyAgICAvKiBQb3dlciBtYW5hZ2VtZW50IGNhcGFiaWxpdHkgSUQgLSAwMWggKi8KICAgIHBzZXVkb19iaXRfdAlwbV9uZXh0X2NhcF9wdHJbMHgwMDAwOF07CiAgICBwc2V1ZG9fYml0X3QJcG1fY2FwWzB4MDAwMTBdOyAgICAgICAvKiBbMjowXSBWZXJzaW9uIC0gMDJoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbM10gUE1FIGNsb2NrIC0gMGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs0XSBSc3ZQCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbNV0gRGV2aWNlIHNwZWNpZmljIGluaXRpYWxpemF0aW9uIC0gMGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs4OjZdIEFVWCBjdXJyZW50IC0gMGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs5XSBEMSBzdXBwb3J0IC0gMGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMF0gRDIgc3VwcG9ydCAtIDBoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTU6MTFdIFBNRSBzdXBwb3J0IC0gMGggKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlwbV9zdGF0dXNfY29udHJvbFsweDAwMDEwXTsvKiBbMTQ6MTNdIC0gRGF0YSBzY2FsZSAtIDBoICovCiAgICBwc2V1ZG9fYml0X3QJcG1fY29udHJvbF9zdGF0dXNfYnJkZ19leHRbMHgwMDAwOF07CiAgICBwc2V1ZG9fYml0X3QJZGF0YVsweDAwMDA4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDEwWzB4MDAwNDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXZwZF9jYXBfaWRbMHgwMDAwOF07ICAgLyogMDNoICovCiAgICBwc2V1ZG9fYml0X3QJdnBkX25leHRfY2FwX2lkWzB4MDAwMDhdOwogICAgcHNldWRvX2JpdF90CXZwZF9hZGRyZXNzWzB4MDAwMGZdOwogICAgcHNldWRvX2JpdF90CWZbMHgwMDAwMV07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJdnBkX2RhdGFbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxMVsweDAwMDQwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlwY2lleF9jYXBfaWRbMHgwMDAwOF07IC8qIFBDSS1FeHByZXNzIGNhcGFiaWxpdHkgSUQgLSAxMGggKi8KICAgIHBzZXVkb19iaXRfdAlwY2lleF9uZXh0X2NhcF9wdHJbMHgwMDAwOF07CiAgICBwc2V1ZG9fYml0X3QJcGNpZXhfY2FwWzB4MDAwMTBdOyAgICAvKiBbMzowXSBDYXBhYmlsaXR5IHZlcnNpb24gLSAxaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzc6NF0gRGV2aWNlL1BvcnQgVHlwZSAtIDBoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbOF0gU2xvdCBpbXBsZW1lbnRlZCAtIDBoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTM6OV0gSW50ZXJydXB0IG1lc3NhZ2UgbnVtYmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlkZXZpY2VfY2FwWzB4MDAwMjBdOyAgIC8qIFsyOjBdIE1heF9QYXlsb2FkX1NpemUgc3VwcG9ydGVkIC0gMmgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs0OjNdIFBoYW50b20gRnVuY3Rpb24gc3VwcG9ydGVkIC0gMGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs1XSBFeHRlbmRlZCBUYWcgRmlsZWQgc3VwcG9ydGVkIC0gMGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs4OjZdIEVuZHBvaW50IEwwcyBBY2NlcHRhYmxlIExhdGVuY3kgLSBUQkQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMTo5XSBFbmRwb2ludCBMMSBBY2NlcHRhYmxlIExhdGVuY3kgLSBUQkQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMl0gQXR0ZW50aW9uIEJ1dHRvbiBQcmVzZW50IC0gY29uZmlndXJlZCB0aHJvdWdoIEluZmluaUJ1cm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxM10gQXR0ZW50aW9uIEluZGljYXRvciBQcmVzZW50IC0gY29uZmlndXJlZCB0aHJvdWdoIEluZmluaUJ1cm4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxNF0gUG93ZXIgSW5kaWNhdG9yIFByZXNlbnQgLSBjb25maWd1cmVkIHRocm91Z2ggSW5maW5pQnVybgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzI1OjE4XSBDYXB0dXJlZCBTbG90IFBvd2VyIExpbWl0IFZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMjc6MjZdIENhcHR1cmVkIFNsb3QgUG93ZXIgTGltaXQgU2NhbGUgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlkZXZpY2VfY29udHJvbFsweDAwMDEwXTsKICAgIHBzZXVkb19iaXRfdAlkZXZpY2Vfc3RhdHVzWzB4MDAwMTBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWxpbmtfY2FwWzB4MDAwMjBdOyAgICAgLyogWzM6MF0gTWF4aW11bSBMaW5rIFNwZWVkIC0gMWgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs5OjRdIE1heGltdW0gTGluayBXaWR0aCAtIDhoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTE6MTBdIEFjdGl2ZSBTdGF0ZSBQb3dlciBNYW5hZ2VtZW50IFN1cHBvcnQgLSAzaAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE0OjEyXSBMMHMgRXhpdCBMYXRlbmN5IC0gVEJECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTc6MTVdIEwxIEV4aXQgTGF0ZW5jeSAtIFRCRAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzMxOjI0XSBQb3J0IE51bWJlciAtIDBoICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbGlua19jb250cm9sWzB4MDAwMTBdOwogICAgcHNldWRvX2JpdF90CWxpbmtfc3RhdHVzWzB4MDAwMTBdOyAgLyogWzM6MF0gTGluayBTcGVlZCAtIDFoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbOTo0XSBOZWdvdGlhdGVkIExpbmsgV2lkdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxMl0gU2xvdCBjbG9jayBjb25maWd1cmF0aW9uIC0gMWggKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDEyWzB4MDAyNjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWFkdmFuY2VkX2Vycm9yX3JlcG9ydGluZ19jYXBfaWRbMHgwMDAxMF07LyogMDAwMWguICovCiAgICBwc2V1ZG9fYml0X3QJY2FwYWJpbGl0eV92ZXJzaW9uWzB4MDAwMDRdOy8qIDFoICovCiAgICBwc2V1ZG9fYml0X3QJbmV4dF9jYXBhYmlsaXR5X29mZnNldFsweDAwMDBjXTsvKiAwaCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXVuY29ycmVjdGFibGVfZXJyb3Jfc3RhdHVzX3JlZ2lzdGVyWzB4MDAwMjBdOy8qIDAgVHJhaW5pbmcgRXJyb3IgU3RhdHVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0IERhdGEgTGluayBQcm90b2NvbCBFcnJvciBTdGF0dXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyIFBvaXNvbmVkIFRMUCBTdGF0dXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzIEZsb3cgQ29udHJvbCBQcm90b2NvbCBFcnJvciBTdGF0dXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0IENvbXBsZXRpb24gVGltZW91dCBTdGF0dXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1IENvbXBsZXRlciBBYm9ydCBTdGF0dXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2IFVuZXhwZWN0ZWQgQ29tcGxldGlvbiBTdGF0dXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3IFJlY2VpdmVyIE92ZXJmbG93IFN0YXR1cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTggTWFsZm9ybWVkIFRMUCBTdGF0dXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5IEVDUkMgRXJyb3IgU3RhdHVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMCBVbnN1cHBvcnRlZCBSZXF1ZXN0IEVycm9yIFN0YXR1cyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXVuY29ycmVjdGFibGVfZXJyb3JfbWFza19yZWdpc3RlclsweDAwMDIwXTsvKiAwIFRyYWluaW5nIEVycm9yIE1hc2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgRGF0YSBMaW5rIFByb3RvY29sIEVycm9yIE1hc2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyIFBvaXNvbmVkIFRMUCBNYXNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMyBGbG93IENvbnRyb2wgUHJvdG9jb2wgRXJyb3IgTWFzawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQgQ29tcGxldGlvbiBUaW1lb3V0IE1hc2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1IENvbXBsZXRlciBBYm9ydCBNYXNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiBVbmV4cGVjdGVkIENvbXBsZXRpb24gTWFzawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcgUmVjZWl2ZXIgT3ZlcmZsb3cgTWFzawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTggTWFsZm9ybWVkIFRMUCBNYXNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOSBFQ1JDIEVycm9yIE1hc2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwIFVuc3VwcG9ydGVkIFJlcXVlc3QgRXJyb3IgTWFzayAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXVuY29ycmVjdGFibGVfc2V2ZXJpdHlfbWFza19yZWdpc3RlclsweDAwMDIwXTsvKiAwIFRyYWluaW5nIEVycm9yIFNldmVyaXR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0IERhdGEgTGluayBQcm90b2NvbCBFcnJvciBTZXZlcml0eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIgUG9pc29uZWQgVExQIFNldmVyaXR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMyBGbG93IENvbnRyb2wgUHJvdG9jb2wgRXJyb3IgU2V2ZXJpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0IENvbXBsZXRpb24gVGltZW91dCBTZXZlcml0eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUgQ29tcGxldGVyIEFib3J0IFNldmVyaXR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiBVbmV4cGVjdGVkIENvbXBsZXRpb24gU2V2ZXJpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3IFJlY2VpdmVyIE92ZXJmbG93IFNldmVyaXR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOCBNYWxmb3JtZWQgVExQIFNldmVyaXR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOSBFQ1JDIEVycm9yIFNldmVyaXR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMCBVbnN1cHBvcnRlZCBSZXF1ZXN0IEVycm9yIFNldmVyaXR5ICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJY29ycmVjdGFibGVfZXJyb3Jfc3RhdHVzX3JlZ2lzdGVyWzB4MDAwMjBdOy8qIDAgUmVjZWl2ZXIgRXJyb3IgU3RhdHVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2IEJhZCBUTFAgU3RhdHVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3IEJhZCBETExQIFN0YXR1cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCBSRVBMQVlfTlVNIFJvbGxvdmVyIFN0YXR1cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIgUmVwbGF5IFRpbWVyIFRpbWVvdXQgU3RhdHVzICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJY29ycmVjdGFibGVfZXJyb3JfbWFza19yZWdpc3RlclsweDAwMDIwXTsvKiAwIFJlY2VpdmVyIEVycm9yIE1hc2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYgQmFkIFRMUCBNYXNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3IEJhZCBETExQIE1hc2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDggUkVQTEFZX05VTSBSb2xsb3ZlciBNYXNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMiBSZXBsYXkgVGltZXIgVGltZW91dCBNYXNrICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJYWR2YW5jZV9lcnJvcl9jYXBhYmlsaXRpZXNfYW5kX2NvbnRyb2xfcmVnaXN0ZXJbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX2hlYWRlcl9sb2dfcmVnaXN0ZXJfc3QJaGVhZGVyX2xvZ19yZWdpc3RlcjsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDEzWzB4MDA2YTBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogRXZlbnQgRGF0YSBGaWVsZCAtIFBlcmZvcm1hbmNlIE1vbml0b3IgKi8KCnN0cnVjdCBoZXJtb25wcm1fcGVyZm9ybWFuY2VfbW9uaXRvcl9ldmVudF9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fcGVyZm9ybWFuY2VfbW9uaXRvcnNfc3QJcGVyZm9ybWFuY2VfbW9uaXRvcl9zbmFwc2hvdDsvKiBQZXJmb3JtYW5jZSBtb25pdG9yIHNuYXBzaG90ICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJbW9uaXRvcl9udW1iZXJbMHgwMDAwOF07LyogMHgwMSAtIFNRUEMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIgLSBSUVBDCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAzIC0gQ1FDCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA0IC0gUmtleQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNSAtIFRMQgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNiAtIHBvcnQwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA3IC0gcG9ydDEgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAxOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwNDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogRXZlbnRfZGF0YSBGaWVsZCAtIFBhZ2UgRmF1bHRzICovCgpzdHJ1Y3QgaGVybW9ucHJtX3BhZ2VfZmF1bHRfZXZlbnRfZGF0YV9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAl2YV9oWzB4MDAwMjBdOyAgICAgICAgIC8qIFZpcnR1YWwgQWRkcmVzc1s2MzozMl0gdGhpcyBwYWdlIGZhdWx0IGlzIHJlcG9ydGVkIG9uICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJdmFfbFsweDAwMDIwXTsgICAgICAgICAvKiBWaXJ0dWFsIEFkZHJlc3NbNjM6MzJdIHRoaXMgcGFnZSBmYXVsdCBpcyByZXBvcnRlZCBvbiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW1lbV9rZXlbMHgwMDAyMF07ICAgICAgLyogTWVtb3J5IEtleSB0aGlzIHBhZ2UgZmF1bHQgaXMgcmVwb3J0ZWQgb24gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlxcFsweDAwMDE4XTsgICAgICAgICAgIC8qIFFQIHRoaXMgcGFnZSBmYXVsdCBpcyByZXBvcnRlZCBvbiAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDAzXTsKICAgIHBzZXVkb19iaXRfdAlhWzB4MDAwMDFdOyAgICAgICAgICAgIC8qIElmIHNldCB0aGUgbWVtb3J5IGFjY2VzcyB0aGF0IGNhdXNlZCB0aGUgcGFnZSBmYXVsdCB3YXMgYXRvbWljICovCiAgICBwc2V1ZG9fYml0X3QJbHdbMHgwMDAwMV07ICAgICAgICAgICAvKiBJZiBzZXQgdGhlIG1lbW9yeSBhY2Nlc3MgdGhhdCBjYXVzZWQgdGhlIHBhZ2UgZmF1bHQgd2FzIGxvY2FsIHdyaXRlICovCiAgICBwc2V1ZG9fYml0X3QJbHJbMHgwMDAwMV07ICAgICAgICAgICAvKiBJZiBzZXQgdGhlIG1lbW9yeSBhY2Nlc3MgdGhhdCBjYXVzZWQgdGhlIHBhZ2UgZmF1bHQgd2FzIGxvY2FsIHJlYWQgKi8KICAgIHBzZXVkb19iaXRfdAlyd1sweDAwMDAxXTsgICAgICAgICAgIC8qIElmIHNldCB0aGUgbWVtb3J5IGFjY2VzcyB0aGF0IGNhdXNlZCB0aGUgcGFnZSBmYXVsdCB3YXMgcmVtb3RlIHdyaXRlICovCiAgICBwc2V1ZG9fYml0X3QJcnJbMHgwMDAwMV07ICAgICAgICAgICAvKiBJZiBzZXQgdGhlIG1lbW9yeSBhY2Nlc3MgdGhhdCBjYXVzZWQgdGhlIHBhZ2UgZmF1bHQgd2FzIHJlbW90ZSByZWFkICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcGRbMHgwMDAxOF07ICAgICAgICAgICAvKiBQRCB0aGlzIHBhZ2UgZmF1bHQgaXMgcmVwb3J0ZWQgb24gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAwOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcHJlZmV0Y2hfbGVuWzB4MDAwMjBdOyAvKiBJbmRpY2F0ZXMgaG93IG1hbnkgc3Vic2VxdWVudCBwYWdlcyBpbiB0aGUgc2FtZSBtZW1vcnkgcmVnaW9uL3dpbmRvdyB3aWxsIGJlIGFjY2Vzc2VkIGJ5IHRoZSBmb2xsb3dpbmcgdHJhbnNhY3Rpb24gYWZ0ZXIgdGhpcyBwYWdlIGZhdWx0IGlzIHJlc29sdmVkLiBtZWFzdXJlZCBpbiBieXRlcy4gU1cgY2FuIHVzZSB0aGlzIGluZm9ybWF0aW9uIGluIG9yZGVyIHRvIHBhZ2UtaW4gdGhlIHN1YnNlcXVlbnQgcGFnZXMgaWYgdGhleSBhcmUgbm90IHByZXNlbnQuICovCi8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBXUUUgc2VnbWVudHMgZm9ybWF0ICovCgpzdHJ1Y3QgaGVybW9ucHJtX3dxZV9zZWdtZW50X3N0IHsJLyogTGl0dGxlIEVuZGlhbiAqLwogICAgc3RydWN0IGhlcm1vbnBybV9zZW5kX3dxZV9zZWdtZW50X3N0CXNlbmRfd3FlX3NlZ21lbnQ7LyogU2VuZCBXUUUgc2VnbWVudCBmb3JtYXQgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDI4MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX3dxZV9zZWdtZW50X2N0cmxfbWx4X3N0CW1seF93cWVfc2VnbWVudF9jdHJsOy8qIE1MWCBXUUUgc2VnbWVudCBmb3JtYXQgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDEwMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVjdl93cWVfc2VnbWVudF9jdHJsWzRdWzB4MDAwMjBdOy8qIFJlY2VpdmUgc2VnbWVudCBmb3JtYXQgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDJbMHgwMDA4MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiBFdmVudF9kYXRhIEZpZWxkIC0gUG9ydCBTdGF0ZSBDaGFuZ2UgICAjIyMjIG1pY2hhbCAtIG1hdGNoIFBSTSAqLwoKc3RydWN0IGhlcm1vbnBybV9wb3J0X3N0YXRlX2NoYW5nZV9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDA0MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwMWNdOwogICAgcHNldWRvX2JpdF90CXBbMHgwMDAwMl07ICAgICAgICAgICAgLyogUG9ydCBudW1iZXIgKDEgb3IgMikgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDJbMHgwMDAwMl07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzWzB4MDAwNjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogRXZlbnRfZGF0YSBGaWVsZCAtIENvbXBsZXRpb24gUXVldWUgRXJyb3IgICAgICMjIyMgbWljaGFsIC0gbWF0Y2ggUFJNICovCgpzdHJ1Y3QgaGVybW9ucHJtX2NvbXBsZXRpb25fcXVldWVfZXJyb3Jfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJY3FuWzB4MDAwMThdOyAgICAgICAgICAvKiBDUSBudW1iZXIgZXZlbnQgaXMgcmVwb3J0ZWQgZm9yICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlzeW5kcm9tZVsweDAwMDA4XTsgICAgIC8qIEVycm9yIHN5bmRyb21lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAxIC0gQ1Egb3ZlcnJ1bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMiAtIENRIGFjY2VzcyB2aW9sYXRpb24gZXJyb3IgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDJbMHgwMDAxOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzWzB4MDAwNjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogRXZlbnRfZGF0YSBGaWVsZCAtIENvbXBsZXRpb24gRXZlbnQJIyMjIyBtaWNoYWwgLSBtYXRjaCBQUk0gKi8KCnN0cnVjdCBoZXJtb25wcm1fY29tcGxldGlvbl9ldmVudF9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAljcW5bMHgwMDAxOF07ICAgICAgICAgIC8qIENRIG51bWJlciBldmVudCBpcyByZXBvcnRlZCBmb3IgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAwOF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4MDAwYTBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogRXZlbnQgUXVldWUgRW50cnkgICAgICAgICAjIyMjIG1pY2hhbCAtIG1hdGNoIHRvIFBSTSAqLwoKc3RydWN0IGhlcm1vbnBybV9ldmVudF9xdWV1ZV9lbnRyeV9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlldmVudF9zdWJfdHlwZVsweDAwMDA4XTsvKiBFdmVudCBTdWIgVHlwZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmluZWQgZm9yIGV2ZW50cyB3aGljaCBoYXZlIHN1YiB0eXBlcywgemVybyBlbHNld2hlcmUuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMDhdOwogICAgcHNldWRvX2JpdF90CWV2ZW50X3R5cGVbMHgwMDAwOF07ICAgLyogRXZlbnQgVHlwZSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMDA4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlldmVudF9kYXRhWzZdWzB4MDAwMjBdOy8qIERlbGl2ZXJzIGF1eGlsYXJ5IGRhdGEgdG8gaGFuZGxlIGV2ZW50LiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMlsweDAwMDA3XTsKICAgIHBzZXVkb19iaXRfdAlvd25lclsweDAwMDAxXTsgICAgICAgIC8qIE93bmVyIG9mIHRoZSBlbnRyeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCBTVwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSBIVyAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkM1sweDAwMDE4XTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIFFQL0VFIFN0YXRlIFRyYW5zaXRpb25zIENvbW1hbmQgUGFyYW1ldGVycyAgIyMjbWljaGFsIC0gZG9lc24ndCBtYXRjaCBQUk0gKGZpZWxkIG5hbWUgY2hhbmdlZCkgKi8KCnN0cnVjdCBoZXJtb25wcm1fcXBfZWVfc3RhdGVfdHJhbnNpdGlvbnNfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJb3B0X3BhcmFtX21hc2tbMHgwMDAyMF07LyogVGhpcyBmaWVsZCBkZWZpbmVzIHdoaWNoIG9wdGlvbmFsIHBhcmFtZXRlcnMgYXJlIHBhc3NlZC4gRWFjaCBiaXQgc3BlY2lmaWVzIHdoZXRoZXIgb3B0aW9uYWwgcGFyYW1ldGVyIGlzIHBhc3NlZCAoc2V0KSBvciBub3QgKGNsZWFyZWQpLiBUaGUgb3B0cGFyYW1tYXNrIGlzIGRlZmluZWQgZm9yIGVhY2ggUVAvRUUgY29tbWFuZC4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX3F1ZXVlX3BhaXJfZWVfY29udGV4dF9lbnRyeV9zdAlxcGNfZWVjX2RhdGE7LyogUVBDL0VFQyBkYXRhICAjIyNtaWNoYWwgLSBmaWVsZCBoYXMgcmVwbGFjZWQgd2l0aCAicXBjX2RhdGEiIChzaXplIC4xOTQ4KSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwODAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIENvbXBsZXRpb24gUXVldWUgRW50cnkgRm9ybWF0ICAgICAgICAjIyMjIG1pY2hhbCAtIGZpeGVkIGJ5IGdkcm9yICovCgpzdHJ1Y3QgaGVybW9ucHJtX2NvbXBsZXRpb25fcXVldWVfZW50cnlfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJcXBuWzB4MDAwMThdOyAgICAgICAgICAvKiBJbmRpY2F0ZXMgdGhlIFFQIGZvciB3aGljaCBjb21wbGV0aW9uIGlzIGJlaW5nIHJlcG9ydGVkICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMDJdOwogICAgcHNldWRvX2JpdF90CWQyc1sweDAwMDAxXTsgICAgICAgICAgLyogRHVwbGljYXRlIHRvIFNuaWZmZXIuIFRoaXMgYml0IGlzIHNldCBpZiBib3RoIFNlbmQgYW5kIFJlY2VpdmUgcXVldWVzIGFyZSBzdWJqZWN0IGZvciBzbmlmZmVyIHF1ZXVlLiBUaGUgSFcgZGVsaXZlcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldCBvbmx5IHRvIHNlbmQtYXNzb2NpYXRlZCBzbmlmZmVyIHJlY2VpdmUgcXVldWUuICovCiAgICBwc2V1ZG9fYml0X3QJZmNyY19zZFsweDAwMDAxXTsgICAgICAvKiBGQ1JDOiBJZiBzZXQsIEZDIENSQyBpcyBjb3JyZWN0IGluIEZDIGZyYW1lIGVuY2Fwc3VsYXRlZCBpbiBwYXlsb2FkLiBWYWxpZCBmb3IgUmF3IEZyYW1lIEZDIHJlY2VpdmUgcXVldWUgb25seS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNEOiBDUSBhc3NvY2lhdGVkIHdpdGggU25pZmZlciByZWNlaXZlIHF1ZXVlLiBJZiBzZXQsIHBhY2tldHMgd2VyZSBza2lwcGVkIGR1ZSB0byBsYWNrIG9mIHJlY2VpdmUgYnVmZmVycyBvbiB0aGUgU25pZmZlciByZWNlaXZlIHF1ZXVlICovCiAgICBwc2V1ZG9fYml0X3QJZmxbMHgwMDAwMV07ICAgICAgICAgICAvKiBGb3JjZSBMb29wYmFjayBWYWxpZCBmb3IgcmVzcG9uZGVyIFJhd0V0aCBhbmQgVUQgb25seS4gKi8KICAgIHBzZXVkb19iaXRfdAl2bGFuWzB4MDAwMDJdOyAgICAgICAgIC8qIFZhbGlkIGZvciBSYXdFdGggYW5kIFVEIG92ZXIgRXRoZXJuZXQgb25seS4gQXBwbGljYWJsZSBmb3IgUmF3RXRoIGFuZCBVRCBvdmVyIEV0aGVybmV0IFJlY2VpdmUgcXVldWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMCAtIE5vIFZMQU4gaGVhZGVyIHdhcyBwcmVzZW50IGluIHRoZSBwYWNrZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAxIC0gQy1WTEFOICg4MDIuMXEpIEhlYWRlciB3YXMgcHJlc2VudCBpbiB0aGUgZnJhbWUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCAtIFMtVkxBTiAoODAyLjFhZCkgSGVhZGVyIHdhcyBwcmVzZW50IGluIHRoZSBmcmFtZS4gKi8KICAgIHBzZXVkb19iaXRfdAlkaWZlWzB4MDAwMDFdOyAgICAgICAgIC8qIERJRiBFcnJvciAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWltbWVkaWF0ZV9yc3N2YWx1ZV9pbnZhbGlkYXRla2V5WzB4MDAwMjBdOy8qIEZvciBhIHJlc3BvbmRlciBDUUUsIGlmIGNvbXBsZXRlZCBXUUUgT3Bjb2RlIGlzIFNlbmQgV2l0aCBJbW1lZGlhdGUgb3IgV3JpdGUgV2l0aCBJbW1lZGlhdGUsIHRoaXMgZmllbGQgY29udGFpbnMgaW1tZWRpYXRlIGZpZWxkIG9mIHRoZSByZWNlaXZlZCBtZXNzYWdlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgcmVzcG9uZGVyIENRRSwgaWYgY29tcGxldGVkIFdRRSBPcGNvZGUgaXMgU2VuZCBXaXRoIEludmFsaWRhdGUsIHRoaXMgZmllbGQgY29udGFpbnMgdGhlIFJfa2V5IHRoYXQgd2FzIGludmFsaWRhdGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGEgcmVzcG9uZGVyIENRRSBvZiBhIEdTSSBwYWNrZXQgdGhpcyBmaWxlZCBjb250YWlucyB0aGUgUGtleSBJbmRleCBvZiB0aGUgcGFja2V0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIElQb0lCIChVRCkgYW5kIFJhd0V0aCBDUUVzIHRoaXMgZmllbGQgY29udGFpbnMgdGhlIFJTUyBoYXNoIGZ1bmN0aW9uIHZhbHVlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCB0aGlzIGZpZWxkIGlzIHJlc2VydmVkLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXNycV9ycXBuWzB4MDAwMThdOyAgICAgLyogRm9yIFJlc3BvbmRlciBVRCBRUHMsIFJlbW90ZSAoc291cmNlKSBRUCBudW1iZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgUmVzcG9uZGVyIFNSQyBRUHMsIFNSUSBudW1iZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdGhlcndpc2UsIHRoaXMgZmllbGQgaXMgcmVzZXJ2ZWQuICovCiAgICBwc2V1ZG9fYml0X3QJbWxfcGF0aF9tYWNfaW5kZXhbMHgwMDAwN107LyogRm9yIHJlc3BvbmRlciBVRCBvdmVyIElCIENRRTogVGhlc2UgYXJlIHRoZSBsb3dlciBMTUMgYml0cyBvZiB0aGUgRExJRCBpbiBhbiBpbmNvbWluZyBVRCBwYWNrZXQsIGhpZ2hlciBiaXRzIG9mIHRoaXMgZmllbGQsIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBMTUMgYml0cyBhcmUgemVyb2VkIGJ5IEhXLiBJbnZhbGlkIGlmIGluY29taW5nIG1lc3NhZ2UgRExJRCBpcyB0aGUgcGVybWlzc2l2ZSBMSUQgb3IgaW5jb21pbmcgbWVzc2FnZSBpcyBtdWx0aWNhc3QuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHJlc3BvbmRlciBVRCBvdmVyIEV0aGVybmV0IGFuZCBSYXdFdGggQ1FFczogSW5kZXggb2YgdGhlIE1BQyBUYWJsZSBlbnRyeSB0aGF0IHRoZSBwYWNrZXQgRE1BQyB3YXMgbWF0Y2hlZCBhZ2FpbnN0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSwgdGhpcyBmaWVsZCBpcyByZXNlcnZlZC4gKi8KICAgIHBzZXVkb19iaXRfdAlnWzB4MDAwMDFdOyAgICAgICAgICAgIC8qIEZvciByZXNwb25kZXIgVUQgb3ZlciBJQiBDUUUgdGhpcyBiaXQgaW5kaWNhdGVzIHRoZSBwcmVzZW5jZSBvZiBhIEdSSAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHJlc3BvbmRlciBVRCBvdmVyIEV0aGVybmV0IENRRSB0aGlzIGJpdCBpcyBzZXQgaWYgSVB2NiBMMyBoZWFkZXIgd2FzIHByZXNlbnQgaW4gdGhlIHBhY2tldCwgdGhpcyBiaXQgaXMgY2xlYXJlZCBpZiBJUHY0IEwzIEhlYWRlciB3YXMgcHJlc2VudCBpbiB0aGUgcGFja2V0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCB0aGlzIGZpZWxkIGlzIHJlc2VydmVkLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXNsaWRfc21hYzQ3XzMyWzB4MDAwMTBdOy8qIEZvciByZXNwb25kZXIgVUQgb3ZlciBJQiBDUUUgaXQgaXMgdGhlIHNvdXJjZSBMSUQgb2YgdGhlIHBhY2tldC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciByZXNwb25kZXIgVUQgb3ZlciBFdGhlcm5ldCBhbmQgUmF3RXRoIENRRXMgaXQgaXMgdGhlIHNvdXJjZS1NQUNbNDc6MzJdIG9mIHRoZSBwYWNrZXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdGhlcndpc2UsIHRoaXMgZmllbGQgaXMgcmVzZXJ2ZWQuICovCiAgICBwc2V1ZG9fYml0X3QJdmlkWzB4MDAwMGNdOyAgICAgICAgICAvKiBGcmFtZSBWSUQsIHZhbGlkIGZvciBSZXNwb25kZXIgUmF3IEV0aGVybmV0IGFuZCBVRCBvdmVyIEV0aGVybmV0IFFQLiBPdGhlcndpc2UsIHRoaXMgZmllbGQgaXMgcmVzZXJ2ZWQuICovCiAgICBwc2V1ZG9fYml0X3QJc2xbMHgwMDAwNF07ICAgICAgICAgICAvKiBGb3IgcmVzcG9uZGVyIFVEIG92ZXIgSUIgLSB0aGUgU2VydmljZSBMZXZlbCBvZiB0aGUgcGFja2V0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciByZXNwb25kZXIgVUQgb3ZlciBFdGhlcm5ldCBhbmQgUmF3RXRoIC0gaXQgaXMgVkxBTi1oZWFkZXJbMTU6MTJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCB0aGlzIGZpZWxkIGlzIHJlc2VydmVkLiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXNtYWMzMV8wX3Jhd2V0aGVyX2lwb2liX3N0YXR1c1sweDAwMDIwXTsvKiBGb3IgcmVzcG9uZGVyIFVEIG92ZXIgRXRoZXJuZXQgLSBzb3VyY2UgTUFDWzMxOjBdIG9mIHRoZSBwYWNrZXQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIHJlc3BvbmRlciBSYXdFdGggYW5kIFVEIG92ZXIgSUIgLSBSYXdFdGgtSVBvSUIgc3RhdHVzIHszIHJlc2VydmVkLCBpcG9rLHVkcCx0Y3AsaXB2NG9wdCxpcHY2LGlwdjR2ZixpcHY0LHJodCg2KSxpcHY2ZXh0bWFzayg2KSxyZXNlcnZlZCgyKSxsMmFtLHJlc2VydmVkKDIpLGJmY3MscmVzZXJ2ZWQoMiksZW5jfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSwgdGhpcyBmaWVsZCBpcyByZXNlcnZlZC4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlieXRlX2NudFsweDAwMDIwXTsgICAgIC8qIEJ5dGUgY291bnQgb2YgZGF0YSB0cmFuc2ZlcnJlZC4gQXBwbGljYWJsZSBmb3IgUkRNQS1yZWFkLCBBdG9taWMgYW5kIGFsbCByZWNlaXZlIG9wZXJhdGlvbnMuIGNvbXBsZXRpb25zLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIFJlY2VpdmUgUXVldWUgdGhhdCBpcyBzdWJqZWN0IGZvciBoZWFkZXJzLiBzZXBhcmF0aW9uLCBieXRlX2NudFszMToyNF0gc3BlY2lmeSBudW1iZXIgb2YgYnl0ZXMgc2NhdHRlcmVkIHRvIHRoZSBmaXJzdCBzY2F0dGVyIGVudHJ5IChoZWFkZXJzLiBsZW5ndGgpLiBCeXRlX2NudFsyMzowXSBzcGVjaWZ5IHRvdGFsIGJ5dGUgY291bnQgcmVjZWl2ZWQgKGluY2x1ZGluZyBoZWFkZXJzKS4gKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAljaGVja3N1bVsweDAwMDEwXTsgICAgIC8qIFZhbGlkIGZvciBSYXdFdGggYW5kIElQb0lCIG9ubHkuICovCiAgICBwc2V1ZG9fYml0X3QJd3FlX2NvdW50ZXJbMHgwMDAxMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJb3Bjb2RlWzB4MDAwMDVdOyAgICAgICAvKiBTZW5kIGNvbXBsZXRpb25zIC0gc2FtZSBlbmNvZGluZyBhcyBXUUUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgY29kaW5nIGlzIDB4MUYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNlaXZlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MCAtIFJETUEtV3JpdGUgd2l0aCBJbW1lZGlhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEgLSBTZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgyIC0gU2VuZCB3aXRoIEltbWVkaWF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MyAtIFNlbmQgJiBJbnZhbGlkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgIHBzZXVkb19iaXRfdAlpc1sweDAwMDAxXTsgICAgICAgICAgIC8qIGlubGluZSBzY2F0dGVyICovCiAgICBwc2V1ZG9fYml0X3QJc19yWzB4MDAwMDFdOyAgICAgICAgICAvKiBzZW5kIDEgLyByZWNlaXZlIDAgKi8KICAgIHBzZXVkb19iaXRfdAlvd25lclsweDAwMDAxXTsgICAgICAgIC8qIEhXIEZsaXBzIHRoaXMgYml0IGZvciBldmVyeSBDUSB3YXJwIGFyb3VuZC4gSW5pdGlhbGl6ZWQgdG8gWmVyby4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAxMF07CiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMDhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogICovCgpzdHJ1Y3QgaGVybW9ucHJtX21jZ19xcHNfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX21jZ19xcF9kd19zdAlkd1sxMjhdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogICovCgpzdHJ1Y3QgaGVybW9ucHJtX21jZ19oZHJfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwMDZdOwogICAgcHNldWRvX2JpdF90CW5leHRfbWNnWzB4MDAwMWFdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CW1lbWJlcnNfY291bnRbMHgwMDAxOF07CiAgICBwc2V1ZG9fYml0X3QJbWVtYmVyX3JlbW92ZVsweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAwNV07CiAgICBwc2V1ZG9fYml0X3QJcHJvdG9jb2xbMHgwMDAwMl07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkM1sweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlnaWQzWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWdpZDJbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZ2lkMVsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlnaWQwWzB4MDAwMjBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogICovCgpzdHJ1Y3QgaGVybW9ucHJtX3NjaGVkX3F1ZXVlX2NvbnRleHRfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJcG9saWN5WzB4MDAwMDNdOyAgICAgICAvKiBTY2hlZHVsZSBRdWV1ZSBQb2xpY3kgLSAwIC0gTExTUSwgMSAtIEdCU1EsIDIgLSBCRVNRICovCiAgICBwc2V1ZG9fYml0X3QJdmwxNVsweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAlzbFsweDAwMDA0XTsgICAgICAgICAgIC8qIFNMIHRoaXMgU2NoZWR1bGUgUXVldWUgaXMgYXNzb2NpYXRlZCB3aXRoIChpZiB2bDE1IGJpdCBpcyAwKSAqLwogICAgcHNldWRvX2JpdF90CXBvcnRbMHgwMDAwMl07ICAgICAgICAgLyogUG9ydCB0aGlzIFNjaGVkdWxlIFF1ZXVlIGlzIGFzc29jaWF0ZWQgd2l0aCAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDAwMDA2XTsKICAgIHBzZXVkb19iaXRfdAl3ZWlnaHRbMHgwMDAxMF07ICAgICAgIC8qIFdlaWdodCBvZiB0aGlzIFNjaFEgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qICAqLwoKc3RydWN0IGhlcm1vbnBybV9lY2NfZGV0ZWN0X2V2ZW50X2RhdGFfc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQwWzB4MDAwODBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CWNhdXNlX2xzYlsweDAwMDAxXTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDFbMHgwMDAwMl07CiAgICBwc2V1ZG9fYml0X3QJY2F1c2VfbXNiWzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMlsweDAwMDAyXTsKICAgIHBzZXVkb19iaXRfdAllcnJfcm13WzB4MDAwMDFdOwogICAgcHNldWRvX2JpdF90CWVycl9zcmNfaWRbMHgwMDAwM107CiAgICBwc2V1ZG9fYml0X3QJZXJyX2RhWzB4MDAwMDJdOwogICAgcHNldWRvX2JpdF90CWVycl9iYVsweDAwMDAyXTsKICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDNbMHgwMDAxMV07CiAgICBwc2V1ZG9fYml0X3QJb3ZlcmZsb3dbMHgwMDAwMV07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJZXJyX3JhWzB4MDAwMTBdOwogICAgcHNldWRvX2JpdF90CWVycl9jYVsweDAwMDEwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KfTsKCi8qIEV2ZW50X2RhdGEgRmllbGQgLSBFQ0MgRGV0ZWN0aW9uIEV2ZW50ICovCgpzdHJ1Y3QgaGVybW9ucHJtX3NjcnViYmluZ19ldmVudF9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDA4MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJY2F1c2VfbHNiWzB4MDAwMDFdOyAgICAvKiBkYXRhIGludGVncml0eSBlcnJvciBjYXVzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZSBFQ0MgZXJyb3IgaW4gdGhlIDY0Yml0IGxzYiBkYXRhLCBvbiB0aGUgcmlzZSBlZGdlIG9mIHRoZSBjbG9jayAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMVsweDAwMDAyXTsKICAgIHBzZXVkb19iaXRfdAljYXVzZV9tc2JbMHgwMDAwMV07ICAgIC8qIGRhdGEgaW50ZWdyaXR5IGVycm9yIGNhdXNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlIEVDQyBlcnJvciBpbiB0aGUgNjRiaXQgbXNiIGRhdGEsIG9uIHRoZSBmYWxsIGVkZ2Ugb2YgdGhlIGNsb2NrICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyWzB4MDAwMDJdOwogICAgcHNldWRvX2JpdF90CWVycl9ybXdbMHgwMDAwMV07ICAgICAgLyogdHJhbnNhY3Rpb24gdHlwZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgLSByZWFkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxIC0gcmVhZC9tb2RpZnkvd3JpdGUgKi8KICAgIHBzZXVkb19iaXRfdAllcnJfc3JjX2lkWzB4MDAwMDNdOyAgIC8qIHNvdXJjZSBvZiB0aGUgdHJhbnNhY3Rpb246IDB4NCAtIFBDSSwgb3RoZXIgLSBpbnRlcm5hbCBvciBJQiAqLwogICAgcHNldWRvX2JpdF90CWVycl9kYVsweDAwMDAyXTsgICAgICAgLyogRXJyb3IgRElNTSBhZGRyZXNzICovCiAgICBwc2V1ZG9fYml0X3QJZXJyX2JhWzB4MDAwMDJdOyAgICAgICAvKiBFcnJvciBiYW5rIGFkZHJlc3MgKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDNbMHgwMDAxMV07CiAgICBwc2V1ZG9fYml0X3QJb3ZlcmZsb3dbMHgwMDAwMV07ICAgICAvKiBGYXRhbDogRUNDIGVycm9yIEZJRk8gb3ZlcmZsb3cgLSBFQ0MgZXJyb3JzIHdlcmUgZGV0ZWN0ZWQsIHdoaWNoIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBjb3JyZWN0ZWQgYnkgSW5maW5pSG9zdC1JSUktRVggKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAllcnJfcmFbMHgwMDAxMF07ICAgICAgIC8qIEVycm9yIHJvdyBhZGRyZXNzICovCiAgICBwc2V1ZG9fYml0X3QJZXJyX2NhWzB4MDAwMTBdOyAgICAgICAvKiBFcnJvciBjb2x1bW4gYWRkcmVzcyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwp9OwoKLyogICovCgpzdHJ1Y3QgaGVybW9ucHJtX2VxX2NtZF9kb29yYmVsbF9zdCB7CS8qIExpdHRsZSBFbmRpYW4gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDBbMHgwMDAyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCn07CgovKiAwICovCgpzdHJ1Y3QgaGVybW9ucHJtX2hlcm1vbl9wcm1fc3QgewkvKiBMaXR0bGUgRW5kaWFuICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX2NvbXBsZXRpb25fcXVldWVfZW50cnlfc3QJY29tcGxldGlvbl9xdWV1ZV9lbnRyeTsvKiBDb21wbGV0aW9uIFF1ZXVlIEVudHJ5IEZvcm1hdCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMFsweDdmZjAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fcXBfZWVfc3RhdGVfdHJhbnNpdGlvbnNfc3QJcXBfZWVfc3RhdGVfdHJhbnNpdGlvbnM7LyogUVAvRUUgU3RhdGUgVHJhbnNpdGlvbnMgQ29tbWFuZCBQYXJhbWV0ZXJzICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxWzB4N2YwMDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9ldmVudF9xdWV1ZV9lbnRyeV9zdAlldmVudF9xdWV1ZV9lbnRyeTsvKiBFdmVudCBRdWV1ZSBFbnRyeSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMlsweDdmZjAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fY29tcGxldGlvbl9ldmVudF9zdAljb21wbGV0aW9uX2V2ZW50Oy8qIEV2ZW50X2RhdGEgRmllbGQgLSBDb21wbGV0aW9uIEV2ZW50ICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzWzB4N2ZmNDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9jb21wbGV0aW9uX3F1ZXVlX2Vycm9yX3N0CWNvbXBsZXRpb25fcXVldWVfZXJyb3I7LyogRXZlbnRfZGF0YSBGaWVsZCAtIENvbXBsZXRpb24gUXVldWUgRXJyb3IgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDRbMHg3ZmY0MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX3BvcnRfc3RhdGVfY2hhbmdlX3N0CXBvcnRfc3RhdGVfY2hhbmdlOy8qIEV2ZW50X2RhdGEgRmllbGQgLSBQb3J0IFN0YXRlIENoYW5nZSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNVsweDdmZjQwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fd3FlX3NlZ21lbnRfc3QJd3FlX3NlZ21lbnQ7LyogV1FFIHNlZ21lbnRzIGZvcm1hdCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNlsweDdmMDAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fcGFnZV9mYXVsdF9ldmVudF9kYXRhX3N0CXBhZ2VfZmF1bHRfZXZlbnRfZGF0YTsvKiBFdmVudF9kYXRhIEZpZWxkIC0gUGFnZSBGYXVsdHMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDdbMHg3ZmY0MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX3BlcmZvcm1hbmNlX21vbml0b3JfZXZlbnRfc3QJcGVyZm9ybWFuY2VfbW9uaXRvcl9ldmVudDsvKiBFdmVudCBEYXRhIEZpZWxkIC0gUGVyZm9ybWFuY2UgTW9uaXRvciAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkOFsweGZmZjIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fbXQyNTIwOF90eXBlMF9zdAltdDI1MjA4X3R5cGUwOy8qIEluZmluaUhvc3QtSUlJLUVYIFR5cGUwIENvbmZpZ3VyYXRpb24gSGVhZGVyICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ5WzB4N2YwMDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9xcF9lZV9ldmVudF9zdAlxcF9lZV9ldmVudDsvKiBFdmVudF9kYXRhIEZpZWxkIC0gUVAvRUUgRXZlbnRzICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxMFsweDAwMDQwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fZ3Bpb19ldmVudF9kYXRhX3N0CWdwaW9fZXZlbnRfZGF0YTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDExWzB4N2ZlNDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV91ZF9hZGRyZXNzX3ZlY3Rvcl9zdAl1ZF9hZGRyZXNzX3ZlY3RvcjsvKiBVRCBBZGRyZXNzIFZlY3RvciAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMTJbMHg3ZmYwMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX3F1ZXVlX3BhaXJfZWVfY29udGV4dF9lbnRyeV9zdAlxdWV1ZV9wYWlyX2VlX2NvbnRleHRfZW50cnk7LyogUVAgYW5kIEVFIENvbnRleHQgRW50cnkgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDEzWzB4N2Y4NDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9hZGRyZXNzX3BhdGhfc3QJYWRkcmVzc19wYXRoOy8qIEFkZHJlc3MgUGF0aCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMTRbMHg3ZmVhMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX2NvbXBsZXRpb25fcXVldWVfY29udGV4dF9zdAljb21wbGV0aW9uX3F1ZXVlX2NvbnRleHQ7LyogQ29tcGxldGlvbiBRdWV1ZSBDb250ZXh0IFRhYmxlIEVudHJ5ICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxNVsweDdmZTAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fbXB0X3N0CW1wdDsgICAgICAgICAvKiBNZW1vcnkgUHJvdGVjdGlvbiBUYWJsZSAoTVBUKSBFbnRyeSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMTZbMHg3ZmUwMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX210dF9zdAltdHQ7ICAgICAgICAgLyogTWVtb3J5IFRyYW5zbGF0aW9uIFRhYmxlIChNVFQpIEVudHJ5ICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxN1sweDdmZmMwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fZXFjX3N0CWVxYzsgICAgICAgICAvKiBFdmVudCBRdWV1ZSBDb250ZXh0IFRhYmxlIEVudHJ5ICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQxOFsweDdmZTAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fcGVyZm9ybWFuY2VfbW9uaXRvcnNfc3QJcGVyZm9ybWFuY2VfbW9uaXRvcnM7LyogUGVyZm9ybWFuY2UgTW9uaXRvcnMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDE5WzB4N2ZmODBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9oY2FfY29tbWFuZF9yZWdpc3Rlcl9zdAloY2FfY29tbWFuZF9yZWdpc3RlcjsvKiBIQ0EgQ29tbWFuZCBSZWdpc3RlciAoSENSKSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMjBbMHhmZmYyMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX2luaXRfaGNhX3N0CWluaXRfaGNhOy8qIElOSVRfSENBICYgUVVFUllfSENBIFBhcmFtZXRlcnMgQmxvY2sgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDIxWzB4N2YwMDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9xcGNiYXNlYWRkcl9zdAlxcGNiYXNlYWRkcjsvKiBRUEMvRUVDL0NRQy9FUUMvUkRCIFBhcmFtZXRlcnMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDIyWzB4N2ZjMDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV91ZGF2dGFibGVfbWVtb3J5X3BhcmFtZXRlcnNfc3QJdWRhdnRhYmxlX21lbW9yeV9wYXJhbWV0ZXJzOy8qIE1lbW9yeSBBY2Nlc3MgUGFyYW1ldGVycyBmb3IgVUQgQWRkcmVzcyBWZWN0b3IgVGFibGUgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDIzWzB4N2ZmYzBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9tdWx0aWNhc3RwYXJhbV9zdAltdWx0aWNhc3RwYXJhbTsvKiBNdWx0aWNhc3QgU3VwcG9ydCBQYXJhbWV0ZXJzICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyNFsweDdmZjAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fdHB0cGFyYW1zX3N0CXRwdHBhcmFtczsvKiBUcmFuc2xhdGlvbiBhbmQgUHJvdGVjdGlvbiBUYWJsZXMgUGFyYW1ldGVycyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMjVbMHg3ZmYwMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyNlsweDAwODAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDI3WzB4MDAxMDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMjhbMHg3ZjcwMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQyOVsweDAwMTAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDMwWzB4N2ZmMDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9xdWVyeV9md19zdAlxdWVyeV9mdzsvKiBRVUVSWV9GVyBQYXJhbWV0ZXJzIEJsb2NrICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzMVsweDdmODAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fcXVlcnlfYWRhcHRlcl9zdAlxdWVyeV9hZGFwdGVyOy8qIFFVRVJZX0FEQVBURVIgUGFyYW1ldGVycyBCbG9jayAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMzJbMHg3ZjgwMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX3F1ZXJ5X2Rldl9jYXBfc3QJcXVlcnlfZGV2X2NhcDsvKiBRdWVyeSBEZXZpY2UgTGltaXRhdGlvbnMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDMzWzB4N2Y4MDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV91YXJfcGFyYW1zX3N0CXVhcl9wYXJhbXM7LyogVUFSIFBhcmFtZXRlcnMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM0WzB4N2ZmMDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9pbml0X3BvcnRfc3QJaW5pdF9wb3J0Oy8qIElOSVRfUE9SVCBQYXJhbWV0ZXJzICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzNVsweDdmODAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fbWdtX2VudHJ5X3N0CW1nbV9lbnRyeTsvKiBNdWx0aWNhc3QgR3JvdXAgTWVtYmVyICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzNlsweDdmZTAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fc2V0X2liX3N0CXNldF9pYjsgICAvKiBTRVRfSUIgUGFyYW1ldGVycyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkMzdbMHg3ZmUwMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX3JkX3NlbmRfZG9vcmJlbGxfc3QJcmRfc2VuZF9kb29yYmVsbDsvKiBSRC1zZW5kIGRvb3JiZWxsICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQzOFsweDdmZjgwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fc2VuZF9kb29yYmVsbF9zdAlzZW5kX2Rvb3JiZWxsOy8qIFNlbmQgZG9vcmJlbGwgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDM5WzB4N2ZmYzBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9yZWNlaXZlX2Rvb3JiZWxsX3N0CXJlY2VpdmVfZG9vcmJlbGw7LyogUmVjZWl2ZSBkb29yYmVsbCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNDBbMHg3ZmZjMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX2NxX2NtZF9kb29yYmVsbF9zdAljcV9jbWRfZG9vcmJlbGw7LyogQ1EgRG9vcmJlbGwgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQxWzB4ZmZmYzBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV91YXJfc3QJdWFyOyAgICAgICAgIC8qIFVzZXIgQWNjZXNzIFJlZ2lvbiAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNDJbMHg3YzAwMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX21nbXFwX3N0CW1nbXFwOyAgICAgLyogTXVsdGljYXN0IEdyb3VwIE1lbWJlciBRUCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNDNbMHg3ZmZlMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX3F1ZXJ5X2RlYnVnX21zZ19zdAlxdWVyeV9kZWJ1Z19tc2c7LyogUXVlcnkgRGVidWcgTWVzc2FnZSAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNDRbMHg3ZjgwMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX21hZF9pZmNfc3QJbWFkX2lmYzsgLyogTUFEX0lGQyBJbnB1dCBNYWlsYm94ICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0NVsweDAwOTAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fbWFkX2lmY19pbnB1dF9tb2RpZmllcl9zdAltYWRfaWZjX2lucHV0X21vZGlmaWVyOy8qIE1BRF9JRkMgSW5wdXQgTW9kaWZpZXIgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDQ2WzB4N2U2ZTBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9yZXNpemVfY3Ffc3QJcmVzaXplX2NxOy8qIFJlc2l6ZSBDUSBJbnB1dCBNYWlsYm94ICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0N1sweDdmZTAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fY29tcGxldGlvbl93aXRoX2Vycm9yX3N0CWNvbXBsZXRpb25fd2l0aF9lcnJvcjsvKiBDb21wbGV0aW9uIHdpdGggRXJyb3IgQ1FFICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0OFsweDdmZjAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1faGNyX2NvbXBsZXRpb25fZXZlbnRfc3QJaGNyX2NvbXBsZXRpb25fZXZlbnQ7LyogRXZlbnRfZGF0YSBGaWVsZCAtIEhDUiBDb21wbGV0aW9uIEV2ZW50ICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ0OVsweDdmZjQwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fdHJhbnNwb3J0X2FuZF9jaV9lcnJvcl9jb3VudGVyc19zdAl0cmFuc3BvcnRfYW5kX2NpX2Vycm9yX2NvdW50ZXJzOy8qIFRyYW5zcG9ydCBhbmQgQ0kgRXJyb3IgQ291bnRlcnMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDUwWzB4N2YwMDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9wZXJmb3JtYW5jZV9jb3VudGVyc19zdAlwZXJmb3JtYW5jZV9jb3VudGVyczsvKiBQZXJmb3JtYW5jZSBDb3VudGVycyAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNTFbMHg5ZmY4MDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9mYXN0X3JlZ2lzdHJhdGlvbl9zZWdtZW50X3N0CWZhc3RfcmVnaXN0cmF0aW9uX3NlZ21lbnQ7LyogRmFzdCBSZWdpc3RyYXRpb24gU2VnbWVudCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNTJbMHg3ZmYwMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX3BibF9zdAlwYmw7ICAgICAgICAgLyogUGh5c2ljYWwgQnVmZmVyIExpc3QgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDUzWzB4N2ZmMDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9zcnFfY29udGV4dF9zdAlzcnFfY29udGV4dDsvKiBTUlEgQ29udGV4dCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNTRbMHg3ZmU4MF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX21vZF9zdGF0X2NmZ19zdAltb2Rfc3RhdF9jZmc7LyogTU9EX1NUQVRfQ0ZHICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ1NVsweDdmODAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fdmlydHVhbF9waHlzaWNhbF9tYXBwaW5nX3N0CXZpcnR1YWxfcGh5c2ljYWxfbWFwcGluZzsvKiBWaXJ0dWFsIGFuZCBQaHlzaWNhbCBNYXBwaW5nICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ1NlsweDdmZjgwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fY3FfY2lfZGJfcmVjb3JkX3N0CWNxX2NpX2RiX3JlY29yZDsvKiBDUV9DSV9EQl9SZWNvcmQgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDU3WzB4N2ZmYzBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgc3RydWN0IGhlcm1vbnBybV9jcV9hcm1fZGJfcmVjb3JkX3N0CWNxX2FybV9kYl9yZWNvcmQ7LyogQ1FfQVJNX0RCX1JlY29yZCAqLwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNThbMHg3ZmZjMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX3FwX2RiX3JlY29yZF9zdAlxcF9kYl9yZWNvcmQ7LyogUVBfREJfUmVjb3JkICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ1OVsweDAwMDIwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDYwWzB4MWZmZmMwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fY29uZmlndXJhdGlvbl9yZWdpc3RlcnNfc3QJY29uZmlndXJhdGlvbl9yZWdpc3RlcnM7LyogSW5maW5pSG9zdCBJSUkgRVggQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMgKi8KLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHN0cnVjdCBoZXJtb25wcm1fZXFfc2V0X2NpX3RhYmxlX3N0CWVxX3NldF9jaV90YWJsZTsvKiBFUSBTZXQgQ0kgREJzIFRhYmxlICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ2MVsweDAxMDAwXTsKLyogLS0tLS0tLS0tLS0tLS0gKi8KICAgIHBzZXVkb19iaXRfdAlyZXNlcnZlZDYyWzB4MDAwNDBdOwovKiAtLS0tLS0tLS0tLS0tLSAqLwogICAgcHNldWRvX2JpdF90CXJlc2VydmVkNjNbMHgwMGZjMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBzdHJ1Y3QgaGVybW9ucHJtX2Nscl9pbnRfc3QJY2xyX2ludDsgLyogQ2xlYXIgSW50ZXJydXB0IFJlZ2lzdGVyICovCi8qIC0tLS0tLS0tLS0tLS0tICovCiAgICBwc2V1ZG9fYml0X3QJcmVzZXJ2ZWQ2NFsweGZmY2ZjMF07Ci8qIC0tLS0tLS0tLS0tLS0tICovCn07CiNlbmRpZiAvKiBIX3ByZWZpeF9oZXJtb25wcm1fYml0c19maXhuYW1lc19NVDI1NDA4X1BSTV9jc3BfSCAqLwo=