Ci8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClNvZnR3YXJlIExpY2Vuc2UgZm9yIFRoZSBGcmF1bmhvZmVyIEZESyBBQUMgQ29kZWMgTGlicmFyeSBmb3IgQW5kcm9pZAoKqSBDb3B5cmlnaHQgIDE5OTUgLSAyMDEzIEZyYXVuaG9mZXItR2VzZWxsc2NoYWZ0IHp1ciBG9nJkZXJ1bmcgZGVyIGFuZ2V3YW5kdGVuIEZvcnNjaHVuZyBlLlYuCiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KCiAxLiAgICBJTlRST0RVQ1RJT04KVGhlIEZyYXVuaG9mZXIgRkRLIEFBQyBDb2RlYyBMaWJyYXJ5IGZvciBBbmRyb2lkICgiRkRLIEFBQyBDb2RlYyIpIGlzIHNvZnR3YXJlIHRoYXQgaW1wbGVtZW50cwp0aGUgTVBFRyBBZHZhbmNlZCBBdWRpbyBDb2RpbmcgKCJBQUMiKSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgc2NoZW1lIGZvciBkaWdpdGFsIGF1ZGlvLgpUaGlzIEZESyBBQUMgQ29kZWMgc29mdHdhcmUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBhIHdpZGUgdmFyaWV0eSBvZiBBbmRyb2lkIGRldmljZXMuCgpBQUMncyBIRS1BQUMgYW5kIEhFLUFBQyB2MiB2ZXJzaW9ucyBhcmUgcmVnYXJkZWQgYXMgdG9kYXkncyBtb3N0IGVmZmljaWVudCBnZW5lcmFsIHBlcmNlcHR1YWwKYXVkaW8gY29kZWNzLiBBQUMtRUxEIGlzIGNvbnNpZGVyZWQgdGhlIGJlc3QtcGVyZm9ybWluZyBmdWxsLWJhbmR3aWR0aCBjb21tdW5pY2F0aW9ucyBjb2RlYyBieQppbmRlcGVuZGVudCBzdHVkaWVzIGFuZCBpcyB3aWRlbHkgZGVwbG95ZWQuIEFBQyBoYXMgYmVlbiBzdGFuZGFyZGl6ZWQgYnkgSVNPIGFuZCBJRUMgYXMgcGFydApvZiB0aGUgTVBFRyBzcGVjaWZpY2F0aW9ucy4KClBhdGVudCBsaWNlbnNlcyBmb3IgbmVjZXNzYXJ5IHBhdGVudCBjbGFpbXMgZm9yIHRoZSBGREsgQUFDIENvZGVjIChpbmNsdWRpbmcgdGhvc2Ugb2YgRnJhdW5ob2ZlcikKbWF5IGJlIG9idGFpbmVkIHRocm91Z2ggVmlhIExpY2Vuc2luZyAod3d3LnZpYWxpY2Vuc2luZy5jb20pIG9yIHRocm91Z2ggdGhlIHJlc3BlY3RpdmUgcGF0ZW50IG93bmVycwppbmRpdmlkdWFsbHkgZm9yIHRoZSBwdXJwb3NlIG9mIGVuY29kaW5nIG9yIGRlY29kaW5nIGJpdCBzdHJlYW1zIGluIHByb2R1Y3RzIHRoYXQgYXJlIGNvbXBsaWFudCB3aXRoCnRoZSBJU08vSUVDIE1QRUcgYXVkaW8gc3RhbmRhcmRzLiBQbGVhc2Ugbm90ZSB0aGF0IG1vc3QgbWFudWZhY3R1cmVycyBvZiBBbmRyb2lkIGRldmljZXMgYWxyZWFkeSBsaWNlbnNlCnRoZXNlIHBhdGVudCBjbGFpbXMgdGhyb3VnaCBWaWEgTGljZW5zaW5nIG9yIGRpcmVjdGx5IGZyb20gdGhlIHBhdGVudCBvd25lcnMsIGFuZCB0aGVyZWZvcmUgRkRLIEFBQyBDb2RlYwpzb2Z0d2FyZSBtYXkgYWxyZWFkeSBiZSBjb3ZlcmVkIHVuZGVyIHRob3NlIHBhdGVudCBsaWNlbnNlcyB3aGVuIGl0IGlzIHVzZWQgZm9yIHRob3NlIGxpY2Vuc2VkIHB1cnBvc2VzIG9ubHkuCgpDb21tZXJjaWFsbHktbGljZW5zZWQgQUFDIHNvZnR3YXJlIGxpYnJhcmllcywgaW5jbHVkaW5nIGZsb2F0aW5nLXBvaW50IHZlcnNpb25zIHdpdGggZW5oYW5jZWQgc291bmQgcXVhbGl0eSwKYXJlIGFsc28gYXZhaWxhYmxlIGZyb20gRnJhdW5ob2Zlci4gVXNlcnMgYXJlIGVuY291cmFnZWQgdG8gY2hlY2sgdGhlIEZyYXVuaG9mZXIgd2Vic2l0ZSBmb3IgYWRkaXRpb25hbAphcHBsaWNhdGlvbnMgaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24uCgoyLiAgICBDT1BZUklHSFQgTElDRU5TRQoKUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCB3aXRob3V0CnBheW1lbnQgb2YgY29weXJpZ2h0IGxpY2Vuc2UgZmVlcyBwcm92aWRlZCB0aGF0IHlvdSBzYXRpc2Z5IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCllvdSBtdXN0IHJldGFpbiB0aGUgY29tcGxldGUgdGV4dCBvZiB0aGlzIHNvZnR3YXJlIGxpY2Vuc2UgaW4gcmVkaXN0cmlidXRpb25zIG9mIHRoZSBGREsgQUFDIENvZGVjIG9yCnlvdXIgbW9kaWZpY2F0aW9ucyB0aGVyZXRvIGluIHNvdXJjZSBjb2RlIGZvcm0uCgpZb3UgbXVzdCByZXRhaW4gdGhlIGNvbXBsZXRlIHRleHQgb2YgdGhpcyBzb2Z0d2FyZSBsaWNlbnNlIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKcHJvdmlkZWQgd2l0aCByZWRpc3RyaWJ1dGlvbnMgb2YgdGhlIEZESyBBQUMgQ29kZWMgb3IgeW91ciBtb2RpZmljYXRpb25zIHRoZXJldG8gaW4gYmluYXJ5IGZvcm0uCllvdSBtdXN0IG1ha2UgYXZhaWxhYmxlIGZyZWUgb2YgY2hhcmdlIGNvcGllcyBvZiB0aGUgY29tcGxldGUgc291cmNlIGNvZGUgb2YgdGhlIEZESyBBQUMgQ29kZWMgYW5kIHlvdXIKbW9kaWZpY2F0aW9ucyB0aGVyZXRvIHRvIHJlY2lwaWVudHMgb2YgY29waWVzIGluIGJpbmFyeSBmb3JtLgoKVGhlIG5hbWUgb2YgRnJhdW5ob2ZlciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIGxpYnJhcnkgd2l0aG91dApwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpZb3UgbWF5IG5vdCBjaGFyZ2UgY29weXJpZ2h0IGxpY2Vuc2UgZmVlcyBmb3IgYW55b25lIHRvIHVzZSwgY29weSBvciBkaXN0cmlidXRlIHRoZSBGREsgQUFDIENvZGVjCnNvZnR3YXJlIG9yIHlvdXIgbW9kaWZpY2F0aW9ucyB0aGVyZXRvLgoKWW91ciBtb2RpZmllZCB2ZXJzaW9ucyBvZiB0aGUgRkRLIEFBQyBDb2RlYyBtdXN0IGNhcnJ5IHByb21pbmVudCBub3RpY2VzIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgc29mdHdhcmUKYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuIEZvciBtb2RpZmllZCB2ZXJzaW9ucyBvZiB0aGUgRkRLIEFBQyBDb2RlYywgdGhlIHRlcm0KIkZyYXVuaG9mZXIgRkRLIEFBQyBDb2RlYyBMaWJyYXJ5IGZvciBBbmRyb2lkIiBtdXN0IGJlIHJlcGxhY2VkIGJ5IHRoZSB0ZXJtCiJUaGlyZC1QYXJ0eSBNb2RpZmllZCBWZXJzaW9uIG9mIHRoZSBGcmF1bmhvZmVyIEZESyBBQUMgQ29kZWMgTGlicmFyeSBmb3IgQW5kcm9pZC4iCgozLiAgICBOTyBQQVRFTlQgTElDRU5TRQoKTk8gRVhQUkVTUyBPUiBJTVBMSUVEIExJQ0VOU0VTIFRPIEFOWSBQQVRFTlQgQ0xBSU1TLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBwYXRlbnRzIG9mIEZyYXVuaG9mZXIsCkFSRSBHUkFOVEVEIEJZIFRISVMgU09GVFdBUkUgTElDRU5TRS4gRnJhdW5ob2ZlciBwcm92aWRlcyBubyB3YXJyYW50eSBvZiBwYXRlbnQgbm9uLWluZnJpbmdlbWVudCB3aXRoCnJlc3BlY3QgdG8gdGhpcyBzb2Z0d2FyZS4KCllvdSBtYXkgdXNlIHRoaXMgRkRLIEFBQyBDb2RlYyBzb2Z0d2FyZSBvciBtb2RpZmljYXRpb25zIHRoZXJldG8gb25seSBmb3IgcHVycG9zZXMgdGhhdCBhcmUgYXV0aG9yaXplZApieSBhcHByb3ByaWF0ZSBwYXRlbnQgbGljZW5zZXMuCgo0LiAgICBESVNDTEFJTUVSCgpUaGlzIEZESyBBQUMgQ29kZWMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYnkgRnJhdW5ob2ZlciBvbiBiZWhhbGYgb2YgdGhlIGNvcHlyaWdodCBob2xkZXJzIGFuZCBjb250cmlidXRvcnMKIkFTIElTIiBhbmQgV0lUSE9VVCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIGltcGxpZWQgd2FycmFudGllcwpvZiBtZXJjaGFudGFiaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgpDT05UUklCVVRPUlMgQkUgTElBQkxFIGZvciBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgaW5jaWRlbnRhbCwgc3BlY2lhbCwgZXhlbXBsYXJ5LCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMsCmluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gcHJvY3VyZW1lbnQgb2Ygc3Vic3RpdHV0ZSBnb29kcyBvciBzZXJ2aWNlczsgbG9zcyBvZiB1c2UsIGRhdGEsIG9yIHByb2ZpdHMsCm9yIGJ1c2luZXNzIGludGVycnVwdGlvbiwgaG93ZXZlciBjYXVzZWQgYW5kIG9uIGFueSB0aGVvcnkgb2YgbGlhYmlsaXR5LCB3aGV0aGVyIGluIGNvbnRyYWN0LCBzdHJpY3QKbGlhYmlsaXR5LCBvciB0b3J0IChpbmNsdWRpbmcgbmVnbGlnZW5jZSksIGFyaXNpbmcgaW4gYW55IHdheSBvdXQgb2YgdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLCBldmVuIGlmCmFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlLgoKNS4gICAgQ09OVEFDVCBJTkZPUk1BVElPTgoKRnJhdW5ob2ZlciBJbnN0aXR1dGUgZm9yIEludGVncmF0ZWQgQ2lyY3VpdHMgSUlTCkF0dGVudGlvbjogQXVkaW8gYW5kIE11bHRpbWVkaWEgRGVwYXJ0bWVudHMgLSBGREsgQUFDIExMCkFtIFdvbGZzbWFudGVsIDMzCjkxMDU4IEVybGFuZ2VuLCBHZXJtYW55Cgp3d3cuaWlzLmZyYXVuaG9mZXIuZGUvYW1tCmFtbS1pbmZvQGlpcy5mcmF1bmhvZmVyLmRlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgovKiEKICBcZmlsZQogIFxicmllZiAgU0JSIGJpdCB3cml0aW5nICAKKi8KI2lmbmRlZiBfX0JJVF9TQlJfSAojZGVmaW5lIF9fQklUX1NCUl9ICgojaW5jbHVkZSAic2JyX2RlZi5oIgojaW5jbHVkZSAiY21vbmRhdGEuaCIKI2luY2x1ZGUgImZyYW1fZ2VuLmgiCgpzdHJ1Y3QgU0JSX0VOVl9EQVRBOwoKc3RydWN0IFNCUl9CSVRTVFJFQU1fREFUQQp7CiAgSU5UIFRvdGFsQml0czsKICBJTlQgUGF5bG9hZEJpdHM7CiAgSU5UIEZpbGxCaXRzOwogIElOVCBIZWFkZXJBY3RpdmU7CiAgSU5UIE5yU2VuZEhlYWRlckRhdGE7ICAgICAgICAgICAgLyoqPCBpbnB1dCBmcm9tIGNvbW1hbmRsaW5lICovCiAgSU5UIENvdW50U2VuZEhlYWRlckRhdGE7ICAgICAgICAgLyoqPCBtb2R1bG8gY291bnQuIElmIDwgMCB0aGVuIG5vIGNvdW50aW5nIGlzIGRvbmUgKG5vIFNCUiBoZWFkZXJzKSAqLwp9OwoKdHlwZWRlZiBzdHJ1Y3QgU0JSX0JJVFNUUkVBTV9EQVRBICAqSEFORExFX1NCUl9CSVRTVFJFQU1fREFUQTsKCnN0cnVjdCBTQlJfSEVBREVSX0RBVEEKewogIEFNUF9SRVMgc2JyX2FtcF9yZXM7CiAgSU5UIHNicl9zdGFydF9mcmVxdWVuY3k7CiAgSU5UIHNicl9zdG9wX2ZyZXF1ZW5jeTsKICBJTlQgc2JyX3hvdmVyX2JhbmQ7CiAgSU5UIHNicl9ub2lzZV9iYW5kczsKICBJTlQgc2JyX2RhdGFfZXh0cmE7CiAgSU5UIGhlYWRlcl9leHRyYV8xOwogIElOVCBoZWFkZXJfZXh0cmFfMjsKICBJTlQgc2JyX2xjX3N0ZXJlb19tb2RlOwogIElOVCBzYnJfbGltaXRlcl9iYW5kczsKICBJTlQgc2JyX2xpbWl0ZXJfZ2FpbnM7CiAgSU5UIHNicl9pbnRlcnBvbF9mcmVxOwogIElOVCBzYnJfc21vb3RoaW5nX2xlbmd0aDsKICBJTlQgYWx0ZXJTY2FsZTsKICBJTlQgZnJlcVNjYWxlOwoKICAvKgogICAgZWxlbWVudCBvZiBjaGFubmVscGFpcmVsZW1lbnQKICAqLwogIElOVCBjb3VwbGluZzsKICBJTlQgcHJldl9jb3VwbGluZzsKCiAgLyoKICAgIGVsZW1lbnQgb2Ygc2luZ2xlY2hhbm5lbGVsZW1lbnQKICAqLwoKfTsKdHlwZWRlZiBzdHJ1Y3QgU0JSX0hFQURFUl9EQVRBICpIQU5ETEVfU0JSX0hFQURFUl9EQVRBOwoKc3RydWN0IFNCUl9FTlZfREFUQQp7CgogIElOVCBzYnJfeHBvc19jdHJsOwogIElOVCBmcmVxX3Jlc19maXhmaXg7CgoKICBJTlZGX01PREUgc2JyX2ludmZfbW9kZTsKICBJTlZGX01PREUgc2JyX2ludmZfbW9kZV92ZWNbTUFYX05VTV9OT0lTRV9WQUxVRVNdOwoKICBYUE9TX01PREUgc2JyX3hwb3NfbW9kZTsKCiAgSU5UIGllbnZlbG9wZVtNQVhfRU5WRUxPUEVTXVtNQVhfRlJFUV9DT0VGRlNdOwoKICBJTlQgY29kZUJvb2tTY2ZMYXZCYWxhbmNlOwogIElOVCBjb2RlQm9va1NjZkxhdjsKICBjb25zdCBJTlQgKmh1ZmZ0YWJsZVRpbWVDOwogIGNvbnN0IElOVCAqaHVmZnRhYmxlRnJlcUM7CiAgY29uc3QgVUNIQVIgKmh1ZmZ0YWJsZVRpbWVMOwogIGNvbnN0IFVDSEFSICpodWZmdGFibGVGcmVxTDsKCiAgY29uc3QgSU5UICpodWZmdGFibGVMZXZlbFRpbWVDOwogIGNvbnN0IElOVCAqaHVmZnRhYmxlQmFsYW5jZVRpbWVDOwogIGNvbnN0IElOVCAqaHVmZnRhYmxlTGV2ZWxGcmVxQzsKICBjb25zdCBJTlQgKmh1ZmZ0YWJsZUJhbGFuY2VGcmVxQzsKICBjb25zdCBVQ0hBUiAqaHVmZnRhYmxlTGV2ZWxUaW1lTDsKICBjb25zdCBVQ0hBUiAqaHVmZnRhYmxlQmFsYW5jZVRpbWVMOwogIGNvbnN0IFVDSEFSICpodWZmdGFibGVMZXZlbEZyZXFMOwogIGNvbnN0IFVDSEFSICpodWZmdGFibGVCYWxhbmNlRnJlcUw7CgoKICBjb25zdCBVQ0hBUiAqaHVmZnRhYmxlTm9pc2VUaW1lTDsKICBjb25zdCBJTlQgKmh1ZmZ0YWJsZU5vaXNlVGltZUM7CiAgY29uc3QgVUNIQVIgKmh1ZmZ0YWJsZU5vaXNlRnJlcUw7CiAgY29uc3QgSU5UICpodWZmdGFibGVOb2lzZUZyZXFDOwoKICBjb25zdCBVQ0hBUiAqaHVmZnRhYmxlTm9pc2VMZXZlbFRpbWVMOwogIGNvbnN0IElOVCAqaHVmZnRhYmxlTm9pc2VMZXZlbFRpbWVDOwogIGNvbnN0IFVDSEFSICpodWZmdGFibGVOb2lzZUJhbGFuY2VUaW1lTDsKICBjb25zdCBJTlQgKmh1ZmZ0YWJsZU5vaXNlQmFsYW5jZVRpbWVDOwogIGNvbnN0IFVDSEFSICpodWZmdGFibGVOb2lzZUxldmVsRnJlcUw7CiAgY29uc3QgSU5UICpodWZmdGFibGVOb2lzZUxldmVsRnJlcUM7CiAgY29uc3QgVUNIQVIgKmh1ZmZ0YWJsZU5vaXNlQmFsYW5jZUZyZXFMOwogIGNvbnN0IElOVCAqaHVmZnRhYmxlTm9pc2VCYWxhbmNlRnJlcUM7CgogIEhBTkRMRV9TQlJfR1JJRCBoU2JyQlNHcmlkOwoKICBJTlQgbm9IYXJtb25pY3M7CiAgSU5UIGFkZEhhcm1vbmljRmxhZzsKICBVQ0hBUiBhZGRIYXJtb25pY1tNQVhfRlJFUV9DT0VGRlNdOwoKCiAgLyogY2FsY3VsYXRlZCBoZWxwZXIgdmFycyAqLwogIElOVCBzaV9zYnJfc3RhcnRfZW52X2JpdHNfYmFsYW5jZTsKICBJTlQgc2lfc2JyX3N0YXJ0X2Vudl9iaXRzOwogIElOVCBzaV9zYnJfc3RhcnRfbm9pc2VfYml0c19iYWxhbmNlOwogIElOVCBzaV9zYnJfc3RhcnRfbm9pc2VfYml0czsKCiAgSU5UIG5vT2ZFbnZlbG9wZXM7CiAgSU5UIG5vU2NmQmFuZHNbTUFYX0VOVkVMT1BFU107CiAgSU5UIGRvbWFpbl92ZWNbTUFYX0VOVkVMT1BFU107CiAgSU5UIGRvbWFpbl92ZWNfbm9pc2VbTUFYX0VOVkVMT1BFU107CiAgU0NIQVIgc2JyX25vaXNlX2xldmVsc1tNQVhfRlJFUV9DT0VGRlNdOwogIElOVCBub09mbm9pc2ViYW5kczsKCiAgSU5UIGJhbGFuY2U7CiAgQU1QX1JFUyBpbml0X3Nicl9hbXBfcmVzOwogIEFNUF9SRVMgY3VycmVudEFtcFJlc0ZGOwoKICAvKiBleHRlbmRlZCBkYXRhICovCiAgSU5UIGV4dGVuZGVkX2RhdGE7CiAgSU5UIGV4dGVuc2lvbl9zaXplOwogIElOVCBleHRlbnNpb25faWQ7CiAgVUNIQVIgZXh0ZW5kZWRfZGF0YV9idWZmZXJbU0JSX0VYVEVOREVEX0RBVEFfTUFYX0NOVF07CgogIFVDSEFSIGxkR3JpZDsKfTsKdHlwZWRlZiBzdHJ1Y3QgU0JSX0VOVl9EQVRBICpIQU5ETEVfU0JSX0VOVl9EQVRBOwoKCgpJTlQgRkRLc2JyRW5jX1dyaXRlRW52U2luZ2xlQ2hhbm5lbEVsZW1lbnQoc3RydWN0IFNCUl9IRUFERVJfREFUQSAgICAqc2JySGVhZGVyRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFRfUEFSQU1FVFJJQ19TVEVSRU8gKmhQYXJhbWV0cmljU3RlcmVvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgU0JSX0JJVFNUUkVBTV9EQVRBICpzYnJCaXRzdHJlYW1EYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgU0JSX0VOVl9EQVRBICAgICAgICpzYnJFbnZEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgQ09NTU9OX0RBVEEgICAgICAgICpjbW9uRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCAgICAgICAgICAgICAgICAgICAgICAgc2JyU3ludGF4RmxhZ3MpOwoKCklOVCBGREtzYnJFbmNfV3JpdGVFbnZDaGFubmVsUGFpckVsZW1lbnQoc3RydWN0IFNCUl9IRUFERVJfREFUQSAgICAqc2JySGVhZGVyRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBUX1BBUkFNRVRSSUNfU1RFUkVPICpoUGFyYW1ldHJpY1N0ZXJlbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBTQlJfQklUU1RSRUFNX0RBVEEgKnNickJpdHN0cmVhbURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgU0JSX0VOVl9EQVRBICAgICAgICpzYnJFbnZEYXRhTGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBTQlJfRU5WX0RBVEEgICAgICAgKnNickVudkRhdGFSaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBDT01NT05fREFUQSAgICAgICAgKmNtb25EYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCAgICAgICAgICAgICAgICAgICAgICAgc2JyU3ludGF4RmxhZ3MpOwoKCgpJTlQgRkRLc2JyRW5jX0NvdW50U2JyQ2hhbm5lbFBhaXJFbGVtZW50IChzdHJ1Y3QgU0JSX0hFQURFUl9EQVRBICAgICAqc2JySGVhZGVyRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgVF9QQVJBTUVUUklDX1NURVJFTyAqaFBhcmFtZXRyaWNTdGVyZW8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFNCUl9CSVRTVFJFQU1fREFUQSAgKnNickJpdHN0cmVhbURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFNCUl9FTlZfREFUQSAgICAgICAgKnNickVudkRhdGFMZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBTQlJfRU5WX0RBVEEgICAgICAgICpzYnJFbnZEYXRhUmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IENPTU1PTl9EQVRBICAgICAgICAgKmNtb25EYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgICAgICAgICAgICAgICAgICAgICAgICBzYnJTeW50YXhGbGFncyk7CgoKCi8qIGRlYnVnZ2luZyBhbmQgdHVuaW5nIGZ1bmN0aW9ucyAqLwoKLyojZGVmaW5lIFNCUl9FTlZfU1RBVElTVElDUyAqLwoKCi8qI2RlZmluZSBTQlJfUEFZTE9BRF9NT05JVE9SKi8KCiNlbmRpZgo=