LyoKICogKEMpIENvcHlyaWdodCAyMDAyCiAqIERhbmllbCBFbmdzdHL2bSwgT21pY3JvbiBDZXRpIEFCIDxkYW5pZWxAb21pY3Jvbi5zZT4uCiAqCiAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCiAqIHByb2plY3QuCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCiAqIE1BIDAyMTExLTEzMDcgVVNBCiAqLwoKLyogVGhpcyBmaWxlIGlzIGxhcmdlbHkgYmFzZWQgb24gY29kZSBvYnRuZWQgZnJvbSBBTUQuIEFNRCdzIG9yaWdpbmFsCiAqIGNvcHlyaWdodCBpcyBpbmNsdWRlZCBiZWxvdwogKi8KCi8qCiAqICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKgogKiAgIENvcHlyaWdodCAxOTk5IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KICoKICogIFRoaXMgc29mdHdhcmUgaXMgdGhlIHByb3BlcnR5IG9mIEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYyAgKEFNRCkgIHdoaWNoCiAqICBzcGVjaWZpY2FsbHkgZ3JhbnRzIHRoZSB1c2VyIHRoZSByaWdodCB0byBtb2RpZnksIHVzZSBhbmQgZGlzdHJpYnV0ZSB0aGlzCiAqICBzb2Z0d2FyZSBwcm92aWRlZCB0aGlzIENPUFlSSUdIVCBOT1RJQ0UgaXMgbm90IHJlbW92ZWQgb3IgYWx0ZXJlZC4gIEFsbAogKiAgb3RoZXIgcmlnaHRzIGFyZSByZXNlcnZlZCBieSBBTUQuCiAqCiAqICBUSEUgTUFURVJJQUxTIEFSRSBQUk9WSURFRCAiQVMgSVMiIFdJVEhPVVQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5UWQogKiAgT0YgQU5ZIEtJTkQgSU5DTFVESU5HIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBOT05JTkZSSU5HRU1FTlQgT0YKICogIFRISVJELVBBUlRZIElOVEVMTEVDVFVBTCBQUk9QRVJUWSwgT1IgRklUTkVTUyBGT1IgQU5ZIFBBUlRJQ1VMQVIgUFVSUE9TRS4KICogIElOIE5PIEVWRU5UIFNIQUxMIEFNRCBPUiBJVFMgU1VQUExJRVJTIEJFIExJQUJMRSBGT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUgogKiAgKElOQ0xVRElORywgV0lUSE9VVCBMSU1JVEFUSU9OLCBEQU1BR0VTIEZPUiBMT1NTIE9GIFBST0ZJVFMsIEJVU0lORVNTCiAqICBJTlRFUlJVUFRJT04sIExPU1MgT0YgSU5GT1JNQUlUT04pIEFSSVNJTkcgT1VUIE9GIFRIRSBVU0UgT0YgT1IgSU5BQklMSVRZCiAqICBUTyBVU0UgVEhFIE1BVEVSSUFMUywgRVZFTiBJRiBBTUQgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICogIFNVQ0ggREFNQUdFUy4gIEJFQ0FVU0UgU09NRSBKVVJTSURJQ1RJT05TIFBST0hJQklUIFRIRSBFWENMVVNJT04gT1IKICogIExJTUlUQVRJT04gT0YgTElBQklMSVRZIEZPUiBDT05TRVFVRU5USUFMIE9SIElOQ0lERU5UQUwgREFNQUdFUywgVEhFIEFCT1ZFCiAqICBMSU1JVEFUSU9OIE1BWSBOT1QgQVBQTFkgVE8gWU9VLgogKgogKiAgQU1EIGRvZXMgbm90IGFzc3VtZSBhbnkgcmVzcG9uc2liaWxpdHkgZm9yIGFueSBlcnJvcnMgdGhhdCBtYXkgYXBwZWFyIGluCiAqICB0aGUgTWF0ZXJpYWxzIG5vciBhbnkgcmVzcG9uc2liaWxpdHkgdG8gc3VwcG9ydCBvciB1cGRhdGUgdGhlIE1hdGVyaWFscy4KICogIEFNRCByZXRhaW5zIHRoZSByaWdodCB0byBtYWtlIGNoYW5nZXMgdG8gaXRzIHRlc3Qgc3BlY2lmaWNhdGlvbnMgYXQgYW55CiAqICB0aW1lLCB3aXRob3V0IG5vdGljZS4KICoKICogIFNvIHRoYXQgYWxsIG1heSBiZW5lZml0IGZyb20geW91ciBleHBlcmllbmNlLCBwbGVhc2UgcmVwb3J0ICBhbnkgIHByb2JsZW1zCiAqICBvciBzdWdnZXN0aW9ucyBhYm91dCB0aGlzIHNvZnR3YXJlIGJhY2sgdG8gQU1ELiAgUGxlYXNlIGluY2x1ZGUgeW91ciBuYW1lLAogKiAgY29tcGFueSwgIHRlbGVwaG9uZSBudW1iZXIsICBBTUQgcHJvZHVjdCByZXF1aXJpbmcgc3VwcG9ydCBhbmQgcXVlc3Rpb24gb3IKICogIHByb2JsZW0gZW5jb3VudGVyZWQuCiAqCiAqICBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuICAgICAgICAgV29ybGR3aWRlIHN1cHBvcnQgYW5kIGNvbnRhY3QKICogIEVtYmVkZGVkIFByb2Nlc3NvciBEaXZpc2lvbiAgICAgICAgICAgIGluZm9ybWF0aW9uIGF2YWlsYWJsZSBhdDoKICogIFN5c3RlbXMgRW5naW5lZXJpbmcgICAgICAgICAgICAgICAgICAgICAgIGVwZC5zdXBwb3J0QGFtZC5jb20KICogIDUyMDQgRS4gQmVuIFdoaXRlIEJsdmQuICAgICAgICAgICAgICAgICAgICAgICAgICAtb3ItCiAqICBBdXN0aW4sIFRYIDc4NzQxICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuYW1kLmNvbS9odG1sL3N1cHBvcnQvdGVjaHN1cC5odG1sCiAqICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqLwoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCSBBVVRIT1IgICAgICA6IEJ1ZGR5IEZleSAtIE9yaWdpbmFsLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKi8KCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgICBGVU5DVElPTkFMIERFU0NSSVBUSU9OOgogKiBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIHRvIGF1dG9kZXRlY3QgdGhlIGdlb21ldHJ5IG9mIHRoZSBEUkFNLgogKgogKiBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGNvbHVtbiBiaXRzIGZvciB0aGUgRFJBTQogKiBkZXZpY2VzIGluIHRoaXMgZXh0ZXJuYWwgYmFuay4gVGhpcyByb3V0aW5lIGFzc3VtZXMgdGhhdCB0aGUgZXh0ZXJuYWwgYmFuawogKiBoYXMgYmVlbiBjb25maWd1cmVkIGZvciBhbiAxMS1iaXQgY29sdW1uIGFuZCBmb3IgNCBpbnRlcm5hbCBiYW5rcy4gVGhpcyBnaXZlcwogKiB1cyB0aGUgbWF4aW11bSBhZGRyZXNzIHJlYWNoIGluIG1lbW9yeS4gQnkgd3JpdGluZyBhIHRlc3QgdmFsdWUgdG8gdGhlIG1heAogKiBhZGRyZXNzIGFuZCBsb2NhdGluZyB3aGVyZSBpdCBhbGlhc2VzIHRvLCB3ZSBjYW4gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgdmFsaWQKICogY29sdW1uIGJpdHMuCiAqCiAqIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgaW50ZXJuYWwgYmFua3MgZWFjaCBEUkFNCiAqIGRldmljZSBoYXMuIFRoZSBleHRlcm5hbCBiYW5rICh1bmRlciB0ZXN0KSBpcyBjb25maWd1cmVkIGZvciBtYXhpbXVtIHJlYWNoCiAqIHdpdGggMTEtYml0IGNvbHVtbnMgYW5kIDQgaW50ZXJuYWwgYmFua3MuIFRoaXMgcm91dGluZSB3aWxsIHdyaXRlIHRvIGEgbWF4CiAqIGFkZHJlc3MgKEJBMSBhbmQgQkEwID0gMSkgYW5kIHRoZW4gcmVhZCBmcm9tIGFuIGFkZHJlc3Mgd2l0aCBCQTE9MCB0byBzZWUgaWYKICogdGhhdCBjb2x1bW4gaXMgYSAiZG9uJ3QgY2FyZSIuIElmIEJBMSBkb2VzIG5vdCBhZmZlY3Qgd3JpdGUvcmVhZCBvZiBkYXRhLAogKiB0aGVuIHRoaXMgZGV2aWNlIGhhcyBvbmx5IDIgaW50ZXJuYWwgYmFua3MuCiAqCiAqIFRoaXMgcm91dGluZSBpcyBjYWxsZWQgdG8gZGV0ZXJtaW5lIHRoZSBlbmRpbmcgYWRkcmVzcyBmb3IgdGhpcyBleHRlcm5hbAogKiBiYW5rIG9mIFNEUkFNLiBXZSB3cml0ZSB0byBhIG1heCBhZGRyZXNzIHdpdGggYSBkYXRhIHZhbHVlIGFuZCB0aGVuIGRpc2FibGUKICogcm93IGFkZHJlc3MgYml0cyBsb29raW5nIGZvciAiZG9uJ3QgY2FyZSIgbG9jYXRpb25zLiBFYWNoICJkb24ndCBjYXJlIiBiaXQKICogcmVwcmVzZW50cyBhIGRpdmlkaW5nIG9mIHRoZSBtYXhpbXVtIGRlbnNpdHkgKDEyOE0pIGJ5IDIuIEJ5IGRpdmlkaW5nIHRoZQogKiBtYXhpbXVtIG9mIDMyIDRNIGNodW5rcyBpbiBhbiBleHRlcm5hbCBiYW5rIGRvd24gYnkgYWxsIHRoZSAiZG9uJ3QgY2FyZSIgYml0cwogKiBkZXRlcm1pbmVkIGR1cmluZyBzaXppbmcsIHdlIHNldCB0aGUgcHJvcGVyIGRlbnNpdHkuCiAqCiAqIFdBUk5JTkdTLgogKiBicCBtdXN0IGJlIHByZXNlcnZlZCBiZWNhdXNlIGl0IGlzIHVzZWQgZm9yIHJldHVybiBsaW5rYWdlLgogKgogKiBFWElUCiAqIG5vdGhpbmcgcmV0dXJuZWQgLSBidXQgdGhlIG1lbW9yeSBzdWJzeXN0ZW0gaXMgZW5hYmxlZAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKi8KCiNpbmNsdWRlIDxjb25maWcuaD4KI2lmZGVmIENPTkZJR19TQzUyMAoKLnNlY3Rpb24gLnRleHQKLmVxdSAgICAgICAgICAgIERSQ0NUTCwgICAgIDB4MGZmZmVmMDEwICAgLyogRFJBTSBjb250cm9sIHJlZ2lzdGVyICovCi5lcXUgICAgICAgICAgICBEUkNUTUNUTCwgICAweDBmZmZlZjAxMiAgIC8qIERSQU0gdGltaW5nIGNvbnRyb2wgcmVnaXN0ZXIgKi8KLmVxdSAgICAgICAgICAgIERSQ0NGRywgICAgIDB4MGZmZmVmMDE0ICAgLyogRFJBTSBiYW5rIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgKi8KLmVxdSAgICAgICAgICAgIERSQ0JFTkRBRFIsIDB4MGZmZmVmMDE4ICAgLyogRFJBTSBiYW5rIGVuZGluZyBhZGRyZXNzIHJlZ2lzdGVyICovCi5lcXUgICAgICAgICAgICBFQ0NDVEwsICAgICAweDBmZmZlZjAyMCAgIC8qIERSQU0gRUNDIGNvbnRyb2wgcmVnaXN0ZXIgKi8KLmVxdSAgICAgICAgICAgIERCQ1RMLCAgICAgIDB4MGZmZmVmMDQwICAgLyogRFJBTSBidWZmZXIgY29udHJvbCByZWdpc3RlciAqLwoKLmVxdSAgICAgICAgICAgIENBQ0hFTElORVNaLCAweDAwMDAwMDEwICAgLyogc2l6ZSBvZiBvdXIgY2FjaGUgbGluZSAocmVhZCBidWZmZXIpICovCi5lcXUgICAgICAgICAgICBDT0wxMV9BRFIsICAweDBlMDAxZTAwICAgIC8qIDExIGNvbCBhZGRycyAqLwouZXF1ICAgICAgICAgICAgQ09MMTBfQURSLCAgMHgwZTAwMGUwMCAgICAvKiAxMCBjb2wgYWRkcnMgKi8KLmVxdSAgICAgICAgICAgIENPTDA5X0FEUiwgIDB4MGUwMDA2MDAgICAgLyogIDkgY29sIGFkZHJzICovCi5lcXUgICAgICAgICAgICBDT0wwOF9BRFIsICAweDBlMDAwMjAwICAgIC8qICA4IGNvbCBhZGRycyAqLwouZXF1ICAgICAgICAgICAgUk9XMTRfQURSLCAgMHgwZjAwMDAwMCAgICAvKiAxNCByb3cgYWRkcnMgKi8KLmVxdSAgICAgICAgICAgIFJPVzEzX0FEUiwgIDB4MDcwMDAwMDAgICAgLyogMTMgcm93IGFkZHJzICovCi5lcXUgICAgICAgICAgICBST1cxMl9BRFIsICAweDAzMDAwMDAwICAgIC8qIDEyIHJvdyBhZGRycyAqLwouZXF1ICAgICAgICAgICAgUk9XMTFfQURSLCAgMHgwMTAwMDAwMCAgICAvKiAxMSByb3cgYWRkcnMvYWxzbyBiYW5rIHN3aXRjaCAqLwouZXF1ICAgICAgICAgICAgUk9XMTBfQURSLCAgMHgwMDAwMDAwMCAgICAvKiAxMCByb3cgYWRkcnMvYWxzbyBiYW5rIHN3aXRjaCAqLwouZXF1ICAgICAgICAgICAgQ09MMTFfREFUQSwgMHgwYjBiMGIwYiAgICAvKiAxMSBjb2wgYWRkcnMgKi8KLmVxdSAgICAgICAgICAgIENPTDEwX0RBVEEsIDB4MGEwYTBhMGEgICAgLyogMTAgY29sIGRhdGEgKi8KLmVxdSAgICAgICAgICAgIENPTDA5X0RBVEEsIDB4MDkwOTA5MDkgICAgLyogIDkgY29sIGRhdGEgKi8KLmVxdSAgICAgICAgICAgIENPTDA4X0RBVEEsIDB4MDgwODA4MDggICAgLyogIDggY29sIGRhdGEgKi8KLmVxdSAgICAgICAgICAgIFJPVzE0X0RBVEEsIDB4M2YzZjNmM2YgICAgLyogMTQgcm93IGRhdGEgKE1BU0spICovCi5lcXUgICAgICAgICAgICBST1cxM19EQVRBLCAweDFmMWYxZjFmICAgIC8qIDEzIHJvdyBkYXRhIChNQVNLKSAqLwouZXF1ICAgICAgICAgICAgUk9XMTJfREFUQSwgMHgwZjBmMGYwZiAgICAvKiAxMiByb3cgZGF0YSAoTUFTSykgKi8KLmVxdSAgICAgICAgICAgIFJPVzExX0RBVEEsIDB4MDcwNzA3MDcgICAgLyogMTEgcm93IGRhdGEvYWxzbyBiYW5rIHN3aXRjaCAoTUFTSykgKi8KLmVxdSAgICAgICAgICAgIFJPVzEwX0RBVEEsIDB4YWFhYWFhYWEgICAgLyogMTAgcm93IGRhdGEvYWxzbyBiYW5rIHN3aXRjaCAoTUFTSykgKi8KCgogLyoKICAqIGluaXRpYWxpemUgZHJhbSBjb250cm9sbGVyIHJlZ2lzdGVycwogICovCi5nbG9ibCBtZW1faW5pdAptZW1faW5pdDoKCXhvcncgICAgJWF4LCVheAoJbW92bCAgICAkREJDVEwsICVlZGkKCW1vdmIgICAgICVhbCwgKCVlZGkpICAgICAgICAgICAgIC8qIGRpc2FibGUgd3JpdGUgYnVmZmVyICovCgoJbW92bCAgICAkRUNDQ1RMLCAlZWRpCgltb3ZiICAgICAlYWwsICglZWRpKSAgICAgICAgICAgICAvKiBkaXNhYmxlIEVDQyAqLwoKCW1vdmwgICAgJERSQ1RNQ1RMLCAlZWRpCgltb3ZiICAgICQweDFFLCVhbCAgICAgICAgICAgICAgICAvKiBTZXQgU0RSQU0gdGltaW5nIGZvciBzbG93ZXN0ICovCgltb3ZiICAgICAlYWwsICglZWRpKQoKIC8qCiAgKiBzZXR1cCBsb29wIHRvIGRvIDQgZXh0ZXJuYWwgYmFua3Mgc3RhcnRpbmcgd2l0aCBiYW5rIDMKICAqLwoJbW92bCAgICAkMHhmZjAwMDAwMCwlZWF4ICAgICAgICAgLyogZW5hYmxlIGxhc3QgYmFuayBhbmQgc2V0dXAgKi8KCW1vdmwgICAgJERSQ0JFTkRBRFIsICVlZGkgICAgICAgIC8qIGVuZGluZyBhZGRyZXNzIHJlZ2lzdGVyICovCgltb3ZsICAgICAlZWF4LCAoJWVkaSkKCgltb3ZsICAgICREUkNDRkcsICVlZGkgICAgICAgICAgICAvKiBzZXR1cCAqLwoJbW92dyAgICAkMHhiYmJiLCVheCAgICAgICAgICAgICAgLyogZHJhbSBjb25maWcgcmVnaXN0ZXIgZm9yICAqLwoJbW92dyAgICAlYXgsICglZWRpKQoKIC8qCiAgKiBpc3N1ZSBhIE5PUCB0byBhbGwgRFJBTXMKICAqLwoJbW92bCAgICAkRFJDQ1RMLCAlZWRpICAgICAgICAgICAgLyogc2V0dXAgRFJBTSBjb250cm9sIHJlZ2lzdGVyIHdpdGggKi8KCW1vdmIgICAgJDB4MSwlYWwgICAgICAgICAgICAgICAgIC8qIERpc2FibGUgcmVmcmVzaCxkaXNhYmxlIHdyaXRlIGJ1ZmZlciAqLwoJbW92YiAgICAgJWFsLCAoJWVkaSkKCW1vdmwgICAgJENBQ0hFTElORVNaLCAlZXNpICAgICAgIC8qIGp1c3QgYSBkdW1teSBhZGRyZXNzIHRvIHdyaXRlIGZvciAqLwoJbW92dyAgICAgJWF4LCAoJWVzaSkKIC8qCiAgKiBkZWxheSBmb3IgMTAwIHVzZWM/IDIwMD8KICAqICoqKioqKnRoaXMgaXMgYSBjbHVkZ2UgZm9yIG5vdyAqKioqKioqKioqKioqCiAgKi8KCW1vdncgICAgJDEwMCwlY3gKc2l6ZGVsYXk6Cglsb29wICAgIHNpemRlbGF5ICAgICAgICAgICAgICAgICAvKiB3ZSBuZWVkIDEwMCB1c2VjIGhlcmUgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiAvKgogICogaXNzdWUgYWxsIGJhbmtzIHByZWNoYXJnZQogICovCgltb3ZiICAgICQweDIsJWFsICAgICAgICAgICAgICAgICAvKiBBbGwgYmFua3MgcHJlY2hhcmdlICovCgltb3ZiICAgICAlYWwsICglZWRpKQoJbW92dyAgICAgJWF4LCAoJWVzaSkKCiAvKgogICogaXNzdWUgMiBhdXRvIHJlZnJlc2hlcyB0byBhbGwgYmFua3MKICAqLwoJbW92YiAgICAkMHg0LCVhbCAgICAgICAgICAgICAgICAgLyogQXV0byByZWZyZXNoIGNtZCAqLwoJbW92YiAgICAgJWFsLCAoJWVkaSkKCW1vdncgICAgJDIsJWN4CnJlZnJlc2gxOgoJbW92dyAgICAgJWF4LCAoJWVzaSkKCWxvb3AgICAgcmVmcmVzaDEKCiAvKgogICogaXNzdWUgTE9BRCBNT0RFIFJFR0lTVEVSIGNvbW1hbmQKICAqLwoJbW92YiAgICAkMHgzLCVhbCAgICAgICAgICAgICAgICAgLyogTG9hZCBtb2RlIHJlZ2lzdGVyIGNtZCAqLwoJbW92YiAgICAgJWFsLCAoJWVkaSkKCW1vdncgICAgICVheCwgKCVlc2kpCgogLyoKICAqIGlzc3VlIDggbW9yZSBhdXRvIHJlZnJlc2hlcyB0byBhbGwgYmFua3MKICAqLwoJbW92YiAgICAkMHg0LCVhbCAgICAgICAgICAgICAgICAgLyogQXV0byByZWZyZXNoIGNtZCAqLwoJbW92YiAgICAgJWFsLCAoJWVkaSkKCW1vdncgICAgJDgsJWN4CnJlZnJlc2gyOgoJbW92dyAgICAgJWF4LCAoJWVzaSkKCWxvb3AgICAgcmVmcmVzaDIKCiAvKgogICogc2V0IGNvbnRyb2wgcmVnaXN0ZXIgdG8gTk9STUFMIG1vZGUKICAqLwoJbW92YiAgICAkMHgwLCVhbCAgICAgICAgICAgICAgICAgLyogTm9ybWFsIG1vZGUgdmFsdWUgKi8KCW1vdmIgICAgICVhbCwgKCVlZGkpCgogLyoKICAqIHNpemUgZHJhbSBzdGFydGluZyB3aXRoIGV4dGVybmFsIGJhbmsgMyBtb3ZpbmcgdG8gZXh0ZXJuYWwgYmFuayAwCiAgKi8KCW1vdmwgICAgJDB4MywlZWN4ICAgICAgICAgICAgICAgIC8qIHN0YXJ0IHdpdGggZXh0ZXJuYWwgYmFuayAzICovCgpuZXh0YmFuazoKCiAvKgogICogd3JpdGUgY29sIDExIHdyYXAgYWRyCiAgKi8KCW1vdmwgICAgJENPTDExX0FEUiwgJWVzaSAgICAgICAgIC8qIHNldCBhZGRyZXNzIHRvIG1heCBjb2wgKDExKSB3cmFwIGFkZHIgKi8KCW1vdmwgICAgJENPTDExX0RBVEEsICVlYXggICAgICAgIC8qIHBhdHRlcm4gZm9yIG1heCBzdXBwb3J0ZWQgY29sdW1ucygxMSkgKi8KCW1vdmwgICAgJWVheCwgKCVlc2kpICAgICAgICAgICAgIC8qIHdyaXRlIG1heCBjb2wgcGF0dGVybiBhdCBtYXggY29sIGFkciAqLwoJbW92bCAgICAoJWVzaSksICVlYnggICAgICAgICAgICAgLyogb3B0aW9uYWwgcmVhZCAqLwoJY21wbCAgICAlZWJ4LCVlYXggICAgICAgICAgICAgICAgLyogdG8gdmVyaWZ5IHdyaXRlICovCglqbnogICAgIGJhZF9yYW0gICAgICAgICAgICAgICAgICAvKiB0aGlzIHJhbSBpcyBiYWQgKi8KIC8qCiAgKiB3cml0ZSBjb2wgMTAgd3JhcCBhZHIKICAqLwoKCW1vdmwgICAgJENPTDEwX0FEUiwgJWVzaSAgICAgICAgIC8qIHNldCBhZGRyZXNzIHRvIDEwIGNvbCB3cmFwIGFkZHJlc3MgKi8KCW1vdmwgICAgJENPTDEwX0RBVEEsICVlYXggICAgICAgIC8qIHBhdHRlcm4gZm9yIDEwIGNvbCB3cmFwICovCgltb3ZsICAgICVlYXgsICglZXNpKSAgICAgICAgICAgICAvKiB3cml0ZSAxMCBjb2wgcGF0dGVybiBAIDEwIGNvbCB3cmFwIGFkciAqLwoJbW92bCAgICAoJWVzaSksICVlYnggICAgICAgICAgICAgLyogb3B0aW9uYWwgcmVhZCAqLwoJY21wbCAgICAlZWJ4LCVlYXggICAgICAgICAgICAgICAgLyogdG8gdmVyaWZ5IHdyaXRlICovCglqbnogICAgIGJhZF9yYW0gICAgICAgICAgICAgICAgICAvKiB0aGlzIHJhbSBpcyBiYWQgKi8KIC8qCiAgKiB3cml0ZSBjb2wgOSB3cmFwIGFkcgogICovCgltb3ZsICAgICRDT0wwOV9BRFIsICVlc2kgICAgICAgICAvKiBzZXQgYWRkcmVzcyB0byA5IGNvbCB3cmFwIGFkZHJlc3MgKi8KCW1vdmwgICAgJENPTDA5X0RBVEEsICVlYXggICAgICAgIC8qIHBhdHRlcm4gZm9yIDkgY29sIHdyYXAgKi8KCW1vdmwgICAgJWVheCwgKCVlc2kpICAgICAgICAgICAgIC8qIHdyaXRlIDkgY29sIHBhdHRlcm4gQCA5IGNvbCB3cmFwIGFkciAqLwoJbW92bCAgICAoJWVzaSksICVlYnggICAgICAgICAgICAgLyogb3B0aW9uYWwgcmVhZCAqLwoJY21wbCAgICAlZWJ4LCVlYXggICAgICAgICAgICAgICAgLyogdG8gdmVyaWZ5IHdyaXRlICovCglqbnogICAgIGJhZF9yYW0gICAgICAgICAgICAgICAgICAvKiB0aGlzIHJhbSBpcyBiYWQgKi8KIC8qCiAgKiB3cml0ZSBjb2wgOCB3cmFwIGFkcgogICovCgltb3ZsICAgICRDT0wwOF9BRFIsICVlc2kgICAgICAgICAvKiBzZXQgYWRkcmVzcyB0byBtaW4oOCkgY29sIHdyYXAgYWRkcmVzcyAqLwoJbW92bCAgICAkQ09MMDhfREFUQSwgJWVheCAgICAgICAgLyogcGF0dGVybiBmb3IgbWluICg4KSBjb2wgd3JhcCAqLwoJbW92bCAgICAlZWF4LCAoJWVzaSkgICAgICAgICAgICAgLyogd3JpdGUgbWluIGNvbCBwYXR0ZXJuIEAgbWluIGNvbCBhZHIgKi8KCW1vdmwgICAgKCVlc2kpLCAlZWJ4ICAgICAgICAgICAgIC8qIG9wdGlvbmFsIHJlYWQgKi8KCWNtcGwgICAgJWVieCwlZWF4ICAgICAgICAgICAgICAgIC8qIHRvIHZlcmlmeSB3cml0ZSAqLwoJam56ICAgICBiYWRfcmFtICAgICAgICAgICAgICAgICAgLyogdGhpcyByYW0gaXMgYmFkICovCiAvKgogICogd3JpdGUgcm93IDE0IHdyYXAgYWRyCiAgKi8KCW1vdmwgICAgJFJPVzE0X0FEUiwgJWVzaSAgICAgICAgIC8qIHNldCBhZGRyZXNzIHRvIG1heCByb3cgKDE0KSB3cmFwIGFkZHIgKi8KCW1vdmwgICAgJFJPVzE0X0RBVEEsICVlYXggICAgICAgIC8qIHBhdHRlcm4gZm9yIG1heCBzdXBwb3J0ZWQgcm93cygxNCkgKi8KCW1vdmwgICAgJWVheCwgKCVlc2kpICAgICAgICAgICAgIC8qIHdyaXRlIG1heCByb3cgcGF0dGVybiBhdCBtYXggcm93IGFkciAqLwoJbW92bCAgICAoJWVzaSksICVlYnggICAgICAgICAgICAgLyogb3B0aW9uYWwgcmVhZCAqLwoJY21wbCAgICAlZWJ4LCVlYXggICAgICAgICAgICAgICAgLyogdG8gdmVyaWZ5IHdyaXRlICovCglqbnogICAgIGJhZF9yYW0gICAgICAgICAgICAgICAgICAvKiB0aGlzIHJhbSBpcyBiYWQgKi8KIC8qCiAgKiB3cml0ZSByb3cgMTMgd3JhcCBhZHIKICAqLwoJbW92bCAgICAkUk9XMTNfQURSLCAlZXNpICAgICAgICAgLyogc2V0IGFkZHJlc3MgdG8gMTMgcm93IHdyYXAgYWRkcmVzcyAqLwoJbW92bCAgICAkUk9XMTNfREFUQSwgJWVheCAgICAgICAgLyogcGF0dGVybiBmb3IgMTMgcm93IHdyYXAgKi8KCW1vdmwgICAgJWVheCwgKCVlc2kpICAgICAgICAgICAgIC8qIHdyaXRlIDEzIHJvdyBwYXR0ZXJuIEAgMTMgcm93IHdyYXAgYWRyICovCgltb3ZsICAgICglZXNpKSwgJWVieCAgICAgICAgICAgICAvKiBvcHRpb25hbCByZWFkICovCgljbXBsICAgICVlYngsJWVheCAgICAgICAgICAgICAgICAvKiB0byB2ZXJpZnkgd3JpdGUgKi8KCWpueiAgICAgYmFkX3JhbSAgICAgICAgICAgICAgICAgIC8qIHRoaXMgcmFtIGlzIGJhZCAqLwogLyoKICAqIHdyaXRlIHJvdyAxMiB3cmFwIGFkcgogICovCgltb3ZsICAgICRST1cxMl9BRFIsICVlc2kgICAgICAgICAvKiBzZXQgYWRkcmVzcyB0byAxMiByb3cgd3JhcCBhZGRyZXNzICovCgltb3ZsICAgICRST1cxMl9EQVRBLCAlZWF4ICAgICAgICAvKiBwYXR0ZXJuIGZvciAxMiByb3cgd3JhcCAqLwoJbW92bCAgICAlZWF4LCAoJWVzaSkgICAgICAgICAgICAgLyogd3JpdGUgMTIgcm93IHBhdHRlcm4gQCAxMiByb3cgd3JhcCBhZHIgKi8KCW1vdmwgICAgKCVlc2kpLCAlZWJ4ICAgICAgICAgICAgIC8qIG9wdGlvbmFsIHJlYWQgKi8KCWNtcGwgICAgJWVieCwlZWF4ICAgICAgICAgICAgICAgIC8qIHRvIHZlcmlmeSB3cml0ZSAqLwoJam56ICAgICBiYWRfcmFtICAgICAgICAgICAgICAgICAgLyogdGhpcyByYW0gaXMgYmFkICovCiAvKgogICogd3JpdGUgcm93IDExIHdyYXAgYWRyCiAgKi8KCW1vdmwgICAgJFJPVzExX0FEUiwgJWVkaSAgICAgICAgIC8qIHNldCBhZGRyZXNzIHRvIDExIHJvdyB3cmFwIGFkZHJlc3MgKi8KCW1vdmwgICAgJFJPVzExX0RBVEEsICVlYXggICAgICAgIC8qIHBhdHRlcm4gZm9yIDExIHJvdyB3cmFwICovCgltb3ZsICAgICVlYXgsICglZWRpKSAgICAgICAgICAgICAvKiB3cml0ZSAxMSByb3cgcGF0dGVybiBAIDExIHJvdyB3cmFwIGFkciAqLwoJbW92bCAgICAoJWVkaSksICVlYnggICAgICAgICAgICAgLyogb3B0aW9uYWwgcmVhZCAqLwoJY21wbCAgICAlZWJ4LCVlYXggICAgICAgICAgICAgICAgLyogdG8gdmVyaWZ5IHdyaXRlICovCglqbnogICAgIGJhZF9yYW0gICAgICAgICAgICAgICAgICAvKiB0aGlzIHJhbSBpcyBiYWQgKi8KIC8qCiAgKiB3cml0ZSByb3cgMTAgd3JhcCBhZHIgLS0tIHRoaXMgd3JpdGUgaXMgcmVhbGx5IHRvIGRldGVybWluZSBudW1iZXIgb2YgYmFua3MKICAqLwoJbW92bCAgICAkUk9XMTBfQURSLCAlZWRpICAgICAgICAgLyogc2V0IGFkZHJlc3MgdG8gMTAgcm93IHdyYXAgYWRkcmVzcyAqLwoJbW92bCAgICAkUk9XMTBfREFUQSwgJWVheCAgICAgICAgLyogcGF0dGVybiBmb3IgMTAgcm93IHdyYXAgKEFBKSAqLwoJbW92bCAgICAlZWF4LCAoJWVkaSkgICAgICAgICAgICAgLyogd3JpdGUgMTAgcm93IHBhdHRlcm4gQCAxMCByb3cgd3JhcCBhZHIgKi8KCW1vdmwgICAgKCVlZGkpLCAlZWJ4ICAgICAgICAgICAgIC8qIG9wdGlvbmFsIHJlYWQgKi8KCWNtcGwgICAgJWVieCwlZWF4ICAgICAgICAgICAgICAgIC8qIHRvIHZlcmlmeSB3cml0ZSAqLwoJam56ICAgICBiYWRfcmFtICAgICAgICAgICAgICAgICAgLyogdGhpcyByYW0gaXMgYmFkICovCiAvKgogICogcmVhZCBkYXRhIEAgcm93IDEyIHdyYXAgYWRyIHRvIGRldGVybWluZSAgKiBiYW5rcywKICAqIGFuZCByZWFkIGRhdGEgQCByb3cgMTQgd3JhcCBhZHIgdG8gZGV0ZXJtaW5lICAqIHJvd3MuCiAgKiBpZiBkYXRhIEAgcm93IDEyIHdyYXAgYWRyIGlzIG5vdCBBQSwgMTEgb3IgMTIgd2UgaGF2ZSBiYWQgUkFNLgogICogaWYgZGF0YSBAIHJvdyAxMiB3cmFwID09IEFBLCB3ZSBvbmx5IGhhdmUgMiBiYW5rcywgTk9UIDQKICAqIGlmIGRhdGEgQCByb3cgMTIgd3JhcCA9PSAxMSBvciAxMiwgd2UgaGF2ZSA0IGJhbmtzLAogICovCgl4b3J3ICAgICVkaSwlZGkgICAgICAgICAgICAgICAgICAvKiB2YWx1ZSBmb3IgMiBiYW5rcyBpbiBESSAqLwoJbW92bCAgICAoJWVzaSksICVlYnggICAgICAgICAgICAgLyogcmVhZCBmcm9tIDEyIHJvdyB3cmFwIHRvIGNoZWNrIGJhbmtzCgkJCQkJICAqIChlc2kgaXMgc2V0dXAgZnJvbSB0aGUgd3JpdGUgdG8gcm93IDEyIHdyYXApICovCgljbXBsICAgICVlYngsJWVheCAgICAgICAgICAgICAgICAvKiBjaGVjayBmb3IgQUEgcGF0dGVybiAgKGVheCBob2xkcyB0aGUgYWEgcGF0dGVybikgKi8KCWp6ICAgICAgb25seTIgICAgICAgICAgICAgICAgICAgIC8qIGlmIHBhdHRlcm4gPT0gQUEsIHdlIG9ubHkgaGF2ZSAyIGJhbmtzICovCgoJLyogNCBiYW5rcyAqLwoKCW1vdncgICAgJDgsJWRpICAgICAgICAgICAgICAgICAgIC8qIHZhbHVlIGZvciA0IGJhbmtzIGluIERJIChCTktfQ05UIGJpdCkgKi8KCWNtcGwgICAgJFJPVzExX0RBVEEsICVlYnggICAgICAgIC8qIG9ubHkgb3RoZXIgbGVnaXRpbWF0ZSB2YWx1ZXMgYXJlIDExICovCglqeiAgICAgIG9ubHkyCgljbXBsICAgICRST1cxMl9EQVRBLCAlZWJ4ICAgICAgICAvKiBhbmQgMTIgKi8KCWpueiAgICAgYmFkX3JhbSAgICAgICAgICAgICAgICAgIC8qIGl0cyBiYWQgaWYgbm90IDExIG9yIDEyISAqLwoKCS8qIGZhbGwgdGhyb3VnaCAqLwpvbmx5MjoKIC8qCiAgKiB2YWxpZGF0ZSByb3cgbWFzawogICovCgltb3ZsICAgICRST1cxNF9BRFIsICVlc2kgICAgICAgICAvKiBzZXQgYWRkcmVzcyBiYWNrIHRvIG1heCByb3cgd3JhcCBhZGRyICovCgltb3ZsICAgICglZXNpKSwgJWVheCAgICAgICAgICAgICAvKiByZWFkIGFjdHVhbCBudW1iZXIgb2Ygcm93cyBAIHJvdzE0IGFkciAqLwoKCWNtcGwgICAgJFJPVzExX0RBVEEsICVlYXggICAgICAgIC8qIHJvdyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxMSBwYXR0ZXJuICovCglqYiAgICAgIGJhZF9yYW0KCgljbXBsICAgICRST1cxNF9EQVRBLCAlZWF4ICAgICAgICAvKiBhbmQgcm93IG11c3QgYmUgbGVzcyB0aGFuIDE0IHBhdHRlcm4gKi8KCWphICAgICAgYmFkX3JhbQoKCWNtcGIgICAgJWFoLCVhbCAgICAgICAgICAgICAgICAgIC8qIHZlcmlmeSBhbGwgNCBieXRlcyBvZiBkd29yZCBzYW1lICovCglqbnogICAgIGJhZF9yYW0KCW1vdmwgICAgJWVheCwlZWJ4CglzaHJsICAgICQxNiwlZWJ4CgljbXB3ICAgICVieCwlYXgKCWpueiAgICAgYmFkX3JhbQogLyoKICAqIHJlYWQgY29sIDExIHdyYXAgYWRyIGZvciByZWFsIGNvbHVtbiBkYXRhIHZhbHVlCiAgKi8KCW1vdmwgICAgJENPTDExX0FEUiwgJWVzaSAgICAgICAgIC8qIHNldCBhZGRyZXNzIHRvIG1heCBjb2wgKDExKSB3cmFwIGFkZHIgKi8KCW1vdmwgICAgKCVlc2kpLCAlZWF4ICAgICAgICAgICAgIC8qIHJlYWQgcmVhbCBjb2wgbnVtYmVyIGF0IG1heCBjb2wgYWRyICovCiAvKgogICogdmFsaWRhdGUgY29sdW1uIGRhdGEKICAqLwoJY21wbCAgICAkQ09MMDhfREFUQSwgJWVheCAgICAgICAgLyogY29sIG11c3QgYmUgZ3JlYXRlciB0aGFuIDggcGF0dGVybiAqLwoJamIgICAgICBiYWRfcmFtCgoJY21wbCAgICAkQ09MMTFfREFUQSwgJWVheCAgICAgICAgLyogYW5kIHJvdyBtdXN0IGJlIGxlc3MgdGhhbiAxMSBwYXR0ZXJuICovCglqYSAgICAgIGJhZF9yYW0KCglzdWJsICAgICRDT0wwOF9EQVRBLCAlZWF4ICAgICAgICAvKiBub3JtYWxpemUgY29sdW1uIGRhdGEgdG8gemVybyAqLwoJamMgICAgICBiYWRfcmFtCgljbXBiICAgICVhaCwlYWwgICAgICAgICAgICAgICAgICAvKiB2ZXJpZnkgYWxsIDQgYnl0ZXMgb2YgZHdvcmQgZXF1YWwgKi8KCWpueiAgICAgYmFkX3JhbQoJbW92bCAgICAlZWF4LCVlZHgKCXNocmwgICAgJDE2LCVlZHgKCWNtcHcgICAgJWR4LCVheAoJam56ICAgICBiYWRfcmFtCiAvKgogICogbWVyZ2UgYmFuayBhbmQgY29sIGRhdGEgdG9nZXRoZXIKICAqLwoJYWRkdyAgICAlZGksJWR4ICAgICAgICAgICAgICAgICAgLyogbWVyZ2Ugb2YgYmFuayBhbmQgY29sIGluZm8gaW4gZGwgKi8KIC8qCiAgKiBmaXggZW5kaW5nIGFkZHIgbWFzayBiYXNlZCB1cG9uIGNvbCBpbmZvCiAgKi8KCW1vdmIgICAgJDMsJWFsCglzdWJiICAgICVkaCwlYWwgICAgICAgICAgICAgICAgICAvKiBkaCBjb250YWlucyB0aGUgb3ZlcmZsb3cgZnJvbSB0aGUgYmFuay9jb2wgbWVyZ2UgICovCgltb3ZiICAgICVibCwlZGggICAgICAgICAgICAgICAgICAvKiBibCBjb250YWlucyB0aGUgcm93IG1hc2sgKGFhLCAwNywgMGYsIDFmIG9yIDNmKSAqLwoJeGNoZ3cgICAlY3gsJWF4ICAgICAgICAgICAgICAgICAgLyogY3ggPSBheCA9IDMgb3IgMiBkZXBlbmRpbmcgb24gMiBvciA0IGJhbmsgZGV2aWNlICovCglzaHJiICAgICVjbCwlZGgJICAgICAgICAgICAgICAgICAvKiAgKi8KCWluY2IgICAgJWRoICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZGluZyBhZGRyIGlzIDEgZ3JlYXRlciB0aGFuIHJlYWwgZW5kICovCgl4Y2hndyAgICVjeCwlYXggICAgICAgICAgICAgICAgICAvKiBjeCBpcyBiYW5rIG51bWJlciBhZ2FpbiAqLwogLyoKICAqIGlzc3VlIGFsbCBiYW5rcyBwcmVjaGFyZ2UKICAqLwpiYWRfcmVpbnQ6Cgltb3ZsICAgICREUkNDVEwsICVlc2kgICAgICAgICAgICAvKiBzZXR1cCBEUkFNIGNvbnRyb2wgcmVnaXN0ZXIgd2l0aCAqLwoJbW92YiAgICAkMHgyLCVhbCAgICAgICAgICAgICAgICAgLyogQWxsIGJhbmtzIHByZWNoYXJnZSAqLwoJbW92YiAgICAgJWFsLCAoJWVzaSkKCW1vdmwgICAgJENBQ0hFTElORVNaLCAlZXNpICAgICAgIC8qIGFkZHJlc3MgdG8gaW5pdCByZWFkIGJ1ZmZlciAqLwoJbW92dyAgICAgJWF4LCAoJWVzaSkKCiAvKgogICogdXBkYXRlIEVORElORyBBRERSRVNTIFJFR0lTVEVSCiAgKi8KCW1vdmwgICAgJERSQ0JFTkRBRFIsICVlZGkgICAgICAgIC8qIERSQU0gZW5kaW5nIGFkZHJlc3MgcmVnaXN0ZXIgKi8KCW1vdmwgICAgJWVjeCwlZWJ4CglhZGRsCSVlYngsICVlZGkKCW1vdmIgICAgJWRoLCAoJWVkaSkKIC8qCiAgKiB1cGRhdGUgQ09ORklHIFJFR0lTVEVSCiAgKi8KCXhvcmIgICAgJWRoLCVkaAoJbW92dyAgICAkMHgwMGYsJWJ4Cgltb3Z3ICAgICVjeCwlYXgKCXNobHcgICAgJDIsJWF4Cgl4Y2hndyAgICVjeCwlYXgKCXNobHcgICAgJWNsLCVkeAoJc2hsdyAgICAlY2wsJWJ4Cglub3R3ICAgICVieAoJeGNoZ3cgICAlY3gsJWF4Cgltb3ZsICAgICREUkNDRkcsICVlZGkKCW1vdiAgICAgKCVlZGkpLCAlYXgKCWFuZHcgICAgJWJ4LCVheAoJb3J3ICAgICAlZHgsJWF4Cgltb3Z3ICAgICVheCwgKCVlZGkpCglqY3h6ICAgIGNsZWFudXAKCglkZWN3ICAgICVjeAoJbW92bCAgICAlZWN4LCVlYngKCW1vdmwgICAgJERSQ0JFTkRBRFIsICVlZGkgICAgICAgIC8qIERSQU0gZW5kaW5nIGFkZHJlc3MgcmVnaXN0ZXIgKi8KCW1vdmIgICAgJDB4ZmYsJWFsCglhZGRsCSVlYngsICVlZGkKCW1vdmIgICAgJWFsLCAoJWVkaSkKIC8qCiAgKiBzZXQgY29udHJvbCByZWdpc3RlciB0byBOT1JNQUwgbW9kZQogICovCgltb3ZsICAgICREUkNDVEwsICVlc2kgICAgICAgICAgICAvKiBzZXR1cCBEUkFNIGNvbnRyb2wgcmVnaXN0ZXIgd2l0aCAqLwoJbW92YiAgICAkMHgwLCVhbCAgICAgICAgICAgICAgICAgLyogTm9ybWFsIG1vZGUgdmFsdWUgKi8KCW1vdmIgICAgJWFsLCAoJWVzaSkKCW1vdmwgICAgJENBQ0hFTElORVNaLCAlZXNpICAgICAgIC8qIGFkZHJlc3MgdG8gaW5pdCByZWFkIGJ1ZmZlciAqLwoJbW92dyAgICAlYXgsICglZXNpKQoJam1wICAgICBuZXh0YmFuawoKY2xlYW51cDoKCW1vdmwgICAgJERSQ0JFTkRBRFIsICVlZGkgICAgICAgIC8qIERSQU0gZW5kaW5nIGFkZHJlc3MgcmVnaXN0ZXIgICovCgltb3Z3ICAgICQ0LCVjeAoJeG9ydyAgICAlYXgsJWF4CmNsZWFudXBscDoKCW1vdmIgICAoJWVkaSksICVhbAoJb3JiICAgICAlYWwsJWFsCglqeiAgICAgIGVtcHR5YmFuawoKCWFkZGIgICAgJWFoLCVhbAoJam5zICAgICBub3R0b29tdWNoCgoJbW92YiAgICAkMHg3ZiwlYWwKbm90dG9vbXVjaDoKCW1vdmIgICAgJWFsLCVhaAoJb3JiICAgICAkMHg4MCwlYWwKCW1vdmIgICAgJWFsLCAoJWVkaSkKZW1wdHliYW5rOgoJaW5jbCAgICAlZWRpCglsb29wICAgIGNsZWFudXBscAoKI2lmIGRlZmluZWQoQ0ZHX1NEUkFNX0NBU19MQVRFTkNZXzJUKSB8fCBkZWZpbmVkKENGR19TRFJBTV9DQVNfTEFURU5DWV8zVCkKCS8qIHNldCB0aGUgQ0FTIGxhdGVuY3kgbm93IHNpbmNlIGl0IGlzIGhhcmQgdG8gZG8KCSAqIHdoZW4gd2UgcnVuIGZyb20gdGhlIFJBTSAqLwoJbW92bCAgICAkRFJDVE1DVEwsICVlZGkgICAgICAgICAgLyogRFJBTSB0aW1pbmcgcmVnaXN0ZXIgKi8KCW1vdmIgICAgKCVlZGkpLCAlYWwKI2lmZGVmIENGR19TRFJBTV9DQVNfTEFURU5DWV8yVAoJYW5kYiAgICAkMHhlZiwgJWFsCiNlbmRpZgojaWZkZWYgQ0ZHX1NEUkFNX0NBU19MQVRFTkNZXzNUCglvcmIgICAgICQweDEwLCAlYWwKI2VuZGlmCgltb3ZiICAgICVhbCwgKCVlZGkpCiNlbmRpZgoJbW92bCAgICAkRFJDQ1RMLCAlZWRpICAgICAgICAgICAgLyogRFJBTSBDb250cm9sIHJlZ2lzdGVyICovCgltb3ZiICAgICQweDMsJWFsICAgICAgICAgICAgICAgICAvKiBMb2FkIG1vZGUgcmVnaXN0ZXIgY21kICovCgltb3ZiICAgICAlYWwsICglZWRpKQoJbW92dyAgICAgJWF4LCAoJWVzaSkKCgoJbW92bCAgICAkRFJDQ1RMLCAlZWRpICAgICAgICAgICAgLyogRFJBTSBDb250cm9sIHJlZ2lzdGVyICovCgltb3ZiICAgICQweDE4LCVhbCAgICAgICAgICAgICAgICAvKiAgRW5hYmxlIHJlZnJlc2ggYW5kIE5PUk1BTCBtb2RlICovCgltb3ZiICAgICVhbCwgKCVlZGkpCgoJam1wICAgICBkcmFtX2RvbmUKCmJhZF9yYW06Cgl4b3JsICAgICVlZHgsJWVkeAoJeG9ybCAgICAlZWRpLCVlZGkKCWptcCAgICAgYmFkX3JlaW50CgpkcmFtX2RvbmU6CgoJLyogcmVhZGJhY2sgRFJDQkVOREFEUiBhbmQgcmV0dXJuIHRoZSBudW1iZXIKCSAqIG9mIGF2YWlsYWJsZSByYW0gYnl0ZXMgaW4gJWVheCAqLwoKCW1vdmwgICAgJERSQ0JFTkRBRFIsICVlZGkgICAgICAgIC8qIERSQU0gZW5kaW5nIGFkZHJlc3MgcmVnaXN0ZXIgICovCgoJbW92bAkoJWVkaSksICVlYXgKCW1vdmwJJWVheCwgJWVjeAoJYW5kbAkkMHg4MDAwMDAwMCwgJWVjeAoJanoJYmFuazIKCWFuZGwJJDB4N2YwMDAwMDAsICVlYXgKCXNocmwJJDIsICVlYXgKCW1vdmwJJWVheCwgJWVieAoKYmFuazI6IAltb3ZsCSglZWRpKSwgJWVheAoJbW92bAklZWF4LCAlZWN4CglhbmRsCSQweDAwODAwMDAwLCAlZWN4CglqegliYW5rMQoJYW5kbAkkMHgwMDdmMDAwMCwgJWVheAoJc2hsbAkkNiwgJWVheAoJbW92bAklZWF4LCAlZWJ4CgpiYW5rMTogCW1vdmwJKCVlZGkpLCAlZWF4Cgltb3ZsCSVlYXgsICVlY3gKCWFuZGwJJDB4MDAwMDgwMDAsICVlY3gKCWp6CWJhbmswCglhbmRsCSQweDAwMDA3ZjAwLCAlZWF4CglzaGxsCSQxNCwgJWVheAoJbW92bAklZWF4LCAlZWJ4CgpiYW5rMDogCW1vdmwJKCVlZGkpLCAlZWF4Cgltb3ZsCSVlYXgsICVlY3gKCWFuZGwJJDB4MDAwMDAwODAsICVlY3gKCWp6CWRvbmUKCWFuZGwJJDB4MDAwMDAwN2YsICVlYXgKCXNobGwJJDIyLCAlZWF4Cgltb3ZsCSVlYXgsICVlYngKCmRvbmU6CW1vdmwJJWVieCwgJWVheAoKCWptcAkqJWVicAoKCiNlbmRpZiAvKiBDT05GSUdfU0M1MjAgKi8K