ZGlmZiAtLWdpdCBhL2JvYXJkL2lubm9rb20vTWFrZWZpbGUgYi9ib2FyZC9pbm5va29tL01ha2VmaWxlCmluZGV4IGFmYWUyMTcuLmJhMjQ4YzAgMTAwNjQ0Ci0tLSBhL2JvYXJkL2lubm9rb20vTWFrZWZpbGUKKysrIGIvYm9hcmQvaW5ub2tvbS9NYWtlZmlsZQpAQCAtMjYsMTcgKzI2LDE1IEBACiBMSUIJPSAkKG9iailsaWIkKEJPQVJEKS5hCiAKIENPQkpTCTo9IGlubm9rb20ubyBmbGFzaC5vCi1TT0JKUwk6PSBsb3dsZXZlbF9pbml0Lm8KIAotU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQorU1JDUwk6PSAkKENPQkpTOi5vPS5jKQogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCi1TT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykpCiAKLSQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpICQoU09CSlMpCi0JJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpICQoU09CSlMpCiskKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKQogCiBjbGVhbjoKLQlybSAtZiAkKFNPQkpTKSAkKE9CSlMpCisJcm0gLWYgJChPQkpTKQogCiBkaXN0Y2xlYW46CWNsZWFuCiAJcm0gLWYgJChMSUIpIGNvcmUgKi5iYWsgJChvYmopLmRlcGVuZApkaWZmIC0tZ2l0IGEvYm9hcmQvaW5ub2tvbS9jb25maWcubWsgYi9ib2FyZC9pbm5va29tL2NvbmZpZy5tawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU0NjU1NS4uMDAwMDAwMAotLS0gYS9ib2FyZC9pbm5va29tL2NvbmZpZy5taworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLSMKLSMgTGludXgtS2VybmVsIGlzIGV4cGVjdGVkIHRvIGJlIGF0IGMwMDAnODAwMCwgZW50cnkgYzAwMCc4MDAwCi0jCi0jIHdlIGxvYWQgb3Vyc2VsZiB0byBjMTcwJzAwMDAsIHRoZSB1cHBlciAxIE1CIG9mIHNlY29uZCBiYW5rCi0jCi0jIGRvd25sb2FkIGFyZWFzIGlzIGM4MDAnMDAwMAotIwotCi0jIFRoaXMgaXMgdGhlIGFkZHJlc3Mgd2hlcmUgVS1Cb290IGxpdmVzIGluIGZsYXNoOgotI0NPTkZJR19TWVNfVEVYVF9CQVNFID0gMAotCi0jIEZJWE1FOiBhcm1ib290IGRvZXMgb25seSB3b3JrIGNvcnJlY3RseSB3aGVuIGJlaW5nIGNvbXBpbGVkCi0jIGZvciB0aGUgYWRkcmVzc2VzIF9hZnRlcl8gcmVsb2NhdGlvbiB0byBSQU0hISBPdGhlcndoaXNlIHRoZQotIyAuYnNzIHNlZ21lbnQgaXMgYXNzdW1lZCBpbiBmbGFzaC4uLgotQ09ORklHX1NZU19URVhUX0JBU0UgPSAweGExZmUwMDAwCmRpZmYgLS1naXQgYS9ib2FyZC9pbm5va29tL2lubm9rb20uYyBiL2JvYXJkL2lubm9rb20vaW5ub2tvbS5jCmluZGV4IDJjNTExMjUuLmU2NThjMzUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2lubm9rb20vaW5ub2tvbS5jCisrKyBiL2JvYXJkL2lubm9rb20vaW5ub2tvbS5jCkBAIC0xMDAsOCArMTAwLDkgQEAKIAogaW50IGJvYXJkX2luaXQgKHZvaWQpCiB7Ci0JLyogbWVtb3J5IGFuZCBjcHUtc3BlZWQgYXJlIHNldHVwIGJlZm9yZSByZWxvY2F0aW9uICovCi0JLyogc28gd2UgZG8gX25vdGhpbmdfIGhlcmUgKi8KKwkvKiBXZSBoYXZlIFJBTSwgZGlzYWJsZSBjYWNoZSAqLworCWRjYWNoZV9kaXNhYmxlKCk7CisJaWNhY2hlX2Rpc2FibGUoKTsKIAogCWdkLT5iZC0+YmlfYXJjaF9udW1iZXIgPSBNQUNIX1RZUEVfSU5OT0tPTTsKIAlnZC0+YmQtPmJpX2Jvb3RfcGFyYW1zID0gMHhhMDAwMDEwMDsKQEAgLTExMCwyMSArMTExLDE5IEBACiAJcmV0dXJuIDA7CiB9CiAKLQotLyoqCi0gKiBkcmFtX2luaXQ6IC0gc2V0dXAgZHluYW1pYyBSQU0KLSAqCi0gKiBAcmV0dXJuOiAwIGluIGNhc2Ugb2Ygc3VjY2VzcwotICovCi0KLWludCBkcmFtX2luaXQgKHZvaWQpCitleHRlcm4gdm9pZCBweGFfZHJhbV9pbml0KHZvaWQpOworaW50IGRyYW1faW5pdCh2b2lkKQogewotCWdkLT5iZC0+YmlfZHJhbVswXS5zdGFydCA9IFBIWVNfU0RSQU1fMTsKLQlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOwotCisJcHhhX2RyYW1faW5pdCgpOworCWdkLT5yYW1fc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOwogCXJldHVybiAwOwogfQogCit2b2lkIGRyYW1faW5pdF9iYW5rc2l6ZSh2b2lkKQoreworCWdkLT5iZC0+YmlfZHJhbVswXS5zdGFydCA9IFBIWVNfU0RSQU1fMTsKKwlnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSA9IFBIWVNfU0RSQU1fMV9TSVpFOworfQogCiAvKioKICAqIGlubm9rb21fc2V0X2xlZDogLSBzd2l0Y2ggTEVEcyBvbiBvciBvZmYKZGlmZiAtLWdpdCBhL2JvYXJkL2lubm9rb20vbG93bGV2ZWxfaW5pdC5TIGIvYm9hcmQvaW5ub2tvbS9sb3dsZXZlbF9pbml0LlMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1MTY5YmUuLjAwMDAwMDAKLS0tIGEvYm9hcmQvaW5ub2tvbS9sb3dsZXZlbF9pbml0LlMKKysrIC9kZXYvbnVsbApAQCAtMSw0MzcgKzAsMCBAQAotLyoKLSAqIE1vc3Qgb2YgdGhpcyB0YWtlbiBmcm9tIFJlZGJvb3QgaGFsX3BsYXRmb3JtX3NldHVwLmggd2l0aCBjbGVhbnVwCi0gKgotICogTk9URTogSSBoYXZlbid0IGNsZWFuIHRoaXMgdXAgY29uc2lkZXJhYmx5LCBqdXN0IGVub3VnaCB0byBnZXQgaXQKLSAqIHJ1bm5pbmcuIFNlZSBoYWxfcGxhdGZvcm1fc2V0dXAuaCBmb3IgdGhlIHNvdXJjZS4gU2VlCi0gKiBib2FyZC9jcmFkbGUvbG93bGV2ZWxfaW5pdC5TIGZvciBhbm90aGVyIFBYQTI1MCBzZXR1cCB0aGF0IGlzCi0gKiBtdWNoIGNsZWFuZXIuCi0gKgotICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKLSAqIHByb2plY3QuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0gKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKLSAqIE1BIDAyMTExLTEzMDcgVVNBCi0gKi8KLQotI2luY2x1ZGUgPGNvbmZpZy5oPgotI2luY2x1ZGUgPHZlcnNpb24uaD4KLSNpbmNsdWRlIDxhc20vYXJjaC9weGEtcmVncy5oPgotCi1EUkFNX1NJWkU6ICAubG9uZyAgIENPTkZJR19TWVNfRFJBTV9TSVpFCi0KLS8qIHdhaXQgZm9yIGNvcHJvY2Vzc29yIHdyaXRlIGNvbXBsZXRlICovCi0gICAubWFjcm8gQ1BXQUlUIHJlZwotICAgbXJjICBwMTUsMCxccmVnLGMyLGMwLDAKLSAgIG1vdiAgXHJlZyxccmVnCi0gICBzdWIgIHBjLHBjLCM0Ci0gICAuZW5kbQotCi1fVEVYVF9CQVNFOgotCS53b3JkCUNPTkZJR19TWVNfVEVYVF9CQVNFCi0KLQotLyoKLSAqCU1lbW9yeSBzZXR1cAotICovCi0KLS5nbG9ibCBsb3dsZXZlbF9pbml0Ci1sb3dsZXZlbF9pbml0OgotCi0gICAgbW92ICAgICAgcjEwLCBscgotCi0JLyogU2V0IHVwIEdQSU8gcGlucyBmaXJzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JbGRyCQlyMCwJPUdQU1IwCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BTUjBfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BTUjEKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUFNSMV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUFNSMgotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQU1IyX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQQ1IwCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BDUjBfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BDUjEKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUENSMV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUENSMgotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQQ1IyX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdQRFIwCi0JbGRyCQlyMSwJPUNPTkZJR19TWVNfR1BEUjBfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLQlsZHIJCXIwLAk9R1BEUjEKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HUERSMV9WQUwKLQlzdHIJCXIxLCAgIFtyMF0KLQotCWxkcgkJcjAsCT1HUERSMgotCWxkcgkJcjEsCT1DT05GSUdfU1lTX0dQRFIyX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIwX0wKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMF9MX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIwX1UKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMF9VX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIxX0wKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMV9MX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIxX1UKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMV9VX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIyX0wKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMl9MX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCQlyMCwJPUdBRlIyX1UKLQlsZHIJCXIxLAk9Q09ORklHX1NZU19HQUZSMl9VX1ZBTAotCXN0cgkJcjEsICAgW3IwXQotCi0JbGRyCXIwLAk9UFNTUgkJLyogZW5hYmxlIEdQSU8gcGlucyAqLwotCWxkcgkJcjEsCT1DT05GSUdfU1lTX1BTU1JfVkFMCi0Jc3RyCQlyMSwgICBbcjBdCi0KLS8qCWxkcglyMywJPU1TQzEJCS8gIGxvdyAtIGJhbmsgMiBMdWJib2NrIFJlZ2lzdGVycyAvIFNSQU0gKi8KLS8qCWxkcglyMiwJPUNPTkZJR19TWVNfTVNDMV9WQUwJLyAgaGlnaCAtIGJhbmsgMyBFdGhlcm5ldCBDb250cm9sbGVyICovCi0vKglzdHIJcjIsCVtyM10JCS8gIG5lZWQgdG8gc2V0IE1TQzEgYmVmb3JlIHRyeWluZyB0byB3cml0ZSB0byB0aGUgSEVYIExFRHMgKi8KLS8qCWxkcglyMiwJW3IzXQkJLyAgbmVlZCB0byByZWFkIGl0IGJhY2sgdG8gbWFrZSBzdXJlIHRoZSB2YWx1ZSBsYXRjaGVzIChzZWUgTVNDIHNlY3Rpb24gb2YgbWFudWFsKSAqLwotLyogKi8KLS8qCWxkcglyMSwJPUxFRF9CTEFOSyAqLwotLyoJbW92CXIwLAkjMHhGRiAqLwotLyoJc3RyCXIwLAlbcjFdCQkvICB0dXJuIG9uIGhleCBsZWRzICovCi0vKiAqLwotLypsb29wOiAqLwotLyogKi8KLS8qICAgbGRyCXIwLCA9MHhCMDA3MDAwMSAqLwotLyogICBsZHIJcjEsID1fTEVEICovCi0vKiAgIHN0cglyMCwgW3IxXQkJLyAgaGV4IGRpc3BsYXkgKi8KLQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIEVuYWJsZSBtZW1vcnkgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogVGhlIHNlcXVlbmNlIGJlbG93IGlzIGJhc2VkIG9uIHRoZSByZWNvbW1lbmRlZCBpbml0IHN0ZXBzICAgICAgICAqLwotCS8qIGRldGFpbGVkIGluIHRoZSBJbnRlbCBQWEEyNTAgT3BlcmF0aW5nIFN5c3RlbXMgRGV2ZWxvcGVycyBHdWlkZSwgKi8KLQkvKiBDaGFwdGVyIDEwLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMTogV2FpdCBmb3IgYXQgbGVhc3QgMjAwIG1pY3Jvc2Vkb25kcyB0byBhbGxvdyBpbnRlcm5hbCAgICAgKi8KLQkvKiAgICAgICAgIGNsb2NrcyB0byBzZXR0bGUuIE9ubHkgbmVjZXNzYXJ5IGFmdGVyIGhhcmQgcmVzZXQuLi4gICAgICovCi0JLyogICAgICAgICBGSVhNRTogY2FuIGJlIG9wdGltaXplZCBsYXRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCWxkciByMywgPU9TQ1IJCQkvKiByZXNldCB0aGUgT1MgVGltZXIgQ291bnQgdG8gemVybyAqLwotCW1vdiByMiwgIzAKLQlzdHIgcjIsIFtyM10KLQlsZHIgcjQsID0weDMwMAkJCS8qIHJlYWxseSAweDJFMSBpcyBhYm91dCAyMDB1c2VjLCAgICovCi0JCQkJCS8qIHNvIDB4MzAwIHNob3VsZCBiZSBwbGVudHkgICAgICAgICovCi0xOgotCWxkciByMiwgW3IzXQotCWNtcCByNCwgcjIKLQliZ3QgMWIKLQotbWVtX2luaXQ6Ci0KLQlsZHIgICAgIHIxLCAgPU1FTUNfQkFTRQkJLyogZ2V0IG1lbW9yeSBjb250cm9sbGVyIGJhc2UgYWRkci4gKi8KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDJhOiBJbml0aWFsaXplIEFzeW5jaHJvbm91cyBzdGF0aWMgbWVtb3J5IGNvbnRyb2xsZXIgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogTVNDIHJlZ2lzdGVyczogdGltaW5nLCBidXMgd2lkdGgsIG1lbSB0eXBlICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JLyogTVNDMDogbkNTKDAsMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICAgPUNPTkZJR19TWVNfTVNDMF9WQUwKLQlzdHIgICAgIHIyLCAgIFtyMSwgI01TQzBfT0ZGU0VUXQotCWxkciAgICAgcjIsICAgW3IxLCAjTVNDMF9PRkZTRVRdCS8qIHJlYWQgYmFjayB0byBlbnN1cmUgICAgICAqLwotCQkJCQkJLyogdGhhdCBkYXRhIGxhdGNoZXMgICAgICAgICovCi0JLyogTVNDMTogbkNTKDIsMykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NU0MxX1ZBTAotCXN0ciAgICAgcjIsICBbcjEsICNNU0MxX09GRlNFVF0KLQlsZHIgICAgIHIyLCAgW3IxLCAjTVNDMV9PRkZTRVRdCi0KLQkvKiBNU0MyOiBuQ1MoNCw1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMiwgID1DT05GSUdfU1lTX01TQzJfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01TQzJfT0ZGU0VUXQotCWxkciAgICAgcjIsICBbcjEsICNNU0MyX09GRlNFVF0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBTdGVwIDJiOiBJbml0aWFsaXplIENhcmQgSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogTUVDUjogTWVtb3J5IEV4cGFuc2lvbiBDYXJkIFJlZ2lzdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NRUNSX1ZBTAotCXN0ciAgICAgcjIsICBbcjEsICNNRUNSX09GRlNFVF0KLQlsZHIJcjIsCVtyMSwgI01FQ1JfT0ZGU0VUXQotCi0JLyogTUNNRU0wOiBDYXJkIEludGVyZmFjZSBzbG90IDAgdGltaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ01FTTBfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01DTUVNMF9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ01FTTBfT0ZGU0VUXQotCi0JLyogTUNNRU0xOiBDYXJkIEludGVyZmFjZSBzbG90IDEgdGltaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ01FTTFfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01DTUVNMV9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ01FTTFfT0ZGU0VUXQotCi0JLyogTUNBVFQwOiBDYXJkIEludGVyZmFjZSBBdHRyaWJ1dGUgU3BhY2UgVGltaW5nLCBzbG90IDAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ0FUVDBfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01DQVRUMF9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ0FUVDBfT0ZGU0VUXQotCi0JLyogTUNBVFQxOiBDYXJkIEludGVyZmFjZSBBdHRyaWJ1dGUgU3BhY2UgVGltaW5nLCBzbG90IDEgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ0FUVDFfVkFMCi0Jc3RyICAgICByMiwgIFtyMSwgI01DQVRUMV9PRkZTRVRdCi0JbGRyCXIyLAlbcjEsICNNQ0FUVDFfT0ZGU0VUXQotCi0JLyogTUNJTzA6IENhcmQgSW50ZXJmYWNlIEkvTyBTcGFjZSBUaW1pbmcsIHNsb3QgMCAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ0lPMF9WQUwKLQlzdHIgICAgIHIyLCAgW3IxLCAjTUNJTzBfT0ZGU0VUXQotCWxkcglyMiwJW3IxLCAjTUNJTzBfT0ZGU0VUXQotCi0JLyogTUNJTzE6IENhcmQgSW50ZXJmYWNlIEkvTyBTcGFjZSBUaW1pbmcsIHNsb3QgMSAgICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NQ0lPMV9WQUwKLQlzdHIgICAgIHIyLCAgW3IxLCAjTUNJTzFfT0ZGU0VUXQotCWxkcglyMiwJW3IxLCAjTUNJTzFfT0ZGU0VUXQotCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCS8qIFN0ZXAgMmM6IFdyaXRlIEZMWUNORkcgIEZJWE1FOiB3aGF0J3MgdGhhdD8/PyAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLQkvKiB0ZXN0IGlmIHdlIHJ1biBmcm9tIGZsYXNoIG9yIFJBTSAtIFJBTS9CREk6IGRvbid0IHNldHVwIFJBTSAgICAgICovCi0JYWRyCXIzLCBtZW1faW5pdAkJLyogcjAgPC0gY3VycmVudCBwb3NpdGlvbiBvZiBjb2RlICAgKi8KLQlsZHIJcjIsID1tZW1faW5pdAotCWNtcAlyMywgcjIJCQkvKiBza2lwIGluaXQgaWYgaW4gcGxhY2UgICAgICAgICAgICAqLwotCWJlcQlpbml0aXJxcwotCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAyZDogSW5pdGlhbGl6ZSBUaW1pbmcgZm9yIFN5bmMgTWVtb3J5IChTRENMSzApICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIEJlZm9yZSBhY2Nlc3NpbmcgTURSRUZSIHdlIG5lZWQgYSB2YWxpZCBEUkkgZmllbGQsIHNvIHdlIHNldCAgICAgKi8KLQkvKiB0aGlzIHRvIHBvd2VyIG9uIGRlZmF1bHRzICsgRFJJIGZpZWxkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQlsZHIJcjMsCT1DT05GSUdfU1lTX01EUkVGUl9WQUwKLQlsZHIJcjIsCT0weEZGRgotCWFuZAlyMywJcjMsIHIyCi0JbGRyCXI0LAk9MHgwM2NhNDAwMAotCW9ycglyNCwJcjQsICByMwotCi0Jc3RyCXI0LAlbcjEsICNNRFJFRlJfT0ZGU0VUXQkvKiB3cml0ZSBiYWNrIE1EUkVGUiAgICAgICAgKi8KLQlsZHIgICAgIHI0LAlbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCAzOiBJbml0aWFsaXplIFN5bmNocm9ub3VzIFN0YXRpYyBNZW1vcnkgKEZsYXNoL1BlcmlwaGVyYWxzKSAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIEluaXRpYWxpemUgU1hDTkZHIHJlZ2lzdGVyLiBBc3NlcnQgdGhlIGVuYWJsZSBiaXRzICAgICAgICAgICAgICAgKi8KLQotCS8qIFdyaXRlIFNYTVJTIHRvIGNhdXNlIGFuIE1SUyBjb21tYW5kIHRvIGFsbCBlbmFibGVkIGJhbmtzIG9mICAgICAgKi8KLQkvKiBzeW5jaHJvbm91cyBzdGF0aWMgbWVtb3J5LiBOb3RlIHRoYXQgU1hMQ1IgbmVlZCBub3QgYmUgd3JpdHRlbiAgICovCi0JLyogYXQgdGhpcyB0aW1lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JLyogRklYTUU6IHdlIHVzZSBhc3luYyBtb2RlIGZvciBub3cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogU3RlcCA0OiBJbml0aWFsaXplIFNEUkFNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCS8qIFN0ZXAgNGE6IGFzc2VydCBNRFJFRlI6Sz9SVU4gYW5kIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgKi8KLQkvKiAgICAgICAgICBNRFJFRlI6SzFEQjIgYW5kIE1EUkVGUjpLMkRCMiBhcyBkZXNpcmVkLiAgICAgICAgICAgICAgICovCi0KLQlsZHIJcjQsCT1DT05GSUdfU1lTX01EUkVGUl9WQUwKLQlzdHIJcjQsCVtyMSwgI01EUkVGUl9PRkZTRVRdCS8qIHdyaXRlIGJhY2sgTURSRUZSICAgICAgICAqLwotCWxkcglyNCwJW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCS8qIFN0ZXAgNGI6IGRlLWFzc2VydCBNRFJFRlI6U0xGUlNILiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCWJpYwlyNCwJcjQsICMoTURSRUZSX1NMRlJTSCkKLQotCXN0ciAgICAgcjQsICAgICBbcjEsICNNRFJFRlJfT0ZGU0VUXSAgICAvKiB3cml0ZSBiYWNrIE1EUkVGUiAgICAgICAgKi8KLQlsZHIgICAgIHI0LCAgICAgW3IxLCAjTURSRUZSX09GRlNFVF0KLQotCi0JLyogU3RlcCA0YzogYXNzZXJ0IE1EUkVGUjpFMVBJTiBhbmQgRTBQSU8gICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0Jb3JyCXI0LAlyNCwJIyhNRFJFRlJfRTFQSU58TURSRUZSX0UwUElOKQotCi0Jc3RyICAgICByNCwgICAgIFtyMSwgI01EUkVGUl9PRkZTRVRdICAgIC8qIHdyaXRlIGJhY2sgTURSRUZSICAgICAgICAqLwotCWxkciAgICAgcjQsICAgICBbcjEsICNNRFJFRlJfT0ZGU0VUXQotCi0KLQkvKiBTdGVwIDRkOiB3cml0ZSBNRENORkcgd2l0aCBNRENORkc6REV4IGRlYXNzZXJ0ZWQgKHNldCB0byAwKSwgdG8gICovCi0JLyogICAgICAgICAgY29uZmlndXJlIGJ1dCBub3QgZW5hYmxlIGVhY2ggU0RSQU0gcGFydGl0aW9uIHBhaXIuICAgICAqLwotCi0JbGRyCXI0LAk9Q09ORklHX1NZU19NRENORkdfVkFMCi0JYmljCXI0LAlyNCwJIyhNRENORkdfREUwfE1EQ05GR19ERTEpCi0KLQlzdHIgICAgIHI0LCAgICAgW3IxLCAjTURDTkZHX09GRlNFVF0JLyogd3JpdGUgYmFjayBNRENORkcgICAgICAgICovCi0JbGRyICAgICByNCwgICAgIFtyMSwgI01EQ05GR19PRkZTRVRdCi0KLQotCS8qIFN0ZXAgNGU6IFdhaXQgZm9yIHRoZSBjbG9jayB0byB0aGUgU0RSQU1zIHRvIHN0YWJpbGl6ZSwgICAgICAgICAgKi8KLQkvKiAgICAgICAgICAxMDAuLjIwMCC1c2VjLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQlsZHIgcjMsID1PU0NSCQkJLyogcmVzZXQgdGhlIE9TIFRpbWVyIENvdW50IHRvIHplcm8gKi8KLQltb3YgcjIsICMwCi0Jc3RyIHIyLCBbcjNdCi0JbGRyIHI0LCA9MHgzMDAJCQkvKiByZWFsbHkgMHgyRTEgaXMgYWJvdXQgMjAwdXNlYywgICAqLwotCQkJCQkvKiBzbyAweDMwMCBzaG91bGQgYmUgcGxlbnR5ICAgICAgICAqLwotMToKLQlsZHIgcjIsIFtyM10KLQljbXAgcjQsIHIyCi0JYmd0IDFiCi0KLQotCS8qIFN0ZXAgNGY6IFRyaWdnZXIgYSBudW1iZXIgKHVzdWFsbHkgOCkgcmVmcmVzaCBjeWNsZXMgYnkgICAgICAgICAgKi8KLQkvKiAgICAgICAgICBhdHRlbXB0aW5nIG5vbi1idXJzdCByZWFkIG9yIHdyaXRlIGFjY2Vzc2VzIHRvIGRpc2FibGVkICovCi0JLyogICAgICAgICAgU0RSQU0sIGFzIGNvbW1vbmx5IHNwZWNpZmllZCBpbiB0aGUgcG93ZXIgdXAgc2VxdWVuY2UgICAqLwotCS8qICAgICAgICAgIGRvY3VtZW50ZWQgaW4gU0RSQU0gZGF0YSBzaGVldHMuIFRoZSBhZGRyZXNzKGVzKSB1c2VkICAgKi8KLQkvKiAgICAgICAgICBmb3IgdGhpcyBwdXJwb3NlIG11c3Qgbm90IGJlIGNhY2hlYWJsZS4gICAgICAgICAgICAgICAgICovCi0KLQkvKiAgICAgICAgICBUaGVyZSBzaG91bGQgOSB3cml0ZXMsIHNpbmNlIHRoZSBmaXJzdCB3cml0ZSBkb2Vzbid0ICAgICovCi0JLyogICAgICAgICAgdHJpZ2dlciBhIHJlZnJlc2ggY3ljbGUgb24gUFhBMjUwLiBTZWUgSW50ZWwgUFhBMjUwIGFuZCAqLwotCS8qICAgICAgICAgIFBYQTIxMCBQcm9jZXNzb3JzIFNwZWNpZmljYXRpb24gVXBkYXRlLCAgICAgICAgICAgICAgICAgKi8KLQkvKiAgICAgICAgICBKYW4gMjAwMywgRXJyYXRhICMxMTYsIHBhZ2UgMzAuICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQotCWxkcglyMywJPUNPTkZJR19TWVNfRFJBTV9CQVNFCi0Jc3RyCXIyLCBbcjNdCi0Jc3RyCXIyLCBbcjNdCi0Jc3RyCXIyLCBbcjNdCi0Jc3RyCXIyLCBbcjNdCi0Jc3RyCXIyLCBbcjNdCi0Jc3RyCXIyLCBbcjNdCi0Jc3RyCXIyLCBbcjNdCi0Jc3RyCXIyLCBbcjNdCi0Jc3RyCXIyLCBbcjNdCi0KLQkvKiBTdGVwIDRnOiBXcml0ZSBNRENORkcgd2l0aCBlbmFibGUgYml0cyBhc3NlcnRlZCAgICAgICAgICAgICAgICAgICovCi0JLyogICAgICAgICAgKE1EQ05GRzpERXggc2V0IHRvIDEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCi0JbGRyCXIzLCBbcjEsICNNRENORkdfT0ZGU0VUXQotCW9ycglyMywJcjMsCSMoTURDTkZHX0RFMHxNRENORkdfREUxKQotCXN0cglyMywgW3IxLCAjTURDTkZHX09GRlNFVF0KLQotCS8qIFN0ZXAgNGg6IFdyaXRlIE1ETVJTLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQotCWxkciAgICAgcjIsICA9Q09ORklHX1NZU19NRE1SU19WQUwKLQlzdHIgICAgIHIyLCAgW3IxLCAjTURNUlNfT0ZGU0VUXQotCi0KLQkvKiBXZSBhcmUgZmluaXNoZWQgd2l0aCBJbnRlbCdzIG1lbW9yeSBjb250cm9sbGVyIGluaXRpYWxpc2F0aW9uICAgICovCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogRGlzYWJsZSAobWFzaykgYWxsIGludGVycnVwdHMgYXQgaW50ZXJydXB0IGNvbnRyb2xsZXIgICAgICAgICAgICAqLwotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotaW5pdGlycXM6Ci0KLQltb3YgICAgIHIxLCAjMAkJLyogY2xlYXIgaW50LiBsZXZlbCByZWdpc3RlciAoSVJRLCBub3QgRklRKSAqLwotCWxkciAgICAgcjIsICA9SUNMUgotCXN0ciAgICAgcjEsICBbcjJdCi0KLQlsZHIgICAgIHIyLCAgPUlDTVIJLyogbWFzayBhbGwgaW50ZXJydXB0cyBhdCB0aGUgY29udHJvbGxlciAgICAqLwotCXN0ciAgICAgcjEsICBbcjJdCi0KLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiBDbG9jayBpbml0aWFsaXNhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1pbml0Y2xrczoKLQotCS8qIERpc2FibGUgdGhlIHBlcmlwaGVyYWwgY2xvY2tzLCBhbmQgc2V0IHRoZSBjb3JlIGNsb2NrIGZyZXF1ZW5jeSAgKi8KLQkvKiAoaGFyZC1jb2RpbmcgYXQgMzk4LjEyTUh6IGZvciBub3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLQkvKiBUdXJuIE9mZiBBTEwgb24tY2hpcCBwZXJpcGhlcmFsIGNsb2NrcyBmb3IgcmUtY29uZmlndXJhdGlvbiAgICAgICovCi0JLyogTm90ZTogU2VlIGxhYmVsICdFTkFCTEVDTEtTJyBmb3IgdGhlIHJlLWVuYWJsaW5nICAgICAgICAgICAgICAgICAqLwotCWxkciAgICAgcjEsICA9Q0tFTgotCW1vdiAgICAgcjIsICAjMAotCXN0ciAgICAgcjIsICBbcjFdCi0KLQotCS8qIGRlZmF1bHQgdmFsdWUgaW4gY2FzZSBubyB2YWxpZCByb3Rhcnkgc3dpdGNoIHNldHRpbmcgaXMgZm91bmQgICAgKi8KLQlsZHIgICAgIHIyLCA9KENDQ1JfTDI3fENDQ1JfTTJ8Q0NDUl9OMTApICAvKiBERUZBVUxUOiB7MjAwLzIwMC8xMDB9ICovCi0KLQkvKiAuLi4gYW5kIHdyaXRlIHRoZSBjb3JlIGNsb2NrIGNvbmZpZyByZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICovCi0JbGRyICAgICByMSwgID1DQ0NSCi0Jc3RyICAgICByMiwgIFtyMV0KLQotCS8qIGVuYWJsZSB0aGUgMzJLaHogb3NjaWxsYXRvciBmb3IgUlRDIGFuZCBQb3dlck1hbmFnZXIgICAgICAgICAgICAgKi8KLS8qCi0JbGRyICAgICByMSwgID1PU0NDCi0JbW92ICAgICByMiwgICNPU0NDX09PTgotCXN0ciAgICAgcjIsICBbcjFdCi0qLwotCS8qIE5PVEU6ICBzcGluIGhlcmUgdW50aWwgT1NDQy5PT0sgZ2V0IHNldCwgbWVhbmluZyB0aGUgUExMICAgICAgICAgKi8KLQkvKiBoYXMgc2V0dGxlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi02MDoKLQlsZHIgICAgIHIyLCBbcjFdCi0JYW5kcyAgICByMiwgcjIsICMxCi0JYmVxICAgICA2MGIKLQotCS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQkvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0JLyogU2F2ZSBTRFJBTSBzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkcglyMSwgPURSQU1fU0laRQotCXN0cglyOCwgW3IxXQotCi0JLyogSW50ZXJydXB0IGluaXQ6IE1hc2sgYWxsIGludGVycnVwdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotCWxkcglyMCwgPUlDTVIJCQkvKiBlbmFibGUgbm8gc291cmNlcyAgICAgICAgKi8KLQltb3YJcjEsICMwCi0Jc3RyCXIxLCBbcjBdCi0KLQkvKiBGSVhNRSAqLwotCi0jaWZuZGVmIERFQlVHCi0JLypEaXNhYmxlIHNvZnR3YXJlIGFuZCBkYXRhIGJyZWFrcG9pbnRzICovCi0JbW92CXIwLCMwCi0JbWNyCXAxNSwwLHIwLGMxNCxjOCwwICAvKiBpYmNyMCAqLwotCW1jcglwMTUsMCxyMCxjMTQsYzksMCAgLyogaWJjcjEgKi8KLQltY3IJcDE1LDAscjAsYzE0LGM0LDAgIC8qIGRiY29uICovCi0KLQkvKkVuYWJsZSBhbGwgZGVidWcgZnVuY3Rpb25hbGl0eSAqLwotCW1vdglyMCwjMHg4MDAwMDAwMAotCW1jcglwMTQsMCxyMCxjMTAsYzAsMCAgLyogZGNzciAqLwotI2VuZGlmCi0KLQkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0JLyogRW5kIGxvd2xldmVsX2luaXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0JLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1lbmRsb3dsZXZlbF9pbml0OgotCi0gICAgbW92ICAgICBwYywgbHIK