ZGlmZiAtLWdpdCBhL2FwaS9HTC9nbGNvcmVhcmIuaCBiL2FwaS9HTC9nbGNvcmVhcmIuaAppbmRleCBjZjZmY2E4Li44OGRjODI1IDEwMDc1NQotLS0gYS9hcGkvR0wvZ2xjb3JlYXJiLmgKKysrIGIvYXBpL0dML2dsY29yZWFyYi5oCkBAIC0zOTAwLDYgKzM5MDAsMjIgQEAKICNkZWZpbmUgR0xfQ09OVEVYVF9ST0JVU1RfQUNDRVNTICAgICAgICAgIDB4OTBGMwogI2VuZGlmIC8qIEdMX0tIUl9yb2J1c3RuZXNzICovCiAKKyNpZm5kZWYgR0xfS0hSX3NoYWRlcl9zdWJncm91cAorI2RlZmluZSBHTF9LSFJfc2hhZGVyX3N1Ymdyb3VwIDEKKyNkZWZpbmUgR0xfU1VCR1JPVVBfU0laRV9LSFIgICAgICAgICAgICAgIDB4OTUzMgorI2RlZmluZSBHTF9TVUJHUk9VUF9TVVBQT1JURURfU1RBR0VTX0tIUiAgMHg5NTMzCisjZGVmaW5lIEdMX1NVQkdST1VQX1NVUFBPUlRFRF9GRUFUVVJFU19LSFIgMHg5NTM0CisjZGVmaW5lIEdMX1NVQkdST1VQX1FVQURfQUxMX1NUQUdFU19LSFIgICAweDk1MzUKKyNkZWZpbmUgR0xfU1VCR1JPVVBfRkVBVFVSRV9CQVNJQ19CSVRfS0hSIDB4MDAwMDAwMDEKKyNkZWZpbmUgR0xfU1VCR1JPVVBfRkVBVFVSRV9WT1RFX0JJVF9LSFIgIDB4MDAwMDAwMDIKKyNkZWZpbmUgR0xfU1VCR1JPVVBfRkVBVFVSRV9BUklUSE1FVElDX0JJVF9LSFIgMHgwMDAwMDAwNAorI2RlZmluZSBHTF9TVUJHUk9VUF9GRUFUVVJFX0JBTExPVF9CSVRfS0hSIDB4MDAwMDAwMDgKKyNkZWZpbmUgR0xfU1VCR1JPVVBfRkVBVFVSRV9TSFVGRkxFX0JJVF9LSFIgMHgwMDAwMDAxMAorI2RlZmluZSBHTF9TVUJHUk9VUF9GRUFUVVJFX1NIVUZGTEVfUkVMQVRJVkVfQklUX0tIUiAweDAwMDAwMDIwCisjZGVmaW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfQ0xVU1RFUkVEX0JJVF9LSFIgMHgwMDAwMDA0MAorI2RlZmluZSBHTF9TVUJHUk9VUF9GRUFUVVJFX1FVQURfQklUX0tIUiAgMHgwMDAwMDA4MAorI2VuZGlmIC8qIEdMX0tIUl9zaGFkZXJfc3ViZ3JvdXAgKi8KKwogI2lmbmRlZiBHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkcgogI2RlZmluZSBHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkciAxCiAjZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIgICAweDkzQjAKQEAgLTU2NjIsNiArNTY3OCwxMSBAQAogI2RlZmluZSBHTF9TSEFERVJfR0xPQkFMX0FDQ0VTU19CQVJSSUVSX0JJVF9OViAweDAwMDAwMDEwCiAjZW5kaWYgLyogR0xfTlZfc2hhZGVyX2J1ZmZlcl9zdG9yZSAqLwogCisjaWZuZGVmIEdMX05WX3NoYWRlcl9zdWJncm91cF9wYXJ0aXRpb25lZAorI2RlZmluZSBHTF9OVl9zaGFkZXJfc3ViZ3JvdXBfcGFydGl0aW9uZWQgMQorI2RlZmluZSBHTF9TVUJHUk9VUF9GRUFUVVJFX1BBUlRJVElPTkVEX0JJVF9OViAweDAwMDAwMTAwCisjZW5kaWYgLyogR0xfTlZfc2hhZGVyX3N1Ymdyb3VwX3BhcnRpdGlvbmVkICovCisKICNpZm5kZWYgR0xfTlZfc2hhZGVyX3RleHR1cmVfZm9vdHByaW50CiAjZGVmaW5lIEdMX05WX3NoYWRlcl90ZXh0dXJlX2Zvb3RwcmludCAxCiAjZW5kaWYgLyogR0xfTlZfc2hhZGVyX3RleHR1cmVfZm9vdHByaW50ICovCmRpZmYgLS1naXQgYS9hcGkvR0wvZ2xleHQuaCBiL2FwaS9HTC9nbGV4dC5oCmluZGV4IDI3MTZjNDMuLjZhOGUwN2EgMTAwNjQ0Ci0tLSBhL2FwaS9HTC9nbGV4dC5oCisrKyBiL2FwaS9HTC9nbGV4dC5oCkBAIC01MSw3ICs1MSw3IEBACiAjZGVmaW5lIEdMQVBJIGV4dGVybgogI2VuZGlmCiAKLSNkZWZpbmUgR0xfR0xFWFRfVkVSU0lPTiAyMDE5MDYwNQorI2RlZmluZSBHTF9HTEVYVF9WRVJTSU9OIDIwMTkwNzI4CiAKICNpbmNsdWRlIDxLSFIva2hycGxhdGZvcm0uaD4KIApAQCAtNDk5Miw2ICs0OTkyLDIyIEBACiAjZGVmaW5lIEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTUyAgICAgICAgICAweDkwRjMKICNlbmRpZiAvKiBHTF9LSFJfcm9idXN0bmVzcyAqLwogCisjaWZuZGVmIEdMX0tIUl9zaGFkZXJfc3ViZ3JvdXAKKyNkZWZpbmUgR0xfS0hSX3NoYWRlcl9zdWJncm91cCAxCisjZGVmaW5lIEdMX1NVQkdST1VQX1NJWkVfS0hSICAgICAgICAgICAgICAweDk1MzIKKyNkZWZpbmUgR0xfU1VCR1JPVVBfU1VQUE9SVEVEX1NUQUdFU19LSFIgIDB4OTUzMworI2RlZmluZSBHTF9TVUJHUk9VUF9TVVBQT1JURURfRkVBVFVSRVNfS0hSIDB4OTUzNAorI2RlZmluZSBHTF9TVUJHUk9VUF9RVUFEX0FMTF9TVEFHRVNfS0hSICAgMHg5NTM1CisjZGVmaW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfQkFTSUNfQklUX0tIUiAweDAwMDAwMDAxCisjZGVmaW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfVk9URV9CSVRfS0hSICAweDAwMDAwMDAyCisjZGVmaW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfQVJJVEhNRVRJQ19CSVRfS0hSIDB4MDAwMDAwMDQKKyNkZWZpbmUgR0xfU1VCR1JPVVBfRkVBVFVSRV9CQUxMT1RfQklUX0tIUiAweDAwMDAwMDA4CisjZGVmaW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfU0hVRkZMRV9CSVRfS0hSIDB4MDAwMDAwMTAKKyNkZWZpbmUgR0xfU1VCR1JPVVBfRkVBVFVSRV9TSFVGRkxFX1JFTEFUSVZFX0JJVF9LSFIgMHgwMDAwMDAyMAorI2RlZmluZSBHTF9TVUJHUk9VUF9GRUFUVVJFX0NMVVNURVJFRF9CSVRfS0hSIDB4MDAwMDAwNDAKKyNkZWZpbmUgR0xfU1VCR1JPVVBfRkVBVFVSRV9RVUFEX0JJVF9LSFIgIDB4MDAwMDAwODAKKyNlbmRpZiAvKiBHTF9LSFJfc2hhZGVyX3N1Ymdyb3VwICovCisKICNpZm5kZWYgR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIKICNkZWZpbmUgR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHIgMQogI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSICAgMHg5M0IwCkBAIC05Mzc3LDYgKzkzOTMsMjUgQEAKICNkZWZpbmUgR0xfR1BVX01FTU9SWV9JTkZPX0VWSUNURURfTUVNT1JZX05WWCAweDkwNEIKICNlbmRpZiAvKiBHTF9OVlhfZ3B1X21lbW9yeV9pbmZvICovCiAKKyNpZm5kZWYgR0xfTlZYX2dwdV9tdWx0aWNhc3QyCisjZGVmaW5lIEdMX05WWF9ncHVfbXVsdGljYXN0MiAxCisjZGVmaW5lIEdMX1VQTE9BRF9HUFVfTUFTS19OVlggICAgICAgICAgICAweDk1NEEKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUllQIFBGTkdMVVBMT0FER1BVTUFTS05WWFBST0MpIChHTGJpdGZpZWxkIG1hc2spOwordHlwZWRlZiB2b2lkIChBUElFTlRSWVAgUEZOR0xNVUxUSUNBU1RWSUVXUE9SVEFSUkFZVk5WWFBST0MpIChHTHVpbnQgZ3B1LCBHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOwordHlwZWRlZiB2b2lkIChBUElFTlRSWVAgUEZOR0xNVUxUSUNBU1RWSUVXUE9SVFBPU0lUSU9OV1NDQUxFTlZYUFJPQykgKEdMdWludCBncHUsIEdMdWludCBpbmRleCwgR0xmbG9hdCB4Y29lZmYsIEdMZmxvYXQgeWNvZWZmKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUllQIFBGTkdMTVVMVElDQVNUU0NJU1NPUkFSUkFZVk5WWFBST0MpIChHTHVpbnQgZ3B1LCBHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsKK3R5cGVkZWYgR0x1aW50IChBUElFTlRSWVAgUEZOR0xBU1lOQ0NPUFlCVUZGRVJTVUJEQVRBTlZYUFJPQykgKEdMc2l6ZWkgd2FpdFNlbWFwaG9yZUNvdW50LCBjb25zdCBHTHVpbnQgKndhaXRTZW1hcGhvcmVBcnJheSwgY29uc3QgR0x1aW50NjQgKmZlbmNlVmFsdWVBcnJheSwgR0x1aW50IHJlYWRHcHUsIEdMYml0ZmllbGQgd3JpdGVHcHVNYXNrLCBHTHVpbnQgcmVhZEJ1ZmZlciwgR0x1aW50IHdyaXRlQnVmZmVyLCBHTGludHB0ciByZWFkT2Zmc2V0LCBHTGludHB0ciB3cml0ZU9mZnNldCwgR0xzaXplaXB0ciBzaXplLCBHTHNpemVpIHNpZ25hbFNlbWFwaG9yZUNvdW50LCBjb25zdCBHTHVpbnQgKnNpZ25hbFNlbWFwaG9yZUFycmF5LCBjb25zdCBHTHVpbnQ2NCAqc2lnbmFsVmFsdWVBcnJheSk7Cit0eXBlZGVmIEdMdWludCAoQVBJRU5UUllQIFBGTkdMQVNZTkNDT1BZSU1BR0VTVUJEQVRBTlZYUFJPQykgKEdMc2l6ZWkgd2FpdFNlbWFwaG9yZUNvdW50LCBjb25zdCBHTHVpbnQgKndhaXRTZW1hcGhvcmVBcnJheSwgY29uc3QgR0x1aW50NjQgKndhaXRWYWx1ZUFycmF5LCBHTHVpbnQgc3JjR3B1LCBHTGJpdGZpZWxkIGRzdEdwdU1hc2ssIEdMdWludCBzcmNOYW1lLCBHTGVudW0gc3JjVGFyZ2V0LCBHTGludCBzcmNMZXZlbCwgR0xpbnQgc3JjWCwgR0xpbnQgc3JjWSwgR0xpbnQgc3JjWiwgR0x1aW50IGRzdE5hbWUsIEdMZW51bSBkc3RUYXJnZXQsIEdMaW50IGRzdExldmVsLCBHTGludCBkc3RYLCBHTGludCBkc3RZLCBHTGludCBkc3RaLCBHTHNpemVpIHNyY1dpZHRoLCBHTHNpemVpIHNyY0hlaWdodCwgR0xzaXplaSBzcmNEZXB0aCwgR0xzaXplaSBzaWduYWxTZW1hcGhvcmVDb3VudCwgY29uc3QgR0x1aW50ICpzaWduYWxTZW1hcGhvcmVBcnJheSwgY29uc3QgR0x1aW50NjQgKnNpZ25hbFZhbHVlQXJyYXkpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMQVBJIHZvaWQgQVBJRU5UUlkgZ2xVcGxvYWRHcHVNYXNrTlZYIChHTGJpdGZpZWxkIG1hc2spOworR0xBUEkgdm9pZCBBUElFTlRSWSBnbE11bHRpY2FzdFZpZXdwb3J0QXJyYXl2TlZYIChHTHVpbnQgZ3B1LCBHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOworR0xBUEkgdm9pZCBBUElFTlRSWSBnbE11bHRpY2FzdFZpZXdwb3J0UG9zaXRpb25XU2NhbGVOVlggKEdMdWludCBncHUsIEdMdWludCBpbmRleCwgR0xmbG9hdCB4Y29lZmYsIEdMZmxvYXQgeWNvZWZmKTsKK0dMQVBJIHZvaWQgQVBJRU5UUlkgZ2xNdWx0aWNhc3RTY2lzc29yQXJyYXl2TlZYIChHTHVpbnQgZ3B1LCBHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsKK0dMQVBJIEdMdWludCBBUElFTlRSWSBnbEFzeW5jQ29weUJ1ZmZlclN1YkRhdGFOVlggKEdMc2l6ZWkgd2FpdFNlbWFwaG9yZUNvdW50LCBjb25zdCBHTHVpbnQgKndhaXRTZW1hcGhvcmVBcnJheSwgY29uc3QgR0x1aW50NjQgKmZlbmNlVmFsdWVBcnJheSwgR0x1aW50IHJlYWRHcHUsIEdMYml0ZmllbGQgd3JpdGVHcHVNYXNrLCBHTHVpbnQgcmVhZEJ1ZmZlciwgR0x1aW50IHdyaXRlQnVmZmVyLCBHTGludHB0ciByZWFkT2Zmc2V0LCBHTGludHB0ciB3cml0ZU9mZnNldCwgR0xzaXplaXB0ciBzaXplLCBHTHNpemVpIHNpZ25hbFNlbWFwaG9yZUNvdW50LCBjb25zdCBHTHVpbnQgKnNpZ25hbFNlbWFwaG9yZUFycmF5LCBjb25zdCBHTHVpbnQ2NCAqc2lnbmFsVmFsdWVBcnJheSk7CitHTEFQSSBHTHVpbnQgQVBJRU5UUlkgZ2xBc3luY0NvcHlJbWFnZVN1YkRhdGFOVlggKEdMc2l6ZWkgd2FpdFNlbWFwaG9yZUNvdW50LCBjb25zdCBHTHVpbnQgKndhaXRTZW1hcGhvcmVBcnJheSwgY29uc3QgR0x1aW50NjQgKndhaXRWYWx1ZUFycmF5LCBHTHVpbnQgc3JjR3B1LCBHTGJpdGZpZWxkIGRzdEdwdU1hc2ssIEdMdWludCBzcmNOYW1lLCBHTGVudW0gc3JjVGFyZ2V0LCBHTGludCBzcmNMZXZlbCwgR0xpbnQgc3JjWCwgR0xpbnQgc3JjWSwgR0xpbnQgc3JjWiwgR0x1aW50IGRzdE5hbWUsIEdMZW51bSBkc3RUYXJnZXQsIEdMaW50IGRzdExldmVsLCBHTGludCBkc3RYLCBHTGludCBkc3RZLCBHTGludCBkc3RaLCBHTHNpemVpIHNyY1dpZHRoLCBHTHNpemVpIHNyY0hlaWdodCwgR0xzaXplaSBzcmNEZXB0aCwgR0xzaXplaSBzaWduYWxTZW1hcGhvcmVDb3VudCwgY29uc3QgR0x1aW50ICpzaWduYWxTZW1hcGhvcmVBcnJheSwgY29uc3QgR0x1aW50NjQgKnNpZ25hbFZhbHVlQXJyYXkpOworI2VuZGlmCisjZW5kaWYgLyogR0xfTlZYX2dwdV9tdWx0aWNhc3QyICovCisKICNpZm5kZWYgR0xfTlZYX2xpbmtlZF9ncHVfbXVsdGljYXN0CiAjZGVmaW5lIEdMX05WWF9saW5rZWRfZ3B1X211bHRpY2FzdCAxCiAjZGVmaW5lIEdMX0xHUFVfU0VQQVJBVEVfU1RPUkFHRV9CSVRfTlZYICAweDA4MDAKQEAgLTkzOTEsNiArOTQyNiwyMCBAQAogI2VuZGlmCiAjZW5kaWYgLyogR0xfTlZYX2xpbmtlZF9ncHVfbXVsdGljYXN0ICovCiAKKyNpZm5kZWYgR0xfTlZYX3Byb2dyZXNzX2ZlbmNlCisjZGVmaW5lIEdMX05WWF9wcm9ncmVzc19mZW5jZSAxCit0eXBlZGVmIEdMdWludCAoQVBJRU5UUllQIFBGTkdMQ1JFQVRFUFJPR1JFU1NGRU5DRU5WWFBST0MpICh2b2lkKTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUllQIFBGTkdMU0lHTkFMU0VNQVBIT1JFVUk2NE5WWFBST0MpIChHTHVpbnQgc2lnbmFsR3B1LCBHTHNpemVpIGZlbmNlT2JqZWN0Q291bnQsIGNvbnN0IEdMdWludCAqc2VtYXBob3JlQXJyYXksIGNvbnN0IEdMdWludDY0ICpmZW5jZVZhbHVlQXJyYXkpOwordHlwZWRlZiB2b2lkIChBUElFTlRSWVAgUEZOR0xXQUlUU0VNQVBIT1JFVUk2NE5WWFBST0MpIChHTHVpbnQgd2FpdEdwdSwgR0xzaXplaSBmZW5jZU9iamVjdENvdW50LCBjb25zdCBHTHVpbnQgKnNlbWFwaG9yZUFycmF5LCBjb25zdCBHTHVpbnQ2NCAqZmVuY2VWYWx1ZUFycmF5KTsKK3R5cGVkZWYgdm9pZCAoQVBJRU5UUllQIFBGTkdMQ0xJRU5UV0FJVFNFTUFQSE9SRVVJNjROVlhQUk9DKSAoR0xzaXplaSBmZW5jZU9iamVjdENvdW50LCBjb25zdCBHTHVpbnQgKnNlbWFwaG9yZUFycmF5LCBjb25zdCBHTHVpbnQ2NCAqZmVuY2VWYWx1ZUFycmF5KTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTEFQSSBHTHVpbnQgQVBJRU5UUlkgZ2xDcmVhdGVQcm9ncmVzc0ZlbmNlTlZYICh2b2lkKTsKK0dMQVBJIHZvaWQgQVBJRU5UUlkgZ2xTaWduYWxTZW1hcGhvcmV1aTY0TlZYIChHTHVpbnQgc2lnbmFsR3B1LCBHTHNpemVpIGZlbmNlT2JqZWN0Q291bnQsIGNvbnN0IEdMdWludCAqc2VtYXBob3JlQXJyYXksIGNvbnN0IEdMdWludDY0ICpmZW5jZVZhbHVlQXJyYXkpOworR0xBUEkgdm9pZCBBUElFTlRSWSBnbFdhaXRTZW1hcGhvcmV1aTY0TlZYIChHTHVpbnQgd2FpdEdwdSwgR0xzaXplaSBmZW5jZU9iamVjdENvdW50LCBjb25zdCBHTHVpbnQgKnNlbWFwaG9yZUFycmF5LCBjb25zdCBHTHVpbnQ2NCAqZmVuY2VWYWx1ZUFycmF5KTsKK0dMQVBJIHZvaWQgQVBJRU5UUlkgZ2xDbGllbnRXYWl0U2VtYXBob3JldWk2NE5WWCAoR0xzaXplaSBmZW5jZU9iamVjdENvdW50LCBjb25zdCBHTHVpbnQgKnNlbWFwaG9yZUFycmF5LCBjb25zdCBHTHVpbnQ2NCAqZmVuY2VWYWx1ZUFycmF5KTsKKyNlbmRpZgorI2VuZGlmIC8qIEdMX05WWF9wcm9ncmVzc19mZW5jZSAqLworCiAjaWZuZGVmIEdMX05WX2FscGhhX3RvX2NvdmVyYWdlX2RpdGhlcl9jb250cm9sCiAjZGVmaW5lIEdMX05WX2FscGhhX3RvX2NvdmVyYWdlX2RpdGhlcl9jb250cm9sIDEKICNkZWZpbmUgR0xfQUxQSEFfVE9fQ09WRVJBR0VfRElUSEVSX0RFRkFVTFRfTlYgMHg5MzRECkBAIC0xMDkzOCw2ICsxMDk4NywxMSBAQAogI2RlZmluZSBHTF9OVl9zaGFkZXJfc3RvcmFnZV9idWZmZXJfb2JqZWN0IDEKICNlbmRpZiAvKiBHTF9OVl9zaGFkZXJfc3RvcmFnZV9idWZmZXJfb2JqZWN0ICovCiAKKyNpZm5kZWYgR0xfTlZfc2hhZGVyX3N1Ymdyb3VwX3BhcnRpdGlvbmVkCisjZGVmaW5lIEdMX05WX3NoYWRlcl9zdWJncm91cF9wYXJ0aXRpb25lZCAxCisjZGVmaW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfUEFSVElUSU9ORURfQklUX05WIDB4MDAwMDAxMDAKKyNlbmRpZiAvKiBHTF9OVl9zaGFkZXJfc3ViZ3JvdXBfcGFydGl0aW9uZWQgKi8KKwogI2lmbmRlZiBHTF9OVl9zaGFkZXJfdGV4dHVyZV9mb290cHJpbnQKICNkZWZpbmUgR0xfTlZfc2hhZGVyX3RleHR1cmVfZm9vdHByaW50IDEKICNlbmRpZiAvKiBHTF9OVl9zaGFkZXJfdGV4dHVyZV9mb290cHJpbnQgKi8KZGlmZiAtLWdpdCBhL2FwaS9HTC9nbHhleHQuaCBiL2FwaS9HTC9nbHhleHQuaAppbmRleCAyZjFjNzE3Li5hNmYxYzBjIDEwMDc1NQotLS0gYS9hcGkvR0wvZ2x4ZXh0LmgKKysrIGIvYXBpL0dML2dseGV4dC5oCkBAIC0zNCw3ICszNCw3IEBACiAqKiAgIGh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvT3BlbkdMLVJlZ2lzdHJ5CiAqLwogCi0jZGVmaW5lIEdMWF9HTFhFWFRfVkVSU0lPTiAyMDE5MDYwNQorI2RlZmluZSBHTFhfR0xYRVhUX1ZFUlNJT04gMjAxOTA3MjgKIAogLyogR2VuZXJhdGVkIEMgaGVhZGVyIGZvcjoKICAqIEFQSTogZ2x4CmRpZmYgLS1naXQgYS9hcGkvR0wvd2dsLmggYi9hcGkvR0wvd2dsLmgKaW5kZXggZjY4ODM4Yy4uYTU4Njk3NiAxMDA2NDQKLS0tIGEvYXBpL0dML3dnbC5oCisrKyBiL2FwaS9HTC93Z2wuaApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgogCi0vKiBHZW5lcmF0ZWQgb24gZGF0ZSAyMDE5MDYwNSAqLworLyogR2VuZXJhdGVkIG9uIGRhdGUgMjAxOTA3MjggKi8KIAogLyogR2VuZXJhdGVkIEMgaGVhZGVyIGZvcjoKICAqIEFQSTogd2dsCkBAIC04MDYsNiArODA2LDE1IEBACiAjZW5kaWYKICNlbmRpZiAvKiBXR0xfTlZfZ3B1X2FmZmluaXR5ICovCiAKKyNpZm5kZWYgV0dMX05WX211bHRpZ3B1X2NvbnRleHQKKyNkZWZpbmUgV0dMX05WX211bHRpZ3B1X2NvbnRleHQgMQorI2RlZmluZSBXR0xfQ09OVEVYVF9NVUxUSUdQVV9BVFRSSUJfTlYgICAgMHgyMEFBCisjZGVmaW5lIFdHTF9DT05URVhUX01VTFRJR1BVX0FUVFJJQl9TSU5HTEVfTlYgMHgyMEFCCisjZGVmaW5lIFdHTF9DT05URVhUX01VTFRJR1BVX0FUVFJJQl9BRlJfTlYgMHgyMEFDCisjZGVmaW5lIFdHTF9DT05URVhUX01VTFRJR1BVX0FUVFJJQl9NVUxUSUNBU1RfTlYgMHgyMEFECisjZGVmaW5lIFdHTF9DT05URVhUX01VTFRJR1BVX0FUVFJJQl9NVUxUSV9ESVNQTEFZX01VTFRJQ0FTVF9OViAweDIwQUUKKyNlbmRpZiAvKiBXR0xfTlZfbXVsdGlncHVfY29udGV4dCAqLworCiAjaWZuZGVmIFdHTF9OVl9tdWx0aXNhbXBsZV9jb3ZlcmFnZQogI2RlZmluZSBXR0xfTlZfbXVsdGlzYW1wbGVfY292ZXJhZ2UgMQogI2RlZmluZSBXR0xfQ09WRVJBR0VfU0FNUExFU19OViAgICAgICAgICAgMHgyMDQyCmRpZmYgLS1naXQgYS9hcGkvR0wvd2dsZXh0LmggYi9hcGkvR0wvd2dsZXh0LmgKaW5kZXggNjU3YjgxMi4uMTBjM2NlMSAxMDA3NTUKLS0tIGEvYXBpL0dML3dnbGV4dC5oCisrKyBiL2FwaS9HTC93Z2xleHQuaApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgogCi0jZGVmaW5lIFdHTF9XR0xFWFRfVkVSU0lPTiAyMDE5MDYwNQorI2RlZmluZSBXR0xfV0dMRVhUX1ZFUlNJT04gMjAxOTA3MjgKIAogLyogR2VuZXJhdGVkIEMgaGVhZGVyIGZvcjoKICAqIEFQSTogd2dsCkBAIC03MTUsNiArNzE1LDE1IEBACiAjZW5kaWYKICNlbmRpZiAvKiBXR0xfTlZfZ3B1X2FmZmluaXR5ICovCiAKKyNpZm5kZWYgV0dMX05WX211bHRpZ3B1X2NvbnRleHQKKyNkZWZpbmUgV0dMX05WX211bHRpZ3B1X2NvbnRleHQgMQorI2RlZmluZSBXR0xfQ09OVEVYVF9NVUxUSUdQVV9BVFRSSUJfTlYgICAgMHgyMEFBCisjZGVmaW5lIFdHTF9DT05URVhUX01VTFRJR1BVX0FUVFJJQl9TSU5HTEVfTlYgMHgyMEFCCisjZGVmaW5lIFdHTF9DT05URVhUX01VTFRJR1BVX0FUVFJJQl9BRlJfTlYgMHgyMEFDCisjZGVmaW5lIFdHTF9DT05URVhUX01VTFRJR1BVX0FUVFJJQl9NVUxUSUNBU1RfTlYgMHgyMEFECisjZGVmaW5lIFdHTF9DT05URVhUX01VTFRJR1BVX0FUVFJJQl9NVUxUSV9ESVNQTEFZX01VTFRJQ0FTVF9OViAweDIwQUUKKyNlbmRpZiAvKiBXR0xfTlZfbXVsdGlncHVfY29udGV4dCAqLworCiAjaWZuZGVmIFdHTF9OVl9tdWx0aXNhbXBsZV9jb3ZlcmFnZQogI2RlZmluZSBXR0xfTlZfbXVsdGlzYW1wbGVfY292ZXJhZ2UgMQogI2RlZmluZSBXR0xfQ09WRVJBR0VfU0FNUExFU19OViAgICAgICAgICAgMHgyMDQyCmRpZmYgLS1naXQgYS9hcGkvR0xFUy9nbC5oIGIvYXBpL0dMRVMvZ2wuaAppbmRleCAzZjA0Mjk5Li41MGI0NTc3IDEwMDY0NAotLS0gYS9hcGkvR0xFUy9nbC5oCisrKyBiL2FwaS9HTEVTL2dsLmgKQEAgLTM2LDcgKzM2LDcgQEAKIAogI2luY2x1ZGUgPEdMRVMvZ2xwbGF0Zm9ybS5oPgogCi0vKiBHZW5lcmF0ZWQgb24gZGF0ZSAyMDE5MDYwNSAqLworLyogR2VuZXJhdGVkIG9uIGRhdGUgMjAxOTA3MjggKi8KIAogLyogR2VuZXJhdGVkIEMgaGVhZGVyIGZvcjoKICAqIEFQSTogZ2xlczEKZGlmZiAtLWdpdCBhL2FwaS9HTEVTL2dsZXh0LmggYi9hcGkvR0xFUy9nbGV4dC5oCmluZGV4IDBlZDI3MTMuLmE3OWRiZDUgMTAwNjQ0Ci0tLSBhL2FwaS9HTEVTL2dsZXh0LmgKKysrIGIvYXBpL0dMRVMvZ2xleHQuaApAQCAtMzgsNyArMzgsNyBAQAogI2RlZmluZSBHTF9BUElFTlRSWVAgR0xfQVBJRU5UUlkqCiAjZW5kaWYKIAotLyogR2VuZXJhdGVkIG9uIGRhdGUgMjAxOTA2MDUgKi8KKy8qIEdlbmVyYXRlZCBvbiBkYXRlIDIwMTkwNzI4ICovCiAKIC8qIEdlbmVyYXRlZCBDIGhlYWRlciBmb3I6CiAgKiBBUEk6IGdsZXMxCmRpZmYgLS1naXQgYS9hcGkvR0xFUzIvZ2wyLmggYi9hcGkvR0xFUzIvZ2wyLmgKaW5kZXggNzZmZDNjNC4uYTVjNjEzMCAxMDA2NDQKLS0tIGEvYXBpL0dMRVMyL2dsMi5oCisrKyBiL2FwaS9HTEVTMi9nbDIuaApAQCAtNDQsNyArNDQsNyBAQAogI2RlZmluZSBHTF9HTEVTX1BST1RPVFlQRVMgMQogI2VuZGlmCiAKLS8qIEdlbmVyYXRlZCBvbiBkYXRlIDIwMTkwNjA1ICovCisvKiBHZW5lcmF0ZWQgb24gZGF0ZSAyMDE5MDcyOCAqLwogCiAvKiBHZW5lcmF0ZWQgQyBoZWFkZXIgZm9yOgogICogQVBJOiBnbGVzMgpkaWZmIC0tZ2l0IGEvYXBpL0dMRVMyL2dsMmV4dC5oIGIvYXBpL0dMRVMyL2dsMmV4dC5oCmluZGV4IDA0ZTkwMmYuLjc1OGQ1NTQgMTAwNjQ0Ci0tLSBhL2FwaS9HTEVTMi9nbDJleHQuaAorKysgYi9hcGkvR0xFUzIvZ2wyZXh0LmgKQEAgLTM4LDcgKzM4LDcgQEAKICNkZWZpbmUgR0xfQVBJRU5UUllQIEdMX0FQSUVOVFJZKgogI2VuZGlmCiAKLS8qIEdlbmVyYXRlZCBvbiBkYXRlIDIwMTkwNjA1ICovCisvKiBHZW5lcmF0ZWQgb24gZGF0ZSAyMDE5MDcyOCAqLwogCiAvKiBHZW5lcmF0ZWQgQyBoZWFkZXIgZm9yOgogICogQVBJOiBnbGVzMgpAQCAtMTk3LDYgKzE5NywyMiBAQAogI2VuZGlmCiAjZW5kaWYgLyogR0xfS0hSX3JvYnVzdG5lc3MgKi8KIAorI2lmbmRlZiBHTF9LSFJfc2hhZGVyX3N1Ymdyb3VwCisjZGVmaW5lIEdMX0tIUl9zaGFkZXJfc3ViZ3JvdXAgMQorI2RlZmluZSBHTF9TVUJHUk9VUF9TSVpFX0tIUiAgICAgICAgICAgICAgMHg5NTMyCisjZGVmaW5lIEdMX1NVQkdST1VQX1NVUFBPUlRFRF9TVEFHRVNfS0hSICAweDk1MzMKKyNkZWZpbmUgR0xfU1VCR1JPVVBfU1VQUE9SVEVEX0ZFQVRVUkVTX0tIUiAweDk1MzQKKyNkZWZpbmUgR0xfU1VCR1JPVVBfUVVBRF9BTExfU1RBR0VTX0tIUiAgIDB4OTUzNQorI2RlZmluZSBHTF9TVUJHUk9VUF9GRUFUVVJFX0JBU0lDX0JJVF9LSFIgMHgwMDAwMDAwMQorI2RlZmluZSBHTF9TVUJHUk9VUF9GRUFUVVJFX1ZPVEVfQklUX0tIUiAgMHgwMDAwMDAwMgorI2RlZmluZSBHTF9TVUJHUk9VUF9GRUFUVVJFX0FSSVRITUVUSUNfQklUX0tIUiAweDAwMDAwMDA0CisjZGVmaW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfQkFMTE9UX0JJVF9LSFIgMHgwMDAwMDAwOAorI2RlZmluZSBHTF9TVUJHUk9VUF9GRUFUVVJFX1NIVUZGTEVfQklUX0tIUiAweDAwMDAwMDEwCisjZGVmaW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfU0hVRkZMRV9SRUxBVElWRV9CSVRfS0hSIDB4MDAwMDAwMjAKKyNkZWZpbmUgR0xfU1VCR1JPVVBfRkVBVFVSRV9DTFVTVEVSRURfQklUX0tIUiAweDAwMDAwMDQwCisjZGVmaW5lIEdMX1NVQkdST1VQX0ZFQVRVUkVfUVVBRF9CSVRfS0hSICAweDAwMDAwMDgwCisjZW5kaWYgLyogR0xfS0hSX3NoYWRlcl9zdWJncm91cCAqLworCiAjaWZuZGVmIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyCiAjZGVmaW5lIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIDEKICNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUiAgIDB4OTNCMApAQCAtMzQ5Miw2ICszNTA4LDExIEBACiAjZGVmaW5lIEdMX05WX3NoYWRlcl9ub3BlcnNwZWN0aXZlX2ludGVycG9sYXRpb24gMQogI2VuZGlmIC8qIEdMX05WX3NoYWRlcl9ub3BlcnNwZWN0aXZlX2ludGVycG9sYXRpb24gKi8KIAorI2lmbmRlZiBHTF9OVl9zaGFkZXJfc3ViZ3JvdXBfcGFydGl0aW9uZWQKKyNkZWZpbmUgR0xfTlZfc2hhZGVyX3N1Ymdyb3VwX3BhcnRpdGlvbmVkIDEKKyNkZWZpbmUgR0xfU1VCR1JPVVBfRkVBVFVSRV9QQVJUSVRJT05FRF9CSVRfTlYgMHgwMDAwMDEwMAorI2VuZGlmIC8qIEdMX05WX3NoYWRlcl9zdWJncm91cF9wYXJ0aXRpb25lZCAqLworCiAjaWZuZGVmIEdMX05WX3NoYWRlcl90ZXh0dXJlX2Zvb3RwcmludAogI2RlZmluZSBHTF9OVl9zaGFkZXJfdGV4dHVyZV9mb290cHJpbnQgMQogI2VuZGlmIC8qIEdMX05WX3NoYWRlcl90ZXh0dXJlX2Zvb3RwcmludCAqLwpkaWZmIC0tZ2l0IGEvYXBpL0dMRVMzL2dsMy5oIGIvYXBpL0dMRVMzL2dsMy5oCmluZGV4IDEyMWU5Y2IuLmQ4ZjcxZjMgMTAwNjQ0Ci0tLSBhL2FwaS9HTEVTMy9nbDMuaAorKysgYi9hcGkvR0xFUzMvZ2wzLmgKQEAgLTQ0LDcgKzQ0LDcgQEAKICNkZWZpbmUgR0xfR0xFU19QUk9UT1RZUEVTIDEKICNlbmRpZgogCi0vKiBHZW5lcmF0ZWQgb24gZGF0ZSAyMDE5MDYwNSAqLworLyogR2VuZXJhdGVkIG9uIGRhdGUgMjAxOTA3MjggKi8KIAogLyogR2VuZXJhdGVkIEMgaGVhZGVyIGZvcjoKICAqIEFQSTogZ2xlczIKZGlmZiAtLWdpdCBhL2V4dGVuc2lvbnMvS0hSL0tIUl9zaGFkZXJfc3ViZ3JvdXAudHh0IGIvZXh0ZW5zaW9ucy9LSFIvS0hSX3NoYWRlcl9zdWJncm91cC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRmZjQwNgotLS0gL2Rldi9udWxsCisrKyBiL2V4dGVuc2lvbnMvS0hSL0tIUl9zaGFkZXJfc3ViZ3JvdXAudHh0CkBAIC0wLDAgKzEsNjM1IEBACitOYW1lCisKKyAgICBLSFJfc2hhZGVyX3N1Ymdyb3VwCisKK05hbWUgU3RyaW5ncworCisgICAgR0xfS0hSX3NoYWRlcl9zdWJncm91cAorCitDb250YWN0CisKKyAgICBEYW5pZWwgS29jaCwgTlZJRElBIENvcnBvcnRhdGlvbgorCitDb250cmlidXRvcnMKKworICAgIE5laWwgSGVubmluZywgQ29kZXBsYXkKKyAgICBDb250cmlidXRvcnMgdG8gR0xfS0hSX3NoYWRlcl9zdWJncm91cCAoR0xTTCkKKyAgICBKYW1lcyBHbGFudmlsbGUsIEltYWdpbmF0aW9uCisgICAgSmFuLUhhcmFsZCBGcmVkcmlrc2VuLCBBcm0KKyAgICBHcmFlbWUgTGVlc2UsIEJyb2FkY29tCisgICAgSmVzc2UgSGFsbCwgR29vZ2xlCisKK1N0YXR1cworCisgICAgQ29tcGxldGUKKyAgICBBcHByb3ZlZCBieSB0aGUgT3BlbkdMIFdvcmtpbmcgR3JvdXAgb24gMjAxOS0wNS0yOQorICAgIEFwcHJvdmVkIGJ5IHRoZSBPcGVuR0wgRVMgV29ya2luZyBHcm91cCBvbiAyMDE5LTA1LTI5CisgICAgQXBwcm92ZWQgYnkgdGhlIEtocm9ub3MgUHJvbW90ZXJzIG9uIDIwMTktMDctMjYKKworVmVyc2lvbgorCisgICAgTGFzdCBNb2RpZmllZDogIDIwMTktMDctMjYKKyAgICBSZXZpc2lvbjogICAgICAgOAorCitOdW1iZXIKKworICAgIEFSQiBFeHRlbnNpb24gIzE5NgorICAgIE9wZW5HTCBFUyBFeHRlbnNpb24gIzMyMQorCitEZXBlbmRlbmNpZXMKKworICAgIFRoaXMgZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIDQuNiBTcGVjaWZpY2F0aW9uCisgICAgKENvcmUgUHJvZmlsZSksIGRhdGVkIEp1bHkgMzAsIDIwMTcuCisKKyAgICBUaGlzIGV4dGVuc2lvbiByZXF1aXJlcyBPcGVuR0wgNC4zIG9yIE9wZW5HTCBFUyAzLjEuCisKKyAgICBUaGlzIGV4dGVuc2lvbiByZXF1aXJlcyB0aGUgS0hSX3NoYWRlcl9zdWJncm91cCBHTFNMIGV4dGVuc2lvbi4KKworICAgIFRoaXMgZXh0ZW5zaW9uIGludGVyYWN0cyB3aXRoIEFSQl9nbF9zcGlydiBhbmQgT3BlbkdMIDQuNi4KKworICAgIFRoaXMgZXh0ZW5zaW9uIGludGVyYWN0cyB3aXRoIEFSQl9zcGlydl9leHRlbnNpb25zIGFuZCBPcGVuR0wgNC42LgorCisgICAgVGhpcyBleHRlbnNpb24gaW50ZXJhY3RzIHdpdGggT3BlbkdMIEVTIDMueC4KKworICAgIFRoaXMgZXh0ZW5zaW9uIGludGVyYWN0cyB3aXRoIEFSQl9zaGFkZXJfZHJhd19wYXJhbWV0ZXJzIGFuZAorICAgIFNQVl9LSFJfc2hhZGVyX2RyYXdfcGFyYW1ldGVycy4KKworICAgIFRoaXMgZXh0ZW5zaW9uIGludGVyYWN0cyB3aXRoIFNQVl9LSFJfc3RvcmFnZV9idWZmZXJfc3RvcmFnZV9jbGFzcy4KKworICAgIFRoaXMgZXh0ZW5zaW9uIHJlcXVpcmVzIFNQSVItViAxLjMgd2hlbiBTUElSLVYgaXMgc3VwcG9ydGVkIGluIE9wZW5HTC4KKworT3ZlcnZpZXcKKworICAgIFRoaXMgZXh0ZW5zaW9uIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhlIEtIUl9zaGFkZXJfc3ViZ3JvdXAgc2hhZGluZworICAgIGxhbmd1YWdlIGV4dGVuc2lvbiBpbiBPcGVuR0wgYW5kIE9wZW5HTCBFUy4KKworICAgIFRoZSBleHRlbnNpb24gYWRkcyBBUEkgcXVlcmllcyB0byBiZSBhYmxlIHRvIHF1ZXJ5CisKKyAgICAgIC0gdGhlIHNpemUgb2Ygc3ViZ3JvdXBzIGluIHRoaXMgaW1wbGVtZW50YXRpb24gKFNVQkdST1VQX1NJWkVfS0hSKQorICAgICAgLSB3aGljaCBzaGFkZXIgc3RhZ2VzIHN1cHBvcnQgc3ViZ3JvdXAgb3BlcmF0aW9ucworICAgICAgICAoU1VCR1JPVVBfU1VQUE9SVEVEX1NUQUdFU19LSFIpCisgICAgICAtIHdoaWNoIHN1Ymdyb3VwIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQgKFNVQkdST1VQX1NVUFBPUlRFRF9GRUFUVVJFU19LSFIpCisgICAgICAtIHdoZXRoZXIgcXVhZCBzdWJncm91cCBvcGVyYXRpb25zIGFyZSBzdXBwb3J0ZWQgaW4gYWxsCisgICAgICAgIHN0YWdlcyBzdXBwb3J0aW5nIHN1Ymdyb3VwIG9wZXJhdGlvbnMgKFNVQkdST1VQX1FVQURfQUxMX1NUQUdFU19LSFIpCisKKyAgICBJbiBPcGVuR0wgaW1wbGVtZW50YXRpb25zIHN1cHBvcnRpbmcgU1BJUi1WLCB0aGlzIGV4dGVuc2lvbiBlbmFibGVzIHRoZQorICAgIG1pbmltYWwgc3Vic2V0IG9mIFNQSVItViAxLjMgd2hpY2ggaXMgcmVxdWlyZWQgdG8gc3VwcG9ydCB0aGUgc3ViZ3JvdXAKKyAgICBmZWF0dXJlcyB0aGF0IGFyZSBzdXBwb3J0ZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uLgorCisgICAgSW4gT3BlbkdMIEVTIGltcGxlbWVudGF0aW9ucywgdGhpcyBleHRlbnNpb24gZG9lcyBOT1QgYWRkIHN1cHBvcnQgZm9yCisgICAgU1BJUi1WIG9yIGZvciBhbnkgb2YgdGhlIGJ1aWx0LWluIHNoYWRpbmcgbGFuZ3VhZ2UgZnVuY3Rpb25zICg4LjE4KQorICAgIHRoYXQgaGF2ZSBnZW5EVHlwZSAoZG91YmxlKSBwcm90b3R5cGVzLgorCitOZXcgUHJvY2VkdXJlcyBhbmQgRnVuY3Rpb25zCisKKyAgICBOb25lCisKK05ldyBUb2tlbnMKKworICAgIEFjY2VwdGVkIGFzIHRoZSA8cG5hbWU+IGFyZ3VtZW50IGZvciBHZXRJbnRlZ2VydiBhbmQKKyAgICBHZXRJbnRlZ2VyNjR2OgorCisgICAgICAgIFNVQkdST1VQX1NJWkVfS0hSICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5NTMyCisgICAgICAgIFNVQkdST1VQX1NVUFBPUlRFRF9TVEFHRVNfS0hSICAgICAgICAgICAgICAgMHg5NTMzCisgICAgICAgIFNVQkdST1VQX1NVUFBPUlRFRF9GRUFUVVJFU19LSFIgICAgICAgICAgICAgMHg5NTM0CisKKyAgICBBY2NlcHRlZCBhcyB0aGUgPHBuYW1lPiBhcmd1bWVudCBmb3IgR2V0Qm9vbGVhbnY6CisKKyAgICAgICAgU1VCR1JPVVBfUVVBRF9BTExfU1RBR0VTX0tIUiAgICAgICAgICAgICAgICAweDk1MzUKKworICAgIFJldHVybmVkIGFzIGEgYml0ZmllbGQgaW4gdGhlIDxkYXRhPiBhcmd1bWVudCB3aGVuIEdldEludGVnZXJ2CisgICAgaXMgcXVlcmllZCB3aXRoIGEgPHBuYW1lPiBvZiBTVUJHUk9VUF9TVVBQT1JURURfU1RBR0VTX0tIUgorCisgICAgICAgIChleGlzdGluZyB0b2tlbnMpCisgICAgICAgIFZFUlRFWF9TSEFERVJfQklUCisgICAgICAgIFRFU1NfQ09OVFJPTF9TSEFERVJfQklUCisgICAgICAgIFRFU1NfRVZBTFVBVElPTl9TSEFERVJfQklUCisgICAgICAgIEdFT01FVFJZX1NIQURFUl9CSVQKKyAgICAgICAgRlJBR01FTlRfU0hBREVSX0JJVAorICAgICAgICBDT01QVVRFX1NIQURFUl9CSVQKKworICAgIFJldHVybmVkIGFzIGJpdGZpZWxkIGluIHRoZSA8ZGF0YT4gYXJndW1lbnQgd2hlbiBHZXRJbnRlZ2VydgorICAgIGlzIHF1ZXJpZWQgd2l0aCBhIDxwbmFtZT4gb2YgU1VCR1JPVVBfU1VQUE9SVEVEX0ZFQVRVUkVTX0tIUjoKKworICAgICAgICBTVUJHUk9VUF9GRUFUVVJFX0JBU0lDX0JJVF9LSFIgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKyAgICAgICAgU1VCR1JPVVBfRkVBVFVSRV9WT1RFX0JJVF9LSFIgICAgICAgICAgICAgICAweDAwMDAwMDAyCisgICAgICAgIFNVQkdST1VQX0ZFQVRVUkVfQVJJVEhNRVRJQ19CSVRfS0hSICAgICAgICAgMHgwMDAwMDAwNAorICAgICAgICBTVUJHUk9VUF9GRUFUVVJFX0JBTExPVF9CSVRfS0hSICAgICAgICAgICAgIDB4MDAwMDAwMDgKKyAgICAgICAgU1VCR1JPVVBfRkVBVFVSRV9TSFVGRkxFX0JJVF9LSFIgICAgICAgICAgICAweDAwMDAwMDEwCisgICAgICAgIFNVQkdST1VQX0ZFQVRVUkVfU0hVRkZMRV9SRUxBVElWRV9CSVRfS0hSICAgMHgwMDAwMDAyMAorICAgICAgICBTVUJHUk9VUF9GRUFUVVJFX0NMVVNURVJFRF9CSVRfS0hSICAgICAgICAgIDB4MDAwMDAwNDAKKyAgICAgICAgU1VCR1JPVVBfRkVBVFVSRV9RVUFEX0JJVF9LSFIgICAgICAgICAgICAgICAweDAwMDAwMDgwCisKKworTW9kaWZpY2F0aW9ucyB0byB0aGUgT3BlbkdMIDQuNiBTcGVjaWZpY2F0aW9uIChDb3JlIFByb2ZpbGUpCisKK0FkZCBhIG5ldyBDaGFwdGVyIFNHLCAiU3ViZ3JvdXBzIgorCisgICAgQSBzdWJncm91cCBpcyBhIHNldCBvZiBpbnZvY2F0aW9ucyB0aGF0IGNhbiBzeW5jaHJvbml6ZSBhbmQgc2hhcmUgZGF0YQorICAgIHdpdGggZWFjaCBvdGhlciBlZmZpY2llbnRseS4gQW4gaW52b2NhdGlvbiBncm91cCBpcyBwYXJ0aXRpb25lZCBpbnRvCisgICAgb25lIG9yIG1vcmUgc3ViZ3JvdXBzLgorCisgICAgU3ViZ3JvdXAgb3BlcmF0aW9ucyBhcmUgZGl2aWRlZCBpbnRvIHZhcmlvdXMgY2F0ZWdvcmllcyBhcyBkZXNjcmliZWQKKyAgICBieSBTVUJHUk9VUF9TVVBQT1JURURfRkVBVFVSRVNfS0hSLgorCisgICAgU0cuMSBTdWJncm91cCBPcGVyYXRpb25zCisKKyAgICBTdWJncm91cCBvcGVyYXRpb25zIGFyZSBkaXZpZGVkIGludG8gYSBudW1iZXIgb2YgY2F0ZWdvcmllcyBhcworICAgIGRlc2NyaWJlZCBpbiB0aGlzIHNlY3Rpb24uCisKKyAgICBTRy4xLjEgQmFzaWMgU3ViZ3JvdXAgT3BlcmF0aW9ucworCisgICAgVGhlIGJhc2ljIHN1Ymdyb3VwIG9wZXJhdGlvbnMgYWxsb3cgdHdvIGNsYXNzZXMgb2YgZnVuY3Rpb25hbGl0eSB3aXRoaW4KKyAgICBzaGFkZXJzIC0gZWxlY3QgYW5kIGJhcnJpZXIuIEludm9jYXRpb25zIHdpdGhpbiBhIHN1Ymdyb3VwIGNhbiBjaG9vc2UgYQorICAgIHNpbmdsZSBpbnZvY2F0aW9uIHRvIHBlcmZvcm0gc29tZSB0YXNrIGZvciB0aGUgc3ViZ3JvdXAgYXMgYSB3aG9sZSB1c2luZworICAgIGVsZWN0LiBJbnZvY2F0aW9ucyB3aXRoaW4gYSBzdWJncm91cCBjYW4gcGVyZm9ybSBhIHN1Ymdyb3VwIGJhcnJpZXIgdG8KKyAgICBlbnN1cmUgdGhlIG9yZGVyaW5nIG9mIGV4ZWN1dGlvbiBvciBtZW1vcnkgYWNjZXNzZXMgd2l0aGluIGEgc3ViZ3JvdXAuCisgICAgQmFycmllcnMgY2FuIGJlIHBlcmZvcm1lZCBvbiBidWZmZXIgbWVtb3J5IGFjY2Vzc2VzLCBzaGFyZWQgbWVtb3J5CisgICAgYWNjZXNzZXMsIGFuZCBpbWFnZSBtZW1vcnkgYWNjZXNzZXMgdG8gZW5zdXJlIHRoYXQgYW55IHJlc3VsdHMgd3JpdHRlbiBhcmUKKyAgICB2aXNpYmxlIGJ5IG90aGVyIGludm9jYXRpb25zIHdpdGhpbiB0aGUgc3ViZ3JvdXAuIEEgX3N1Ymdyb3VwQmFycmllcl8gY2FuCisgICAgYWxzbyBiZSB1c2VkIHRvIHBlcmZvcm0gYSBmdWxsIGV4ZWN1dGlvbiBjb250cm9sIGJhcnJpZXIuIEEgZnVsbCBleGVjdXRpb24KKyAgICBjb250cm9sIGJhcnJpZXIgd2lsbCBlbnN1cmUgdGhhdCBlYWNoIGFjdGl2ZSBpbnZvY2F0aW9uIHdpdGhpbiB0aGUKKyAgICBzdWJncm91cCByZWFjaGVzIGEgcG9pbnQgb2YgZXhlY3V0aW9uIGJlZm9yZSBhbnkgYXJlIGFsbG93ZWQgdG8gY29udGludWUuCisKKyAgICBTRy4xLjIgVm90ZSBTdWJncm91cCBPcGVyYXRpb25zCisKKyAgICBUaGUgdm90ZSBzdWJncm91cCBvcGVyYXRpb25zIGFsbG93IGludm9jYXRpb25zIHdpdGhpbiBhIHN1Ymdyb3VwIHRvCisgICAgY29tcGFyZSB2YWx1ZXMgYWNyb3NzIGEgc3ViZ3JvdXAuIFRoZSB0eXBlcyBvZiB2b3RlcyBlbmFibGVkIGFyZToKKworICAgICogRG8gYWxsIGFjdGl2ZSBzdWJncm91cCBpbnZvY2F0aW9ucyBhZ3JlZSB0aGF0IGFuIGV4cHJlc3Npb24gaXMgdHJ1ZT8KKyAgICAqIERvIGFueSBhY3RpdmUgc3ViZ3JvdXAgaW52b2NhdGlvbnMgZXZhbHVhdGUgYW4gZXhwcmVzc2lvbiB0byB0cnVlPworICAgICogRG8gYWxsIGFjdGl2ZSBzdWJncm91cCBpbnZvY2F0aW9ucyBoYXZlIHRoZSBzYW1lIHZhbHVlIG9mIGFuIGV4cHJlc3Npb24/CisKKyAgICBOb3RlOgorICAgIFRoZXNlIG9wZXJhdGlvbnMgYXJlIHVzZWZ1bCBpbiBjb21iaW5hdGlvbiB3aXRoIGNvbnRyb2wgZmxvdyBpbiB0aGF0CisgICAgdGhleSBhbGxvdyBmb3IgZGV2ZWxvcGVycyB0byBjaGVjayB3aGV0aGVyIGNvbmRpdGlvbnMgbWF0Y2ggYWNyb3NzIHRoZQorICAgIHN1Ymdyb3VwIGFuZCBjaG9vc2UgcG90ZW50aWFsbHkgZmFzdGVyIGNvZGUtcGF0aHMgaW4gdGhlc2UgY2FzZXMuCisKKyAgICBTRy4xLjMgQXJpdGhtZXRpYyBTdWJncm91cCBPcGVyYXRpb25zCisKKyAgICBUaGUgYXJpdGhtZXRpYyBzdWJncm91cCBvcGVyYXRpb25zIGFsbG93IGludm9jYXRpb25zIHRvIHBlcmZvcm0gc2NhbgorICAgIGFuZCByZWR1Y3Rpb24gb3BlcmF0aW9ucyBhY3Jvc3MgYSBzdWJncm91cC4gRm9yIHJlZHVjdGlvbiBvcGVyYXRpb25zLAorICAgIGVhY2ggaW52b2NhdGlvbiBpbiBhIHN1Ymdyb3VwIHdpbGwgb2J0YWluIHRoZSBzYW1lIHJlc3VsdCBvZiB0aGVzZQorICAgIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBhcHBsaWVkIGFjcm9zcyB0aGUgc3ViZ3JvdXAuIEZvciBzY2FuIG9wZXJhdGlvbnMsCisgICAgZWFjaCBpbnZvY2F0aW9uIGluIHRoZSBzdWJncm91cCB3aWxsIHBlcmZvcm0gYW4gaW5jbHVzaXZlIG9yIGV4Y2x1c2l2ZQorICAgIHNjYW4sIGN1bXVsYXRpdmVseSBhcHBseWluZyB0aGUgb3BlcmF0aW9uIGFjcm9zcyB0aGUgaW52b2NhdGlvbnMgaW4gYQorICAgIHN1Ymdyb3VwIGluIGFuIGltcGxlbWVudGF0aW9uLWRlZmluZWQgb3JkZXIuIFRoZSBvcGVyYXRpb25zIHN1cHBvcnRlZAorICAgIGFyZSBhZGQsIG11bCwgbWluLCBtYXgsIGFuZCwgb3IsIHhvci4KKworICAgIFNHLjEuNCBCYWxsb3QgU3ViZ3JvdXAgT3BlcmF0aW9ucworCisgICAgVGhlIGJhbGxvdCBzdWJncm91cCBvcGVyYXRpb25zIGFsbG93IGludm9jYXRpb25zIHRvIHBlcmZvcm0gbW9yZQorICAgIGNvbXBsZXggdm90ZXMgYWNyb3NzIHRoZSBzdWJncm91cC4gVGhlIGJhbGxvdCBmdW5jdGlvbmFsaXR5IGFsbG93cworICAgIGFsbCBpbnZvY2F0aW9ucyB3aXRoaW4gYSBzdWJncm91cCB0byBwcm92aWRlIGEgYm9vbGVhbiB2YWx1ZSBhbmQgZ2V0CisgICAgYXMgYSByZXN1bHQgd2hhdCBlYWNoIGludm9jYXRpb24gcHJvdmlkZWQgYXMgdGhlaXIgYm9vbGVhbiB2YWx1ZS4gVGhlCisgICAgYnJvYWRjYXN0IGZ1bmN0aW9uYWxpdHkgYWxsb3dzIHZhbHVlcyB0byBiZSBicm9hZGNhc3QgZnJvbSBhbgorICAgIGludm9jYXRpb24gdG8gYWxsIG90aGVyIGludm9jYXRpb25zIHdpdGhpbiB0aGUgc3ViZ3JvdXAsIGdpdmVuIHRoYXQKKyAgICB0aGUgaW52b2NhdGlvbiB0byBiZSBicm9hZGNhc3QgZnJvbSBpcyBrbm93biBhdCBzaGFkZXIgY29tcGlsYXRpb24KKyAgICB0aW1lLgorCisgICAgU0cuMS41IFNodWZmbGUgU3ViZ3JvdXAgT3BlcmF0aW9ucworCisgICAgVGhlIHNodWZmbGUgc3ViZ3JvdXAgb3BlcmF0aW9ucyBhbGxvdyBpbnZvY2F0aW9ucyB0byByZWFkIHZhbHVlcyBmcm9tCisgICAgb3RoZXIgaW52b2NhdGlvbnMgd2l0aGluIGEgc3ViZ3JvdXAuCisKKyAgICBTRy4xLjYgU2h1ZmZsZSBSZWxhdGl2ZSBTdWJncm91cCBPcGVyYXRpb25zCisKKyAgICBUaGUgc2h1ZmZsZSByZWxhdGl2ZSBzdWJncm91cCBvcGVyYXRpb25zIGFsbG93IGludm9jYXRpb25zIHRvIHJlYWQKKyAgICB2YWx1ZXMgZnJvbSBvdGhlciBpbnZvY2F0aW9ucyB3aXRoaW4gdGhlIHN1Ymdyb3VwIHJlbGF0aXZlIHRvIHRoZQorICAgIGN1cnJlbnQgaW52b2NhdGlvbiBpbiB0aGUgZ3JvdXAuIFRoZSByZWxhdGl2ZSBvcGVyYXRpb25zIHN1cHBvcnRlZAorICAgIGFsbG93IGRhdGEgdG8gYmUgc2hpZnRlZCB1cCBhbmQgZG93biB0aHJvdWdoIHRoZSBpbnZvY2F0aW9ucyB3aXRoaW4KKyAgICBhIHN1Ymdyb3VwLgorCisgICAgU0cuMS43IENsdXN0ZXJlZCBTdWJncm91cCBPcGVyYXRpb25zCisKKyAgICBUaGUgY2x1c3RlcmVkIHN1Ymdyb3VwIG9wZXJhdGlvbnMgYWxsb3cgaW52b2NhdGlvbnMgdG8gcGVyZm9ybQorICAgIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBhbW9uZyBwYXJ0aXRpb25zIG9mIGEgc3ViZ3JvdXAsIHN1Y2ggdGhhdCB0aGUKKyAgICBvcGVyYXRpb24gaXMgb25seSBwZXJmb3JtZWQgd2l0aGluIHRoZSBzdWJncm91cCBpbnZvY2F0aW9ucyB3aXRoaW4gYQorICAgIHBhcnRpdGlvbi4gVGhlIHBhcnRpdGlvbnMgZm9yIGNsdXN0ZXJlZCBzdWJncm91cCBvcGVyYXRpb25zIGFyZQorICAgIGNvbnNlY3V0aXZlIHBvd2VyLW9mLXR3byBzaXplIGdyb3VwcyBvZiBpbnZvY2F0aW9ucyBhbmQgdGhlIGNsdXN0ZXIgc2l6ZQorICAgIG11c3QgYmUga25vd24gYXQgY29tcGlsYXRpb24gdGltZS4gVGhlIG9wZXJhdGlvbnMgc3VwcG9ydGVkIGFyZQorICAgIGFkZCwgbXVsLCBtaW4sIG1heCwgYW5kLCBvciwgeG9yLgorCisgICAgU0cuMS44IFF1YWQgU3ViZ3JvdXAgT3BlcmF0aW9ucworCisgICAgVGhlIHF1YWQgc3ViZ3JvdXAgb3BlcmF0aW9ucyBhbGxvdyBjbHVzdGVycyBvZiA0IGludm9jYXRpb25zIChhIHF1YWQpLAorICAgIHRvIHNoYXJlIGRhdGEgZWZmaWNpZW50bHkgd2l0aCBlYWNoIG90aGVyLiBGb3IgZnJhZ21lbnQgc2hhZGVycywgaWYgdGhlCisgICAgdmFsdWUgb2YgU1VCR1JPVVBfU0laRV9LSFIgaXMgYXQgbGVhc3QgNCwgZWFjaCBxdWFkIGNvcnJlc3BvbmRzIHRvIG9uZQorICAgIG9mIHRoZSBncm91cHMgb2YgZm91ciBzaGFkZXIgaW52b2NhdGlvbnMgdXNlZCBmb3IgZGVyaXZhdGl2ZXMuIFRoZSBvcmRlcgorICAgIGluIHdoaWNoIHRoZSBmcmFnbWVudHMgYXBwZWFyIHdpdGhpbiB0aGUgcXVhZCBpcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkLgorCisgICAgTm90ZToKKyAgICBJbiBPcGVuR0wgYW5kIE9wZW5HTCBFUywgdGhlIG9yZGVyIG9mIGludm9jYXRpb25zIHdpdGhpbiBhIHF1YWQgbWF5CisgICAgZGVwZW5kIG9uIHRoZSByZW5kZXJpbmcgb3JpZW50YXRpb24gYW5kIHdoZXRoZXIgcmVuZGVyaW5nIHRvIGEgZnJhbWVidWZmZXIKKyAgICBvYmplY3Qgb3IgdG8gdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIgKHdpbmRvdykuCisKKyAgICBUaGlzIGxhbmd1YWdlIHN1cGVyc2VkZXMgdGhlIHF1YWQgYXJyYW5nZW1lbnQgZGVzY3JpYmVkIGluIHRoZSBHTFNMCisgICAgS0hSX3NoYWRlcl9zdWJncm91cCBkb2N1bWVudC4KKworICAgIFNHLjIgU3ViZ3JvdXAgUXVlcmllcworCisgICAgU0cuMi4xIFN1Ymdyb3VwIFNpemUKKworICAgIFRoZSBzdWJncm91cCBzaXplIGlzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBpbnZvY2F0aW9ucyBpbiBhIHN1Ymdyb3VwLgorICAgIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24tZGVwZW5kZW50IHZhbHVlIHdoaWNoIGNhbiBiZSBvYnRhaW5lZCBieQorICAgIGNhbGxpbmcgR2V0SW50ZWdlcnYgd2l0aCBhIDxwbmFtZT4gb2YgU1VCR1JPVVBfU0laRV9LSFIuIFRoaXMgdmFsdWUKKyAgICBpcyBhbHNvIHByb3ZpZGVkIGluIHRoZSBnbF9TdWJncm91cFNpemUgYnVpbHQtaW4gc2hhZGluZyBsYW5ndWFnZQorICAgIHZhcmlhYmxlLiAgVGhlIHN1Ymdyb3VwIHNpemUgbXVzdCBiZSBhdCBsZWFzdCAxLCBhbmQgbXVzdCBiZSBhIHBvd2VyCisgICAgb2YgMi4gVGhlIG1heGltdW0gbnVtYmVyIG9mIGludm9jYXRpb25zIGFuIGltcGxlbWVudGF0aW9uIGNhbiBzdXBwb3J0CisgICAgcGVyIHN1Ymdyb3VwIGlzIDEyOC4KKworICAgIFNHLjIuMiBTdWJncm91cCBTdXBwb3J0ZWQgU3RhZ2VzCisKKyAgICBTdWJncm91cCBvcGVyYXRpb25zIG1heSBub3QgYmUgc3VwcG9ydGVkIGluIGFsbCBzaGFkZXIgc3RhZ2VzLiBUbworICAgIGRldGVybWluZSB3aGljaCBzaGFkZXIgc3RhZ2VzIHN1cHBvcnQgdGhlIHN1Ymdyb3VwIG9wZXJhdGlvbnMsIGNhbGwKKyAgICBHZXRJbnRlZ2VydiB3aXRoIGEgPHBuYW1lPiBvZiBTVUJHUk9VUF9TVVBQT1JURURfU1RBR0VTX0tIUi4gT24KKyAgICByZXR1cm4sIDxkYXRhPiB3aWxsIGNvbnRhaW4gdGhlIGJpdHdpc2UgT1Igb2YgdGhlICpfU0hBREVSX0JJVCBmbGFncworICAgIGluZGljYXRpbmcgd2hpY2ggb2YgdGhlIHZlcnRleCwgdGVzc2VsbGF0aW9uIGNvbnRyb2wsIHRlc3NlbGxhdGlvbgorICAgIGV2YWx1YXRpb24sIGdlb21ldHJ5LCBmcmFnbWVudCwgYW5kIGNvbXB1dGUgc2hhZGVyIHN0YWdlcyBzdXBwb3J0CisgICAgc3ViZ3JvdXAgb3BlcmF0aW9ucy4gIEFsbCBpbXBsZW1lbnRhdGlvbnMgbXVzdCBzdXBwb3J0IGF0IGxlYXN0CisgICAgQ09NUFVURV9TSEFERVJfQklULgorCisgICAgU0cuMi4zIFN1Ymdyb3VwIFN1cHBvcnRlZCBPcGVyYXRpb25zCisKKyAgICBUbyBkZXRlcm1pbmUgd2hpY2ggc3ViZ3JvdXAgb3BlcmF0aW9ucyBhcmUgc3VwcG9ydGVkIGJ5IGFuCisgICAgaW1wbGVtZW50YXRpb24sIGNhbGwgR2V0SW50ZWdlcnYgd2l0aCBhIDxwbmFtZT4gb2YKKyAgICBTVUJHUk9VUF9TVVBQT1JURURfRkVBVFVSRVNfS0hSLiBPbiByZXR1cm4sIDxkYXRhPiB3aWxsCisgICAgY29udGFpbiB0aGUgYml0d2lzZSBPUiBvZiB0aGUgU1VCR1JPVVBfRkVBVFVSRV8qX0JJVF9LSFIKKyAgICBmbGFncyBpbmRpY2F0aW5nIHdoaWNoIHN1Ymdyb3VwIG9wZXJhdGlvbnMgYXJlIHN1cHBvcnRlZCBieSB0aGUKKyAgICBpbXBsZW1lbnRhdGlvbi4gUG9zc2libGUgdmFsdWVzIGluY2x1ZGU6CisKKyAgICAqIFNVQkdST1VQX0ZFQVRVUkVfQkFTSUNfQklUX0tIUiBpbmRpY2F0ZXMgdGhlIEdMIHN1cHBvcnRzIHNoYWRlcnMKKyAgICAgIHdpdGggdGhlIEtIUl9zaGFkZXJfc3ViZ3JvdXBfYmFzaWMgZXh0ZW5zaW9uIGVuYWJsZWQuIFNlZSBTRy4xLjEuCisKKyAgICAqIFNVQkdST1VQX0ZFQVRVUkVfVk9URV9CSVRfS0hSIGluZGljYXRlcyB0aGUgR0wgc3VwcG9ydHMgc2hhZGVycworICAgICAgd2l0aCB0aGUgS0hSX3NoYWRlcl9zdWJncm91cF92b3RlIGV4dGVuc2lvbiBlbmFibGVkLiBTZWUgU0cuMS4yLgorCisgICAgKiBTVUJHUk9VUF9GRUFUVVJFX0FSSVRITUVUSUNfQklUX0tIUiBpbmRpY2F0ZXMgdGhlIEdMIHN1cHBvcnRzCisgICAgICBzaGFkZXJzIHdpdGggdGhlIEtIUl9zaGFkZXJfc3ViZ3JvdXBfYXJpdGhtZXRpYyBleHRlbnNpb24gZW5hYmxlZC4KKyAgICAgIFNlZSBTRy4xLjMuCisKKyAgICAqIFNVQkdST1VQX0ZFQVRVUkVfQkFMTE9UX0JJVF9LSFIgaW5kaWNhdGVzIHRoZSBHTCBzdXBwb3J0cworICAgICAgc2hhZGVycyB3aXRoIHRoZSBLSFJfc2hhZGVyX3N1Ymdyb3VwX2JhbGxvdCBleHRlbnNpb24gZW5hYmxlZC4KKyAgICAgIFNlZSBTRy4xLjQuCisKKyAgICAqIFNVQkdST1VQX0ZFQVRVUkVfU0hVRkZMRV9CSVRfS0hSIGluZGljYXRlcyB0aGUgR0wgc3VwcG9ydHMKKyAgICAgIHNoYWRlcnMgd2l0aCB0aGUgS0hSX3NoYWRlcl9zdWJncm91cF9zaHVmZmxlIGV4dGVuc2lvbiBlbmFibGVkLgorICAgICAgU2VlIFNHLjEuNS4KKworICAgICogU1VCR1JPVVBfRkVBVFVSRV9TSFVGRkxFX1JFTEFUSVZFX0JJVF9LSFIgaW5kaWNhdGVzIHRoZSBHTAorICAgICAgc3VwcG9ydHMgc2hhZGVycyB3aXRoIHRoZSBLSFJfc2hhZGVyX3N1Ymdyb3VwX3NodWZmbGVfcmVsYXRpdmUKKyAgICAgIGV4dGVuc2lvbiBlbmFibGVkLiBTZWUgU0cuMS42LgorCisgICAgKiBTVUJHUk9VUF9GRUFUVVJFX0NMVVNURVJFRF9CSVRfS0hSIGluZGljYXRlcyB0aGUgR0wgc3VwcG9ydHMKKyAgICAgIHNoYWRlcnMgd2l0aCB0aGUgS0hSX3NoYWRlcl9zdWJncm91cF9jbHVzdGVyZWQgZXh0ZW5zaW9uIGVuYWJsZWQuCisgICAgICBTZWUgU0cuMS43LgorCisgICAgKiBTVUJHUk9VUF9GRUFUVVJFX1FVQURfQklUX0tIUiBpbmRpY2F0ZXMgdGhlIEdMIHN1cHBvcnRzIHNoYWRlcnMKKyAgICAgIHdpdGggdGhlIEdMX0tIUl9zaGFkZXJfc3ViZ3JvdXBfcXVhZCBleHRlbnNpb24gZW5hYmxlZC4gU2VlIFNHLjEuOC4KKworICAgIEFsbCBpbXBsZW1lbnRhdGlvbnMgbXVzdCBzdXBwb3J0IFNVQkdST1VQX0ZFQVRVUkVfQkFTSUNfQklUX0tIUi4KKworICAgIFNHLjIuNCBTdWJncm91cCBRdWFkcyBTdXBwb3J0CisKKyAgICBUbyBkZXRlcm1pbmUgd2hldGhlciBzdWJncm91cCBxdWFkIG9wZXJhdGlvbnMgKFNlZSBTRy4xLjgpIGFyZQorICAgIGF2YWlsYWJsZSBpbiBhbGwgc3RhZ2VzLCBjYWxsIEdldEJvb2xlYW52IHdpdGggYSA8cG5hbWU+IG9mCisgICAgU1VCR1JPVVBfUVVBRF9BTExfU1RBR0VTX0tIUi4gT24gcmV0dXJuLCA8ZGF0YT4gd2lsbCBiZSBUUlVFCisgICAgaWYgc3ViZ3JvdXAgcXVhZCBvcGVyYXRpb25zIGFyZSBzdXBwb3J0ZWQgaW4gYWxsIHNoYWRlciBzdGFnZXMKKyAgICB3aGljaCBzdXBwb3J0IHN1Ymdyb3VwIG9wZXJhdGlvbnMuIEZBTFNFIGlzIHJldHVybmVkIGlmIHN1Ymdyb3VwIHF1YWQKKyAgICBvcGVyYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkLCBvciBpZiB0aGV5IGFyZSByZXN0cmljdGVkIHRvIGZyYWdtZW50CisgICAgYW5kIGNvbXB1dGUgc3RhZ2VzLgorCitNb2RpZmljYXRpb25zIHRvIEFwcGVuZGl4IEMgb2YgdGhlIE9wZW5HTCA0LjYgKENvcmUgUHJvZmlsZSkgU3BlY2lmaWNhdGlvbgorKFRoZSBPcGVuR0wgU1BJUi1WIEV4ZWN1dGlvbiBFbnZpcm9ubWVudCkKKworICAgIE1vZGlmaWNhdGlvbnMgdG8gc2VjdGlvbiBDLjEgKFJlcXVpcmVkIFZlcnNpb25zIGFuZCBGb3JtYXRzKSBbcDY2MV0KKworICAgICAgUmVwbGFjZSB0aGUgZmlyc3Qgc2VudGVuY2Ugd2l0aCB0aGUgZm9sbG93aW5nOgorCisgICAgICAgICJJbXBsZW1lbnRhdGlvbnMgbXVzdCBzdXBwb3J0IHRoZSAxLjAgYW5kIDEuMyB2ZXJzaW9ucyBvZiBTUElSLVYKKyAgICAgICAgYW5kIHRoZSAxLjAgdmVyc2lvbiBvZiB0aGUgU1BJUi1WIEV4dGVuZGVkIEluc3RydWN0aW9ucworICAgICAgICBmb3IgdGhlIE9wZW5HTCBTaGFkaW5nIExhbmd1YWdlIChzZWUgc2VjdGlvbiAxLjMuNCkuIgorCisgICAgTW9kaWZpY2F0aW9ucyB0byBzZWN0aW9uIEMuMiAoVmFsaWQgU1BJUi1WIEJ1aWx0LUluIFZhcmlhYmxlCisgICAgRGVjb3JhdGlvbnMpIFs2NjFdCisKKyAgICAgIEFkZCB0aGUgZm9sbG93aW5nIHJvd3MgdG8gVGFibGUgQy4xIChCdWlsdC1pbiBWYXJpYWJsZSBEZWNvcmF0aW9ucykKKworICAgICAgICBOdW1TdWJncm91cHMgICAgICAgICAgICAoaWYgU1VCR1JPVVBfRkVBVFVSRV9CQVNJQ19CSVRfS0hSIGlzIHN1cHBvcnRlZCkKKyAgICAgICAgU3ViZ3JvdXBJZCAgICAgICAgICAgICAgKGlmIFNVQkdST1VQX0ZFQVRVUkVfQkFTSUNfQklUX0tIUiBpcyBzdXBwb3J0ZWQpCisgICAgICAgIFN1Ymdyb3VwU2l6ZSAgICAgICAgICAgIChpZiBTVUJHUk9VUF9GRUFUVVJFX0JBU0lDX0JJVF9LSFIgaXMgc3VwcG9ydGVkKQorICAgICAgICBTdWJncm91cExvY2FsSW52b2NhdGlvbklkIChpZiBTVUJHUk9VUF9GRUFUVVJFX0JBU0lDX0JJVF9LSFIgaXMgc3VwcG9ydGVkKQorICAgICAgICBTdWJncm91cEVxTWFzayAgICAgICAgICAoaWYgU1VCR1JPVVBfRkVBVFVSRV9CQUxMT1RfQklUX0tIUiBpcyBzdXBwb3J0ZWQpCisgICAgICAgIFN1Ymdyb3VwR2VNYXNrICAgICAgICAgIChpZiBTVUJHUk9VUF9GRUFUVVJFX0JBTExPVF9CSVRfS0hSIGlzIHN1cHBvcnRlZCkKKyAgICAgICAgU3ViZ3JvdXBHdE1hc2sgICAgICAgICAgKGlmIFNVQkdST1VQX0ZFQVRVUkVfQkFMTE9UX0JJVF9LSFIgaXMgc3VwcG9ydGVkKQorICAgICAgICBTdWJncm91cExlTWFzayAgICAgICAgICAoaWYgU1VCR1JPVVBfRkVBVFVSRV9CQUxMT1RfQklUX0tIUiBpcyBzdXBwb3J0ZWQpCisgICAgICAgIFN1Ymdyb3VwTHRNYXNrICAgICAgICAgIChpZiBTVUJHUk9VUF9GRUFUVVJFX0JBTExPVF9CSVRfS0hSIGlzIHN1cHBvcnRlZCkKKworICAgIEFkZGl0aW9ucyB0byBzZWN0aW9uIEMuMyAoVmFsaWQgU1BJUi1WIENhcGFiaWxpdGllcyk6CisKKyAgICBBZGQgdGhlIGZvbGxvd2luZyByb3dzIHRvIFRhYmxlIEMuMiAoVmFsaWQgU1BJUi1WIENhcGFiaWxpdGllcyk6CisKKyAgICAgICAgR3JvdXBOb25Vbmlmb3JtICAgICAgICAgICAgICAgIChpZiBTVUJHUk9VUF9GRUFUVVJFX0JBU0lDX0JJVF9LSFIgaXMgc3VwcG9ydGVkKQorICAgICAgICBHcm91cE5vblVuaWZvcm1Wb3RlICAgICAgICAgICAgKGlmIFNVQkdST1VQX0ZFQVRVUkVfVk9URV9CSVRfS0hSIGlzIHN1cHBvcnRlZCkKKyAgICAgICAgR3JvdXBOb25Vbmlmb3JtQXJpdGhtZXRpYyAgICAgIChpZiBTVUJHUk9VUF9GRUFUVVJFX0FSSVRITUVUSUNfQklUX0tIUiBpcyBzdXBwb3J0ZWQpCisgICAgICAgIEdyb3VwTm9uVW5pZm9ybUJhbGxvdCAgICAgICAgICAoaWYgU1VCR1JPVVBfRkVBVFVSRV9CQUxMT1RfQklUX0tIUiBpcyBzdXBwb3J0ZWQpCisgICAgICAgIEdyb3VwTm9uVW5pZm9ybVNodWZmbGUgICAgICAgICAoaWYgU1VCR1JPVVBfRkVBVFVSRV9TSFVGRkxFX0JJVF9LSFIgaXMgc3VwcG9ydGVkKQorICAgICAgICBHcm91cE5vblVuaWZvcm1TaHVmZmxlUmVsYXRpdmUgKGlmIFNVQkdST1VQX0ZFQVRVUkVfU0hVRkZMRV9SRUxBVElWRV9CSVRfS0hSIGlzIHN1cHBvcnRlZCkKKyAgICAgICAgR3JvdXBOb25Vbmlmb3JtQ2x1c3RlcmVkICAgICAgIChpZiBTVUJHUk9VUF9GRUFUVVJFX0NMVVNURVJFRF9CSVRfS0hSIGlzIHN1cHBvcnRlZCkKKyAgICAgICAgR3JvdXBOb25Vbmlmb3JtUXVhZCAgICAgICAgICAgIChpZiBTVUJHUk9VUF9GRUFUVVJFX1FVQURfQklUX0tIUiBpcyBzdXBwb3J0ZWQpCisKKyAgICBBZGRpdGlvbnMgdG8gc2VjdGlvbiBDLjQgKFZhbGlkYXRpb24gUnVsZXMpOgorCisgICAgICBNYWtlIHRoZSBmb2xsb3dpbmcgY2hhbmdlcyB0byB0aGUgdmFsaWRhdGlvbiBydWxlczoKKworICAgICAgICBBZGQgKlN1Ymdyb3VwKiB0byB0aGUgbGlzdCBvZiBhY2NlcHRhYmxlIHNjb3BlcyBmb3IgbWVtb3J5LgorCisgICAgICBBZGQ6CisKKyAgICAgICAgKlNjb3BlKiBmb3IgKk5vbiBVbmlmb3JtIEdyb3VwIE9wZXJhdGlvbnMqIG11c3QgYmUgbGltaXRlZCB0bzoKKyAgICAgICAgICAtICpTdWJncm91cCoKKworICAgICAgICAqIElmIE9wQ29udHJvbEJhcnJpZXIgaXMgdXNlZCBpbiBmcmFnbWVudCwgdmVydGV4LCB0ZXNzZWxsYXRpb24KKyAgICAgICAgICAgZXZhbHVhdGlvbiwgb3IgZ2VvbWV0cnkgc3RhZ2VzLCB0aGUgZXhlY3V0aW9uIFNjb3BlIG11c3QgYmUKKyAgICAgICAgICAgKlN1Ymdyb3VwKi4KKworICAgICAgICAqICJgUmVzdWx0IFR5cGVgIiBmb3IgKk5vbiBVbmlmb3JtIEdyb3VwIE9wZXJhdGlvbnMqIG11c3QgYmUKKyAgICAgICAgICBsaW1pdGVkIHRvIDMyLWJpdCBmbG9hdCwgMzItYml0IGludGVnZXIsIGJvb2xlYW4sIG9yIHZlY3RvcnMKKyAgICAgICAgICBvZiB0aGVzZSB0eXBlcy4gSWYgdGhlIEZsb2F0NjQgY2FwYWJpbGl0eSBpcyBlbmFibGVkLCBkb3VibGUKKyAgICAgICAgICBhbmQgdmVjdG9ycyBvZiBkb3VibGUgdHlwZXMgYXJlIGFsc28gcGVybWl0dGVkLgorCisgICAgICAgICogSWYgT3BHcm91cE5vblVuaWZvcm1CYWxsb3RCaXRDb3VudCBpcyB1c2VkLCB0aGUgZ3JvdXAgb3BlcmF0aW9uCisgICAgICAgICAgbXVzdCBiZSBvbmUgb2Y6CisgICAgICAgICAgLSAqUmVkdWNlKgorICAgICAgICAgIC0gKkluY2x1c2l2ZVNjYW4qCisgICAgICAgICAgLSAqRXhjbHVzaXZlU2NhbioKKworICAgICAgQWRkIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zIChkaXNhbGxvd2luZyBTUElSLVYgMS4xLCAxLjIsIGFuZAorICAgICAgMS4zIGZlYXR1cmVzIG5vdCByZWxhdGVkIHRvIHN1Ymdyb3Vwcyk7CisKKyAgICAgICAgKiBUaGUgKkxvY2FsU2l6ZUlkKiBFeGVjdXRpb24gTW9kZSBtdXN0IG5vdCBiZSB1c2VkLgorCisgICAgICAgIFtbSWYgU1BWX0tIUl9zdG9yYWdlX2J1ZmZlcl9zdG9yYWdlX2NsYXNzIGlzIG5vdCBzdXBwb3J0ZWRdXQorICAgICAgICAqIFRoZSAqU3RvcmFnZUJ1ZmZlciogU3RvcmFnZSBDbGFzcyBtdXN0IG5vdCBiZSB1c2VkLgorCisgICAgICAgICogVGhlICpEZXBlbmRlbmN5SW5maW5pdGUqIGFuZCAqRGVwZW5kZW5jeUxlbmd0aCogTG9vcCBDb250cm9sCisgICAgICAgICAgbWFza3MgbXVzdCBub3QgYmUgdXNlZC4KKworICAgICAgICBbW0lmIFNQVl9LSFJfc2hhZGVyX2RyYXdfcGFyYW1ldGVycyBvciBPcGVuR0wgNC42IGlzIG5vdCBzdXBwb3J0ZWRdXQorICAgICAgICAqIFRoZSAqRHJhd1BhcmFtZXRlcnMqIENhcGFiaWxpdHkgbXVzdCBub3QgYmUgdXNlZC4KKworICAgICAgICAqIFRoZSAqU3RvcmFnZUJ1ZmZlcjE2Qml0QWNjZXNzKiwgKlVuaWZvcm1BbmRTdG9yYWdlQnVmZmVyMTZCaXRBY2Nlc3MqLAorICAgICAgICAgICpTdG9yYWdlUHVzaENvbnN0YW50MTYqLCAqU3RvcmFnZUlucHV0T3V0cHV0MTYqIENhcGFiaWxpdGllcyBtdXN0CisgICAgICAgICAgbm90IGJlIHVzZWQuCisKKyAgICAgICAgKiBUaGUgKkRldmljZUdyb3VwKiwgKk11bHRpVmlldyosICpWYXJpYWJsZVBvaW50ZXJzU3RvcmFnZUJ1ZmZlciosIGFuZAorICAgICAgICAgICpWYXJpYWJsZVBvaW50ZXJzKiBDYXBhYmlsaXRpZXMgbXVzdCBub3QgYmUgdXNlZC4KKworICAgICAgICAqIFRoZSAqT3BNb2R1bGVQcm9jZXNzZWQqLCAqT3BEZWNvcmF0ZUlkKiwgYW5kICpPcEV4ZWN1dGlvbk1vZGVJZCoKKyAgICAgICAgICBJbnN0cnVjdGlvbnMgbXVzdCBub3QgYmUgdXNlZC4KKworTW9kaWZpY2F0aW9ucyB0byB0aGUgT3BlbkdMIFNoYWRpbmcgTGFuZ3VhZ2UgU3BlY2lmaWNhdGlvbiwgVmVyc2lvbiA0LjYwCisKKyAgICBTZWUgdGhlIHNlcGFyYXRlIEtIUl9zaGFkZXJfc3ViZ3JvdXAgR0xTTCBkb2N1bWVudC4KKyAgICBodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL0dMU0wvYmxvYi9tYXN0ZXIvZXh0ZW5zaW9ucy9raHIvR0xfS0hSX3NoYWRlcl9zdWJncm91cC50eHQKKworRGVwZW5kZW5jaWVzIG9uIEFSQl9nbF9zcGlydiBhbmQgT3BlbkdMIDQuNgorCisgICAgSWYgQVJCX2dsX3NwaXJ2IG9yIE9wZW5HTCA0LjYgYXJlIG5vdCBzdXBwb3J0ZWQsIGlnbm9yZSBhbGwKKyAgICByZWZlcmVuY2VzIHRvIFNQSVItViBmdW5jdGlvbmFsaXR5LgorCitEZXBlbmRlbmNpZXMgb24gQVJCX3NwaXJ2X2V4dGVuc2lvbnMgYW5kIE9wZW5HTCA0LjYKKworICAgIElmIEFSQl9zcGlydl9leHRlbnNpb25zIG9yIE9wZW5HTCA0LjYgYXJlIG5vdCBzdXBwb3J0ZWQsIGlnbm9yZQorICAgIHJlZmVyZW5jZXMgdG8gdGhlIGFiaWxpdHkgdG8gYWR2ZXJ0aXNlIGFkZGl0aW9uYWwgU1BJUi1WIGV4dGVuc2lvbnMuCisKK0RlcGVuZGVuY2llcyBvbiBPcGVuR0wgRVMgMy54CisKKyAgICBJZiBpbXBsZW1lbnRlZCBpbiBPcGVuR0wgRVMsIGlnbm9yZSBhbGwgcmVmZXJlbmNlcyB0byBTUElSLVYgYW5kIHRvCisgICAgR0xTTCBidWlsdC1pbiBmdW5jdGlvbnMgd2hpY2ggdXRpbGl6ZSB0aGUgZ2VuRFR5cGUgKGRvdWJsZSkgdHlwZXMuCisKK0RlcGVuZGVuY2llcyBvbiBBUkJfc2hhZGVyX2RyYXdfcGFyYW1ldGVycyBhbmQgU1BWX0tIUl9zaGFkZXJfZHJhd19wYXJhbWV0ZXJzCisKKyAgICBJZiBuZWl0aGVyIE9wZW5HTCA0LjYsIG5vciBBUkJfc2hhZGVyX2RyYXdfcGFyYW1ldGVycyBhbmQKKyAgICBTUFZfS0hSX3NoYWRlcl9kcmF3X3BhcmFtZXRlcnMgYXJlIHN1cHBvcnRlZCwgdGhlICpEcmF3UGFyYW1ldGVycyoKKyAgICBDYXBhYmlsaXR5IGlzIG5vdCBzdXBwb3J0ZWQuCisKK0RlcGVuZGVuY2llcyBvbiBTUFZfS0hSX3N0b3JhZ2VfYnVmZmVyX3N0b3JhZ2VfY2xhc3MKKworICAgIElmIFNQVl9LSFJfc3RvcmFnZV9idWZmZXJfc3RvcmFnZV9jbGFzcyBpcyBub3Qgc3VwcG9ydGVkLCB0aGUKKyAgICAqU3RvcmFnZUJ1ZmZlciogU3RvcmFnZSBDbGFzcyBtdXN0IG5vdCBiZSB1c2VkLgorCitBZGRpdGlvbnMgdG8gdGhlIEFHTC9HTFgvV0dMIFNwZWNpZmljYXRpb25zCisKKyAgICBOb25lCisKK0Vycm9ycworCisgICAgTm9uZQorCitOZXcgU3RhdGUKKworICAgIE5vbmUKKworTmV3IEltcGxlbWVudGF0aW9uIERlcGVuZGVudCBTdGF0ZQorCisgICAgQWRkaXRpb25zIHRvIHRhYmxlIDIuNTMgLSBJbXBsZW1lbnRhdGlvbiBEZXBlbmRlbnQgVmFsdWVzCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5pbXVtCisgICAgR2V0IFZhbHVlICAgICAgICAgICAgICAgIFR5cGUgIEdldCBDb21tYW5kICAgICAgVmFsdWUgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICBTZWMuCisgICAgLS0tLS0tLS0tICAgICAgICAgICAgICAgIC0tLS0tIC0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgICAtLS0tLS0KKyAgICBTVUJHUk9VUF9TSVpFX0tIUiAgICAgICAgWisgICAgR2V0SW50ZWdlcnYgICAgICAxICAgICAgIE5vLiBvZiBpbnZvY2F0aW9ucyBpbiAgICAgICAgIFNHLjIuMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFjaCBzdWJncm91cAorCisgICAgU1VCR1JPVVBfU1VQUE9SVEVEXyAgICAgIEUgICAgIEdldEludGVnZXJ2ICAgICAgU2VjICAgICBCaXRmaWVsZCBvZiBzdGFnZXMgdGhhdCAgICAgICBTRy4yLjIKKyAgICAgIFNUQUdFU19LSFIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRy4yLjIgIHN1Ymdyb3VwcyBhcmUgc3VwcG9ydGVkIGluCisKKyAgICBTVUJHUk9VUF9TVVBQT1JURURfICAgICAgRSAgICAgR2V0SW50ZWdlcnYgICAgICBTZWMgICAgIEJpdGZpZWxkIG9mIHN1Ymdyb3VwICAgICAgICAgIFNHLjIuMworICAgICAgRkVBVFVSRVNfS0hSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNHLjIuMyAgb3BlcmF0aW9ucyBzdXBwb3J0ZWQKKworICAgIFNVQkdST1VQX1FVQURfICAgICAgICAgICBCICAgICBHZXRCb29sZWFudiAgICAgIC0gICAgICAgUXVhZCBzdWJncm91cHMgc3VwcG9ydGVkICAgICAgU0cuMi40CisgICAgICBBTExfU1RBR0VTX0tIUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhbGwgc3RhZ2VzCisKK0lzc3VlcworCisgICAgMS4gV2hhdCBzaG91bGQgd2UgbmFtZSB0aGlzIGV4dGVuc2lvbj8KKworICAgICAgIERJU0NVU1NJT04uIFdlIHdpbGwgdXNlIHRoZSBzYW1lIG5hbWUgYXMgdGhlIEdMU0wgZXh0ZW5zaW9uCisgICAgICAgaW4gb3JkZXIgdG8gbWluaW1pemUgY29uZnVzaW9uLiBUaGlzIGhhcyBiZWVuIGRvbmUgZm9yIG90aGVyCisgICAgICAgZXh0ZW5zaW9ucyBhbmQgcGVvcGxlIHNlZW0gdG8gaGF2ZSBmaWd1cmVkIGl0IG91dC4gT3RoZXIKKyAgICAgICBvcHRpb25zIGNvbnNpZGVyZWQ6IEtIUl9zdWJncm91cHMsIEtIUl9zaGFkZXJfc3ViZ3JvdXBfb3BlcmF0aW9ucywKKyAgICAgICBLSFJfc3ViZ3JvdXBfb3BlcmF0aW9ucy4KKworICAgICAgIFJFU09MVkVEOiB1c2UgS0hSX3NoYWRlcl9zdWJncm91cCB0byBtYXRjaCB0aGUgR0xTTCBleHRlbnNpb24uCisKKyAgICAyLiBXaGF0IHNob3VsZCBoYXBwZW4gaWYgc3ViZ3JvdXAgb3BlcmF0aW9ucyBhcmUgYXR0ZW1wdGVkIG9uCisgICAgICAgdW5zdXBwb3J0ZWQgc3RhZ2VzPworCisgICAgICAgRElTQ1VTU0lPTjogVGhlcmUgYXJlIGJhc2ljYWxseSB0d28gb3B0aW9ucworICAgICAgICAgQS4gY29tcGlsZSBvciBsaW5rLXRpbWUgZXJyb3I/CisgICAgICAgICBCLiBkcmF3IHRpbWUgaW52YWxpZF9vcCBlcnJvcj8KKyAgICAgICBTZWVtcyBsaWtlIE9wdGlvbiAoQSkgd291bGQgYmUgbW9yZSB1c2VyIGZyaWVuZGx5LCBhbmQgdGhlcmUgZG9lc24ndAorICAgICAgIHNlZW0gdG8gYmUgbXVjaCBwb2ludCBpbiByZXF1aXJpbmcgYW4gaW1wbGVtZW50YXRpb24gdG8KKyAgICAgICBzdXBwb3J0IGNvbXBpbGluZyB0aGUgZnVuY3Rpb25hbGl0eSBpbiBzdGFnZXMgdGhleSB3b24ndCB3b3JrIGluLgorICAgICAgIFR5cGljYWxseSB0aGlzIHNob3VsZCBiZSBkZXRlY3RhYmxlIGJ5IGFuIGltcGxlbWVudGF0aW9uIGF0IGNvbXBpbGUKKyAgICAgICB0aW1lIHNpbmNlIHRoaXMgd2lsbCBqdXN0IHJlcXVpcmUgdGhlbSB0byByZWplY3Qgc2hhZGVycyB3aXRoCisgICAgICAgI2V4dGVuc2lvbiBHTF9LSFJfc2hhZGVyX3N1Ymdyb3VwKiBpbiBzaGFkZXIgc3RhZ2VzIHRoYXQgdGhleSBkb24ndAorICAgICAgIHN1cHBvcnQuIEhvd2V2ZXIsIGZvciBTUElSLVYgaW1wbGVtZW50YXRpb25zLCB0aGlzIG1heSBoYXBwZW4gYXQKKyAgICAgICBsb3dlcmluZyB0aW1lLCBzbyBpdCBtYXkgaGFwcGVuIGF0IGVpdGhlciBjb21waWxlIG9yIGxpbmstdGltZS4KKworICAgICAgIFJFU09MVkVEOiBDb21waWxlIG9yIGxpbmstdGltZSBlcnJvci4KKworICAgIDMuIEhvdyBzaG91bGQgd2UgZW5hYmxlIFNQSVItViBzdXBwb3J0IGZvciB0aGlzIGV4dGVuc2lvbj8KKworICAgICAgIERJU0NVU1NJT046IE9wdGlvbnMgY291bGQgaW5jbHVkZToKKyAgICAgICAgIEEuIGFkZCBzdXBwb3J0IGZvciBTUElSLVYgMS4xLCAxLjIsIGFuZCAxLjMuCisgICAgICAgICBCLiBhZGQgc3VwcG9ydCBmb3Igb25seSB0aGUgc3ViZ3JvdXBzIGNhcGFiaWxpdGllcyBmcm9tIFNQSVItViAxLjMuCisKKyAgICAgICBEb2luZyBvcHRpb24gKEEpIHNlZW1zIGxpa2UgYSB3ZWlyZCB3YXkgb2Ygc3VibWFyaW5pbmcgc3VwcG9ydAorICAgICAgIGZvciBuZXcgdmVyc2lvbnMgb2YgU1BJUi1WIGludG8gT3BlbkdMLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGVyZQorICAgICAgIHNob3VsZCBiZSBhIHNlcGFyYXRlIGV4dGVuc2lvbiBmb3IgdGhhdC4KKyAgICAgICBJZiBvcHRpb24gKEIpIGlzIHNlbGVjdGVkLCB3ZSBuZWVkIHRvIGJlIHN1cmUgdG8gZGlzYWxsb3cgb3RoZXIKKyAgICAgICBuZXcgY2FwYWJpbGl0aWVzIHRoYXQgYXJlIGFkZGVkIGluIFNQSVItViAxLjEsIDEuMiwgYW5kIDEuMworCisgICAgICAgUkVTT0xWRUQ6IChCKSBvbmx5IGFkZCBzdXBwb3J0IGZvciBzdWJncm91cCBjYXBhYmlsaXRpZXMgZnJvbSBTUElSLVYKKyAgICAgICAxLjMuIElmIGEgZnV0dXJlIEdMIGNvcmUgdmVyc2lvbiBpbmNvcnBvcmF0ZXMgdGhpcyBleHRlbnNpb24gaXQgc2hvdWxkCisgICAgICAgYWRkIHN1cHBvcnQgZm9yIGFsbCBvZiBTUElSLVYgMS4zLgorCisgICAgNC4gV2hhdCBmdW5jdGlvbmFsaXR5IG9mIFNQSVItViAxLjEsIDEuMiwgYW5kIDEuMyBuZWVkcyB0byBiZSBkaXNhbGxvd2VkPworCisgICAgICAgUkVTT0xWRUQ6CisgICAgICAgQWRkaXRpb25zIHRoYXQgYXJlbid0IGdhdGVkIGJ5IHNwZWNpZmljIGNhcGFiaWxpdGllcyBhbmQgYXJlIGRpc2FsbG93ZWQKKyAgICAgICBhcmUgdGhlIGZvbGxvd2luZzoKKworICAgICAgICAgTG9jYWxTaXplSWQgKDEuMikKKyAgICAgICAgIERlcGVuZGVuY3lJbmZpbml0ZSAoMS4xKQorICAgICAgICAgRGVwZW5kZW5jeUxlbmd0aCAoMS4xKQorICAgICAgICAgT3BNb2R1bGVQcm9jZXNzZWQgKDEuMSkKKyAgICAgICAgIE9wRGVjb3JhdGVJZCAoMS4yKQorICAgICAgICAgT3BFeGVjdXRpb25Nb2RlSWQgKDEuMikKKworICAgICAgIEFkZGl0aW9ucyB0aGF0IGFyZSBnYXRlZCBieSBncmFwaGljcy1jb21wYXRpYmxlIGNhcGFiaWxpdGllcyBub3QKKyAgICAgICBiZWluZyBlbmFibGVkIGJ5IHRoaXMgZXh0ZW5zaW9uIChidXQgY291bGQgYmUgZW5hYmxlZCBieSBvdGhlcgorICAgICAgIGV4dGVuc2lvbnMpOgorCisgICAgICAgQ2FwYWJpbGl0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxpbmcgZXh0ZW5zaW9uCisKKyAgICAgICAgIFN0b3JhZ2VCdWZmZXIgKDEuMykgICAgICAgICAgICAgICAgICAgICAgICBTUFZfS0hSX3N0b3JhZ2VfYnVmZmVyX3N0b3JhZ2VfY2xhc3MKKworICAgICAgICAgRHJhd1BhcmFtZXRlcnMgKDEuMykgICAgICAgICAgICAgICAgICAgICAgIFNQVl9LSFJfc2hhZGVyX2RyYXdfcGFyYW1ldGVycworICAgICAgICAgICAtIEJhc2VWZXJ0ZXgKKyAgICAgICAgICAgLSBCYXNlSW5zdGFuY2UKKyAgICAgICAgICAgLSBEcmF3SW5kZXgKKworICAgICAgICAgRGV2aWNlR3JvdXAgKDEuMykgICAgICAgICAgICAgICAgICAgICAgICAgIFNQVl9LSFJfZGV2aWNlX2dyb3VwCisgICAgICAgICAgIC0gRGV2aWNlSW5kZXgKKworICAgICAgICAgTXVsdGlWaWV3ICgxLjMpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNQVl9LSFJfbXVsdGl2aWV3CisgICAgICAgICAgIC0gVmlld0luZGV4CisKKyAgICAgICAgIFN0b3JhZ2VCdWZmZXIxNkJpdEFjY2VzcyAoMS4zKSAgICAgICAgICAgICBTUFZfS0hSXzE2Yml0X3N0b3JhZ2UKKyAgICAgICAgIFN0b3JhZ2VVbmlmb3JtQnVmZmVyQmxvY2sxNiAoMS4zKSAgICAgICAgICBTUFZfS0hSXzE2Yml0X3N0b3JhZ2UKKyAgICAgICAgIFVuaWZvcm1BbmRTdG9yYWdlQnVmZmVyMTZCaXRBY2Nlc3MgKDEuMykgICBTUFZfS0hSXzE2Yml0X3N0b3JhZ2UKKyAgICAgICAgIFN0b3JhZ2VVbmlmb3JtMTYgKDEuMykgICAgICAgICAgICAgICAgICAgICBTUFZfS0hSXzE2Yml0X3N0b3JhZ2UKKyAgICAgICAgIFN0b3JhZ2VQdXNoQ29uc3RhbnQxNiAoMS4zKSAgICAgICAgICAgICAgICBTUFZfS0hSXzE2Yml0X3N0b3JhZ2UKKyAgICAgICAgIFN0b3JhZ2VJbnB1dE91dHB1dDE2ICgxLjMpICAgICAgICAgICAgICAgICBTUFZfS0hSXzE2Yml0X3N0b3JhZ2UKKworICAgICAgICAgVmFyaWFibGVQb2ludGVyc1N0b3JhZ2VCdWZmZXIgKDEuMykgICAgICAgIFNQVl9LSFJfdmFyaWFibGVfcG9pbnRlcnMKKyAgICAgICAgIFZhcmlhYmxlUG9pbnRlcnMgKDEuMykgICAgICAgICAgICAgICAgICAgICBTUFZfS0hSX3ZhcmlhYmxlX3BvaW50ZXJzCisKKyAgICA1LiBHaXZlbiBJc3N1ZXMgKDMpIGFuZCAoNCkgd2hhdCBleGFjdGx5IGFyZSB0aGUgYWRkaXRpb25hbCBTUElSLVYKKyAgICAgICByZXF1aXJlbWVudHMgYXJlIGJlaW5nIGFkZGVkIGJ5IHRoaXMgZXh0ZW5zaW9uPworCisgICAgICAgUkVTT0xWRUQ6IFdlIGFkZCBzdXBwb3J0IGZvciB0aGUgZm9sbG93aW5nIGZyb20gU1BJUi1WIDEuMzoKKworICAgICAgIENhcGFiaWxpdGllcyAoMy4zMSkgICAgICAgICAgICAgICAgICBFbmFibGluZyBBUEkgRmVhdHVyZQorCisgICAgICAgICBHcm91cE5vblVuaWZvcm0gICAgICAgICAgICAgICAgICAgIFNVQkdST1VQX0ZFQVRVUkVfQkFTSUNfQklUX0tIUgorICAgICAgICAgR3JvdXBOb25Vbmlmb3JtVm90ZSAgICAgICAgICAgICAgICBTVUJHUk9VUF9GRUFUVVJFX1ZPVEVfQklUX0tIUgorICAgICAgICAgR3JvdXBOb25Vbmlmb3JtQXJpdGhtZXRpYyAgICAgICAgICBTVUJHUk9VUF9GRUFUVVJFX0FSSVRITUVUSUNfQklUX0tIUgorICAgICAgICAgR3JvdXBOb25Vbmlmb3JtQmFsbG90ICAgICAgICAgICAgICBTVUJHUk9VUF9GRUFUVVJFX0JBTExPVF9CSVRfS0hSCisgICAgICAgICBHcm91cE5vblVuaWZvcm1TaHVmZmxlICAgICAgICAgICAgIFNVQkdST1VQX0ZFQVRVUkVfU0hVRkZMRV9CSVRfS0hSCisgICAgICAgICBHcm91cE5vblVuaWZvcm1TaHVmZmxlUmVsYXRpdmUgICAgIFNVQkdST1VQX0ZFQVRVUkVfU0hVRkZMRV9SRUxBVElWRV9CSVRfS0hSCisgICAgICAgICBHcm91cE5vblVuaWZvcm1DbHVzdGVyZWQgICAgICAgICAgIFNVQkdST1VQX0ZFQVRVUkVfQ0xVU1RFUkVEX0JJVF9LSFIKKyAgICAgICAgIEdyb3VwTm9uVW5pZm9ybVF1YWQgICAgICAgICAgICAgICAgU1VCR1JPVVBfRkVBVFVSRV9RVUFEX0JJVF9LSFIKKworICAgICAgIEJ1aWx0aW5zICgzLjIxKSAgICAgICAgICAgICAgRW5hYmxpbmcgQ2FwYWJpbGl0eQorCisgICAgICAgICBTdWJncm91cFNpemUgICAgICAgICAgICAgICBHcm91cE5vblVuaWZvcm0KKyAgICAgICAgIE51bVN1Ymdyb3VwcyAgICAgICAgICAgICAgIEdyb3VwTm9uVW5pZm9ybQorICAgICAgICAgU3ViZ3JvdXBJZCAgICAgICAgICAgICAgICAgR3JvdXBOb25Vbmlmb3JtCisgICAgICAgICBTdWJncm91cExvY2FsSW52b2NhdGlvbklkICBHcm91cE5vblVuaWZvcm0KKyAgICAgICAgIFN1Ymdyb3VwRXFNYXNrICAgICAgICAgICAgIEdyb3VwTm9uVW5pZm9ybUJhbGxvdAorICAgICAgICAgU3ViZ3JvdXBHZU1hc2sgICAgICAgICAgICAgR3JvdXBOb25Vbmlmb3JtQmFsbG90CisgICAgICAgICBTdWJncm91cEd0TWFzayAgICAgICAgICAgICBHcm91cE5vblVuaWZvcm1CYWxsb3QKKyAgICAgICAgIFN1Ymdyb3VwTGVNYXNrICAgICAgICAgICAgIEdyb3VwTm9uVW5pZm9ybUJhbGxvdAorICAgICAgICAgU3ViZ3JvdXBMdE1hc2sgICAgICAgICAgICAgR3JvdXBOb25Vbmlmb3JtQmFsbG90CisKKyAgICAgICBHcm91cCBPcGVyYXRpb25zICAgICAgICAgRW5hYmxpbmcgQ2FwYWJpbGl0eQorICAgICAgICgzLjI4KQorCisgICAgICAgICBSZWR1Y2UgICAgICAgICAgICAgICAgIEdyb3VwTm9uVW5pZm9ybUFyaXRobWV0aWMsIEdyb3VwTm9uVW5pZm9ybUJhbGxvdAorICAgICAgICAgSW5jbHVzaXZlU2NhbiAgICAgICAgICBHcm91cE5vblVuaWZvcm1Bcml0aG1ldGljLCBHcm91cE5vblVuaWZvcm1CYWxsb3QKKyAgICAgICAgIEV4Y2x1c2l2ZVNjYW4gICAgICAgICAgR3JvdXBOb25Vbmlmb3JtQXJpdGhtZXRpYywgR3JvdXBOb25Vbmlmb3JtQmFsbG90CisgICAgICAgICBDbHVzdGVyZWRSZWR1Y2UgICAgICAgIEdyb3VwTm9uVW5pZm9ybUNsdXN0ZXJlZAorCisgICAgICAgTm9uLVVuaWZvcm0gSW5zdHJ1Y3Rpb25zICAgICAgICAgICAgIEVuYWJsaW5nIENhcGFiaWxpdHkKKyAgICAgICAoMy4zMi4yNCkKKworICAgICAgICAgT3BHcm91cE5vblVuaWZvcm1FbGVjdCAgICAgICAgICAgICBHcm91cE5vblVuaWZvcm0KKyAgICAgICAgIE9wR3JvdXBOb25Vbmlmb3JtQWxsICAgICAgICAgICAgICAgR3JvdXBOb25Vbmlmb3JtVm90ZQorICAgICAgICAgT3BHcm91cE5vblVuaWZvcm1BbnkgICAgICAgICAgICAgICBHcm91cE5vblVuaWZvcm1Wb3RlCisgICAgICAgICBPcEdyb3VwTm9uVW5pZm9ybUFsbEVxdWFsICAgICAgICAgIEdyb3VwTm9uVW5pZm9ybVZvdGUKKyAgICAgICAgIE9wR3JvdXBOb25Vbmlmb3JtQnJvYWRjYXN0ICAgICAgICAgR3JvdXBOb25Vbmlmb3JtQmFsbG90CisgICAgICAgICBPcEdyb3VwTm9uVW5pZm9ybUJyb2FkY2FzdEZpcnN0ICAgIEdyb3VwTm9uVW5pZm9ybUJhbGxvdAorICAgICAgICAgT3BHcm91cE5vblVuaWZvcm1CYWxsb3QgICAgICAgICAgICBHcm91cE5vblVuaWZvcm1CYWxsb3QKKyAgICAgICAgIE9wR3JvdXBOb25Vbmlmb3JtSW52ZXJzZUJhbGxvdCAgICAgR3JvdXBOb25Vbmlmb3JtQmFsbG90CisgICAgICAgICBPcEdyb3VwTm9uVW5pZm9ybUJhbGxvdEJpdEV4dHJhY3QgIEdyb3VwTm9uVW5pZm9ybUJhbGxvdAorICAgICAgICAgT3BHcm91cE5vblVuaWZvcm1CYWxsb3RCaXRDb3VudCAgICBHcm91cE5vblVuaWZvcm1CYWxsb3QKKyAgICAgICAgIE9wR3JvdXBOb25Vbmlmb3JtQmFsbG90RmluZExTQiAgICAgR3JvdXBOb25Vbmlmb3JtQmFsbG90CisgICAgICAgICBPcEdyb3VwTm9uVW5pZm9ybUJhbGxvdEZpbmRNU0IgICAgIEdyb3VwTm9uVW5pZm9ybUJhbGxvdAorICAgICAgICAgT3BHcm91cE5vblVuaWZvcm1TaHVmZmxlICAgICAgICAgICBHcm91cE5vblVuaWZvcm1TaHVmZmxlCisgICAgICAgICBPcEdyb3VwTm9uVW5pZm9ybVNodWZmbGVYb3IgICAgICAgIEdyb3VwTm9uVW5pZm9ybVNodWZmbGUKKyAgICAgICAgIE9wR3JvdXBOb25Vbmlmb3JtU2h1ZmZsZVVwICAgICAgICAgR3JvdXBOb25Vbmlmb3JtU2h1ZmZsZQorICAgICAgICAgT3BHcm91cE5vblVuaWZvcm1TaHVmZmxlRG93biAgICAgICBHcm91cE5vblVuaWZvcm1TaHVmZmxlCisgICAgICAgICBPcEdyb3VwTm9uVW5pZm9ybUlBZGQgICAgICAgICAgICAgIEdyb3VwTm9uVW5pZm9ybUFyaXRobWV0aWMsIEdyb3VwTm9uVW5pZm9ybUNsdXN0ZXJlZAorICAgICAgICAgT3BHcm91cE5vblVuaWZvcm1GQWRkICAgICAgICAgICAgICBHcm91cE5vblVuaWZvcm1Bcml0aG1ldGljLCBHcm91cE5vblVuaWZvcm1DbHVzdGVyZWQKKyAgICAgICAgIE9wR3JvdXBOb25Vbmlmb3JtSU11bCAgICAgICAgICAgICAgR3JvdXBOb25Vbmlmb3JtQXJpdGhtZXRpYywgR3JvdXBOb25Vbmlmb3JtQ2x1c3RlcmVkCisgICAgICAgICBPcEdyb3VwTm9uVW5pZm9ybUZNdWwgICAgICAgICAgICAgIEdyb3VwTm9uVW5pZm9ybUFyaXRobWV0aWMsIEdyb3VwTm9uVW5pZm9ybUNsdXN0ZXJlZAorICAgICAgICAgT3BHcm91cE5vblVuaWZvcm1TTWluICAgICAgICAgICAgICBHcm91cE5vblVuaWZvcm1Bcml0aG1ldGljLCBHcm91cE5vblVuaWZvcm1DbHVzdGVyZWQKKyAgICAgICAgIE9wR3JvdXBOb25Vbmlmb3JtVU1pbiAgICAgICAgICAgICAgR3JvdXBOb25Vbmlmb3JtQXJpdGhtZXRpYywgR3JvdXBOb25Vbmlmb3JtQ2x1c3RlcmVkCisgICAgICAgICBPcEdyb3VwTm9uVW5pZm9ybUZNaW4gICAgICAgICAgICAgIEdyb3VwTm9uVW5pZm9ybUFyaXRobWV0aWMsIEdyb3VwTm9uVW5pZm9ybUNsdXN0ZXJlZAorICAgICAgICAgT3BHcm91cE5vblVuaWZvcm1TTWF4ICAgICAgICAgICAgICBHcm91cE5vblVuaWZvcm1Bcml0aG1ldGljLCBHcm91cE5vblVuaWZvcm1DbHVzdGVyZWQKKyAgICAgICAgIE9wR3JvdXBOb25Vbmlmb3JtVU1heCAgICAgICAgICAgICAgR3JvdXBOb25Vbmlmb3JtQXJpdGhtZXRpYywgR3JvdXBOb25Vbmlmb3JtQ2x1c3RlcmVkCisgICAgICAgICBPcEdyb3VwTm9uVW5pZm9ybUZNYXggICAgICAgICAgICAgIEdyb3VwTm9uVW5pZm9ybUFyaXRobWV0aWMsIEdyb3VwTm9uVW5pZm9ybUNsdXN0ZXJlZAorICAgICAgICAgT3BHcm91cE5vblVuaWZvcm1CaXR3aXNlQW5kICAgICAgICBHcm91cE5vblVuaWZvcm1Bcml0aG1ldGljLCBHcm91cE5vblVuaWZvcm1DbHVzdGVyZWQKKyAgICAgICAgIE9wR3JvdXBOb25Vbmlmb3JtQml0d2lzZU9yICAgICAgICAgR3JvdXBOb25Vbmlmb3JtQXJpdGhtZXRpYywgR3JvdXBOb25Vbmlmb3JtQ2x1c3RlcmVkCisgICAgICAgICBPcEdyb3VwTm9uVW5pZm9ybUJpdHdpc2VYb3IgICAgICAgIEdyb3VwTm9uVW5pZm9ybUFyaXRobWV0aWMsIEdyb3VwTm9uVW5pZm9ybUNsdXN0ZXJlZAorICAgICAgICAgT3BHcm91cE5vblVuaWZvcm1Mb2dpY2FsQW5kICAgICAgICBHcm91cE5vblVuaWZvcm1Bcml0aG1ldGljLCBHcm91cE5vblVuaWZvcm1DbHVzdGVyZWQKKyAgICAgICAgIE9wR3JvdXBOb25Vbmlmb3JtTG9naWNhbE9yICAgICAgICAgR3JvdXBOb25Vbmlmb3JtQXJpdGhtZXRpYywgR3JvdXBOb25Vbmlmb3JtQ2x1c3RlcmVkCisgICAgICAgICBPcEdyb3VwTm9uVW5pZm9ybUxvZ2ljYWxYb3IgICAgICAgIEdyb3VwTm9uVW5pZm9ybUFyaXRobWV0aWMsIEdyb3VwTm9uVW5pZm9ybUNsdXN0ZXJlZAorICAgICAgICAgT3BHcm91cE5vblVuaWZvcm1RdWFkQnJvYWRjYXN0ICAgICBHcm91cE5vblVuaWZvcm1RdWFkCisgICAgICAgICBPcEdyb3VwTm9uVW5pZm9ybVF1YWRTd2FwICAgICAgICAgIEdyb3VwTm9uVW5pZm9ybVF1YWQKKworICAgICAgICpTdWJncm91cCogYXMgYW4gYWNjZXB0YWJsZSBtZW1vcnkgc2NvcGUuCisKKyAgICAgICBPcENvbnRyb2xCYXJyaWVyIGluIGZyYWdtZW50LCB2ZXJ0ZXgsIHRlc3NlbGxhdGlvbiBldmFsdWF0aW9uLCB0ZXNzZWxsYXRpb24KKyAgICAgICBjb250cm9sLCBhbmQgZ2VvbWV0cnkgc3RhZ2VzIHdpdGggdGhlICpTdWJncm91cCogZXhlY3V0aW9uIFNjb3BlLgorCisKK1JldmlzaW9uIEhpc3RvcnkKKworICAgIFJldi4gIERhdGUgICAgICAgICAgQXV0aG9yICAgICBDaGFuZ2VzCisgICAgLS0tLSAgLS0tLS0tLS0tLS0gICAtLS0tLS0tLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgOCAgICAyMDE5LTA3LTI2ICAgIGRna29jaCAgICAgVXBkYXRlIHN0YXR1cyBhbmQgYXNzaWduIGV4dGVuc2lvbiBudW1iZXJzCisgICAgIDcgICAgMjAxOS0wNS0yMiAgICBkZ2tvY2ggICAgIFJlc3luYyBsYW5ndWFnZSB3aXRoIFZ1bGthbiBzcGVjLiBBZGRyZXNzIGZlZWRiYWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gR3JhZW1lLiBSZWxheCBxdWFkIG9yZGVyaW5nIGRlZmluaXRpb24uCisgICAgIDYgICAgMjAxOS0wMy0yOCAgICBkZ2tvY2ggICAgIHJlbmFtZSB0byBLSFJfc2hhZGVyX3N1Ymdyb3VwLCB1cGRhdGUgc29tZSBpc3N1ZXMKKyAgICAgNSAgICAyMDE4LTA1LTMwICAgIGRna29jaCAgICAgQWRkcmVzcyBmZWVkYmFjayBmcm9tIEdyYWVtZSBhbmQgSmVzc2UuCisgICAgIDQgICAgMjAxOC0wNS0yOCAgICBkZ2tvY2ggICAgIGNoYW5nZSBBTExTVEFHRVMgLT4gQUxMX1NUQUdFUywgZml4IHR5cG9zCisgICAgIDMgICAgMjAxOC0wNS0yMyAgICBkZ2tvY2ggICAgIEFkZCBvdmVydmlldyBhbmQgaW50ZXJhY3Rpb25zLCBhZGQgU1BJUi1WIDEuMworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdGlvbnMsIElzc3VlcyA0IGFuZCA1LgorICAgICAyICAgIDIwMTgtMDQtMjYgICAgZGdrb2NoICAgICBWYXJpb3VzIHVwZGF0ZXMgdG8gbWF0Y2ggbGF0ZXN0IHZ1bGthbiBzcGVjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzc2lnbiB0b2tlbnMuIEFkZCBTUElSLVYgc3VwcG9ydC4KKyAgICAgMSAgICAyMDE4LTAxLTE5ICAgIGRna29jaCAgICAgSW5pdGlhbCByZXZpc2lvbi4KKwpkaWZmIC0tZ2l0IGEvZXh0ZW5zaW9ucy9OVi9OVl9zaGFkZXJfc3ViZ3JvdXBfcGFydGl0aW9uZWQudHh0IGIvZXh0ZW5zaW9ucy9OVi9OVl9zaGFkZXJfc3ViZ3JvdXBfcGFydGl0aW9uZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmY2JlZTcKLS0tIC9kZXYvbnVsbAorKysgYi9leHRlbnNpb25zL05WL05WX3NoYWRlcl9zdWJncm91cF9wYXJ0aXRpb25lZC50eHQKQEAgLTAsMCArMSwxNjMgQEAKK05hbWUKKworICAgIE5WX3NoYWRlcl9zdWJncm91cF9wYXJ0aXRpb25lZAorCitOYW1lIFN0cmluZ3MKKworICAgIEdMX05WX3NoYWRlcl9zdWJncm91cF9wYXJ0aXRpb25lZAorCitDb250YWN0CisKKyAgICBEYW5pZWwgS29jaCwgTlZJRElBIENvcnBvcnRhdGlvbgorCitDb250cmlidXRvcnMKKworICAgIEplZmYgQm9seiwgTlZJRElBCisgICAgUHlhcmVsYWwgS25vd2xlcywgTlZJRElBCisKK1N0YXR1cworCisgICAgQ29tcGxldGUKKworVmVyc2lvbgorCisgICAgTGFzdCBNb2RpZmllZDogIDIwMTktMDctMjYKKyAgICBSZXZpc2lvbjogICAgICAgMQorCitOdW1iZXIKKworICAgIE9wZW5HTCBFeHRlbnNpb24gIzU0NAorICAgIE9wZW5HTCBFUyBFeHRlbnNpb24gIzMyMgorCitEZXBlbmRlbmNpZXMKKworICAgIFRoaXMgZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIDQuNiBTcGVjaWZpY2F0aW9uCisgICAgKENvcmUgUHJvZmlsZSksIGRhdGVkIEp1bHkgMzAsIDIwMTcuCisKKyAgICBUaGlzIGV4dGVuc2lvbiByZXF1aXJlcyBPcGVuR0wgNC4zIG9yIE9wZW5HTCBFUyAzLjEuCisKKyAgICBUaGlzIGV4dGVuc2lvbiByZXF1aXJlcyB0aGUgS0hSX3NoYWRlcl9zdWJncm91cCBBUEkgYW5kIEdMU0wgZXh0ZW5zaW9ucy4KKworICAgIFRoaXMgZXh0ZW5zaW9uIGludGVyYWN0cyB3aXRoIEFSQl9nbF9zcGlydiBhbmQgT3BlbkdMIDQuNi4KKworICAgIFRoaXMgZXh0ZW5zaW9uIGludGVyYWN0cyB3aXRoIEFSQl9zcGlydl9leHRlbnNpb25zIGFuZCBPcGVuR0wgNC42LgorCisgICAgVGhpcyBleHRlbnNpb24gaW50ZXJhY3RzIHdpdGggT3BlbkdMIEVTIDMueC4KKworICAgIFRoaXMgZXh0ZW5zaW9uIHJlcXVpcmVzIFNQVl9OVl9zaGFkZXJfc3ViZ3JvdXBfcGFydGl0aW9uZWQgd2hlbiBTUElSLVYgaXMKKyAgICBzdXBwb3J0ZWQgaW4gT3BlbkdMLgorCitPdmVydmlldworCisgICAgVGhpcyBleHRlbnNpb24gZW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgTlZfc2hhZGVyX3N1Ymdyb3VwX3BhcnRpdGlvbmVkCisgICAgc2hhZGluZyBsYW5ndWFnZSBleHRlbnNpb24gaW4gT3BlbkdMIGFuZCBPcGVuR0wgRVMuCisKKyAgICBUaGlzIGV4dGVuc2lvbiBhZGRzIGEgbmV3IFNVQkdST1VQX0ZFQVRVUkVfUEFSVElUSU9ORURfQklUX05WIGZlYXR1cmUgYml0CisgICAgdGhhdCBpcyByZXR1cm5lZCBieSBxdWVyeWllcyBmb3IgU1VCR1JPVVBfU1VQUE9SVEVEX0ZFQVRVUkVTX0tIUi4KKworICAgIEluIE9wZW5HTCBpbXBsZW1lbnRhdGlvbnMgc3VwcG9ydGluZyBTUElSLVYsIHRoaXMgZXh0ZW5zaW9uIGVuYWJsZXMKKyAgICBzdXBwb3J0IGZvciB0aGUgU1BWX05WX3NoYWRlcl9zdWJncm91cF9wYXJ0aXRpb25lZCBleHRlbnNpb24uCisKKyAgICBJbiBPcGVuR0wgRVMgaW1wbGVtZW50YXRpb25zLCB0aGlzIGV4dGVuc2lvbiBkb2VzIE5PVCBhZGQgc3VwcG9ydCBmb3IKKyAgICBTUElSLVYgb3IgZm9yIGFueSBvZiB0aGUgYnVpbHQtaW4gc2hhZGluZyBsYW5ndWFnZSBmdW5jdGlvbnMgKDguMTgpCisgICAgdGhhdCBoYXZlIGdlbkRUeXBlIChkb3VibGUpIHByb3RvdHlwZXMuCisKK05ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKKworICAgIE5vbmUKKworTmV3IFRva2VucworCisgICAgUmV0dXJuZWQgYXMgYml0ZmllbGQgaW4gdGhlIDxkYXRhPiBhcmd1bWVudCB3aGVuIEdldEludGVnZXJ2CisgICAgaXMgcXVlcmllZCB3aXRoIGEgPHBuYW1lPiBvZiBTVUJHUk9VUF9TVVBQT1JURURfRkVBVFVSRVNfS0hSOgorCisgICAgICAgIFNVQkdST1VQX0ZFQVRVUkVfUEFSVElUSU9ORURfQklUX05WICAgICAgICAgMHgwMDAwMDEwMAorCisKK01vZGlmaWNhdGlvbnMgdG8gdGhlIE9wZW5HTCA0LjYgU3BlY2lmaWNhdGlvbiAoQ29yZSBQcm9maWxlKQorCitNb2RpZmljYXRpb25zIHRvIENoYXB0ZXIgU0csICJTdWJncm91cHMiIChhcyBhZGRlZCBieSBLSFJfc2hhZGVyX3N1Ymdyb3VwcykKKworICAgIChhZGQgYSBuZXcgc3Vic2VjdGlvbiB0byBTRy4xLCAiU3ViZ3JvdXAgT3BlcmF0aW9ucyIpCisKKyAgICBTRy4xLjkgUGFydGl0aW9uZWQgU3ViZ3JvdXAgT3BlcmF0aW9ucworCisgICAgVGhlIHBhcnRpdGlvbmVkIHN1Ymdyb3VwIG9wZXJhdGlvbnMgYWxsb3cgYSBzdWJncm91cCB0byBwYXJ0aXRpb24KKyAgICBpdHMgaW52b2NhdGlvbnMgaW50byBkaXNqb2ludCBzdWJzZXRzIGFuZCB0byBwZXJmb3JtIHNjYW4gYW5kIHJlZHVjdGlvbgorICAgIG9wZXJhdGlvbnMgYW1vbmcgaW52b2NhdGlvbnMgYmVsb25naW5nIHRvIHRoZSBzYW1lIHN1YnNldC4gVGhlIHBhcnRpdGlvbnMKKyAgICBmb3IgcGFydGl0aW9uZWQgc3ViZ3JvdXAgb3BlcmF0aW9ucyBhcmUgc3BlY2lmaWVkIGJ5IGEgYmFsbG90IG9wZXJhbmQgYW5kCisgICAgY2FuIGJlIGNvbXB1dGVkIGF0IHJ1bnRpbWUuIFRoZSBvcGVyYXRpb25zIHN1cHBvcnRlZCBhcmUgYWRkLCBtdWwsIG1pbiwKKyAgICBtYXgsIGFuZCwgb3IsIHhvci4KKworICAgIChBZGQgYSBuZXcgYnVsbGV0IHBvaW50IHRvIHRoZSBsaXN0IGluIFNHLjIuMywgIlN1Ymdyb3VwIFN1cHBvcnRlZAorICAgICBPcGVyYXRpb25zIikKKworICAgICogU1VCR1JPVVBfRkVBVFVSRV9QQVJUSVRJT05FRF9CSVRfTlYgaW5kaWNhdGVzIHRoZSBHTCBzdXBwb3J0cyBzaGFkZXJzCisgICAgICB3aXRoIHRoZSBOVl9zaGFkZXJfc3ViZ3JvdXBfcGFydGl0aW9uZWQgZXh0ZW5zaW9uIGVuYWJsZWQuIFNlZSBTRy4xLjkuCisKK01vZGlmaWNhdGlvbnMgdG8gQXBwZW5kaXggQyBvZiB0aGUgT3BlbkdMIDQuNiAoQ29yZSBQcm9maWxlKSBTcGVjaWZpY2F0aW9uCisoVGhlIE9wZW5HTCBTUElSLVYgRXhlY3V0aW9uIEVudmlyb25tZW50KQorCisgICAgQWRkaXRpb25zIHRvIHNlY3Rpb24gQy4zIChWYWxpZCBTUElSLVYgQ2FwYWJpbGl0aWVzKToKKworICAgIEFkZCB0aGUgZm9sbG93aW5nIHJvd3MgdG8gVGFibGUgQy4yIChWYWxpZCBTUElSLVYgQ2FwYWJpbGl0aWVzKToKKworICAgICAgICBHcm91cE5vblVuaWZvcm1QYXJ0aXRpb25lZE5WICAgKGlmIFNVQkdST1VQX0ZFQVRVUkVfUEFSVElUSU9ORURfQklUX05WIGlzIHN1cHBvcnRlZCkKKworTW9kaWZpY2F0aW9ucyB0byB0aGUgT3BlbkdMIFNoYWRpbmcgTGFuZ3VhZ2UgU3BlY2lmaWNhdGlvbiwgVmVyc2lvbiA0LjYwCisKKyAgICBTZWUgdGhlIHNlcGFyYXRlIEtIUl9zaGFkZXJfc3ViZ3JvdXAgR0xTTCBkb2N1bWVudC4KKyAgICBodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL0dMU0wvYmxvYi9tYXN0ZXIvZXh0ZW5zaW9ucy9udi9HTF9OVl9zaGFkZXJfc3ViZ3JvdXBfcGFydGl0aW9uZWQudHh0CisKK0RlcGVuZGVuY2llcyBvbiBBUkJfZ2xfc3BpcnYgYW5kIE9wZW5HTCA0LjYKKworICAgIElmIEFSQl9nbF9zcGlydiBvciBPcGVuR0wgNC42IGFyZSBub3Qgc3VwcG9ydGVkLCBpZ25vcmUgYWxsCisgICAgcmVmZXJlbmNlcyB0byBTUElSLVYgZnVuY3Rpb25hbGl0eS4KKworRGVwZW5kZW5jaWVzIG9uIEFSQl9zcGlydl9leHRlbnNpb25zIGFuZCBPcGVuR0wgNC42CisKKyAgICBJZiBBUkJfc3BpcnZfZXh0ZW5zaW9ucyBvciBPcGVuR0wgNC42IGFyZSBub3Qgc3VwcG9ydGVkLCBpZ25vcmUKKyAgICByZWZlcmVuY2VzIHRvIHRoZSBhYmlsaXR5IHRvIGFkdmVydGlzZSBhZGRpdGlvbmFsIFNQSVItViBleHRlbnNpb25zLgorCitEZXBlbmRlbmNpZXMgb24gT3BlbkdMIEVTIDMueAorCisgICAgSWYgaW1wbGVtZW50ZWQgaW4gT3BlbkdMIEVTLCBpZ25vcmUgYWxsIHJlZmVyZW5jZXMgdG8gU1BJUi1WIGFuZCB0bworICAgIEdMU0wgYnVpbHQtaW4gZnVuY3Rpb25zIHdoaWNoIHV0aWxpemUgdGhlIGdlbkRUeXBlIChkb3VibGUpIHR5cGVzLgorCitBZGRpdGlvbnMgdG8gdGhlIEFHTC9HTFgvV0dMIFNwZWNpZmljYXRpb25zCisKKyAgICBOb25lCisKK0Vycm9ycworCisgICAgTm9uZQorCitOZXcgU3RhdGUKKworICAgIE5vbmUKKworTmV3IEltcGxlbWVudGF0aW9uIERlcGVuZGVudCBTdGF0ZQorCisgICAgTm9uZQorCitJc3N1ZXMKKworICAgIDEuIFdoYXQgc2hvdWxkIHdlIG5hbWUgdGhpcyBleHRlbnNpb24/CisKKyAgICAgICBESVNDVVNTSU9OLiBXZSB3aWxsIHVzZSB0aGUgc2FtZSBuYW1lIGFzIHRoZSBHTFNMIGV4dGVuc2lvbi4KKworICAgICAgIFJFU09MVkVEOiBVc2UgTlZfc2hhZGVyX3N1Ymdyb3VwX3BhcnRpdGlvbmVkLgorCisgICAgMi4gU2hvdWxkIFNQVl9OVl9zaGFkZXJfc3ViZ3JvdXBfcGFydGl0aW9uZWQgYmUgYWR2ZXJ0aXNlZCBpbiB0aGUKKyAgICAgICBsaXN0IG9mIGV4dGVuc2lvbnMgZW51bWVyYXRlZCBieSB0aGUgU1BJUl9WX0VYVEVOU0lPTlMgcXVlcnk/CisKKyAgICAgICBSRVNPTFZFRDogWWVzLiBUaGVyZSBpcyBubyBzcGVjIGxhbmd1YWdlIGZvciB0aGlzIGJlY2F1c2UgaXQKKyAgICAgICBpcyBqdXN0IGV4cGVjdGVkIHdoZW4gdGhpcyBleHRlbnNpb24gaXMgc3VwcG9ydGVkIChvbiBhbiBpbXBsZW1lbnRhdGlvbgorICAgICAgIHRoYXQgc3VwcG9ydHMgU1BJUi1WKS4KKworUmV2aXNpb24gSGlzdG9yeQorCisgICAgUmV2LiAgRGF0ZSAgICAgICAgICBBdXRob3IgICAgIENoYW5nZXMKKyAgICAtLS0tICAtLS0tLS0tLS0tLSAgIC0tLS0tLS0tICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAxICAgIDIwMTktMDctMjcgICAgZGdrb2NoICAgICBJbnRlcm5hbCByZXZpc2lvbnMuCisKZGlmZiAtLWdpdCBhL2V4dGVuc2lvbnMvTlYvV0dMX05WX211bHRpZ3B1X2NvbnRleHQudHh0IGIvZXh0ZW5zaW9ucy9OVi9XR0xfTlZfbXVsdGlncHVfY29udGV4dC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE1MDIwNgotLS0gL2Rldi9udWxsCisrKyBiL2V4dGVuc2lvbnMvTlYvV0dMX05WX211bHRpZ3B1X2NvbnRleHQudHh0CkBAIC0wLDAgKzEsMTQ2IEBACitOYW1lCisKKyAgICBOVl9tdWx0aWdwdV9jb250ZXh0CisKK05hbWUgU3RyaW5ncworCisgICAgV0dMX05WX211bHRpZ3B1X2NvbnRleHQKKworQ29udGFjdAorCisgICAgUmFsZiBCaWVybWFubiAocmJpZXJtYW5uICdhdCcgbnZpZGlhLmNvbSkKKworQ29udHJpYnV0b3JzCisKKyAgICBKb3NodWEgU2NobmFyciwgTlZJRElBCisgICAgSW5nbyBFc3NlciwgTlZJRElBCisgICAgUm9iZXJ0IE1lbnplbCwgTlZJRElBCisKK05vdGljZQorCisgICAgQ29weXJpZ2h0IChjKSAyMDE5IE5WSURJQQorCitTdGF0dXMKKworICAgIENvbXBsZXRlLgorCitWZXJzaW9uCisKKyAgICBMYXN0IE1vZGlmaWVkIERhdGU6ICAgICAgICAgMjAxOS0wNS0yOQorICAgIEF1dGhvciBSZXZpc2lvbjogICAgICAgICAgICA0CisKK051bWJlcgorCisgICAgT3BlbkdMIEV4dGVuc2lvbiAjNTQyCisKK0RlcGVuZGVuY2llcworCisgICAgV0dMX05WX211bHRpZ3B1X2NvbnRleHQgaXMgd3JpdHRlbiBhZ2FpbnN0IHRoZQorICAgIFdHTF9BUkJfY3JlYXRlX2NvbnRleHQgc3BlY2lmaWNhdGlvbiwgd2hpY2ggaXMgcmVxdWlyZWQuCisKKyAgICBUaGlzIGV4dGVuc2lvbiBpbnRlcmFjdHMgd2l0aCBOVl9ncHVfbXVsdGljYXN0LgorICAgIFRoaXMgZXh0ZW5zaW9uIGludGVyYWN0cyB3aXRoIFdHTF9BUkJfbWFrZV9jdXJyZW50X3JlYWQuCisKK092ZXJ2aWV3CisKKyAgICBUaGlzIGV4dGVuc2lvbiBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mIGFuIE9wZW5HTCBjb250ZXh0IGluIGEgbXVsdGktR1BVCisgICAgZW52aXJvbm1lbnQgd2l0aCBhIHNwZWNpZmllZCBtdWx0aS1HUFUgc3RyYXRlZ3kgKGtub3duIGFzIFNMSSBtb2RlKSB3aGljaAorICAgIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBwcm9jZXNzLXdpZGUgbXVsdGktR1BVIG1vZGUgc2V0dGluZ3MuCisgICAgCisgICAgVGhlIG11bHRpLUdQVSBtb2RlIGRlbm90ZXMgdmVuZG9yIHNwZWNpZmljIHRlY2huaXF1ZXMgdG8gYWxsb3cgZGlzdHJpYnV0ZWQKKyAgICByZW5kZXJpbmcgb24gbXVsdGlwbGUgR1BVcywgZnVydGhlciBjYWxsZWQgQUZSIChhbHRlcm5hdGUgZnJhbWUgcmVuZGVyaW5nKQorICAgIGFuZCBNdWx0aWNhc3QgKGFzIGRlZmluZWQgaW4gTlZfZ3B1X211bHRpY2FzdCkuCisgICAgCisgICAgT3BlbkdMIHN1cHBvcnRzIG11bHRpcGxlIGNvbnRleHRzLiBUaGUgc2VtYW50aWNzIG9mIHN3aXRjaGluZyBjb250ZXh0cyAKKyAgICBpcyBnZW5lcmFsbHkgbGVmdCB0byB3aW5kb3cgc3lzdGVtIGJpbmRpbmcgQVBJcyBzdWNoIGFzIFdHTCwgR0xYIGFuZCBFR0wuCisgICAgVGhlIGV4dGVuc2lvbiBXR0xfTlZfbXVsdGlncHVfY29udGV4dCBhbGxvd3MgdG8gc3BlY2lmeSBhIHByZWZlcnJlZCAKKyAgICBtdWx0aS1HUFUgcmVuZGVyaW5nIG1vZGUgcGVyIGNvbnRleHQsIHRodXMgY29udGV4dCBzd2l0Y2hpbmcgY2FuIGFsc28KKyAgICBzd2l0Y2ggdGhlIGN1cnJlbnQgbXVsdGktR1BVIHJlbmRlcmluZyBtb2RlLgorICAgIAorICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQgYW5kIHRoZSBhY3R1YWwgbXVsdGktR1BVIHJlbmRlcmluZworICAgIG1vZGUgb2YgdGhlIGNyZWF0ZWQgY29udGV4dCBtYXkgdmFyeSBvbiBkaWZmZXJlbnQgaGFyZHdhcmUgYW5kIG9wZXJhdGlvbiAKKyAgICBzeXN0ZW0gcGxhdGZvcm1zLgorICAgIAorTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucworCisgICAgTm9uZQorCitOZXcgVG9rZW5zIChXR0wpCisKKyAgICBBY2NlcHRlZCBhcyBhbiBhdHRyaWJ1dGUgbmFtZSBpbiB0aGUgPCphdHRyaWJfbGlzdD4gYXJndW1lbnQgdG8KKyAgICB3Z2xDcmVhdGVDb250ZXh0QXR0cmlic0FSQjoKKworICAgICAgICBXR0xfQ09OVEVYVF9NVUxUSUdQVV9BVFRSSUJfTlYgICAgICAgICAgICAgICAgICAgICAgICAgMHgyMEFBCisKKyAgICBBY2NlcHRlZCBhcyBhbiBhdHRyaWJ1dGUgdmFsdWUgZm9yIFdHTF9DT05URVhUX01VTFRJR1BVX0FUVFJJQl9OViBpbgorICAgIHRoZSA8KmF0dHJpYl9saXN0PiBhcmd1bWVudCB0byB3Z2xDcmVhdGVDb250ZXh0QXR0cmlic0FSQjoKKworICAgICAgICBXR0xfQ09OVEVYVF9NVUxUSUdQVV9BVFRSSUJfU0lOR0xFX05WICAgICAgICAgICAgICAgICAgMHgyMEFCCisgICAgICAgIFdHTF9DT05URVhUX01VTFRJR1BVX0FUVFJJQl9BRlJfTlYgICAgICAgICAgICAgICAgICAgICAweDIwQUMKKyAgICAgICAgV0dMX0NPTlRFWFRfTVVMVElHUFVfQVRUUklCX01VTFRJQ0FTVF9OViAgICAgICAgICAgICAgIDB4MjBBRAorICAgICAgICBXR0xfQ09OVEVYVF9NVUxUSUdQVV9BVFRSSUJfTVVMVElfRElTUExBWV9NVUxUSUNBU1RfTlYgMHgyMEFFCisKK0FkZGl0aW9ucyB0byBXR0xfQVJCX2NyZWF0ZV9jb250ZXh0IGFuZCBXR0xfQVJCX21ha2VfY3VycmVudF9yZWFkIAorCisgICAgQWRkIGEgbmV3IHBhcmFncmFwaCB0byB0aGUgZGVzY3JpcHRpb24gb2Ygd2dsQ3JlYXRlQ29udGV4dEF0dHJpYnNBUkIsIGFzCisgICAgZGVmaW5lZCBieSBXR0xfQVJCX2NyZWF0ZV9jb250ZXh0OgorCisgICAgIlRoZSBhdHRyaWJ1dGUgbmFtZSBXR0xfQ09OVEVYVF9NVUxUSUdQVV9BVFRSSUJfTlYgaW5kaWNhdGVzIHRoZSAKKyAgICBwcmVmZXJyZWQgbXVsdGktR1BVIHJlbmRlcmluZyBtb2RlIGZvciB0aGUgT3BlbkdMIGNvbnRleHQuIAorICAgIFRoaXMgc3BlY2lmaWVkIG1vZGUgcHJlY2VkZXMgb3RoZXIgc2VsZWN0ZWQgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4iCisKKyAgICBBZGQgYSBuZXcgcGFyYWdyYXBoIHRvIHRoZSBkZXNjcmlwdGlvbiBvZiB3Z2xNYWtlQ3VycmVudCBhbmQgCisgICAgd2dsTWFrZUNvbnRleHRDdXJyZW50QVJCOgorCisgICAgIldpdGggT3BlbkdMIG9uIFdpbmRvd3MsIGEgdGhyZWFkIGNhbiBvbmx5IGhhdmUgb25lIGN1cnJlbnQgcmVuZGVyaW5nIGNvbnRleHQKKyAgICBhbmQgYSBkZXZpY2UgY29udGV4dCBjYW4gb25seSBiZSB1c2VkIGJ5IGEgc2luZ2xlIHRocmVhZCBhdCBhIHRpbWUuIAorICAgIFZpb2xhdGluZyB0aGlzIGJ5IHVzaW5nIHRoZSBzYW1lIGRldmljZSBjb250ZXh0IHdpdGggbXVsdGlwbGUgcmVuZGVyaW5nIAorICAgIGNvbnRleHRzIGRvZXMgbm90IG5vcm1hbGx5IHJldHVybiBhbiBlcnJvciwgYnV0IGNhbiBsZWFkIHRvIHVuZGVmaW5lZCBhbmQgCisgICAgdW5kZXNpcmFibGUgYmVoYXZpb3IuCisgICAgV2hlbiBtdWx0aWdwdSBjb250ZXh0IGF0dHJpYnV0ZXMgYXJlIHVzZWQsIGhvd2V2ZXIsIHdnbE1ha2VDdXJyZW50IGFuZCAKKyAgICB3Z2xNYWtlQ29udGV4dEN1cnJlbnRBUkIgd2lsbCByZXR1cm4gRkFMU0UgYW5kIHNldCBFUlJPUl9JTlZBTElEX09QRVJBVElPTiAKKyAgICBpZiBhIEhEQyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGlzIGFscmVhZHkgY3VycmVudCB3aXRoIGEgcmVuZGVyaW5nIGNvbnRleHQgCisgICAgdXNpbmcgYW4gYWx0ZXJuYXRlIG11bHRpZ3B1IGF0dHJpYnV0ZS4iCisKK0dMWCBQcm90b2NvbAorCisgICAgTm9uZS4KKworRXJyb3JzIGZvciBXR0wKKworICAgIEEgR0wgZXJyb3IgRVJST1JfSU5WQUxJRF9QQVJBTUVURVIgaXMgZ2VuZXJhdGVkIHdoZW4gYSB2YWx1ZSBmb3IKKyAgICBXR0xfQ09OVEVYVF9NVUxUSUdQVV9BVFRSSUJfTlYgcGFzc2VkIGludG8gYSB3Z2xDcmVhdGVDb250ZXh0QXR0cmlic0FSQiAKKyAgICBhdHRyaWJ1dGUgbGlzdCBpcyBub3QgYW4gYWNjZXB0ZWQgdmFsdWUuCisgICAgCisgICAgQSBHTCBlcnJvciBFUlJPUl9OT1RfU1VQUE9SVEVEIGlzIGdlbmVyYXRlZCB3aGVuIGFuIHVuc3VwcG9ydGVkIFNMSSByZW5kZXJpbmcgCisgICAgbW9kZSB2YWx1ZSBpcyBwYXNzZWQgYXMgdmFsdWUgb2YgYXR0cmlidXRlIFdHTF9DT05URVhUX01VTFRJR1BVX0FUVFJJQl9OViBpbiBhIAorICAgIHdnbENyZWF0ZUNvbnRleHRBdHRyaWJzQVJCIGF0dHJpYnV0ZSBsaXN0LgorCisgICAgQSBHTCBlcnJvciBFUlJPUl9OT1RfU1VQUE9SVEVEIGlzIGdlbmVyYXRlZCB3aGVuIHBhc3NpbmcgYSBkZXZpY2UgY29udGV4dCBIREMKKyAgICB0byB3Z2xNYWtlQ3VycmVudCBvciB3Z2xNYWtlQ29udGV4dEN1cnJlbnRBUkIgaWYgdGhlIEhEQyBpcyBhbHJlYWR5IGN1cnJlbnQgd2l0aCAKKyAgICBhIHJlbmRlcmluZyBjb250ZXh0IHVzaW5nIGEgbXVsdGlncHUgYXR0cmlidXRlIGluIGEgZGlmZmVyZW50IHRocmVhZC4KKworTmV3IFN0YXRlCisKKyAgICBOb25lLgorCitJc3N1ZXMKKworICAgIDEuIElzIE1VTFRJQ0FTVCBtb2RlIHN1cHBvcnRlZCBpbiBhIG11bHRpLWRpc3BsYXkgY29uZmlndXJhdGlvbiB3aGVyZSBkaXNwbGF5cyBhdHRhY2hlZAorICAgICAgIHRvIG11bHRpcGxlIEdQVXMgYXJlIGxpbmtlZCB0b2dldGhlciBpbiBhIGRlc2t0b3AgY29uZmlndXJhdGlvbiBzcGFubmluZyBtdWx0aXBsZSBHUFVzPworCisgICAgICAgUkVTT0xWRUQ6IE5vdCBieSBkZWZhdWx0LiAKKworICAgICAgIEEgZGVkaWNhdGVkIGF0dHJpYnV0ZSB2YWx1ZSBXR0xfQ09OVEVYVF9NVUxUSUdQVV9BVFRSSUJfTVVMVElfRElTUExBWV9NVUxUSUNBU1RfTlYgaGFzIHRvIGJlIAorICAgICAgIHNwZWNpZmllZCB3aGVuIGEgbGlua2VkIG11bHRpLUdQVSBkaXNwbGF5IGNvbmZpZ3VyYXRpb24gaXMgY29uc2lkZXJlZCBmb3IgbXVsdGljYXN0IHJlbmRlcmluZworICAgICAgIGJ5IHRoZSBhcHBsaWNhdGlvbiBjcmVhdGluZyB0aGUgY29udGV4dC4KKworCitSZXZpc2lvbiBIaXN0b3J5CisKKyBSZXYuICAgRGF0ZSAgICAgIEF1dGhvciAgICBDaGFuZ2VzCisgLS0tLSAtLS0tLS0tLS0tICAtLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAxICAyMDE3LTAyLTIxICByYmllcm1hbm4gIEluaXRpYWwgZHJhZnQKKyAgIDIgIDIwMTgtMDktMTcgIHJiaWVybWFubiAgVXBkYXRlZCBhdHRyaWJ1dGUgbGlzdCBhbmQgc3BlYyBwcm9wb3NhbAorICAgMyAgMjAxOS0wNS0wOCAgcmJpZXJtYW5uICBBZGRlZCBtdWx0aS1kaXNwbGF5IG11bHRpY2FzdCBtb2RlCisgICA0ICAyMDE5LTA1LTI5ICByYmllcm1hbm4gIEFkZGVkIGJlaGF2aW9yIG9mIG11bHRpdGhyZWFkZWQgd2dsTWFrZUN1cnJlbnQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9leHRlbnNpb25zL05WWC9OVlhfZ3B1X211bHRpY2FzdDIudHh0IGIvZXh0ZW5zaW9ucy9OVlgvTlZYX2dwdV9tdWx0aWNhc3QyLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDYzZWVjCi0tLSAvZGV2L251bGwKKysrIGIvZXh0ZW5zaW9ucy9OVlgvTlZYX2dwdV9tdWx0aWNhc3QyLnR4dApAQCAtMCwwICsxLDI0OSBAQAorTmFtZQorCisgICAgTlZYX2dwdV9tdWx0aWNhc3QyCisKK05hbWUgU3RyaW5ncworCisgICAgR0xfTlZYX2dwdV9tdWx0aWNhc3QyCisKK0NvbnRhY3QKKworICAgIEpvc2h1YSBTY2huYXJyLCBOVklESUEgQ29ycG9yYXRpb24gKGpzY2huYXJyICdhdCcgbnZpZGlhLmNvbSkKKyAgICBJbmdvIEVzc2VyLCBOVklESUEgQ29ycG9yYXRpb24gKGllc3NlciAnYXQnIG52aWRpYS5jb20pCisKK0NvbnRyaWJ1dG9ycworCisgICAgUm9iZXJ0IE1lbnplbCwgTlZJRElBCisgICAgUmFsZiBCaWVybWFubiwgTlZJRElBCisKK1N0YXR1cworCisgICAgQ29tcGxldGUuCisKK1ZlcnNpb24KKworICAgIExhc3QgTW9kaWZpZWQgRGF0ZTogSnVseSAyMywgMjAxOQorICAgIEF1dGhvciBSZXZpc2lvbjogOAorCitOdW1iZXIKKworICAgIE9wZW5HTCBFeHRlbnNpb24gIzU0MworCitEZXBlbmRlbmNpZXMKKworICAgIFRoaXMgZXh0ZW5zaW9uIGlzIHdyaXR0ZW4gYWdhaW5zdCB0aGUgT3BlbkdMIDQuNiBzcGVjaWZpY2F0aW9uCisgICAgKENvbXBhdGliaWxpdHkgUHJvZmlsZSksIGRhdGVkIE9jdG9iZXIgMjQsIDIwMTYuCisKKyAgICBUaGlzIGV4dGVuc2lvbiByZXF1aXJlcyBOVl9ncHVfbXVsdGljYXN0LgorICAgIAorICAgIFRoaXMgZXh0ZW5zaW9uIHJlcXVpcmVzIEVYVF9kZXZpY2VfZ3JvdXAuCisKKyAgICBUaGlzIGV4dGVuc2lvbiByZXF1aXJlcyBOVl92aWV3cG9ydF9hcnJheS4KKyAgICAKKyAgICBUaGlzIGV4dGVuc2lvbiByZXF1aXJlcyBOVl9jbGlwX3NwYWNlX3dfc2NhbGluZy4KKworICAgIFRoaXMgZXh0ZW5zaW9uIHJlcXVpcmVzIE5WWF9wcm9ncmVzc19mZW5jZS4KKworICAgIAorT3ZlcnZpZXcKKworICAgIFRoaXMgZXh0ZW5zaW9uIHByb3ZpZGVzIGFkZGl0aW9uYWwgbWVjaGFuaXNtcyB0aGF0IGluZmx1ZW5jZSBtdWx0aWNhc3QgcmVuZGVyaW5nIHdoaWNoIGlzCisgICAgc2ltdWx0YW5lb3VzIHJlbmRlcmluZyB0byBtdWx0aXBsZSBHUFVzLgorICAgIAorTmV3IFByb2NlZHVyZXMgYW5kIEZ1bmN0aW9ucworCisgICAgdWludCBBc3luY0NvcHlJbWFnZVN1YkRhdGFOVlgoCisgICAgICAgIHNpemVpIHdhaXRTZW1hcGhvcmVDb3VudCwgY29uc3QgdWludCAqd2FpdFNlbWFwaG9yZUFycmF5LCBjb25zdCB1aW50NjQgKndhaXRWYWx1ZUFycmF5LAorICAgICAgICB1aW50IHNyY0dwdSwgR0xiaXRmaWVsZCBkc3RHcHVNYXNrLAorICAgICAgICB1aW50IHNyY05hbWUsIEdMZW51bSBzcmNUYXJnZXQsIGludCBzcmNMZXZlbCwgaW50IHNyY1gsIGludCBzcmNZLCBpbnQgc3JjWiwKKyAgICAgICAgdWludCBkc3ROYW1lLCBHTGVudW0gZHN0VGFyZ2V0LCBpbnQgZHN0TGV2ZWwsIGludCBkc3RYLCBpbnQgZHN0WSwgaW50IGRzdFosCisgICAgICAgIHNpemVpIHNyY1dpZHRoLCBzaXplaSBzcmNIZWlnaHQsIHNpemVpIHNyY0RlcHRoLAorICAgICAgICBzaXplaSBzaWduYWxTZW1hcGhvcmVDb3VudCwgY29uc3QgdWludCAqc2lnbmFsU2VtYXBob3JlQXJyYXksIGNvbnN0IHVpbnQ2NCAqc2lnbmFsVmFsdWVBcnJheSk7CisKKyAgICBzeW5jIEFzeW5jQ29weUJ1ZmZlclN1YkRhdGFOVlgoCisgICAgICAgIHNpemVpIHdhaXRTZW1hcGhvcmVDb3VudCwgY29uc3QgdWludCAqd2FpdFNlbWFwaG9yZUFycmF5LCBjb25zdCB1aW50NjQgKmZlbmNlVmFsdWVBcnJheSwKKyAgICAgICAgdWludCByZWFkR3B1LCBHTGJpdGZpZWxkIHdyaXRlR3B1TWFzaywKKyAgICAgICAgdWludCByZWFkQnVmZmVyLCB1aW50IHdyaXRlQnVmZmVyLAorICAgICAgICBHTGludHB0ciByZWFkT2Zmc2V0LCBHTGludHB0ciB3cml0ZU9mZnNldCwgc2l6ZWlwdHIgc2l6ZSwKKyAgICAgICAgc2l6ZWkgc2lnbmFsU2VtYXBob3JlQ291bnQsIGNvbnN0IHVpbnQgKnNpZ25hbFNlbWFwaG9yZUFycmF5LCBjb25zdCB1aW50NjQgKnNpZ25hbFZhbHVlQXJyYXkpOworCisgICAgdm9pZCBVcGxvYWRHcHVNYXNrTlZYKGJpdGZpZWxkIG1hc2spOworICAgICAgICAKKyAgICB2b2lkIE11bHRpY2FzdFZpZXdwb3J0QXJyYXl2TlZYKHVpbnQgZ3B1LCB1aW50IGZpcnN0LCBzaXplaSBjb3VudCwgY29uc3QgZmxvYXQgKnYpOworCisgICAgdm9pZCBNdWx0aWNhc3RTY2lzc29yQXJyYXl2TlZYKHVpbnQgZ3B1LCB1aW50IGZpcnN0LCBzaXplaSBjb3VudCwgY29uc3QgaW50ICp2KTsKKyAgICAKKyAgICB2b2lkIE11bHRpY2FzdFZpZXdwb3J0UG9zaXRpb25XU2NhbGVOVlgodWludCBncHUsIHVpbnQgaW5kZXgsIGZsb2F0IHhjb2VmZiwgZmxvYXQgeWNvZWZmKTsgICAgCisKKyAgICAKK05ldyBUb2tlbnMKKworICAgIEFjY2VwdGVkIGJ5IHRoZSA8cG5hbWU+IHBhcmFtZXRlciBvZiBHZXRJbnRlZ2VydiBhbmQgR2V0SW50ZWdlcjY0djoKKworICAgICAgICBVUExPQURfR1BVX01BU0tfTlZYICAgICAgICAgICAgICAgICAgICAgICAgMHg5NTRBCisKK0FkZGl0aW9ucyB0byBDaGFwdGVyIDIwIChNdWx0aWNhc3QgUmVuZGVyaW5nKSBhZGRlZCB0byB0aGUgT3BlbkdMIDQuNSAoQ29tcGF0aWJpbGl0eSBQcm9maWxlKQorU3BlY2lmaWNhdGlvbiBieSBOVl9ncHVfbXVsdGljYXN0CisKKyAgICBBZGRpdGlvbnMgdG8gU2VjdGlvbiAyMC4xIChDb250cm9sbGluZyBJbmRpdmlkdWFsIEdQVXMpCisKKyAgICBUZXh0dXJlIGRhdGEgdXBsb2FkcyB1c2luZyB0aGUgZnVuY3Rpb25zIFRleEltYWdlMUQsIFRleEltYWdlMkQsIFRleEltYWdlM0QsIAorICAgIFRleFN1YkltYWdlMUQsIFRleFN1YkltYWdlMkQgYW5kIFRleFN1YkltYWdlM0QgYXJlIHJlc3RyaWN0ZWQgdG8gYSBzcGVjaWZpYyBzZXQgb2YgR1BVcyB3aXRoCisKKyAgICAgIHZvaWQgVXBsb2FkR3B1TWFza05WWChiaXRmaWVsZCBtYXNrKTsKKworICAgIFRoaXMgY29tbWFuZCBhbHNvIHJlc3RyaWN0cyBidWZmZXIgb2JqZWN0IGRhdGEgdXBsb2FkcyB1c2luZyB0aGUgZnVuY3Rpb25zIEJ1ZmZlclN0b3JhZ2UsIAorICAgIE5hbWVkQnVmZmVyU3RvcmFnZSwgQnVmZmVyU3ViRGF0YSBhbmQgTmFtZWRCdWZmZXJTdWJEYXRhIHRvIHRoZSBzcGVjaWZpZWQgc2V0IG9mIEdQVXMuCisKKyAgICBGdXJ0aGVyIHRoaXMgY29tbWFuZCBhbHNvIHJlc3RyaWN0cyBidWZmZXIgb2JqZWN0IGNsZWFycyB1c2luZyB0aGUgZnVuY3Rpb25zIENsZWFyQnVmZmVyRGF0YSwKKyAgICBDbGVhck5hbWVkQnVmZmVyRGF0YSwgQ2xlYXJCdWZmZXJTdWJEYXRhIGFuZCBDbGVhck5hbWVkQnVmZmVyU3ViRGF0YS4KKyAgICAKKyAgICBUaGUgZm9sbG93aW5nIGVycm9ycyBhcHBseSB0byBVcGxvYWRHcHVNYXNrTlZYOgorCisgICAgSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQKKyAgICAqIGlmIDxtYXNrPiBpcyB6ZXJvLAorICAgICogaWYgPG1hc2s+IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAyXm4sIHdoZXJlIG4gaXMgZXF1YWwgdG8gTVVMVElDQVNUX0dQVVNfTlYKKworICAgIElmIHRoZSBjb21tYW5kIGRvZXMgbm90IGdlbmVyYXRlIGFuIGVycm9yLCBVUExPQURfR1BVX01BU0tfTlZYIGlzIHNldCB0byA8bWFzaz4uICAKKyAgICAKKyAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBVUExPQURfR1BVX01BU0tfTlZYIGlzICgyXm4pLTEuCisKKyAgICBJZiBhIGZ1bmN0aW9uIHJlc3RyaWN0ZWQgYnkgVXBsb2FkR3B1TWFza05WWCBvcGVyYXRlcyBvbiB0ZXh0dXJlcyBvciBidWZmZXIgb2JqZWN0cworICAgIHdpdGggR1BVLXNoYXJlZCBzdG9yYWdlIHR5cGUgKGFzIG9wcG9zZWQgdG8gcGVyLUdQVSBzdG9yYWdlKSwgVVBMT0FEX0dQVV9NQVNLX05WWCBpcyBpZ25vcmVkLgorCisgICAgTW9kaWZ5IFNlY3Rpb24gMjAuMiAoTXVsdGktR1BVIEJ1ZmZlciBTdG9yYWdlKQorCisgICAgQXBwZW5kIHRoZSBmb2xsb3dpbmcgcGFyYWdyYXBoczoKKworICAgIFRvIGluaXRpYXRlIGEgY29weSBvZiBidWZmZXIgZGF0YSB3aXRob3V0IHdhaXRpbmcgZm9yIGl0IHRvIGNvbXBsZXRlLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorCisgICAgdm9pZCBBc3luY0NvcHlCdWZmZXJTdWJEYXRhTlZYKAorICAgICAgICBzaXplaSB3YWl0U2VtYXBob3JlQ291bnQsIGNvbnN0IHVpbnQgKndhaXRTZW1hcGhvcmVBcnJheSwgY29uc3QgdWludDY0ICpmZW5jZVZhbHVlQXJyYXksCisgICAgICAgIHVpbnQgcmVhZEdwdSwgR0xiaXRmaWVsZCB3cml0ZUdwdU1hc2ssCisgICAgICAgIHVpbnQgcmVhZEJ1ZmZlciwgdWludCB3cml0ZUJ1ZmZlciwKKyAgICAgICAgR0xpbnRwdHIgcmVhZE9mZnNldCwgR0xpbnRwdHIgd3JpdGVPZmZzZXQsIHNpemVpcHRyIHNpemUsCisgICAgICAgIHNpemVpIHNpZ25hbFNlbWFwaG9yZUNvdW50LCBjb25zdCB1aW50ICpzaWduYWxTZW1hcGhvcmVBcnJheSwgY29uc3QgdWludDY0ICpzaWduYWxWYWx1ZUFycmF5KTsKKworICAgIFRoaXMgY29tbWFuZCBiZWhhdmVzIGVxdWl2YWxlbnRseSB0byBNdWx0aWNhc3RDb3B5QnVmZmVyU3ViRGF0YU5WLCBleGNlcHQgdGhhdCBpdCBtYXkgYmUKKyAgICBwZXJmb3JtZWQgY29uY3VycmVudGx5IHdpdGggY29tbWFuZHMgc3VibWl0dGVkIGluIHRoZSBmdXR1cmUuCisgICAgRmVuY2Ugc2VtYXBob3JlIG9iamVjdHMgY3JlYXRlZCB3aXRoIENyZWF0ZVByb2dyZXNzRmVuY2VOVlggYXJlIHVzZWQgZm9yIHN5bmNocm9uaXphdGlvbiBvZiBvbmUgb3IgCisgICAgbXVsdGlwbGUgY29waWVzLiAKKyAgICBBbiBhcnJheSBvZiA8d2FpdFNlbWFwaG9yZUNvdW50PiBzeW5jaHJvbml6YXRpb24gb2JqZWN0cyBjYW4gYmUgc3BlY2lmaWVkIGluIHRoZSA8d2FpdFNlbWFwaG9yZXNBcnJheT4KKyAgICBwYXJhbWV0ZXIgYXMgYSBwb2ludGVyIHRvIHRoZSBhcnJheSBvZiBzZW1hcGhvcmUgb2JqZWN0cy4KKyAgICBUaGUgY29weSB3aWxsIHdhaXQgZm9yIGFsbCBmZW5jZSBzZW1hcGhvcmVzIGluIHRoZSA8d2FpdFNlbWFwaG9yZUFycmF5PiBhcnJheSB0byBiZSByZWFjaCBvciBleGNlZWQKKyAgICB0aGVpciBjb3JyZXNwb25kaW5nIGZlbmNlIHZhbHVlIGluIDxmZW5jZVZhbHVlQXJyYXk+IGJlZm9yZSBzdGFydGluZyB0aGUgdHJhbnNmZXIuIAorICAgIEEgc2lnbmFsIG9wZXJhdGlvbiBmb3IgZWFjaCBvZiB0aGUgPHNpZ25hbFNlbWFwaG9yZUNvdW50PiBzZW1hcGhvcmVzIGluIDxzaWduYWxTZW1hcGhvcmVzQXJyYXk+IGlzIHdyaXR0ZW4KKyAgICBhZnRlciB0aGUgY29weSB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGZlbmNlIHZhbHVlIGluIDxzaWduYWxWYWx1ZUFycmF5Pi4KKyAgICBUbyB3YWl0IGZvciB0aGUgY29weSB0byBjb21wbGV0ZSwgdXNlIFdhaXRTZW1hcGhvcmV1aTY0TlZYIG9yIENsaWVudFdhaXRTZW1hcGhvcmV1aTY0TlZYIHRvIHdhaXQKKyAgICBmb3IgdGhlIHNlbWFwaG9yZXMgaW4gPHNpZ25hbFNlbWFwaG9yZUFycmF5PiB0byBiZSBzaWduYWxsZWQgd2l0aCB0aGUgZmVuY2UgdmFsdWVzIGluIDxzaWduYWxWYWx1ZUFycmF5Pi4KKyAgICAKKyAgICBNb2RpZnkgU2VjdGlvbiAyMC4zLjEgKENvcHlpbmcgSW1hZ2UgRGF0YSBCZXR3ZWVuIEdQVXMpCisKKyAgICBJbnNlcnQgdGhlIGZvbGxvd2luZyBwYXJhZ3JhcGhzIGFib3ZlIHRoZSBsaW5lIHN0YXJ0aW5nICJUbyBjb3B5IHBpeGVsIHZhbHVlcyI6CisKKyAgICBUbyBpbml0aWF0ZSBhIGNvcHkgb2YgdGV4ZWwgZGF0YSB3aXRob3V0IHdhaXRpbmcgZm9yIGl0IHRvIGNvbXBsZXRlLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorCisgICAgdm9pZCBBc3luY0NvcHlJbWFnZVN1YkRhdGFOVlgoCisgICAgICAgIHNpemVpIHdhaXRTZW1hcGhvcmVDb3VudCwgY29uc3QgdWludCAqd2FpdFNlbWFwaG9yZUFycmF5LCBjb25zdCB1aW50NjQgKndhaXRWYWx1ZUFycmF5LAorICAgICAgICB1aW50IHNyY0dwdSwgR0xiaXRmaWVsZCBkc3RHcHVNYXNrLAorICAgICAgICB1aW50IHNyY05hbWUsIEdMZW51bSBzcmNUYXJnZXQsIGludCBzcmNMZXZlbCwgaW50IHNyY1gsIGludCBzcmNZLCBpbnQgc3JjWiwKKyAgICAgICAgdWludCBkc3ROYW1lLCBHTGVudW0gZHN0VGFyZ2V0LCBpbnQgZHN0TGV2ZWwsIGludCBkc3RYLCBpbnQgZHN0WSwgaW50IGRzdFosCisgICAgICAgIHNpemVpIHNyY1dpZHRoLCBzaXplaSBzcmNIZWlnaHQsIHNpemVpIHNyY0RlcHRoLAorICAgICAgICBzaXplaSBzaWduYWxTZW1hcGhvcmVDb3VudCwgY29uc3QgdWludCAqc2lnbmFsU2VtYXBob3JlQXJyYXksIGNvbnN0IHVpbnQ2NCAqc2lnbmFsVmFsdWVBcnJheSk7CisKKyAgICBUaGlzIGNvbW1hbmQgYmVoYXZlcyBlcXVpdmFsZW50bHkgdG8gTXVsdGljYXN0Q29weUltYWdlU3ViRGF0YU5WLCBleGNlcHQgdGhhdCBpdCBtYXkgYmUKKyAgICBwZXJmb3JtZWQgY29uY3VycmVudGx5IHdpdGggY29tbWFuZHMgc3VibWl0dGVkIGluIHRoZSBmdXR1cmUuIAorICAgIEZlbmNlIHNlbWFwaG9yZSBvYmplY3RzIGNyZWF0ZWQgd2l0aCBDcmVhdGVQcm9ncmVzc0ZlbmNlTlZYIGFyZSB1c2VkIGZvciBzeW5jaHJvbml6YXRpb24gb2Ygb25lIG9yCisgICAgbXVsdGlwbGUgY29waWVzLiBBbiBhcnJheSBvZiA8d2FpdFNlbWFwaG9yZUNvdW50PiBzeW5jaHJvbml6YXRpb24gb2JqZWN0cyBjYW4gYmUgc3BlY2lmaWVkIGluIHRoZSAKKyAgICA8d2FpdFNlbWFwaG9yZUFycmF5PiBwYXJhbWV0ZXIgYXMgYSBwb2ludGVyIHRvIHRoZSBhcnJheSBvZiBzZW1hcGhvcmUgb2JqZWN0cy4KKyAgICBUaGUgY29weSB3aWxsIHdhaXQgZm9yIGFsbCBmZW5jZSBzZW1hcGhvcmVzIGluIHRoZSA8d2FpdFNlbWFwaG9yZXNBcnJheT4gYXJyYXkgdG8gYmUgcmVhY2ggb3IgZXhjZWVkCisgICAgdGhlaXIgY29ycmVzcG9uZGluZyBmZW5jZSB2YWx1ZSBpbiA8ZmVuY2VWYWx1ZUFycmF5PiBiZWZvcmUgc3RhcnRpbmcgdGhlIHRyYW5zZmVyLiAKKyAgICBBIHNpZ25hbCBvcGVyYXRpb24gZm9yIGVhY2ggb2YgdGhlIDxzaWduYWxTZW1hcGhvcmVDb3VudD4gc2VtYXBob3JlcyBpbiA8c2lnbmFsU2VtYXBob3JlQXJyYXk+IGlzIHdyaXR0ZW4KKyAgICBhZnRlciB0aGUgY29weSB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGZlbmNlIHZhbHVlIGluIDxzaWduYWxWYWx1ZUFycmF5Pi4KKyAgICBUbyB3YWl0IGZvciB0aGUgY29weSB0byBjb21wbGV0ZSwgdXNlIFdhaXRTZW1hcGhvcmV1aTY0TlZYIG9yIENsaWVudFdhaXRTZW1hcGhvcmV1aTY0TlZYIHRvIHdhaXQKKyAgICBmb3IgdGhlIHNlbWFwaG9yZXMgaW4gPHNpZ25hbFNlbWFwaG9yZXNBcnJheT4gdG8gYmUgc2lnbmFsbGVkIHdpdGggdGhlIGZlbmNlIHZhbHVlcyBpbiA8c2lnbmFsVmFsdWVBcnJheT4uCisKK0FkZGl0aW9ucyB0byBDaGFwdGVyIDEzIChGaXhlZC1GdW5jdGlvbiBWZXJ0ZXggUG9zdC1Qcm9jZXNzaW5nKSBhZGRlZCB0byB0aGUgT3BlbkdMIDQuNSAoQ29tcGF0aWJpbGl0eSBQcm9maWxlKQorCisgICAgTW9kaWZ5IFNlY3Rpb24gMTMuNiAoQ29vcmRpbmF0ZSB0cmFuc2Zvcm1hdGlvbnMpCisgICAgCisgICAgVmlld3BvcnQgdHJhbnNmb3JtYXRpb24gcGFyYW1ldGVycyBmb3IgbXVsdGlwbGUgdmlld3BvcnRzIGFyZSBzcGVjaWZpZWQgdXNpbmcKKworICAgICAgICBNdWx0aWNhc3RWaWV3cG9ydEFycmF5dk5WWCh1aW50IGdwdSwgdWludCBmaXJzdCwgc2l6ZWkgY291bnQsIGNvbnN0IGZsb2F0ICogdik7CisgICAgCisgICAgd2hlcmUgdGhlIGFycmF5IG9mIHZpZXdwb3J0IHBhcmFtZXRlcnMgY2FuIGJlIGNvbnRyb2xsZWQgZm9yIGVhY2ggbXVsdGljYXN0IEdQVSwgcmVzcGVjdGl2ZWx5LgorICAgIAorICAgIEEgc2V0IG9mIHNjaXNzb3IgcmVjdGFuZ2xlcyB0aGF0IGFyZSBlYWNoIGFwcGxpZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdmlld3BvcnQgaXMgc3BlY2lmaWVkCisgICAgdXNpbmcKKyAgICAKKyAgICAgICAgTXVsdGljYXN0U2Npc3NvckFycmF5dk5WWCh1aW50IGdwdSwgdWludCBmaXJzdCwgc2l6ZWkgY291bnQsIGNvbnN0IGludCAqdik7CisgICAgCisgICAgd2hlcmUgdGhlIHJlY3RhbmdsZSBwYXJhbWV0ZXJzIGNhbiBiZSBjb250cm9sbGVkIGZvciBlYWNoIG11bHRpY2FzdCBHUFUsIHJlc3BlY3RpdmVseS4KKyAgICAKKyAgICAKKyAgICBJZiBWSUVXUE9SVF9QT1NJVElPTl9XX1NDQUxFX05WIGlzIGVuYWJsZWQsIHRoZSB3IGNvb3JkaW5hdGVzIGZvciBlYWNoCisgICAgcHJpbWl0aXZlIHNlbnQgdG8gYSBnaXZlbiB2aWV3cG9ydCB3aWxsIGJlIHNjYWxlZCBhcyBhIGZ1bmN0aW9uIG9mCisgICAgaXRzIHggYW5kIHkgY29vcmRpbmF0ZXMgdXNpbmcgdGhlIGZvbGxvd2luZyBlcXVhdGlvbjoKKworICAgICAgICB3JyA9IHhjb2VmZiAqIHggKyB5Y29lZmYgKiB5ICsgdzsKKworICAgIFRoZSBjb2VmZmljaWVudHMgZm9yICJ4IiBhbmQgInkiIHVzZWQgaW4gdGhlIGFib3ZlIGVxdWF0aW9uIGRlcGVuZCBvbiB0aGUKKyAgICB2aWV3cG9ydCBpbmRleCBhbmQgY2FuIGJlIGNvbnRyb2xsZWQgZm9yIGVhY2ggbXVsdGljYXN0IEdQVSwgcmVzcGVjdGl2ZWx5LCBieSB0aGUgY29tbWFuZAorCisgICAgICAgIE11bHRpY2FzdFZpZXdwb3J0UG9zaXRpb25XU2NhbGVOVlgodWludCBncHUsIHVpbnQgaW5kZXgsIGZsb2F0IHhjb2VmZiwgZmxvYXQgeWNvZWZmKTsKKworICAgIEFuIGVycm9yIElOVkFMSURfVkFMVUUgZXJyb3IgaXMgZ2VuZXJhdGVkIGlmIDxncHU+IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBNVUxUSUNBU1RfR1BVU19OVi4gCisgICAgCitBZGRpdGlvbnMgdG8gdGhlIE9wZW5HTCBTaGFkaW5nIExhbmd1YWdlIFNwZWNpZmljYXRpb24sIFZlcnNpb24gNC41MAorICAgICAgICAKKyAgICBJbmNsdWRpbmcgdGhlIGZvbGxvd2luZyBsaW5lIGluIGEgc2hhZGVyIGNhbiBiZSB1c2VkIHRvIGVudW1lcmF0ZSBtdWx0aWNhc3QgR1BVcworICAgIGJ5IHVzaW5nIHRoZSBzaGFkZXIgYnVpbHQtaW4gdmFyaWFibGUgZ2xfRGV2aWNlSW5kZXg6CisKKyAgICAgICAgI2V4dGVuc2lvbiBHTF9FWFRfZGV2aWNlX2dyb3VwIDogZW5hYmxlCisgICAgCisgICAgRWFjaCBtdWx0aWNhc3QgR1BVIGNvbnRhaW5zIGEgdW5pcXVlIGRldmljZSBpbmRleCBpbiB0aGUgZ2xfRGV2aWNlSW5kZXggdmFyaWFibGUuCisKK0Vycm9ycworCisgICAgUmVsYXhhdGlvbiBvZiBJTlZBTElEX0VOVU0gZXJyb3JzCisgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgR2V0SW50ZWdlcnYgYW5kIEdldEludGVnZXI2NHYgbm93IGFjY2VwdCBuZXcgdG9rZW5zIGFzCisgICAgZGVzY3JpYmVkIGluIHRoZSAiTmV3IFRva2VucyIgc2VjdGlvbi4KKyAgICAKK05ldyBTdGF0ZQorCisgICAgQWRkaXRpb25zIHRvIFRhYmxlIDIzLjYgQnVmZmVyIE9iamVjdCBTdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbAorICAgIEdldCBWYWx1ZSAgICAgICAgICAgICAgICAgICBUeXBlICBHZXQgQ29tbWFuZCBWYWx1ZSAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICBTZWMuICBBdHRyaWJ1dGUKKyAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0gLS0tLS0tLS0tLS0gLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAgLS0tLSAgLS0tLS0tLS0tCisgICAgVVBMT0FEX0dQVV9NQVNLX05WWCAgICAgICAgICBaKyAgIEdldEludGVnZXJ2ICAgKiAgICBNYXNrIG9mIEdQVXMgdGhhdCAgICAgICAgIDIwLjEgICAgIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0cyBidWZmZXIgZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVzCisgICAgKiBTZWUgc2VjdGlvbiAyMC4xCisKKworTmV3IEltcGxlbWVudGF0aW9uIERlcGVuZGVudCBTdGF0ZQorCisgICAgTm9uZS4KKworU2FtcGxlIENvZGUKKworICAgIE5vbmUuCisKK0lzc3VlcworCisgICAgTm9uZS4KKworUmV2aXNpb24gSGlzdG9yeQorCisgICAgUmV2LiAgICBEYXRlICAgIEF1dGhvciAgICBDaGFuZ2VzCisgICAgLS0tLSAgLS0tLS0tLS0gIC0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAxICAgIDA5LzIwLzE3ICBqc2NobmFyciAgaW5pdGlhbCBkcmFmdAorICAgICAyICAgIDAyLzIzLzE4ICByYmllcm1hbm4gdXBkYXRlZCBkcmFmdCB3aXRoIG5ldyBmdW5jdGlvbnMKKyAgICAgMyAgICAwNS8yMy8xOCAgcmJpZXJtYW5uIHVwZGF0ZWQgZHJhZnQgd2l0aCBuZXcgVmlld3BvcnRBcnJheSBhbmQgQXN5bmNDb3B5IGZ1bmN0aW9ucworICAgICA0ICAgIDA2LzA4LzE4ICByYmllcm1hbm4gYWRkZWQgTlZYX3Byb2dyZXNzX2ZlbmNlIGZvciBzeW5jaHJvbml6YXRpb24gb2JqZWN0cworICAgICA1ICAgIDA4LzE1LzE4ICByYmllcm1hbm4gdXBkYXRlZCBkcmFmdCB3aXRoIGdsX2RldmljZUluZGV4CisgICAgIDYgICAgMDQvMTYvMTkgIHJiaWVybWFubiB1cGRhdGVkIGRyYWZ0IHdpdGggVXBsb2FkR3B1TWFza05WWAorICAgICA3ICAgIDA3LzE5LzE5ICByYmllcm1hbm4gdXBkYXRlZCBkcmFmdCB3aXRoIG1vZGlmaWNhdGlvbnMgb2YgVXBsb2FkR3B1TWFza05WWCBzZWN0aW9uCisgICAgIDggICAgMDcvMjMvMTkgIHJiaWVybWFubiB1cGRhdGVkIGRyYWZ0IHdpdGggc3VwcG9ydCBvZiBDbGVhcihOYW1lZClCdWZmZXIoU3ViKURhdGEgYnkgVXBsb2FkR3B1TWFza05WWAorCmRpZmYgLS1naXQgYS9leHRlbnNpb25zL05WWC9OVlhfcHJvZ3Jlc3NfZmVuY2UudHh0IGIvZXh0ZW5zaW9ucy9OVlgvTlZYX3Byb2dyZXNzX2ZlbmNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzIxZWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0ZW5zaW9ucy9OVlgvTlZYX3Byb2dyZXNzX2ZlbmNlLnR4dApAQCAtMCwwICsxLDE4MiBAQAorTmFtZQorCisgICAgTlZYX3Byb2dyZXNzX2ZlbmNlCisKK05hbWUgU3RyaW5ncworCisgICAgR0xfTlZYX3Byb2dyZXNzX2ZlbmNlCisKK0NvbnRyaWJ1dG9ycworCisgICAgSW5nbyBFc3NlciwgTlZJRElBCisgICAgSm9zaHVhIFNjaG5hcnIsIE5WSURJQQorICAgIFJhbGYgQmllcm1hbm4sIE5WSURJQQorCitDb250YWN0CisKKyAgICBSYWxmIEJpZXJtYW5uLCBOVklESUEgY29ycG9yYXRpb24gKHJiaWVybWFubidhdCcgbnZpZGlhLmNvbSkKKworU3RhdHVzCisKKyAgICBDb21wbGV0ZS4KKworVmVyc2lvbgorCisgICAgTGFzdCBNb2RpZmllZCBEYXRlOiBBdWd1c3QgMTUsIDIwMTgKKyAgICBBdXRob3IgUmV2aXNpb246IDIKKworTnVtYmVyCisKKyAgICBPcGVuR0wgRXh0ZW5zaW9uICM1NDEKKworRGVwZW5kZW5jaWVzCisKKyAgICBUaGlzIGV4dGVuc2lvbiBpcyB3cml0dGVuIGFnYWluc3QgdGhlIE9wZW5HTCA0LjUgYW5kIE9wZW5HTCBFUyAzLjIgc3BlY2lmaWNhdGlvbnMuCisgICAgCisgICAgVGhpcyBleHRlbnNpb24gcmVxdWlyZXMgRVhUX2V4dGVybmFsX29iamVjdHMuCisKKyAgICBUaGlzIGV4dGVuc2lvbiByZXF1aXJlcyBFWFRfZXh0ZXJuYWxfb2JqZWN0c193aW4zMgorCisgICAgVGhpcyBleHRlbnNpb24gaW50ZXJhY3RzIHdpdGggTlZfZ3B1X211bHRpY2FzdC4KKworT3ZlcnZpZXcKKworICAgIFRoaXMgZXh0ZW5zaW9uIHVzZXMgdGhlIGNvbmNlcHQgb2YgR0wgc2VtYXBob3JlcyBhcyBkZWZpbmVkIGluIAorICAgIEdMX0VYVF9zZW1hcGhvcmUgdG8gYmV0dGVyIGNvb3JkaW5hdGUgb3BlcmF0aW9ucyBiZXR3ZWVuIG11bHRpcGxlCisgICAgR1BVIGNvbW1hbmQgc3RyZWFtcy4gQSBzZW1hcGhvcmUgdHlwZSBjYWxsZWQgInByb2dyZXNzIGZlbmNlIiBpcyAKKyAgICBkZXJpdmVkIGZyb20gdGhlIEdMIHNlbWFwaG9yZS4gVGhlIHByb2dyZXNzIGZlbmNlIHNlbWFwaG9yZSBpcworICAgIGNyZWF0ZWQgYnkgQ3JlYXRlUHJvZ3Jlc3NGZW5jZU5WWCgpIHJldHVybmluZyB0aGUgbmFtZSBvZiBhIG5ld2x5CisgICAgY3JlYXRlZCBzZW1hcGhvcmUgb2JqZWN0LiBMaWtlIG90aGVyIHNlbWFwaG9yZXMsIHRoZXNlIGFyZSBzaWduYWxlZAorICAgIGJ5IHRoZSBHTCBzZXJ2ZXIuIEVhY2ggc2lnbmFsIG9wZXJhdGlvbiBpcyBxdWV1ZWQgaW4gdGhlIEdQVSBjb21tYW5kCisgICAgc3RyZWFtIHdpdGggYW4gYXNzb2NpYXRlZCBmZW5jZSB2YWx1ZSB0aGF0IGlzIHdyaXR0ZW4gdG8gdGhlIHNlbWFwaG9yZQorICAgIGF0IHRoZSBjb21wbGV0aW9uIG9mIGEgc2lnbmFsIG9wZXJhdGlvbi4gCisKKyAgICBBIEdMIHNlcnZlciB3YWl0IGNhbiBiZSBhZGRlZCB0byB0aGUgY29tbWFuZCBzdHJlYW0gdXNpbmcgV2FpdFNlbWFwaG9yZXVpNjROVlguCisgICAgVGhpcyBibG9ja3MgdGhlIEdQVSB1bnRpbCB0aGUgcHJvZ3Jlc3MgZmVuY2Ugc2VtYXBob3JlIHJlYWNoZXMgb3IgZXhjZWVkcyB0aGUgCisgICAgc3BlY2lmaWVkIGZlbmNlIHZhbHVlLgorICAgIAorICAgIEEgR0wgY2xpZW50IHdhaXQgY2FuIGJlIGluaXRpYXRlZCB1c2luZyBDbGllbnRXYWl0U2VtYXBob3JldWk2NE5WWC4gCisgICAgVGhpcyBibG9ja3MgdGhlIENQVSB1bnRpbCB0aGUgc3BlY2lmaWVkIGZlbmNlIHZhbHVlIGlzIHJlYWNoZWQuCisKK05ldyBQcm9jZWR1cmVzIGFuZCBGdW5jdGlvbnMKKworICAgIHVpbnQgQ3JlYXRlUHJvZ3Jlc3NGZW5jZU5WWCgpOworCisgICAgdm9pZCBTaWduYWxTZW1hcGhvcmV1aTY0TlZYKHVpbnQgc2lnbmFsR3B1LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZWkgZmVuY2VPYmplY3RDb3VudCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQgKnNlbWFwaG9yZUFycmF5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDY0ICpmZW5jZVZhbHVlQXJyYXkpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgdm9pZCBXYWl0U2VtYXBob3JldWk2NE5WWCh1aW50IHdhaXRHcHUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZWkgZmVuY2VPYmplY3RDb3VudCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50ICpzZW1hcGhvcmVBcnJheSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50NjQgKmZlbmNlVmFsdWVBcnJheSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgdm9pZCBDbGllbnRXYWl0U2VtYXBob3JldWk2NE5WWChzaXplaSBmZW5jZU9iamVjdENvdW50LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQgKnNlbWFwaG9yZUFycmF5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ2NCAqZmVuY2VWYWx1ZUFycmF5KTsKKworTmV3IFR5cGVzCisKKyAgICBOb25lCisKK05ldyBUb2tlbnMKKworICAgIE5vbmUKKworQWRkaXRpb25zIHRvIENoYXB0ZXIgNCBvZiB0aGUgT3BlbkdMIDQuNSBTcGVjaWZpY2F0aW9uIChFdmVudCBNb2RlbCkKKworICBBZGRpdGlvbiB0byBTZWN0aW9uIDQuMiwgIlNlbWFwaG9yZSBPYmplY3RzlAorCisKKyAgICBBIGNvbW1hbmQgCisKKyAgICAgIHVpbnQgQ3JlYXRlUHJvZ3Jlc3NGZW5jZU5WWCgpOworCisgICAgY3JlYXRlcyBhIG5hbWVkIHByb2dyZXNzIGZlbmNlIHNlbWFwaG9yZSBvYmplY3QuCisKKyAgICBBIHNldCBvZiBwcm9ncmVzcyBmZW5jZSBvYmplY3RzIGNhbiBiZSBkZWxldGVkIGJ5IHBhc3NpbmcgdGhlIG5hbWVzIGluIHRoZQorICAgIGFycmF5IDxzZW1hcGhvcmVzPiB0byB0aGUgY29tbWFuZAorCisgICAgICB2b2lkIERlbGV0ZVNlbWFwaG9yZXNFWFQoc2l6ZWkgbiwgY29uc3QgdWludCAqc2VtYXBob3Jlcyk7CisKKyAgICBQcm9ncmVzcyBmZW5jZSBvcGVyYXRpb25zIGNhbiBiZSBwZXJmb3JtZWQgb24gbmFtZWQgc2VtYXBob3JlIG9iamVjdHMuIFRoZQorICAgIGNvbW1hbmQKKworICAgICAgdm9pZCBTaWduYWxTZW1hcGhvcmV1aTY0TlZYKHVpbnQgc2lnbmFsR3B1LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplaSBmZW5jZU9iamVjdENvdW50LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50ICpzZW1hcGhvcmVBcnJheSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDY0ICpmZW5jZVZhbHVlQXJyYXkpOworCisgICAgU2lnbmFsU2VtYXBob3JldWk2NE5WWCBpbnNlcnRzIGEgc2lnbmFsIG9wZXJhdGlvbiBmb3IgZWFjaCBvZiB0aGUgPGZlbmNlT2JqZWN0Q291bnQ+CisgICAgc2VtYXBob3JlcyBpbiA8c2VtYXBob3JlQXJyYXk+LiBFYWNoIHNpZ25hbCB3cml0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgZmVuY2UgdmFsdWUgaW4gCisgICAgPGZlbmNlVmFsdWVBcnJheT4uCisKKyAgICBJZiB0aGUgR0wgY29udGV4dCB1c2VzIE5WX2dwdV9tdWx0aWNhc3QgdG8gY29udHJvbCBtdWx0aXBsZSBHUFVzLCB0aGUgCisgICAgPHNpZ25hbEdwdT4gcGFyYW1ldGVyIGlzIHJlcXVpcmVkIHRvIHNwZWNpZnkgdGhlIEdQVSB0aGF0IHNpZ25hbHMgdGhlIAorICAgIGZlbmNlIHZhbHVlIHRvIHRoZSBmZW5jZSBvYmplY3QuIE90aGVyd2lzZSA8c2lnbmFsR3B1PiBtdXN0IGJlIDAuCisKKyAgICBJZiBhIHZhbHVlIGluIDxzZW1hcGhvcmVBcnJheT4gaXMgbm90IHRoZSBuYW1lIG9mIGEgc2VtYXBob3JlIG9iamVjdCwgCisgICAgYW4gSU5WQUxJRF9WQUxVRSBlcnJvciBpcyBnZW5lcmF0ZWQuCisKKyAgICBJZiBOVl9ncHVfbXVsdGljYXN0IGlzIHN1cHBvcnRlZCwgYW4gSU5WQUxJRF9WQUxVRSBlcnJvciBpcyBnZW5lcmF0ZWQgaWYgPHNpZ25hbEdwdT4gCisgICAgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIE1VTFRJQ0FTVF9HUFVTX05WLiBPdGhlcndpc2UsIGFuIElOVkFMSURfVkFMVUUgZXJyb3IgaXMgCisgICAgZ2VuZXJhdGVkIGlmIDxzaWduYWxHcHU+ICE9IDAuCisKKyAgICBUaGUgY29tbWFuZAorCisgICAgICB2b2lkIFdhaXRTZW1hcGhvcmV1aTY0TlZYKHVpbnQgd2FpdEdwdSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVpIGZlbmNlT2JqZWN0Q291bnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50ICpzZW1hcGhvcmVBcnJheSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ2NCAqZmVuY2VWYWx1ZUFycmF5KTsKKworICAgIGluc2VydHMgYSB3YWl0IGNvbW1hbmQgaW50byB0aGUgR0wgc2VydmVyIGNvbW1hbmQgc3RyZWFtIG9mIGEgc3BlY2lmaWVkIEdQVSA8d2FpdEdwdT4gCisgICAgZm9yIGVhY2ggb2YgdGhlIDxmZW5jZU9iamVjdENvdW50PiBwcm9ncmVzcyBmZW5jZSBvYmplY3RzIGluIDxzZW1hcGhvcmVBcnJheT4gd2hpY2ggCisgICAgYmxvY2tzIDx3YWl0R3B1PiB1bnRpbCBhbGwgZmVuY2Ugb2JqZWN0cyByZWFjaCBvciBleGNlZWQgdGhlIGFzc29jaWF0ZWQgZmVuY2UgdmFsdWUgCisgICAgaW4gPGZlbmNlVmFsdWVBcnJheT4uCisKKyAgICBJZiBhIHZhbHVlIGluIDxzZW1hcGhvcmVBcnJheT4gaXMgbm90IHRoZSBuYW1lIG9mIGEgc2VtYXBob3JlIG9iamVjdCwgCisgICAgYW4gSU5WQUxJRF9WQUxVRSBlcnJvciBpcyBnZW5lcmF0ZWQuCisKKyAgICBUaGUgY29tbWFuZAorCisgICAgICB2b2lkIENsaWVudFdhaXRTZW1hcGhvcmV1aTY0TlZYKHNpemVpIGZlbmNlT2JqZWN0Q291bnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50ICpzZW1hcGhvcmVBcnJheSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ2NCAqZmVuY2VWYWx1ZUFycmF5KTsKKworICAgIGJsb2NrcyB0aGUgQ1BVIHVudGlsIGVhY2ggb2YgdGhlIDxmZW5jZU9iamVjdENvdW50PiBmZW5jZSBvYmplY3RzIGluIGEgCisgICAgc3BlY2lmaWVkIGFycmF5IDxzZW1hcGhvcmVBcnJheT4gcmVhY2hlcyB0aGUgY29ycmVzcG9uZGluZyBmZW5jZSB2YWx1ZSAKKyAgICBpbiA8ZmVuY2VWYWx1ZUFycmF5PiwgcmVzcGVjdGl2ZWx5LiAKKworICAgIElmIGEgdmFsdWUgaW4gPHNlbWFwaG9yZUFycmF5PiBpcyBub3QgdGhlIG5hbWUgb2YgYSBzZW1hcGhvcmUgb2JqZWN0LCAKKyAgICBhbiBJTlZBTElEX1ZBTFVFIGVycm9yIGlzIGdlbmVyYXRlZC4KKyAgCisgICAgVGhlIGNvbW1hbmRzIFNpZ25hbFNlbWFwaG9yZXVpNjROVlgsIFdhaXRTZW1hcGhvcmV1aTY0TlZYIGFuZCAKKyAgICBDbGllbnRXYWl0U2VtYXBob3JldWk2NE5WWCBhY2NlcHQgc2VtYXBob3JlIG9iamVjdCBuYW1lcyBhcyBpbnB1dCBpbiAKKyAgICA8c2VtYXBob3JlQXJyYXk+IHRoYXQgd2VyZSBjcmVhdGVkIGJ5IENyZWF0ZVByb2dyZXNzRmVuY2VOVlggb3IgaW1wb3J0ZWQKKyAgICBmcm9tIGEgaGFuZGxlIG9mIHRoZSB0eXBlIEhBTkRMRV9UWVBFX0QzRDEyX0ZFTkNFX0VYVC4gCisgICAgSWYgYSB2YWx1ZSBpbiA8c2VtYXBob3JlQXJyYXk+IGlzIG5vdCB0aGUgbmFtZSBvZiBzdWNoIGEgc2VtYXBob3JlIG9iamVjdCwgCisgICAgYW4gSU5WQUxJRF9WQUxVRSBlcnJvciBpcyBnZW5lcmF0ZWQuCisgICAgCisgICAgVGhlIGNvbW1hbmQKKworICAgICAgYm9vbGVhbiBJc1NlbWFwaG9yZUVYVCh1aW50IHNlbWFwaG9yZSk7CisKKyAgICBjYW4gYmUgdXNlZCB3aXRoIHByb2dyZXNzIGZlbmNlIHNlbWFwaG9yZXMgYW5kIHJldHVybnMgVFJVRSBpZiA8c2VtYXBob3JlPgorICAgIGlzIHRoZSBuYW1lIG9mIGEgc2VtYXBob3JlIGFzIGRlZmluZWQgaW4gRVhUX2V4dGVybmFsX29iamVjdHMuCisKK0lzc3VlcworCisgICAgMSkgQXJlIFZ1bGthbiBzZW1hcGhvcmVzIGltcG9ydGVkIHZpYSB0aGUgR0xfRVhUX21lbW9yeV9vYmplY3Rfd2luMzIgc3VwcG9ydGVkCisgICAgICAgYnkgR0xfTlZYX3Byb2dyZXNzX2ZlbmNlIGFzIGlucHV0IHBhcmFtZXRlcnM/CisKKyAgICAgICBSRVNPTFZFRDogTm8uIEFzIFZ1bGthbiBzZW1hcGhvcmVzIGN1cnJlbnRseSBkbyBub3Qgc3VwcG9ydCBwcm9ncmVzcyBmZW5jZQorICAgICAgIG9wZXJhdGlvbiwgdGhlc2UgYXJlIG5vdCBjb21wYXRpYmxlIHdpdGggcHJvZ3Jlc3MgZmVuY2Ugc2VtYXBob3Jlcy4KKworUmV2aXNpb24gSGlzdG9yeQorCisgICAgUmV2aXNpb24gMSwgMjAxOC0wOC0xNCAoUmFsZiBCaWVybWFubikKKyAgICAgICAgLSBJbml0aWFsIHNwZWNpZmljYXRpb24gcHJvcG9zYWwuCisKKyAgICBSZXZpc2lvbiAyLCAyMDE4LTA4LTE1IChSYWxmIEJpZXJtYW5uKQorICAgICAgICAtIEFkZGluZyBWdWxrYW4gc2VtYXBob3JlIGxpbWl0YXRpb24gdG8gSXNzdWVzLgpkaWZmIC0tZ2l0IGEvZXh0ZW5zaW9ucy9hcmJleHQucGhwIGIvZXh0ZW5zaW9ucy9hcmJleHQucGhwCmluZGV4IDNmZTVhNTkuLjFhOTFlZmIgMTAwNjQ0Ci0tLSBhL2V4dGVuc2lvbnMvYXJiZXh0LnBocAorKysgYi9leHRlbnNpb25zL2FyYmV4dC5waHAKQEAgLTQxOSw0ICs0MTksNiBAQAogPC9saT4KIDxsaSB2YWx1ZT0xOTU+PGEgaHJlZj0iZXh0ZW5zaW9ucy9BUkIvQVJCX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljLnR4dCI+R0xfQVJCX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljPC9hPgogPC9saT4KKzxsaSB2YWx1ZT0xOTY+PGEgaHJlZj0iZXh0ZW5zaW9ucy9LSFIvS0hSX3NoYWRlcl9zdWJncm91cC50eHQiPkdMX0tIUl9zaGFkZXJfc3ViZ3JvdXA8L2E+Cis8L2xpPgogPC9vbD4KZGlmZiAtLWdpdCBhL2V4dGVuc2lvbnMvZXNleHQucGhwIGIvZXh0ZW5zaW9ucy9lc2V4dC5waHAKaW5kZXggMDc2NTBjNS4uNzIzMDQ5MSAxMDA2NDQKLS0tIGEvZXh0ZW5zaW9ucy9lc2V4dC5waHAKKysrIGIvZXh0ZW5zaW9ucy9lc2V4dC5waHAKQEAgLTY2NSw0ICs2NjUsOCBAQAogPC9saT4KIDxsaSB2YWx1ZT0zMjA+PGEgaHJlZj0iZXh0ZW5zaW9ucy9FWFQvRVhUX3RleHR1cmVfc2hhZG93X2xvZC50eHQiPkdMX0VYVF90ZXh0dXJlX3NoYWRvd19sb2Q8L2E+CiA8L2xpPgorPGxpIHZhbHVlPTMyMT48YSBocmVmPSJleHRlbnNpb25zL0tIUi9LSFJfc2hhZGVyX3N1Ymdyb3VwLnR4dCI+R0xfS0hSX3NoYWRlcl9zdWJncm91cDwvYT4KKzwvbGk+Cis8bGkgdmFsdWU9MzIyPjxhIGhyZWY9ImV4dGVuc2lvbnMvTlYvTlZfc2hhZGVyX3N1Ymdyb3VwX3BhcnRpdGlvbmVkLnR4dCI+R0xfTlZfc2hhZGVyX3N1Ymdyb3VwX3BhcnRpdGlvbmVkPC9hPgorPC9saT4KIDwvb2w+CmRpZmYgLS1naXQgYS9leHRlbnNpb25zL2dsZXh0LnBocCBiL2V4dGVuc2lvbnMvZ2xleHQucGhwCmluZGV4IDJjMjM4ZjQuLmMwMjA0YmQgMTAwNjQ0Ci0tLSBhL2V4dGVuc2lvbnMvZ2xleHQucGhwCisrKyBiL2V4dGVuc2lvbnMvZ2xleHQucGhwCkBAIC0xMDE5LDQgKzEwMTksMTIgQEAKIDwvbGk+CiA8bGkgdmFsdWU9NTQwPjxhIGhyZWY9ImV4dGVuc2lvbnMvTUVTQS9NRVNBX2ZyYW1lYnVmZmVyX2ZsaXBfeS50eHQiPkdMX01FU0FfZnJhbWVidWZmZXJfZmxpcF95PC9hPgogPC9saT4KKzxsaSB2YWx1ZT01NDE+PGEgaHJlZj0iZXh0ZW5zaW9ucy9OVlgvTlZYX3Byb2dyZXNzX2ZlbmNlLnR4dCI+R0xfTlZYX3Byb2dyZXNzX2ZlbmNlPC9hPgorPC9saT4KKzxsaSB2YWx1ZT01NDI+PGEgaHJlZj0iZXh0ZW5zaW9ucy9OVi9XR0xfTlZfbXVsdGlncHVfY29udGV4dC50eHQiPldHTF9OVl9tdWx0aWdwdV9jb250ZXh0PC9hPgorPC9saT4KKzxsaSB2YWx1ZT01NDM+PGEgaHJlZj0iZXh0ZW5zaW9ucy9OVlgvTlZYX2dwdV9tdWx0aWNhc3QyLnR4dCI+R0xfTlZYX2dwdV9tdWx0aWNhc3QyPC9hPgorPC9saT4KKzxsaSB2YWx1ZT01NDQ+PGEgaHJlZj0iZXh0ZW5zaW9ucy9OVi9OVl9zaGFkZXJfc3ViZ3JvdXBfcGFydGl0aW9uZWQudHh0Ij5HTF9OVl9zaGFkZXJfc3ViZ3JvdXBfcGFydGl0aW9uZWQ8L2E+Cis8L2xpPgogPC9vbD4KZGlmZiAtLWdpdCBhL2V4dGVuc2lvbnMvcmVnaXN0cnkucHkgYi9leHRlbnNpb25zL3JlZ2lzdHJ5LnB5CmluZGV4IDUyMWVmZDQuLjFjMTc2ZjQgMTAwNjQ0Ci0tLSBhL2V4dGVuc2lvbnMvcmVnaXN0cnkucHkKKysrIGIvZXh0ZW5zaW9ucy9yZWdpc3RyeS5weQpAQCAtMjkzNSw2ICsyOTM1LDEyIEBACiAgICAgICAgICdmbGFncycgOiB7ICdwdWJsaWMnIH0sCiAgICAgICAgICd1cmwnIDogJ2V4dGVuc2lvbnMvS0hSL0tIUl9yb2J1c3RuZXNzLnR4dCcsCiAgICAgfSwKKyAgICAnR0xfS0hSX3NoYWRlcl9zdWJncm91cCcgOiB7CisgICAgICAgICdhcmJudW1iZXInIDogMTk2LAorICAgICAgICAnZXNudW1iZXInIDogMzIxLAorICAgICAgICAnZmxhZ3MnIDogeyAncHVibGljJyB9LAorICAgICAgICAndXJsJyA6ICdleHRlbnNpb25zL0tIUi9LSFJfc2hhZGVyX3N1Ymdyb3VwLnR4dCcsCisgICAgfSwKICAgICAnR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19oZHInIDogewogICAgICAgICAnYXJibnVtYmVyJyA6IDExOCwKICAgICAgICAgJ2VzbnVtYmVyJyA6IDExNywKQEAgLTM0MjIsNiArMzQyOCwxOCBAQAogICAgICAgICAnc3VwcG9ydGVycycgOiB7ICdOVklESUEnIH0sCiAgICAgICAgICd1cmwnIDogJ2V4dGVuc2lvbnMvTlYvTlZfZ3B1X211bHRpY2FzdC50eHQnLAogICAgIH0sCisgICAgJ0dMX05WWF9ncHVfbXVsdGljYXN0MicgOiB7CisgICAgICAgICdudW1iZXInIDogNTQzLAorICAgICAgICAnZmxhZ3MnIDogeyAncHVibGljJyB9LAorICAgICAgICAnc3VwcG9ydGVycycgOiB7ICdOVklESUEnIH0sCisgICAgICAgICd1cmwnIDogJ2V4dGVuc2lvbnMvTlZYL05WWF9ncHVfbXVsdGljYXN0Mi50eHQnLAorICAgIH0sCisgICAgJ0dMX05WWF9wcm9ncmVzc19mZW5jZScgOiB7CisgICAgICAgICdudW1iZXInIDogNTQxLAorICAgICAgICAnZmxhZ3MnIDogeyAncHVibGljJyB9LAorICAgICAgICAnc3VwcG9ydGVycycgOiB7ICdOVklESUEnIH0sCisgICAgICAgICd1cmwnIDogJ2V4dGVuc2lvbnMvTlZYL05WWF9wcm9ncmVzc19mZW5jZS50eHQnLAorICAgIH0sCiAgICAgJ0dMX05WX2dwdV9wcm9ncmFtNCcgOiB7CiAgICAgICAgICdudW1iZXInIDogMzIyLAogICAgICAgICAnZmxhZ3MnIDogeyAncHVibGljJyB9LApAQCAtMzczMiw2ICszNzUwLDEyIEBACiAgICAgICAgICdmbGFncycgOiB7ICdwdWJsaWMnIH0sCiAgICAgICAgICd1cmwnIDogJ2V4dGVuc2lvbnMvTlYvTlZfc2hhZGVyX3RocmVhZF9zaHVmZmxlLnR4dCcsCiAgICAgfSwKKyAgICAnR0xfTlZfc2hhZGVyX3N1Ymdyb3VwX3BhcnRpdGlvbmVkJyA6IHsKKyAgICAgICAgJ251bWJlcicgOiA1NDQsCisgICAgICAgICdlc251bWJlcicgOiAzMjIsCisgICAgICAgICdmbGFncycgOiB7ICdwdWJsaWMnIH0sCisgICAgICAgICd1cmwnIDogJ2V4dGVuc2lvbnMvTlYvTlZfc2hhZGVyX3N1Ymdyb3VwX3BhcnRpdGlvbmVkLnR4dCcsCisgICAgfSwKICAgICAnR0xfTlZfc2hhZGluZ19yYXRlX2ltYWdlJyA6IHsKICAgICAgICAgJ251bWJlcicgOiA1MzEsCiAgICAgICAgICdlc251bWJlcicgOiAzMTUsCkBAIC01NTE0LDQgKzU1MzgsMTAgQEAKICAgICAgICAgJ3N1cHBvcnRlcnMnIDogeyAnS0hSJyB9LAogICAgICAgICAndXJsJyA6ICdleHRlbnNpb25zL09NTC9XR0xfT01MX3N5bmNfY29udHJvbC50eHQnLAogICAgIH0sCisgICAgJ1dHTF9OVl9tdWx0aWdwdV9jb250ZXh0JyA6IHsKKyAgICAgICAgJ251bWJlcicgOiA1NDIsCisgICAgICAgICdmbGFncycgOiB7ICdwdWJsaWMnIH0sCisgICAgICAgICdzdXBwb3J0ZXJzJyA6IHsgJ05WSURJQScgfSwKKyAgICAgICAgJ3VybCcgOiAnZXh0ZW5zaW9ucy9OVi9XR0xfTlZfbXVsdGlncHVfY29udGV4dC50eHQnLAorICAgIH0sCiB9CmRpZmYgLS1naXQgYS94bWwvZ2VuaGVhZGVycy5weSBiL3htbC9nZW5oZWFkZXJzLnB5CmluZGV4IDk3N2RhYzguLmJjNjBiNTkgMTAwNzU1Ci0tLSBhL3htbC9nZW5oZWFkZXJzLnB5CisrKyBiL3htbC9nZW5oZWFkZXJzLnB5CkBAIC0xLDQgKzEsNCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIS91c3IvYmluL2VudiBweXRob24zCiAjCiAjIENvcHlyaWdodCAoYykgMjAxMy0yMDE4IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KICMKZGlmZiAtLWdpdCBhL3htbC9nbC54bWwgYi94bWwvZ2wueG1sCmluZGV4IGEyNWU5NDEuLjBjMjA4NzcgMTAwNjQ0Ci0tLSBhL3htbC9nbC54bWwKKysrIGIveG1sL2dsLnhtbApAQCAtMjk5MCw2ICsyOTkwLDE4IEBACiAgICAgICAgICAgICA8ZW51bSBuYW1lPSJHTF9BTExfU0hBREVSX0JJVFNfRVhUIi8+CiAgICAgICAgIDwvZ3JvdXA+CiAKKyAgICAgICAgPGdyb3VwIG5hbWU9IlN1Ymdyb3VwU3VwcG9ydGVkRmVhdHVyZXMiPgorICAgICAgICAgICAgPGVudW0gbmFtZT0iR0xfU1VCR1JPVVBfRkVBVFVSRV9CQVNJQ19CSVRfS0hSIi8+CisgICAgICAgICAgICA8ZW51bSBuYW1lPSJHTF9TVUJHUk9VUF9GRUFUVVJFX1ZPVEVfQklUX0tIUiIvPgorICAgICAgICAgICAgPGVudW0gbmFtZT0iR0xfU1VCR1JPVVBfRkVBVFVSRV9BUklUSE1FVElDX0JJVF9LSFIiLz4KKyAgICAgICAgICAgIDxlbnVtIG5hbWU9IkdMX1NVQkdST1VQX0ZFQVRVUkVfQkFMTE9UX0JJVF9LSFIiLz4KKyAgICAgICAgICAgIDxlbnVtIG5hbWU9IkdMX1NVQkdST1VQX0ZFQVRVUkVfU0hVRkZMRV9CSVRfS0hSIi8+CisgICAgICAgICAgICA8ZW51bSBuYW1lPSJHTF9TVUJHUk9VUF9GRUFUVVJFX1NIVUZGTEVfUkVMQVRJVkVfQklUX0tIUiIvPgorICAgICAgICAgICAgPGVudW0gbmFtZT0iR0xfU1VCR1JPVVBfRkVBVFVSRV9DTFVTVEVSRURfQklUX0tIUiIvPgorICAgICAgICAgICAgPGVudW0gbmFtZT0iR0xfU1VCR1JPVVBfRkVBVFVSRV9RVUFEX0JJVF9LSFIiLz4KKyAgICAgICAgICAgIDxlbnVtIG5hbWU9IkdMX1NVQkdST1VQX0ZFQVRVUkVfUEFSVElUSU9ORURfQklUX05WIi8+CisgICAgICAgIDwvZ3JvdXA+CisKICAgICAgICAgPGdyb3VwIG5hbWU9IlZlcnRleFBvaW50ZXJUeXBlIj4KICAgICAgICAgICAgIDxlbnVtIG5hbWU9IkdMX0RPVUJMRSIvPgogICAgICAgICAgICAgPGVudW0gbmFtZT0iR0xfRkxPQVQiLz4KQEAgLTQ0MTYsNiArNDQyOCwxOCBAQAogICAgICAgICA8ZW51bSB2YWx1ZT0iMHhGRkZGRkZGRiIgbmFtZT0iR0xfQUxMX1NIQURFUl9CSVRTX0VYVCIvPgogICAgIDwvZW51bXM+CiAKKyAgICA8ZW51bXMgbmFtZXNwYWNlPSJHTCIgZ3JvdXA9IlN1Ymdyb3VwU3VwcG9ydGVkRmVhdHVyZXMiIHR5cGU9ImJpdG1hc2siPgorICAgICAgICA8ZW51bSB2YWx1ZT0iMHgwMDAwMDAwMSIgbmFtZT0iR0xfU1VCR1JPVVBfRkVBVFVSRV9CQVNJQ19CSVRfS0hSIi8+CisgICAgICAgIDxlbnVtIHZhbHVlPSIweDAwMDAwMDAyIiBuYW1lPSJHTF9TVUJHUk9VUF9GRUFUVVJFX1ZPVEVfQklUX0tIUiIvPgorICAgICAgICA8ZW51bSB2YWx1ZT0iMHgwMDAwMDAwNCIgbmFtZT0iR0xfU1VCR1JPVVBfRkVBVFVSRV9BUklUSE1FVElDX0JJVF9LSFIiLz4KKyAgICAgICAgPGVudW0gdmFsdWU9IjB4MDAwMDAwMDgiIG5hbWU9IkdMX1NVQkdST1VQX0ZFQVRVUkVfQkFMTE9UX0JJVF9LSFIiLz4KKyAgICAgICAgPGVudW0gdmFsdWU9IjB4MDAwMDAwMTAiIG5hbWU9IkdMX1NVQkdST1VQX0ZFQVRVUkVfU0hVRkZMRV9CSVRfS0hSIi8+CisgICAgICAgIDxlbnVtIHZhbHVlPSIweDAwMDAwMDIwIiBuYW1lPSJHTF9TVUJHUk9VUF9GRUFUVVJFX1NIVUZGTEVfUkVMQVRJVkVfQklUX0tIUiIvPgorICAgICAgICA8ZW51bSB2YWx1ZT0iMHgwMDAwMDA0MCIgbmFtZT0iR0xfU1VCR1JPVVBfRkVBVFVSRV9DTFVTVEVSRURfQklUX0tIUiIvPgorICAgICAgICA8ZW51bSB2YWx1ZT0iMHgwMDAwMDA4MCIgbmFtZT0iR0xfU1VCR1JPVVBfRkVBVFVSRV9RVUFEX0JJVF9LSFIiLz4KKyAgICAgICAgPGVudW0gdmFsdWU9IjB4MDAwMDAxMDAiIG5hbWU9IkdMX1NVQkdST1VQX0ZFQVRVUkVfUEFSVElUSU9ORURfQklUX05WIi8+CisgICAgPC9lbnVtcz4KKwogICAgIDwhLS0gQml0bWFza3MgZGVmaW5lZCBieSB2ZW5kb3IgZXh0ZW5zaW9ucyAtLT4KIAogICAgIDxlbnVtcyBuYW1lc3BhY2U9IkdMIiBncm91cD0iVGV4dHVyZVN0b3JhZ2VNYXNrQU1EIiB0eXBlPSJiaXRtYXNrIj4KQEAgLTEwODkzLDcgKzEwOTE3LDEwIEBACiAgICAgPGVudW1zIG5hbWVzcGFjZT0iR0wiIHN0YXJ0PSIweDk1MzAiIGVuZD0iMHg5NjJGIiB2ZW5kb3I9Ik5WIiBjb21tZW50PSJLaHJvbm9zIGJ1ZyAxMjk3NyI+CiAgICAgICAgIDxlbnVtIHZhbHVlPSIweDk1MzAiIG5hbWU9IkdMX0xBWU9VVF9ERVBUSF9SRUFEX09OTFlfU1RFTkNJTF9BVFRBQ0hNRU5UX0VYVCIvPgogICAgICAgICA8ZW51bSB2YWx1ZT0iMHg5NTMxIiBuYW1lPSJHTF9MQVlPVVRfREVQVEhfQVRUQUNITUVOVF9TVEVOQ0lMX1JFQURfT05MWV9FWFQiLz4KLSAgICAgICAgICAgIDx1bnVzZWQgc3RhcnQ9IjB4OTUzMiIgZW5kPSIweDk1MzUiIHZlbmRvcj0iTlYiLz4KKyAgICAgICAgPGVudW0gdmFsdWU9IjB4OTUzMiIgbmFtZT0iR0xfU1VCR1JPVVBfU0laRV9LSFIiLz4KKyAgICAgICAgPGVudW0gdmFsdWU9IjB4OTUzMyIgbmFtZT0iR0xfU1VCR1JPVVBfU1VQUE9SVEVEX1NUQUdFU19LSFIiLz4KKyAgICAgICAgPGVudW0gdmFsdWU9IjB4OTUzNCIgbmFtZT0iR0xfU1VCR1JPVVBfU1VQUE9SVEVEX0ZFQVRVUkVTX0tIUiIvPgorICAgICAgICA8ZW51bSB2YWx1ZT0iMHg5NTM1IiBuYW1lPSJHTF9TVUJHUk9VUF9RVUFEX0FMTF9TVEFHRVNfS0hSIi8+CiAgICAgICAgIDxlbnVtIHZhbHVlPSIweDk1MzYiIG5hbWU9IkdMX01BWF9NRVNIX1RPVEFMX01FTU9SWV9TSVpFX05WIi8+CiAgICAgICAgIDxlbnVtIHZhbHVlPSIweDk1MzciIG5hbWU9IkdMX01BWF9UQVNLX1RPVEFMX01FTU9SWV9TSVpFX05WIi8+CiAgICAgICAgIDxlbnVtIHZhbHVlPSIweDk1MzgiIG5hbWU9IkdMX01BWF9NRVNIX09VVFBVVF9WRVJUSUNFU19OViIvPgpAQCAtMTA5MTQsNyArMTA5NDEsOCBAQAogICAgICAgICA8ZW51bSB2YWx1ZT0iMHg5NTQ3IiBuYW1lPSJHTF9RVUVSWV9SRVNPVVJDRV9CVUZGRVJPQkpFQ1RfTlYiLz4KICAgICAgICAgPGVudW0gdmFsdWU9IjB4OTU0OCIgbmFtZT0iR0xfUEVSX0dQVV9TVE9SQUdFX05WIi8+CiAgICAgICAgIDxlbnVtIHZhbHVlPSIweDk1NDkiIG5hbWU9IkdMX01VTFRJQ0FTVF9QUk9HUkFNTUFCTEVfU0FNUExFX0xPQ0FUSU9OX05WIi8+Ci0gICAgICAgICAgICA8dW51c2VkIHN0YXJ0PSIweDk1NEEiIGVuZD0iMHg5NTRDIiB2ZW5kb3I9Ik5WIi8+CisgICAgICAgIDxlbnVtIHZhbHVlPSIweDk1NEEiIG5hbWU9IkdMX1VQTE9BRF9HUFVfTUFTS19OVlgiLz4KKyAgICAgICAgICAgIDx1bnVzZWQgc3RhcnQ9IjB4OTU0QiIgZW5kPSIweDk1NEMiIHZlbmRvcj0iTlYiLz4KICAgICAgICAgPGVudW0gdmFsdWU9IjB4OTU0RCIgbmFtZT0iR0xfQ09OU0VSVkFUSVZFX1JBU1RFUl9NT0RFX05WIi8+CiAgICAgICAgIDxlbnVtIHZhbHVlPSIweDk1NEUiIG5hbWU9IkdMX0NPTlNFUlZBVElWRV9SQVNURVJfTU9ERV9QT1NUX1NOQVBfTlYiLz4KICAgICAgICAgPGVudW0gdmFsdWU9IjB4OTU0RiIgbmFtZT0iR0xfQ09OU0VSVkFUSVZFX1JBU1RFUl9NT0RFX1BSRV9TTkFQX1RSSUFOR0xFU19OViIvPgpAQCAtMTEyNzgsNiArMTEzMDYsNDggQEAKICAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+b2Zmc2V0PC9uYW1lPjwvcGFyYW0+CiAgICAgICAgIDwvY29tbWFuZD4KICAgICAgICAgPGNvbW1hbmQ+CisgICAgICAgICAgICA8cHJvdG8+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPmdsQXN5bmNDb3B5QnVmZmVyU3ViRGF0YU5WWDwvbmFtZT48L3Byb3RvPgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHNpemVpPC9wdHlwZT4gPG5hbWU+d2FpdFNlbWFwaG9yZUNvdW50PC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0gbGVuPSJ3YWl0U2VtYXBob3JlQ291bnQiPmNvbnN0IDxwdHlwZT5HTHVpbnQ8L3B0eXBlPiAqPG5hbWU+d2FpdFNlbWFwaG9yZUFycmF5PC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0gbGVuPSJ3YWl0U2VtYXBob3JlQ291bnQiPmNvbnN0IDxwdHlwZT5HTHVpbnQ2NDwvcHR5cGU+ICo8bmFtZT5mZW5jZVZhbHVlQXJyYXk8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+cmVhZEdwdTwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGJpdGZpZWxkPC9wdHlwZT4gPG5hbWU+d3JpdGVHcHVNYXNrPC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPnJlYWRCdWZmZXI8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+d3JpdGVCdWZmZXI8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xpbnRwdHI8L3B0eXBlPiA8bmFtZT5yZWFkT2Zmc2V0PC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMaW50cHRyPC9wdHlwZT4gPG5hbWU+d3JpdGVPZmZzZXQ8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xzaXplaXB0cjwvcHR5cGU+IDxuYW1lPnNpemU8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xzaXplaTwvcHR5cGU+IDxuYW1lPnNpZ25hbFNlbWFwaG9yZUNvdW50PC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0gbGVuPSJzaWduYWxTZW1hcGhvcmVDb3VudCI+Y29uc3QgPHB0eXBlPkdMdWludDwvcHR5cGU+ICo8bmFtZT5zaWduYWxTZW1hcGhvcmVBcnJheTwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtIGxlbj0ic2lnbmFsU2VtYXBob3JlQ291bnQiPmNvbnN0IDxwdHlwZT5HTHVpbnQ2NDwvcHR5cGU+ICo8bmFtZT5zaWduYWxWYWx1ZUFycmF5PC9uYW1lPjwvcGFyYW0+CisgICAgICAgIDwvY29tbWFuZD4KKyAgICAgICAgPGNvbW1hbmQ+CisgICAgICAgICAgICA8cHJvdG8+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPmdsQXN5bmNDb3B5SW1hZ2VTdWJEYXRhTlZYPC9uYW1lPjwvcHJvdG8+CisgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMc2l6ZWk8L3B0eXBlPiA8bmFtZT53YWl0U2VtYXBob3JlQ291bnQ8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbSBsZW49IndhaXRTZW1hcGhvcmVDb3VudCI+Y29uc3QgPHB0eXBlPkdMdWludDwvcHR5cGU+ICo8bmFtZT53YWl0U2VtYXBob3JlQXJyYXk8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbSBsZW49IndhaXRTZW1hcGhvcmVDb3VudCI+Y29uc3QgPHB0eXBlPkdMdWludDY0PC9wdHlwZT4gKjxuYW1lPndhaXRWYWx1ZUFycmF5PC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPnNyY0dwdTwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGJpdGZpZWxkPC9wdHlwZT4gPG5hbWU+ZHN0R3B1TWFzazwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5zcmNOYW1lPC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZW51bTwvcHR5cGU+IDxuYW1lPnNyY1RhcmdldDwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGludDwvcHR5cGU+IDxuYW1lPnNyY0xldmVsPC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMaW50PC9wdHlwZT4gPG5hbWU+c3JjWDwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGludDwvcHR5cGU+IDxuYW1lPnNyY1k8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xpbnQ8L3B0eXBlPiA8bmFtZT5zcmNaPC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPmRzdE5hbWU8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+ZHN0VGFyZ2V0PC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMaW50PC9wdHlwZT4gPG5hbWU+ZHN0TGV2ZWw8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xpbnQ8L3B0eXBlPiA8bmFtZT5kc3RYPC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMaW50PC9wdHlwZT4gPG5hbWU+ZHN0WTwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGludDwvcHR5cGU+IDxuYW1lPmRzdFo8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xzaXplaTwvcHR5cGU+IDxuYW1lPnNyY1dpZHRoPC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMc2l6ZWk8L3B0eXBlPiA8bmFtZT5zcmNIZWlnaHQ8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xzaXplaTwvcHR5cGU+IDxuYW1lPnNyY0RlcHRoPC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMc2l6ZWk8L3B0eXBlPiA8bmFtZT5zaWduYWxTZW1hcGhvcmVDb3VudDwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtIGxlbj0ic2lnbmFsU2VtYXBob3JlQ291bnQiPmNvbnN0IDxwdHlwZT5HTHVpbnQ8L3B0eXBlPiAqPG5hbWU+c2lnbmFsU2VtYXBob3JlQXJyYXk8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbSBsZW49InNpZ25hbFNlbWFwaG9yZUNvdW50Ij5jb25zdCA8cHR5cGU+R0x1aW50NjQ8L3B0eXBlPiAqPG5hbWU+c2lnbmFsVmFsdWVBcnJheTwvbmFtZT48L3BhcmFtPgorICAgICAgICA8L2NvbW1hbmQ+CisgICAgICAgIDxjb21tYW5kPgogICAgICAgICAgICAgPHByb3RvPnZvaWQgPG5hbWU+Z2xBc3luY01hcmtlclNHSVg8L25hbWU+PC9wcm90bz4KICAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+bWFya2VyPC9uYW1lPjwvcGFyYW0+CiAgICAgICAgIDwvY29tbWFuZD4KQEAgLTEyNTQyLDYgKzEyNjEyLDEyIEBACiAgICAgICAgICAgICA8cGFyYW0gZ3JvdXA9IkNsaWVudEF0dHJpYk1hc2siPjxwdHlwZT5HTGJpdGZpZWxkPC9wdHlwZT4gPG5hbWU+bWFzazwvbmFtZT48L3BhcmFtPgogICAgICAgICA8L2NvbW1hbmQ+CiAgICAgICAgIDxjb21tYW5kPgorICAgICAgICAgICAgPHByb3RvPnZvaWQgPG5hbWU+Z2xDbGllbnRXYWl0U2VtYXBob3JldWk2NE5WWDwvbmFtZT48L3Byb3RvPgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHNpemVpPC9wdHlwZT4gPG5hbWU+ZmVuY2VPYmplY3RDb3VudDwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtIGxlbj0iZmVuY2VPYmplY3RDb3VudCI+Y29uc3QgPHB0eXBlPkdMdWludDwvcHR5cGU+ICo8bmFtZT5zZW1hcGhvcmVBcnJheTwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtIGxlbj0iZmVuY2VPYmplY3RDb3VudCI+Y29uc3QgPHB0eXBlPkdMdWludDY0PC9wdHlwZT4gKjxuYW1lPmZlbmNlVmFsdWVBcnJheTwvbmFtZT48L3BhcmFtPgorICAgICAgICA8L2NvbW1hbmQ+CisgICAgICAgIDxjb21tYW5kPgogICAgICAgICAgICAgPHByb3RvIGdyb3VwPSJTeW5jU3RhdHVzIj48cHR5cGU+R0xlbnVtPC9wdHlwZT4gPG5hbWU+Z2xDbGllbnRXYWl0U3luYzwvbmFtZT48L3Byb3RvPgogICAgICAgICAgICAgPHBhcmFtIGdyb3VwPSJzeW5jIj48cHR5cGU+R0xzeW5jPC9wdHlwZT4gPG5hbWU+c3luYzwvbmFtZT48L3BhcmFtPgogICAgICAgICAgICAgPHBhcmFtIGdyb3VwPSJTeW5jT2JqZWN0TWFzayI+PHB0eXBlPkdMYml0ZmllbGQ8L3B0eXBlPiA8bmFtZT5mbGFnczwvbmFtZT48L3BhcmFtPgpAQCAtMTQyOTAsNiArMTQzNjYsOSBAQAogICAgICAgICAgICAgPHBhcmFtIGxlbj0ibiI+PHB0eXBlPkdMdWludDwvcHR5cGU+ICo8bmFtZT5waXBlbGluZXM8L25hbWU+PC9wYXJhbT4KICAgICAgICAgPC9jb21tYW5kPgogICAgICAgICA8Y29tbWFuZD4KKyAgICAgICAgICAgIDxwcm90bz48cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+Z2xDcmVhdGVQcm9ncmVzc0ZlbmNlTlZYPC9uYW1lPjwvcHJvdG8+CisgICAgICAgIDwvY29tbWFuZD4KKyAgICAgICAgPGNvbW1hbmQ+CiAgICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbENyZWF0ZVF1ZXJpZXM8L25hbWU+PC9wcm90bz4KICAgICAgICAgICAgIDxwYXJhbSBncm91cD0iUXVlcnlUYXJnZXQiPjxwdHlwZT5HTGVudW08L3B0eXBlPiA8bmFtZT50YXJnZXQ8L25hbWU+PC9wYXJhbT4KICAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xzaXplaTwvcHR5cGU+IDxuYW1lPm48L25hbWU+PC9wYXJhbT4KQEAgLTIzMDA2LDYgKzIzMDg1LDI3IEBACiAgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+ICo8bmFtZT5wYXJhbXM8L25hbWU+PC9wYXJhbT4KICAgICAgICAgPC9jb21tYW5kPgogICAgICAgICA8Y29tbWFuZD4KKyAgICAgICAgICAgIDxwcm90bz52b2lkIDxuYW1lPmdsTXVsdGljYXN0U2Npc3NvckFycmF5dk5WWDwvbmFtZT48L3Byb3RvPgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5ncHU8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0x1aW50PC9wdHlwZT4gPG5hbWU+Zmlyc3Q8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xzaXplaTwvcHR5cGU+IDxuYW1lPmNvdW50PC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0gbGVuPSJDT01QU0laRShjb3VudCkiPmNvbnN0IDxwdHlwZT5HTGludDwvcHR5cGU+ICo8bmFtZT52PC9uYW1lPjwvcGFyYW0+CisgICAgICAgIDwvY29tbWFuZD4KKyAgICAgICAgPGNvbW1hbmQ+CisgICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbE11bHRpY2FzdFZpZXdwb3J0QXJyYXl2TlZYPC9uYW1lPjwvcHJvdG8+CisgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPmdwdTwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5maXJzdDwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHNpemVpPC9wdHlwZT4gPG5hbWU+Y291bnQ8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbSBsZW49IkNPTVBTSVpFKGNvdW50KSI+Y29uc3QgPHB0eXBlPkdMZmxvYXQ8L3B0eXBlPiAqPG5hbWU+djwvbmFtZT48L3BhcmFtPgorICAgICAgICA8L2NvbW1hbmQ+CisgICAgICAgIDxjb21tYW5kPgorICAgICAgICAgICAgPHByb3RvPnZvaWQgPG5hbWU+Z2xNdWx0aWNhc3RWaWV3cG9ydFBvc2l0aW9uV1NjYWxlTlZYPC9uYW1lPjwvcHJvdG8+CisgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPmdwdTwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5pbmRleDwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTGZsb2F0PC9wdHlwZT4gPG5hbWU+eGNvZWZmPC9uYW1lPjwvcGFyYW0+CisgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMZmxvYXQ8L3B0eXBlPiA8bmFtZT55Y29lZmY8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgPC9jb21tYW5kPgorICAgICAgICA8Y29tbWFuZD4KICAgICAgICAgICAgIDxwcm90bz52b2lkIDxuYW1lPmdsTXVsdGljYXN0V2FpdFN5bmNOVjwvbmFtZT48L3Byb3RvPgogICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5zaWduYWxHcHU8L25hbWU+PC9wYXJhbT4KICAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xiaXRmaWVsZDwvcHR5cGU+IDxuYW1lPndhaXRHcHVNYXNrPC9uYW1lPjwvcGFyYW0+CkBAIC0yNzIxMyw2ICsyNzMxMywxMyBAQAogICAgICAgICAgICAgPHBhcmFtIGdyb3VwPSJUZXh0dXJlTGF5b3V0IiBsZW49IkNPTVBTSVpFKG51bVRleHR1cmVCYXJyaWVycykiPmNvbnN0IDxwdHlwZT5HTGVudW08L3B0eXBlPiAqPG5hbWU+ZHN0TGF5b3V0czwvbmFtZT48L3BhcmFtPgogICAgICAgICA8L2NvbW1hbmQ+CiAgICAgICAgIDxjb21tYW5kPgorICAgICAgICAgICAgPHByb3RvPnZvaWQgPG5hbWU+Z2xTaWduYWxTZW1hcGhvcmV1aTY0TlZYPC9uYW1lPjwvcHJvdG8+CisgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPnNpZ25hbEdwdTwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHNpemVpPC9wdHlwZT4gPG5hbWU+ZmVuY2VPYmplY3RDb3VudDwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtIGxlbj0iZmVuY2VPYmplY3RDb3VudCI+Y29uc3QgPHB0eXBlPkdMdWludDwvcHR5cGU+ICo8bmFtZT5zZW1hcGhvcmVBcnJheTwvbmFtZT48L3BhcmFtPgorICAgICAgICAgICAgPHBhcmFtIGxlbj0iZmVuY2VPYmplY3RDb3VudCI+Y29uc3QgPHB0eXBlPkdMdWludDY0PC9wdHlwZT4gKjxuYW1lPmZlbmNlVmFsdWVBcnJheTwvbmFtZT48L3BhcmFtPgorICAgICAgICA8L2NvbW1hbmQ+CisgICAgICAgIDxjb21tYW5kPgogICAgICAgICAgICAgPHByb3RvPnZvaWQgPG5hbWU+Z2xTcGVjaWFsaXplU2hhZGVyPC9uYW1lPjwvcHJvdG8+CiAgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPnNoYWRlcjwvbmFtZT48L3BhcmFtPgogICAgICAgICAgICAgPHBhcmFtPmNvbnN0IDxwdHlwZT5HTGNoYXI8L3B0eXBlPiAqPG5hbWU+cEVudHJ5UG9pbnQ8L25hbWU+PC9wYXJhbT4KQEAgLTMwMjU1LDYgKzMwMzYyLDEwIEBACiAgICAgICAgICAgICA8cGFyYW0gZ3JvdXA9IlByZXNlcnZlTW9kZUFUSSI+PHB0eXBlPkdMZW51bTwvcHR5cGU+IDxuYW1lPnByZXNlcnZlPC9uYW1lPjwvcGFyYW0+CiAgICAgICAgIDwvY29tbWFuZD4KICAgICAgICAgPGNvbW1hbmQ+CisgICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbFVwbG9hZEdwdU1hc2tOVlg8L25hbWU+PC9wcm90bz4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xiaXRmaWVsZDwvcHR5cGU+IDxuYW1lPm1hc2s8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgPC9jb21tYW5kPgorICAgICAgICA8Y29tbWFuZD4KICAgICAgICAgICAgIDxwcm90bz52b2lkIDxuYW1lPmdsVXNlUHJvZ3JhbTwvbmFtZT48L3Byb3RvPgogICAgICAgICAgICAgPHBhcmFtPjxwdHlwZT5HTHVpbnQ8L3B0eXBlPiA8bmFtZT5wcm9ncmFtPC9uYW1lPjwvcGFyYW0+CiAgICAgICAgIDwvY29tbWFuZD4KQEAgLTMyODM4LDYgKzMyOTQ5LDEzIEBACiAgICAgICAgICAgICA8cGFyYW0gZ3JvdXA9IlRleHR1cmVMYXlvdXQiIGxlbj0iQ09NUFNJWkUobnVtVGV4dHVyZUJhcnJpZXJzKSI+Y29uc3QgPHB0eXBlPkdMZW51bTwvcHR5cGU+ICo8bmFtZT5zcmNMYXlvdXRzPC9uYW1lPjwvcGFyYW0+CiAgICAgICAgIDwvY29tbWFuZD4KICAgICAgICAgPGNvbW1hbmQ+CisgICAgICAgICAgICA8cHJvdG8+dm9pZCA8bmFtZT5nbFdhaXRTZW1hcGhvcmV1aTY0TlZYPC9uYW1lPjwvcHJvdG8+CisgICAgICAgICAgICA8cGFyYW0+PHB0eXBlPkdMdWludDwvcHR5cGU+IDxuYW1lPndhaXRHcHU8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xzaXplaTwvcHR5cGU+IDxuYW1lPmZlbmNlT2JqZWN0Q291bnQ8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbSBsZW49ImZlbmNlT2JqZWN0Q291bnQiPmNvbnN0IDxwdHlwZT5HTHVpbnQ8L3B0eXBlPiAqPG5hbWU+c2VtYXBob3JlQXJyYXk8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgICAgIDxwYXJhbSBsZW49ImZlbmNlT2JqZWN0Q291bnQiPmNvbnN0IDxwdHlwZT5HTHVpbnQ2NDwvcHR5cGU+ICo8bmFtZT5mZW5jZVZhbHVlQXJyYXk8L25hbWU+PC9wYXJhbT4KKyAgICAgICAgPC9jb21tYW5kPgorICAgICAgICA8Y29tbWFuZD4KICAgICAgICAgICAgIDxwcm90bz52b2lkIDxuYW1lPmdsV2FpdFN5bmM8L25hbWU+PC9wcm90bz4KICAgICAgICAgICAgIDxwYXJhbSBncm91cD0ic3luYyI+PHB0eXBlPkdMc3luYzwvcHR5cGU+IDxuYW1lPnN5bmM8L25hbWU+PC9wYXJhbT4KICAgICAgICAgICAgIDxwYXJhbT48cHR5cGU+R0xiaXRmaWVsZDwvcHR5cGU+IDxuYW1lPmZsYWdzPC9uYW1lPjwvcGFyYW0+CkBAIC00Njg4NCw2ICs0NzAwMiwyMiBAQAogICAgICAgICAgICAgICAgIDxjb21tYW5kIG5hbWU9ImdsR2V0blVuaWZvcm11aXZLSFIiLz4KICAgICAgICAgICAgIDwvcmVxdWlyZT4KICAgICAgICAgPC9leHRlbnNpb24+CisgICAgICAgIDxleHRlbnNpb24gbmFtZT0iR0xfS0hSX3NoYWRlcl9zdWJncm91cCIgc3VwcG9ydGVkPSJnbHxnbGNvcmV8Z2xlczIiPgorICAgICAgICAgICAgPHJlcXVpcmU+CisgICAgICAgICAgICAgICAgPGVudW0gbmFtZT0iR0xfU1VCR1JPVVBfU0laRV9LSFIiLz4KKyAgICAgICAgICAgICAgICA8ZW51bSBuYW1lPSJHTF9TVUJHUk9VUF9TVVBQT1JURURfU1RBR0VTX0tIUiIvPgorICAgICAgICAgICAgICAgIDxlbnVtIG5hbWU9IkdMX1NVQkdST1VQX1NVUFBPUlRFRF9GRUFUVVJFU19LSFIiLz4KKyAgICAgICAgICAgICAgICA8ZW51bSBuYW1lPSJHTF9TVUJHUk9VUF9RVUFEX0FMTF9TVEFHRVNfS0hSIi8+CisgICAgICAgICAgICAgICAgPGVudW0gbmFtZT0iR0xfU1VCR1JPVVBfRkVBVFVSRV9CQVNJQ19CSVRfS0hSIi8+CisgICAgICAgICAgICAgICAgPGVudW0gbmFtZT0iR0xfU1VCR1JPVVBfRkVBVFVSRV9WT1RFX0JJVF9LSFIiLz4KKyAgICAgICAgICAgICAgICA8ZW51bSBuYW1lPSJHTF9TVUJHUk9VUF9GRUFUVVJFX0FSSVRITUVUSUNfQklUX0tIUiIvPgorICAgICAgICAgICAgICAgIDxlbnVtIG5hbWU9IkdMX1NVQkdST1VQX0ZFQVRVUkVfQkFMTE9UX0JJVF9LSFIiLz4KKyAgICAgICAgICAgICAgICA8ZW51bSBuYW1lPSJHTF9TVUJHUk9VUF9GRUFUVVJFX1NIVUZGTEVfQklUX0tIUiIvPgorICAgICAgICAgICAgICAgIDxlbnVtIG5hbWU9IkdMX1NVQkdST1VQX0ZFQVRVUkVfU0hVRkZMRV9SRUxBVElWRV9CSVRfS0hSIi8+CisgICAgICAgICAgICAgICAgPGVudW0gbmFtZT0iR0xfU1VCR1JPVVBfRkVBVFVSRV9DTFVTVEVSRURfQklUX0tIUiIvPgorICAgICAgICAgICAgICAgIDxlbnVtIG5hbWU9IkdMX1NVQkdST1VQX0ZFQVRVUkVfUVVBRF9CSVRfS0hSIi8+CisgICAgICAgICAgICA8L3JlcXVpcmU+CisgICAgICAgIDwvZXh0ZW5zaW9uPgogICAgICAgICA8ZXh0ZW5zaW9uIG5hbWU9IkdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIiBzdXBwb3J0ZWQ9ImdsfGdsY29yZXxnbGVzMiI+CiAgICAgICAgICAgICA8cmVxdWlyZT4KICAgICAgICAgICAgICAgICA8ZW51bSBuYW1lPSJHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSIi8+CkBAIC00NzgyNCw2ICs0Nzk1OCwyNSBAQAogICAgICAgICAgICAgICAgIDxjb21tYW5kIG5hbWU9ImdsTXVsdGljYXN0R2V0UXVlcnlPYmplY3R1aTY0dk5WIi8+CiAgICAgICAgICAgICA8L3JlcXVpcmU+CiAgICAgICAgIDwvZXh0ZW5zaW9uPgorICAgICAgICA8ZXh0ZW5zaW9uIG5hbWU9IkdMX05WWF9ncHVfbXVsdGljYXN0MiIgc3VwcG9ydGVkPSJnbCI+CisgICAgICAgICAgICA8cmVxdWlyZT4KKyAgICAgICAgICAgICAgICA8ZW51bSBuYW1lPSJHTF9VUExPQURfR1BVX01BU0tfTlZYIi8+CisgICAgICAgICAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xVcGxvYWRHcHVNYXNrTlZYIi8+CisgICAgICAgICAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xNdWx0aWNhc3RWaWV3cG9ydEFycmF5dk5WWCIvPgorICAgICAgICAgICAgICAgIDxjb21tYW5kIG5hbWU9ImdsTXVsdGljYXN0Vmlld3BvcnRQb3NpdGlvbldTY2FsZU5WWCIvPgorICAgICAgICAgICAgICAgIDxjb21tYW5kIG5hbWU9ImdsTXVsdGljYXN0U2Npc3NvckFycmF5dk5WWCIvPgorICAgICAgICAgICAgICAgIDxjb21tYW5kIG5hbWU9ImdsQXN5bmNDb3B5QnVmZmVyU3ViRGF0YU5WWCIvPgorICAgICAgICAgICAgICAgIDxjb21tYW5kIG5hbWU9ImdsQXN5bmNDb3B5SW1hZ2VTdWJEYXRhTlZYIi8+CisgICAgICAgICAgICA8L3JlcXVpcmU+CisgICAgICAgIDwvZXh0ZW5zaW9uPgorICAgICAgICA8ZXh0ZW5zaW9uIG5hbWU9IkdMX05WWF9wcm9ncmVzc19mZW5jZSIgc3VwcG9ydGVkPSJnbCI+CisgICAgICAgICAgICA8cmVxdWlyZT4KKyAgICAgICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbENyZWF0ZVByb2dyZXNzRmVuY2VOVlgiLz4KKyAgICAgICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbFNpZ25hbFNlbWFwaG9yZXVpNjROVlgiLz4KKyAgICAgICAgICAgICAgICA8Y29tbWFuZCBuYW1lPSJnbFdhaXRTZW1hcGhvcmV1aTY0TlZYIi8+CisgICAgICAgICAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2xDbGllbnRXYWl0U2VtYXBob3JldWk2NE5WWCIvPgorICAgICAgICAgICAgPC9yZXF1aXJlPgorICAgICAgICA8L2V4dGVuc2lvbj4KICAgICAgICAgPGV4dGVuc2lvbiBuYW1lPSJHTF9OVl9tZW1vcnlfYXR0YWNobWVudCIgc3VwcG9ydGVkPSJnbHxnbGNvcmV8Z2xlczIiPgogICAgICAgICAgICAgPHJlcXVpcmU+CiAgICAgICAgICAgICAgICAgPGVudW0gbmFtZT0iR0xfQVRUQUNIRURfTUVNT1JZX09CSkVDVF9OViIvPgpAQCAtNDg0ODQsNiArNDg2MzcsMTEgQEAKICAgICAgICAgPC9leHRlbnNpb24+CiAgICAgICAgIDxleHRlbnNpb24gbmFtZT0iR0xfTlZfc2hhZGVyX25vcGVyc3BlY3RpdmVfaW50ZXJwb2xhdGlvbiIgc3VwcG9ydGVkPSJnbGVzMiIvPgogICAgICAgICA8ZXh0ZW5zaW9uIG5hbWU9IkdMX05WX3NoYWRlcl9zdG9yYWdlX2J1ZmZlcl9vYmplY3QiIHN1cHBvcnRlZD0iZ2wiLz4KKyAgICAgICAgPGV4dGVuc2lvbiBuYW1lPSJHTF9OVl9zaGFkZXJfc3ViZ3JvdXBfcGFydGl0aW9uZWQiIHN1cHBvcnRlZD0iZ2x8Z2xjb3JlfGdsZXMyIj4KKyAgICAgICAgICAgIDxyZXF1aXJlPgorICAgICAgICAgICAgICAgIDxlbnVtIG5hbWU9IkdMX1NVQkdST1VQX0ZFQVRVUkVfUEFSVElUSU9ORURfQklUX05WIi8+CisgICAgICAgICAgICA8L3JlcXVpcmU+CisgICAgICAgIDwvZXh0ZW5zaW9uPgogICAgICAgICA8ZXh0ZW5zaW9uIG5hbWU9IkdMX05WX3NoYWRlcl90ZXh0dXJlX2Zvb3RwcmludCIgc3VwcG9ydGVkPSJnbHxnbGNvcmV8Z2xlczIiLz4KICAgICAgICAgPGV4dGVuc2lvbiBuYW1lPSJHTF9OVl9zaGFkZXJfdGhyZWFkX2dyb3VwIiBzdXBwb3J0ZWQ9ImdsfGdsY29yZSI+CiAgICAgICAgICAgICA8cmVxdWlyZT4KZGlmZiAtLWdpdCBhL3htbC93Z2wueG1sIGIveG1sL3dnbC54bWwKaW5kZXggYzNiMzYzMC4uODdlOGZlMiAxMDA2NDQKLS0tIGEveG1sL3dnbC54bWwKKysrIGIveG1sL3dnbC54bWwKQEAgLTM4NCw3ICszODQsMTIgQEAKICAgICAgICAgPGVudW0gdmFsdWU9IjB4MjBBOCIgICAgICAgIG5hbWU9IldHTF9UWVBFX1JHQkFfVU5TSUdORURfRkxPQVRfRVhUIi8+CiAgICAgICAgIDxlbnVtIHZhbHVlPSIweDIwQTkiICAgICAgICBuYW1lPSJXR0xfRlJBTUVCVUZGRVJfU1JHQl9DQVBBQkxFX0FSQiIvPgogICAgICAgICA8ZW51bSB2YWx1ZT0iMHgyMEE5IiAgICAgICAgbmFtZT0iV0dMX0ZSQU1FQlVGRkVSX1NSR0JfQ0FQQUJMRV9FWFQiLz4KLSAgICAgICAgICAgIDx1bnVzZWQgc3RhcnQ9IjB4MjBBQSIgZW5kPSIweDIwQUYiLz4KKyAgICAgICAgPGVudW0gdmFsdWU9IjB4MjBBQSIgICAgICAgIG5hbWU9IldHTF9DT05URVhUX01VTFRJR1BVX0FUVFJJQl9OViIvPgorICAgICAgICA8ZW51bSB2YWx1ZT0iMHgyMEFCIiAgICAgICAgbmFtZT0iV0dMX0NPTlRFWFRfTVVMVElHUFVfQVRUUklCX1NJTkdMRV9OViIvPgorICAgICAgICA8ZW51bSB2YWx1ZT0iMHgyMEFDIiAgICAgICAgbmFtZT0iV0dMX0NPTlRFWFRfTVVMVElHUFVfQVRUUklCX0FGUl9OViIvPgorICAgICAgICA8ZW51bSB2YWx1ZT0iMHgyMEFEIiAgICAgICAgbmFtZT0iV0dMX0NPTlRFWFRfTVVMVElHUFVfQVRUUklCX01VTFRJQ0FTVF9OViIvPgorICAgICAgICA8ZW51bSB2YWx1ZT0iMHgyMEFFIiAgICAgICAgbmFtZT0iV0dMX0NPTlRFWFRfTVVMVElHUFVfQVRUUklCX01VTFRJX0RJU1BMQVlfTVVMVElDQVNUX05WIi8+CisgICAgICAgICAgICA8dW51c2VkIHN0YXJ0PSIweDIwQUYiIGVuZD0iMHgyMEFGIi8+CiAgICAgICAgIDxlbnVtIHZhbHVlPSIweDIwQjAiICAgICAgICBuYW1lPSJXR0xfRkxPQVRfQ09NUE9ORU5UU19OViIvPgogICAgICAgICA8ZW51bSB2YWx1ZT0iMHgyMEIxIiAgICAgICAgbmFtZT0iV0dMX0JJTkRfVE9fVEVYVFVSRV9SRUNUQU5HTEVfRkxPQVRfUl9OViIvPgogICAgICAgICA8ZW51bSB2YWx1ZT0iMHgyMEIyIiAgICAgICAgbmFtZT0iV0dMX0JJTkRfVE9fVEVYVFVSRV9SRUNUQU5HTEVfRkxPQVRfUkdfTlYiLz4KQEAgLTE5ODUsNSArMTk5MCwxNCBAQAogICAgICAgICAgICAgICAgIDxjb21tYW5kIG5hbWU9IndnbFdhaXRGb3JTYmNPTUwiLz4KICAgICAgICAgICAgIDwvcmVxdWlyZT4KICAgICAgICAgPC9leHRlbnNpb24+CisgICAgICAgIDxleHRlbnNpb24gbmFtZT0iV0dMX05WX211bHRpZ3B1X2NvbnRleHQiIHN1cHBvcnRlZD0id2dsIj4KKyAgICAgICAgICAgIDxyZXF1aXJlPgorICAgICAgICAgICAgICAgIDxlbnVtIG5hbWU9IldHTF9DT05URVhUX01VTFRJR1BVX0FUVFJJQl9OViIvPgorICAgICAgICAgICAgICAgIDxlbnVtIG5hbWU9IldHTF9DT05URVhUX01VTFRJR1BVX0FUVFJJQl9TSU5HTEVfTlYiLz4KKyAgICAgICAgICAgICAgICA8ZW51bSBuYW1lPSJXR0xfQ09OVEVYVF9NVUxUSUdQVV9BVFRSSUJfQUZSX05WIi8+CisgICAgICAgICAgICAgICAgPGVudW0gbmFtZT0iV0dMX0NPTlRFWFRfTVVMVElHUFVfQVRUUklCX01VTFRJQ0FTVF9OViIvPgorICAgICAgICAgICAgICAgIDxlbnVtIG5hbWU9IldHTF9DT05URVhUX01VTFRJR1BVX0FUVFJJQl9NVUxUSV9ESVNQTEFZX01VTFRJQ0FTVF9OViIvPgorICAgICAgICAgICAgPC9yZXF1aXJlPgorICAgICAgICA8L2V4dGVuc2lvbj4KICAgICA8L2V4dGVuc2lvbnM+CiA8L3JlZ2lzdHJ5Pgo=