ZGlmZiAtLWdpdCBhL0luYy9MZWdhY3kvc3RtMzJfaGFsX2xlZ2FjeS5oIGIvSW5jL0xlZ2FjeS9zdG0zMl9oYWxfbGVnYWN5LmgKaW5kZXggOTA3NjdlZC4uMjk5ZWQ3MCAxMDA2NDQKLS0tIGEvSW5jL0xlZ2FjeS9zdG0zMl9oYWxfbGVnYWN5LmgKKysrIGIvSW5jL0xlZ2FjeS9zdG0zMl9oYWxfbGVnYWN5LmgKQEAgLTIzLDcgKzIzLDcgQEAKICNkZWZpbmUgU1RNMzJfSEFMX0xFR0FDWQogCiAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKK2V4dGVybiAiQyIgewogI2VuZGlmCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0zOCw3ICszOCw2IEBACiAjZGVmaW5lIEFFU19DTEVBUkZMQUdfQ0NGICAgICAgICAgICAgICAgQ1JZUF9DTEVBUkZMQUdfQ0NGCiAjZGVmaW5lIEFFU19DTEVBUkZMQUdfUkRFUlIgICAgICAgICAgICAgQ1JZUF9DTEVBUkZMQUdfUkRFUlIKICNkZWZpbmUgQUVTX0NMRUFSRkxBR19XUkVSUiAgICAgICAgICAgICBDUllQX0NMRUFSRkxBR19XUkVSUgotCiAvKioKICAgKiBAfQogICAqLwpAQCAtMjQxLDcgKzI0MCw3IEBACiAjZGVmaW5lIERBQ19DSElQQ09OTkVDVF9FTkFCTEUgICAgICAgIERBQ19DSElQQ09OTkVDVF9JTlRFUk5BTAogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKFNUTTMyTDEpIHx8IGRlZmluZWQoU1RNMzJMNCkgfHwgZGVmaW5lZChTVE0zMkcwKSB8fCBkZWZpbmVkKFNUTTMyTDUpIHx8IGRlZmluZWQoU1RNMzJINykgfHwgZGVmaW5lZChTVE0zMkY0KQorI2lmIGRlZmluZWQoU1RNMzJMMSkgfHwgZGVmaW5lZChTVE0zMkw0KSB8fCBkZWZpbmVkKFNUTTMyRzApIHx8IGRlZmluZWQoU1RNMzJMNSkgfHwgZGVmaW5lZChTVE0zMkg3KSB8fCBkZWZpbmVkKFNUTTMyRjQpIHx8IGRlZmluZWQoU1RNMzJHNCkKICNkZWZpbmUgSEFMX0RBQ19NU1BfSU5JVF9DQl9JRCAgICAgICBIQUxfREFDX01TUElOSVRfQ0JfSUQKICNkZWZpbmUgSEFMX0RBQ19NU1BfREVJTklUX0NCX0lEICAgICBIQUxfREFDX01TUERFSU5JVF9DQl9JRAogI2VuZGlmCkBAIC0zMTMsOCArMzEyLDEzIEBACiAjZW5kaWYgLyogU1RNMzJMNCAqLwogCiAjaWYgZGVmaW5lZChTVE0zMkcwKQotI2RlZmluZSBETUFfUkVRVUVTVF9EQUMxX0NIQU5ORUwxCQkJCQkJCQkgRE1BX1JFUVVFU1RfREFDMV9DSDEKLSNkZWZpbmUgRE1BX1JFUVVFU1RfREFDMV9DSEFOTkVMMgkJCQkJCQkJIERNQV9SRVFVRVNUX0RBQzFfQ0gyCisjZGVmaW5lIERNQV9SRVFVRVNUX0RBQzFfQ0hBTk5FTDEgICAgICAgICAgICAgICAgRE1BX1JFUVVFU1RfREFDMV9DSDEKKyNkZWZpbmUgRE1BX1JFUVVFU1RfREFDMV9DSEFOTkVMMiAgICAgICAgICAgICAgICBETUFfUkVRVUVTVF9EQUMxX0NIMgorI2RlZmluZSBETUFfUkVRVUVTVF9USU0xNl9UUklHX0NPTSAgICAgICAgICAgICAgIERNQV9SRVFVRVNUX1RJTTE2X0NPTQorI2RlZmluZSBETUFfUkVRVUVTVF9USU0xN19UUklHX0NPTSAgICAgICAgICAgICAgIERNQV9SRVFVRVNUX1RJTTE3X0NPTQorCisjZGVmaW5lIExMX0RNQU1VWF9SRVFfVElNMTZfVFJJR19DT00gICAgICAgICAgICAgTExfRE1BTVVYX1JFUV9USU0xNl9DT00KKyNkZWZpbmUgTExfRE1BTVVYX1JFUV9USU0xN19UUklHX0NPTSAgICAgICAgICAgICBMTF9ETUFNVVhfUkVRX1RJTTE3X0NPTQogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFNUTTMySDcpCkBAIC01OTEsMjQgKzU5NSwyNCBAQAogI2RlZmluZSBHUElPX0FGMV9MUFRJTSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUElPX0FGMV9MUFRJTTEKICNkZWZpbmUgR1BJT19BRjJfTFBUSU0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJT19BRjJfTFBUSU0xCiAKLSNpZiBkZWZpbmVkKFNUTTMyTDApIHx8IGRlZmluZWQoU1RNMzJMNCkgfHwgZGVmaW5lZChTVE0zMkY0KSB8fCBkZWZpbmVkKFNUTTMyRjIpIHx8IGRlZmluZWQoU1RNMzJGNykgfHwgZGVmaW5lZChTVE0zMkc0KSB8fCBkZWZpbmVkKFNUTTMySDcpCisjaWYgZGVmaW5lZChTVE0zMkwwKSB8fCBkZWZpbmVkKFNUTTMyTDQpIHx8IGRlZmluZWQoU1RNMzJGNCkgfHwgZGVmaW5lZChTVE0zMkYyKSB8fCBkZWZpbmVkKFNUTTMyRjcpIHx8IGRlZmluZWQoU1RNMzJHNCkgfHwgZGVmaW5lZChTVE0zMkg3KSB8fCBkZWZpbmVkKFNUTTMyV0IpCiAjZGVmaW5lICBHUElPX1NQRUVEX0xPVyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQSU9fU1BFRURfRlJFUV9MT1cKICNkZWZpbmUgIEdQSU9fU1BFRURfTUVESVVNICAgICAgICAgICAgICAgICAgICAgICAgR1BJT19TUEVFRF9GUkVRX01FRElVTQogI2RlZmluZSAgR1BJT19TUEVFRF9GQVNUICAgICAgICAgICAgICAgICAgICAgICAgICBHUElPX1NQRUVEX0ZSRVFfSElHSAogI2RlZmluZSAgR1BJT19TUEVFRF9ISUdIICAgICAgICAgICAgICAgICAgICAgICAgICBHUElPX1NQRUVEX0ZSRVFfVkVSWV9ISUdICi0jZW5kaWYgLyogU1RNMzJMMCB8fCBTVE0zMkw0IHx8IFNUTTMyRjQgfHwgU1RNMzJGMiB8fCBTVE0zMkY3IHx8IFNUTTMyRzQgfHwgU1RNMzJINyovCisjZW5kaWYgLyogU1RNMzJMMCB8fCBTVE0zMkw0IHx8IFNUTTMyRjQgfHwgU1RNMzJGMiB8fCBTVE0zMkY3IHx8IFNUTTMyRzQgfHwgU1RNMzJINyB8fCBTVE0zMldCKi8KIAogI2lmIGRlZmluZWQoU1RNMzJMMSkKLSAjZGVmaW5lICBHUElPX1NQRUVEX1ZFUllfTE9XICAgIEdQSU9fU1BFRURfRlJFUV9MT1cKLSAjZGVmaW5lICBHUElPX1NQRUVEX0xPVyAgICAgICAgIEdQSU9fU1BFRURfRlJFUV9NRURJVU0KLSAjZGVmaW5lICBHUElPX1NQRUVEX01FRElVTSAgICAgIEdQSU9fU1BFRURfRlJFUV9ISUdICi0gI2RlZmluZSAgR1BJT19TUEVFRF9ISUdIICAgICAgICBHUElPX1NQRUVEX0ZSRVFfVkVSWV9ISUdICisjZGVmaW5lICBHUElPX1NQRUVEX1ZFUllfTE9XICAgIEdQSU9fU1BFRURfRlJFUV9MT1cKKyNkZWZpbmUgIEdQSU9fU1BFRURfTE9XICAgICAgICAgR1BJT19TUEVFRF9GUkVRX01FRElVTQorI2RlZmluZSAgR1BJT19TUEVFRF9NRURJVU0gICAgICBHUElPX1NQRUVEX0ZSRVFfSElHSAorI2RlZmluZSAgR1BJT19TUEVFRF9ISUdIICAgICAgICBHUElPX1NQRUVEX0ZSRVFfVkVSWV9ISUdICiAjZW5kaWYgLyogU1RNMzJMMSAqLwogCiAjaWYgZGVmaW5lZChTVE0zMkYwKSB8fCBkZWZpbmVkKFNUTTMyRjMpIHx8IGRlZmluZWQoU1RNMzJGMSkKLSAjZGVmaW5lICBHUElPX1NQRUVEX0xPVyAgICBHUElPX1NQRUVEX0ZSRVFfTE9XCi0gI2RlZmluZSAgR1BJT19TUEVFRF9NRURJVU0gR1BJT19TUEVFRF9GUkVRX01FRElVTQotICNkZWZpbmUgIEdQSU9fU1BFRURfSElHSCAgIEdQSU9fU1BFRURfRlJFUV9ISUdICisjZGVmaW5lICBHUElPX1NQRUVEX0xPVyAgICBHUElPX1NQRUVEX0ZSRVFfTE9XCisjZGVmaW5lICBHUElPX1NQRUVEX01FRElVTSBHUElPX1NQRUVEX0ZSRVFfTUVESVVNCisjZGVmaW5lICBHUElPX1NQRUVEX0hJR0ggICBHUElPX1NQRUVEX0ZSRVFfSElHSAogI2VuZGlmIC8qIFNUTTMyRjAgfHwgU1RNMzJGMyB8fCBTVE0zMkYxICovCiAKICNkZWZpbmUgR1BJT19BRjZfREZTRE0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BJT19BRjZfREZTRE0xCkBAIC02NDMsNiArNjQ3LDEwIEBACiAjZGVmaW5lIEhBTF9IUlRJTV9FeHRlcm5hbEV2ZW50Q291bnRlckVuYWJsZSAgICBIQUxfSFJUSU1fRXh0RXZlbnRDb3VudGVyRW5hYmxlCiAjZGVmaW5lIEhBTF9IUlRJTV9FeHRlcm5hbEV2ZW50Q291bnRlckRpc2FibGUgICBIQUxfSFJUSU1fRXh0RXZlbnRDb3VudGVyRGlzYWJsZQogI2RlZmluZSBIQUxfSFJUSU1fRXh0ZXJuYWxFdmVudENvdW50ZXJSZXNldCAgICAgSEFMX0hSVElNX0V4dEV2ZW50Q291bnRlclJlc2V0CisjZGVmaW5lIEhSVElNX1RJTUVFVkVOVF9BICAgICAgICAgICAgICAgICAgICAgICBIUlRJTV9FVkVOVENPVU5URVJfQQorI2RlZmluZSBIUlRJTV9USU1FRVZFTlRfQiAgICAgICAgICAgICAgICAgICAgICAgSFJUSU1fRVZFTlRDT1VOVEVSX0IKKyNkZWZpbmUgSFJUSU1fVElNRUVWRU5UUkVTRVRNT0RFX1VOQ09ORElUSU9OQUwgIEhSVElNX0VWRU5UQ09VTlRFUl9SU1RNT0RFX1VOQ09ORElUSU9OQUwKKyNkZWZpbmUgSFJUSU1fVElNRUVWRU5UUkVTRVRNT0RFX0NPTkRJVElPTkFMICAgIEhSVElNX0VWRU5UQ09VTlRFUl9SU1RNT0RFX0NPTkRJVElPTkFMCiAjZW5kaWYgLyogU1RNMzJHNCAqLwogCiAjaWYgZGVmaW5lZChTVE0zMkg3KQpAQCAtNzY1LDQ5ICs3NzMsNiBAQAogI2RlZmluZSBIUlRJTV9FVkVOVFNSQ18zICAgICAgICAgICAgICAoSFJUSU1fRUVDUjFfRUUxU1JDXzEpCiAjZGVmaW5lIEhSVElNX0VWRU5UU1JDXzQgICAgICAgICAgICAgIChIUlRJTV9FRUNSMV9FRTFTUkNfMSB8IEhSVElNX0VFQ1IxX0VFMVNSQ18wKQogCi0vKiogQGJyaWVmIENvbnN0YW50cyBkZWZpbmluZyB0aGUgZXZlbnRzIHRoYXQgY2FuIGJlIHNlbGVjdGVkIHRvIGNvbmZpZ3VyZSB0aGUKLSAgKiAgICAgICAgc2V0L3Jlc2V0IGNyb3NzYmFyIG9mIGEgdGltZXIgb3V0cHV0Ci0gICovCi0jZGVmaW5lIEhSVElNX09VVFBVVFNFVF9USU1FVl8xICAgICAgIChIUlRJTV9TRVQxUl9USU1FVk5UMSkKLSNkZWZpbmUgSFJUSU1fT1VUUFVUU0VUX1RJTUVWXzIgICAgICAgKEhSVElNX1NFVDFSX1RJTUVWTlQyKQotI2RlZmluZSBIUlRJTV9PVVRQVVRTRVRfVElNRVZfMyAgICAgICAoSFJUSU1fU0VUMVJfVElNRVZOVDMpCi0jZGVmaW5lIEhSVElNX09VVFBVVFNFVF9USU1FVl80ICAgICAgIChIUlRJTV9TRVQxUl9USU1FVk5UNCkKLSNkZWZpbmUgSFJUSU1fT1VUUFVUU0VUX1RJTUVWXzUgICAgICAgKEhSVElNX1NFVDFSX1RJTUVWTlQ1KQotI2RlZmluZSBIUlRJTV9PVVRQVVRTRVRfVElNRVZfNiAgICAgICAoSFJUSU1fU0VUMVJfVElNRVZOVDYpCi0jZGVmaW5lIEhSVElNX09VVFBVVFNFVF9USU1FVl83ICAgICAgIChIUlRJTV9TRVQxUl9USU1FVk5UNykKLSNkZWZpbmUgSFJUSU1fT1VUUFVUU0VUX1RJTUVWXzggICAgICAgKEhSVElNX1NFVDFSX1RJTUVWTlQ4KQotI2RlZmluZSBIUlRJTV9PVVRQVVRTRVRfVElNRVZfOSAgICAgICAoSFJUSU1fU0VUMVJfVElNRVZOVDkpCi0KLSNkZWZpbmUgSFJUSU1fT1VUUFVUUkVTRVRfVElNRVZfMSAgICAgKEhSVElNX1JTVDFSX1RJTUVWTlQxKQotI2RlZmluZSBIUlRJTV9PVVRQVVRSRVNFVF9USU1FVl8yICAgICAoSFJUSU1fUlNUMVJfVElNRVZOVDIpCi0jZGVmaW5lIEhSVElNX09VVFBVVFJFU0VUX1RJTUVWXzMgICAgIChIUlRJTV9SU1QxUl9USU1FVk5UMykKLSNkZWZpbmUgSFJUSU1fT1VUUFVUUkVTRVRfVElNRVZfNCAgICAgKEhSVElNX1JTVDFSX1RJTUVWTlQ0KQotI2RlZmluZSBIUlRJTV9PVVRQVVRSRVNFVF9USU1FVl81ICAgICAoSFJUSU1fUlNUMVJfVElNRVZOVDUpCi0jZGVmaW5lIEhSVElNX09VVFBVVFJFU0VUX1RJTUVWXzYgICAgIChIUlRJTV9SU1QxUl9USU1FVk5UNikKLSNkZWZpbmUgSFJUSU1fT1VUUFVUUkVTRVRfVElNRVZfNyAgICAgKEhSVElNX1JTVDFSX1RJTUVWTlQ3KQotI2RlZmluZSBIUlRJTV9PVVRQVVRSRVNFVF9USU1FVl84ICAgICAoSFJUSU1fUlNUMVJfVElNRVZOVDgpCi0jZGVmaW5lIEhSVElNX09VVFBVVFJFU0VUX1RJTUVWXzkgICAgIChIUlRJTV9SU1QxUl9USU1FVk5UOSkKLQotLyoqIEBicmllZiBDb25zdGFudHMgZGVmaW5pbmcgdGhlIGV2ZW50IGZpbHRlcmluZyBhcHBsaWVkIHRvIGV4dGVybmFsIGV2ZW50cwotICAqICAgICAgICBieSBhIHRpbWVyCi0gICovCi0jZGVmaW5lIEhSVElNX1RJTUVWRU5URklMVEVSX05PTkUgICAgICAgICAgICAgKDB4MDAwMDAwMDBVKQotI2RlZmluZSBIUlRJTV9USU1FVkVOVEZJTFRFUl9CTEFOS0lOR0NNUDEgICAgIChIUlRJTV9FRUZSMV9FRTFGTFRSXzApCi0jZGVmaW5lIEhSVElNX1RJTUVWRU5URklMVEVSX0JMQU5LSU5HQ01QMiAgICAgKEhSVElNX0VFRlIxX0VFMUZMVFJfMSkKLSNkZWZpbmUgSFJUSU1fVElNRVZFTlRGSUxURVJfQkxBTktJTkdDTVAzICAgICAoSFJUSU1fRUVGUjFfRUUxRkxUUl8xIHwgSFJUSU1fRUVGUjFfRUUxRkxUUl8wKQotI2RlZmluZSBIUlRJTV9USU1FVkVOVEZJTFRFUl9CTEFOS0lOR0NNUDQgICAgIChIUlRJTV9FRUZSMV9FRTFGTFRSXzIpCi0jZGVmaW5lIEhSVElNX1RJTUVWRU5URklMVEVSX0JMQU5LSU5HRkxUUjEgICAgKEhSVElNX0VFRlIxX0VFMUZMVFJfMiB8IEhSVElNX0VFRlIxX0VFMUZMVFJfMCkKLSNkZWZpbmUgSFJUSU1fVElNRVZFTlRGSUxURVJfQkxBTktJTkdGTFRSMiAgICAoSFJUSU1fRUVGUjFfRUUxRkxUUl8yIHwgSFJUSU1fRUVGUjFfRUUxRkxUUl8xKQotI2RlZmluZSBIUlRJTV9USU1FVkVOVEZJTFRFUl9CTEFOS0lOR0ZMVFIzICAgIChIUlRJTV9FRUZSMV9FRTFGTFRSXzIgfCBIUlRJTV9FRUZSMV9FRTFGTFRSXzEgfCBIUlRJTV9FRUZSMV9FRTFGTFRSXzApCi0jZGVmaW5lIEhSVElNX1RJTUVWRU5URklMVEVSX0JMQU5LSU5HRkxUUjQgICAgKEhSVElNX0VFRlIxX0VFMUZMVFJfMykKLSNkZWZpbmUgSFJUSU1fVElNRVZFTlRGSUxURVJfQkxBTktJTkdGTFRSNSAgICAoSFJUSU1fRUVGUjFfRUUxRkxUUl8zIHwgSFJUSU1fRUVGUjFfRUUxRkxUUl8wKQotI2RlZmluZSBIUlRJTV9USU1FVkVOVEZJTFRFUl9CTEFOS0lOR0ZMVFI2ICAgIChIUlRJTV9FRUZSMV9FRTFGTFRSXzMgfCBIUlRJTV9FRUZSMV9FRTFGTFRSXzEpCi0jZGVmaW5lIEhSVElNX1RJTUVWRU5URklMVEVSX0JMQU5LSU5HRkxUUjcgICAgKEhSVElNX0VFRlIxX0VFMUZMVFJfMyB8IEhSVElNX0VFRlIxX0VFMUZMVFJfMSB8IEhSVElNX0VFRlIxX0VFMUZMVFJfMCkKLSNkZWZpbmUgSFJUSU1fVElNRVZFTlRGSUxURVJfQkxBTktJTkdGTFRSOCAgICAoSFJUSU1fRUVGUjFfRUUxRkxUUl8zIHwgSFJUSU1fRUVGUjFfRUUxRkxUUl8yKQotI2RlZmluZSBIUlRJTV9USU1FVkVOVEZJTFRFUl9XSU5ET1dJTkdDTVAyICAgIChIUlRJTV9FRUZSMV9FRTFGTFRSXzMgfCBIUlRJTV9FRUZSMV9FRTFGTFRSXzIgfCBIUlRJTV9FRUZSMV9FRTFGTFRSXzApCi0jZGVmaW5lIEhSVElNX1RJTUVWRU5URklMVEVSX1dJTkRPV0lOR0NNUDMgICAgKEhSVElNX0VFRlIxX0VFMUZMVFJfMyB8IEhSVElNX0VFRlIxX0VFMUZMVFJfMiB8IEhSVElNX0VFRlIxX0VFMUZMVFJfMSkKLSNkZWZpbmUgSFJUSU1fVElNRVZFTlRGSUxURVJfV0lORE9XSU5HVElNICAgICAoSFJUSU1fRUVGUjFfRUUxRkxUUl8zIHwgSFJUSU1fRUVGUjFfRUUxRkxUUl8yIHwgSFJUSU1fRUVGUjFfRUUxRkxUUl8xIHwgSFJUSU1fRUVGUjFfRUUxRkxUUl8wKQotCiAvKiogQGJyaWVmIENvbnN0YW50cyBkZWZpbmluZyB0aGUgRExMIGNhbGlicmF0aW9uIHBlcmlvZHMgKGluIG1pY3JvIHNlY29uZHMpCiAgICovCiAjZGVmaW5lIEhSVElNX0NBTElCUkFUSU9OUkFURV83MzAwICAgICAgICAgICAgIDB4MDAwMDAwMDBVCkBAIC05NTUsMTEgKzkyMCwxNiBAQAogI2RlZmluZSBPUEFNUF9QR0FDT05ORUNUX1ZNMCAgICAgICAgICAgICAgICAgIE9QQU1QX1BHQV9DT05ORUNUX0lOVkVSVElOR0lOUFVUX0lPMAogI2RlZmluZSBPUEFNUF9QR0FDT05ORUNUX1ZNMSAgICAgICAgICAgICAgICAgIE9QQU1QX1BHQV9DT05ORUNUX0lOVkVSVElOR0lOUFVUX0lPMQogCi0jaWYgZGVmaW5lZChTVE0zMkwxKSB8fCBkZWZpbmVkKFNUTTMyTDQpIHx8IGRlZmluZWQoU1RNMzJMNSkgfHwgZGVmaW5lZChTVE0zMkg3KQorI2lmIGRlZmluZWQoU1RNMzJMMSkgfHwgZGVmaW5lZChTVE0zMkw0KSB8fCBkZWZpbmVkKFNUTTMyTDUpIHx8IGRlZmluZWQoU1RNMzJINykgfHwgZGVmaW5lZChTVE0zMkc0KQogI2RlZmluZSBIQUxfT1BBTVBfTVNQX0lOSVRfQ0JfSUQgICAgICAgSEFMX09QQU1QX01TUElOSVRfQ0JfSUQKICNkZWZpbmUgSEFMX09QQU1QX01TUF9ERUlOSVRfQ0JfSUQgICAgIEhBTF9PUEFNUF9NU1BERUlOSVRfQ0JfSUQKICNlbmRpZgogCisjaWYgZGVmaW5lZChTVE0zMkw0KSB8fCBkZWZpbmVkKFNUTTMyTDUpCisjZGVmaW5lIE9QQU1QX1BPV0VSTU9ERV9OT1JNQUwgICAgICAgICAgICAgICAgT1BBTVBfUE9XRVJNT0RFX05PUk1BTFBPV0VSCisjZWxpZiBkZWZpbmVkKFNUTTMyRzQpCisjZGVmaW5lIE9QQU1QX1BPV0VSTU9ERV9OT1JNQUwgICAgICAgICAgICAgICAgT1BBTVBfUE9XRVJNT0RFX05PUk1BTFNQRUVECisjZW5kaWYKIAogLyoqCiAgICogQH0KQEAgLTk3MSwxNSArOTQxLDE1IEBACiAjZGVmaW5lIEkyU19TVEFOREFSRF9QSElMTElQUyAgICAgIEkyU19TVEFOREFSRF9QSElMSVBTCiAKICNpZiBkZWZpbmVkKFNUTTMySDcpCi0gICNkZWZpbmUgSTJTX0lUX1RYRSAgICAgICAgICAgICAgIEkyU19JVF9UWFAKLSAgI2RlZmluZSBJMlNfSVRfUlhORSAgICAgICAgICAgICAgSTJTX0lUX1JYUAorI2RlZmluZSBJMlNfSVRfVFhFICAgICAgICAgICAgICAgSTJTX0lUX1RYUAorI2RlZmluZSBJMlNfSVRfUlhORSAgICAgICAgICAgICAgSTJTX0lUX1JYUAogCi0gICNkZWZpbmUgSTJTX0ZMQUdfVFhFICAgICAgICAgICAgIEkyU19GTEFHX1RYUAotICAjZGVmaW5lIEkyU19GTEFHX1JYTkUgICAgICAgICAgICBJMlNfRkxBR19SWFAKKyNkZWZpbmUgSTJTX0ZMQUdfVFhFICAgICAgICAgICAgIEkyU19GTEFHX1RYUAorI2RlZmluZSBJMlNfRkxBR19SWE5FICAgICAgICAgICAgSTJTX0ZMQUdfUlhQCiAjZW5kaWYKIAogI2lmIGRlZmluZWQoU1RNMzJGNykKLSAgI2RlZmluZSBJMlNfQ0xPQ0tfU1lTQ0xLICAgICAgICAgICBJMlNfQ0xPQ0tfUExMCisjZGVmaW5lIEkyU19DTE9DS19TWVNDTEsgICAgICAgICAgIEkyU19DTE9DS19QTEwKICNlbmRpZgogLyoqCiAgICogQH0KQEAgLTExMTQsMTYgKzEwODQsMTYgQEAKIAogI2lmIGRlZmluZWQoU1RNMzJINykKIAotICNkZWZpbmUgU1BJX0ZMQUdfVFhFICAgICAgICAgICAgICAgICAgICBTUElfRkxBR19UWFAKLSAjZGVmaW5lIFNQSV9GTEFHX1JYTkUgICAgICAgICAgICAgICAgICAgU1BJX0ZMQUdfUlhQCisjZGVmaW5lIFNQSV9GTEFHX1RYRSAgICAgICAgICAgICAgICAgICAgU1BJX0ZMQUdfVFhQCisjZGVmaW5lIFNQSV9GTEFHX1JYTkUgICAgICAgICAgICAgICAgICAgU1BJX0ZMQUdfUlhQCiAKLSAjZGVmaW5lIFNQSV9JVF9UWEUgICAgICAgICAgICAgICAgICAgICAgU1BJX0lUX1RYUAotICNkZWZpbmUgU1BJX0lUX1JYTkUgICAgICAgICAgICAgICAgICAgICBTUElfSVRfUlhQCisjZGVmaW5lIFNQSV9JVF9UWEUgICAgICAgICAgICAgICAgICAgICAgU1BJX0lUX1RYUAorI2RlZmluZSBTUElfSVRfUlhORSAgICAgICAgICAgICAgICAgICAgIFNQSV9JVF9SWFAKIAotICNkZWZpbmUgU1BJX0ZSTFZMX0VNUFRZICAgICAgICAgICAgICAgICBTUElfUlhfRklGT18wUEFDS0VUCi0gI2RlZmluZSBTUElfRlJMVkxfUVVBUlRFUl9GVUxMICAgICAgICAgIFNQSV9SWF9GSUZPXzFQQUNLRVQKLSAjZGVmaW5lIFNQSV9GUkxWTF9IQUxGX0ZVTEwgICAgICAgICAgICAgU1BJX1JYX0ZJRk9fMlBBQ0tFVAotICNkZWZpbmUgU1BJX0ZSTFZMX0ZVTEwgICAgICAgICAgICAgICAgICBTUElfUlhfRklGT18zUEFDS0VUCisjZGVmaW5lIFNQSV9GUkxWTF9FTVBUWSAgICAgICAgICAgICAgICAgU1BJX1JYX0ZJRk9fMFBBQ0tFVAorI2RlZmluZSBTUElfRlJMVkxfUVVBUlRFUl9GVUxMICAgICAgICAgIFNQSV9SWF9GSUZPXzFQQUNLRVQKKyNkZWZpbmUgU1BJX0ZSTFZMX0hBTEZfRlVMTCAgICAgICAgICAgICBTUElfUlhfRklGT18yUEFDS0VUCisjZGVmaW5lIFNQSV9GUkxWTF9GVUxMICAgICAgICAgICAgICAgICAgU1BJX1JYX0ZJRk9fM1BBQ0tFVAogCiAjZW5kaWYgLyogU1RNMzJINyAqLwogCkBAIC0xNDUwLDcgKzE0MjAsNyBAQAogI2RlZmluZSBIQVNIX0hNQUNLZXlUeXBlX1Nob3J0S2V5ICBIQVNIX0hNQUNfS0VZVFlQRV9TSE9SVEtFWQogI2RlZmluZSBIQVNIX0hNQUNLZXlUeXBlX0xvbmdLZXkgICBIQVNIX0hNQUNfS0VZVFlQRV9MT05HS0VZCiAKLSNpZiBkZWZpbmVkKFNUTTMyTDQpIHx8IGRlZmluZWQoU1RNMzJGNCkgfHwgZGVmaW5lZChTVE0zMkY3KSB8fCBkZWZpbmVkKFNUTTMySDcpCisjaWYgZGVmaW5lZChTVE0zMkw0KSB8fCBkZWZpbmVkKFNUTTMyTDUpIHx8IGRlZmluZWQoU1RNMzJGMikgfHwgZGVmaW5lZChTVE0zMkY0KSB8fCBkZWZpbmVkKFNUTTMyRjcpIHx8IGRlZmluZWQoU1RNMzJINykKIAogI2RlZmluZSBIQUxfSEFTSF9NRDVfQWNjdW11bGF0ZSAgICAgICAgICAgICAgICBIQUxfSEFTSF9NRDVfQWNjbWx0CiAjZGVmaW5lIEhBTF9IQVNIX01ENV9BY2N1bXVsYXRlX0VuZCAgICAgICAgICAgIEhBTF9IQVNIX01ENV9BY2NtbHRfRW5kCkBAIC0xNDcyLDcgKzE0NDIsNyBAQAogI2RlZmluZSBIQUxfSEFTSEV4X1NIQTI1Nl9BY2N1bXVsYXRlX0lUICAgICAgICBIQUxfSEFTSEV4X1NIQTI1Nl9BY2NtbHRfSVQKICNkZWZpbmUgSEFMX0hBU0hFeF9TSEEyNTZfQWNjdW11bGF0ZV9FbmRfSVQgICAgSEFMX0hBU0hFeF9TSEEyNTZfQWNjbWx0X0VuZF9JVAogCi0jZW5kaWYgIC8qIFNUTTMyTDQgfHwgU1RNMzJGNCB8fCBTVE0zMkY3IHx8IFNUTTMySDcgKi8KKyNlbmRpZiAgLyogU1RNMzJMNCB8fCBTVE0zMkw1IHx8IFNUTTMyRjIgfHwgU1RNMzJGNCB8fCBTVE0zMkY3IHx8IFNUTTMySDcgKi8KIC8qKgogICAqIEB9CiAgICovCkBAIC0xNDg2LDcgKzE0NTYsOCBAQAogI2RlZmluZSBIQUxfRGlzYWJsZURCR1N0b3BNb2RlIEhBTF9EQkdNQ1VfRGlzYWJsZURCR1N0b3BNb2RlCiAjZGVmaW5lIEhBTF9FbmFibGVEQkdTdGFuZGJ5TW9kZSBIQUxfREJHTUNVX0VuYWJsZURCR1N0YW5kYnlNb2RlCiAjZGVmaW5lIEhBTF9EaXNhYmxlREJHU3RhbmRieU1vZGUgSEFMX0RCR01DVV9EaXNhYmxlREJHU3RhbmRieU1vZGUKLSNkZWZpbmUgSEFMX0RCR19Mb3dQb3dlckNvbmZpZyhQZXJpcGgsIGNtZCkgKCgoY21kKT09RU5BQkxFKT8gSEFMX0RCR01DVV9EQkdfRW5hYmxlTG93UG93ZXJDb25maWcoUGVyaXBoKSA6IEhBTF9EQkdNQ1VfREJHX0Rpc2FibGVMb3dQb3dlckNvbmZpZyhQZXJpcGgpKQorI2RlZmluZSBIQUxfREJHX0xvd1Bvd2VyQ29uZmlnKFBlcmlwaCwgY21kKSAoKChjbWRcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT09RU5BQkxFKT8gSEFMX0RCR01DVV9EQkdfRW5hYmxlTG93UG93ZXJDb25maWcoUGVyaXBoKSA6IEhBTF9EQkdNQ1VfREJHX0Rpc2FibGVMb3dQb3dlckNvbmZpZyhQZXJpcGgpKQogI2RlZmluZSBIQUxfVlJFRklOVF9PdXRwdXRTZWxlY3QgIEhBTF9TWVNDRkdfVlJFRklOVF9PdXRwdXRTZWxlY3QKICNkZWZpbmUgSEFMX0xvY2tfQ21kKGNtZCkgKCgoY21kKT09RU5BQkxFKSA/IEhBTF9TWVNDRkdfRW5hYmxlX0xvY2tfVlJFRklOVCgpIDogSEFMX1NZU0NGR19EaXNhYmxlX0xvY2tfVlJFRklOVCgpKQogI2lmIGRlZmluZWQoU1RNMzJMMCkKQEAgLTE0OTQsNyArMTQ2NSw4IEBACiAjZGVmaW5lIEhBTF9WUkVGSU5UX0NtZChjbWQpICgoKGNtZCk9PUVOQUJMRSk/IEhBTF9TWVNDRkdfRW5hYmxlVlJFRklOVCgpIDogSEFMX1NZU0NGR19EaXNhYmxlVlJFRklOVCgpKQogI2VuZGlmCiAjZGVmaW5lIEhBTF9BRENfRW5hYmxlQnVmZmVyX0NtZChjbWQpICAoKChjbWQpPT1FTkFCTEUpID8gSEFMX0FEQ0V4X0VuYWJsZVZSRUZJTlQoKSA6IEhBTF9BRENFeF9EaXNhYmxlVlJFRklOVCgpKQotI2RlZmluZSBIQUxfQURDX0VuYWJsZUJ1ZmZlclNlbnNvcl9DbWQoY21kKSAoKChjbWQpPT1FTkFCTEUpID8gIEhBTF9BRENFeF9FbmFibGVWUkVGSU5UVGVtcFNlbnNvcigpIDogSEFMX0FEQ0V4X0Rpc2FibGVWUkVGSU5UVGVtcFNlbnNvcigpKQorI2RlZmluZSBIQUxfQURDX0VuYWJsZUJ1ZmZlclNlbnNvcl9DbWQoY21kKSAoKChjbWRcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKT09RU5BQkxFKSA/ICBIQUxfQURDRXhfRW5hYmxlVlJFRklOVFRlbXBTZW5zb3IoKSA6IEhBTF9BRENFeF9EaXNhYmxlVlJFRklOVFRlbXBTZW5zb3IoKSkKICNpZiBkZWZpbmVkKFNUTTMySDdBM3h4KSB8fCBkZWZpbmVkKFNUTTMySDdCM3h4KSB8fCBkZWZpbmVkKFNUTTMySDdCMHh4KSB8fCBkZWZpbmVkKFNUTTMySDdBM3h4USkgfHwgZGVmaW5lZChTVE0zMkg3QjN4eFEpIHx8IGRlZmluZWQoU1RNMzJIN0IweHhRKQogI2RlZmluZSBIQUxfRW5hYmxlU1JEb21haW5EQkdTdG9wTW9kZSAgICAgIEhBTF9FbmFibGVEb21haW4zREJHU3RvcE1vZGUKICNkZWZpbmUgSEFMX0Rpc2FibGVTUkRvbWFpbkRCR1N0b3BNb2RlICAgICBIQUxfRGlzYWJsZURvbWFpbjNEQkdTdG9wTW9kZQpAQCAtMTUxNyw5ICsxNDg5LDkgQEAKICNkZWZpbmUgSEFMX0RBVEFfRUVQUk9NRXhfRXJhc2UgICAgSEFMX0ZMQVNIRXhfREFUQUVFUFJPTV9FcmFzZQogI2RlZmluZSBIQUxfREFUQV9FRVBST01FeF9Qcm9ncmFtICBIQUxfRkxBU0hFeF9EQVRBRUVQUk9NX1Byb2dyYW0KIAotIC8qKgorLyoqCiAgICogQH0KLSAgKi8KKyAqLwogCiAvKiogQGRlZmdyb3VwIEhBTF9JMkNfQWxpYXNlZF9GdW5jdGlvbnMgSEFMIEkyQyBBbGlhc2VkIEZ1bmN0aW9ucyBtYWludGFpbmVkIGZvciBsZWdhY3kgcHVycG9zZQogICAqIEB7CkBAIC0xNTI5LDIwICsxNTAxLDIxIEBACiAjZGVmaW5lIEhBTF9GTVBJMkNFeF9BbmFsb2dGaWx0ZXJfQ29uZmlnICAgICAgSEFMX0ZNUEkyQ0V4X0NvbmZpZ0FuYWxvZ0ZpbHRlcgogI2RlZmluZSBIQUxfRk1QSTJDRXhfRGlnaXRhbEZpbHRlcl9Db25maWcgICAgIEhBTF9GTVBJMkNFeF9Db25maWdEaWdpdGFsRmlsdGVyCiAKLSNkZWZpbmUgSEFMX0kyQ0Zhc3RNb2RlUGx1c0NvbmZpZyhTWVNDRkdfSTJDRmFzdE1vZGVQbHVzLCBjbWQpICgoKGNtZCk9PUVOQUJMRSk/IEhBTF9JMkNFeF9FbmFibGVGYXN0TW9kZVBsdXMoU1lTQ0ZHX0kyQ0Zhc3RNb2RlUGx1cyk6IEhBTF9JMkNFeF9EaXNhYmxlRmFzdE1vZGVQbHVzKFNZU0NGR19JMkNGYXN0TW9kZVBsdXMpKQorI2RlZmluZSBIQUxfSTJDRmFzdE1vZGVQbHVzQ29uZmlnKFNZU0NGR19JMkNGYXN0TW9kZVBsdXMsIGNtZCkgKCgoY21kXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPT1FTkFCTEUpPyBIQUxfSTJDRXhfRW5hYmxlRmFzdE1vZGVQbHVzKFNZU0NGR19JMkNGYXN0TW9kZVBsdXMpOiBIQUxfSTJDRXhfRGlzYWJsZUZhc3RNb2RlUGx1cyhTWVNDRkdfSTJDRmFzdE1vZGVQbHVzKSkKIAotI2lmIGRlZmluZWQoU1RNMzJINykgfHwgZGVmaW5lZChTVE0zMldCKSB8fCBkZWZpbmVkKFNUTTMyRzApIHx8IGRlZmluZWQoU1RNMzJGMCkgfHwgZGVmaW5lZChTVE0zMkYxKSB8fCBkZWZpbmVkKFNUTTMyRjIpIHx8IGRlZmluZWQoU1RNMzJGMykgfHwgZGVmaW5lZChTVE0zMkY0KSB8fCBkZWZpbmVkKFNUTTMyRjcpIHx8IGRlZmluZWQoU1RNMzJMMCkgfHwgZGVmaW5lZChTVE0zMkw0KSB8fCBkZWZpbmVkKFNUTTMyTDUpIHx8IGRlZmluZWQoU1RNMzJHNCkKKyNpZiBkZWZpbmVkKFNUTTMySDcpIHx8IGRlZmluZWQoU1RNMzJXQikgfHwgZGVmaW5lZChTVE0zMkcwKSB8fCBkZWZpbmVkKFNUTTMyRjApIHx8IGRlZmluZWQoU1RNMzJGMSkgfHwgZGVmaW5lZChTVE0zMkYyKSB8fCBkZWZpbmVkKFNUTTMyRjMpIHx8IGRlZmluZWQoU1RNMzJGNCkgfHwgZGVmaW5lZChTVE0zMkY3KSB8fCBkZWZpbmVkKFNUTTMyTDApIHx8IGRlZmluZWQoU1RNMzJMNCkgfHwgZGVmaW5lZChTVE0zMkw1KSB8fCBkZWZpbmVkKFNUTTMyRzQpIHx8IGRlZmluZWQoU1RNMzJMMSkKICNkZWZpbmUgSEFMX0kyQ19NYXN0ZXJfU2VxdWVudGlhbF9UcmFuc21pdF9JVCAgSEFMX0kyQ19NYXN0ZXJfU2VxX1RyYW5zbWl0X0lUCiAjZGVmaW5lIEhBTF9JMkNfTWFzdGVyX1NlcXVlbnRpYWxfUmVjZWl2ZV9JVCAgIEhBTF9JMkNfTWFzdGVyX1NlcV9SZWNlaXZlX0lUCiAjZGVmaW5lIEhBTF9JMkNfU2xhdmVfU2VxdWVudGlhbF9UcmFuc21pdF9JVCAgIEhBTF9JMkNfU2xhdmVfU2VxX1RyYW5zbWl0X0lUCiAjZGVmaW5lIEhBTF9JMkNfU2xhdmVfU2VxdWVudGlhbF9SZWNlaXZlX0lUICAgIEhBTF9JMkNfU2xhdmVfU2VxX1JlY2VpdmVfSVQKLSNlbmRpZiAvKiBTVE0zMkg3IHx8IFNUTTMyV0IgIHx8IFNUTTMyRzAgfHwgU1RNMzJGMCB8fCBTVE0zMkYxIHx8IFNUTTMyRjIgfHwgU1RNMzJGMyB8fCBTVE0zMkY0IHx8IFNUTTMyRjcgfHwgU1RNMzJMMCB8fCBTVE0zMkw0IHx8IFNUTTMyTDUgfHwgU1RNMzJHNCAqLwotI2lmIGRlZmluZWQoU1RNMzJINykgfHwgZGVmaW5lZChTVE0zMldCKSB8fCBkZWZpbmVkKFNUTTMyRzApIHx8IGRlZmluZWQoU1RNMzJGNCkgfHwgZGVmaW5lZChTVE0zMkY3KSB8fCBkZWZpbmVkKFNUTTMyTDApIHx8IGRlZmluZWQoU1RNMzJMNCkgfHwgZGVmaW5lZChTVE0zMkw1KSB8fCBkZWZpbmVkKFNUTTMyRzQpCisjZW5kaWYgLyogU1RNMzJINyB8fCBTVE0zMldCICB8fCBTVE0zMkcwIHx8IFNUTTMyRjAgfHwgU1RNMzJGMSB8fCBTVE0zMkYyIHx8IFNUTTMyRjMgfHwgU1RNMzJGNCB8fCBTVE0zMkY3IHx8IFNUTTMyTDAgfHwgU1RNMzJMNCB8fCBTVE0zMkw1IHx8IFNUTTMyRzQgfHwgU1RNMzJMMSAqLworI2lmIGRlZmluZWQoU1RNMzJINykgfHwgZGVmaW5lZChTVE0zMldCKSB8fCBkZWZpbmVkKFNUTTMyRzApIHx8IGRlZmluZWQoU1RNMzJGNCkgfHwgZGVmaW5lZChTVE0zMkY3KSB8fCBkZWZpbmVkKFNUTTMyTDApIHx8IGRlZmluZWQoU1RNMzJMNCkgfHwgZGVmaW5lZChTVE0zMkw1KSB8fCBkZWZpbmVkKFNUTTMyRzQpfHwgZGVmaW5lZChTVE0zMkwxKQogI2RlZmluZSBIQUxfSTJDX01hc3Rlcl9TZXF1ZW50aWFsX1RyYW5zbWl0X0RNQSBIQUxfSTJDX01hc3Rlcl9TZXFfVHJhbnNtaXRfRE1BCiAjZGVmaW5lIEhBTF9JMkNfTWFzdGVyX1NlcXVlbnRpYWxfUmVjZWl2ZV9ETUEgIEhBTF9JMkNfTWFzdGVyX1NlcV9SZWNlaXZlX0RNQQogI2RlZmluZSBIQUxfSTJDX1NsYXZlX1NlcXVlbnRpYWxfVHJhbnNtaXRfRE1BICBIQUxfSTJDX1NsYXZlX1NlcV9UcmFuc21pdF9ETUEKICNkZWZpbmUgSEFMX0kyQ19TbGF2ZV9TZXF1ZW50aWFsX1JlY2VpdmVfRE1BICAgSEFMX0kyQ19TbGF2ZV9TZXFfUmVjZWl2ZV9ETUEKLSNlbmRpZiAvKiBTVE0zMkg3IHx8IFNUTTMyV0IgIHx8IFNUTTMyRzAgfHwgU1RNMzJGNCB8fCBTVE0zMkY3IHx8IFNUTTMyTDAgfHwgU1RNMzJMNCB8fCBTVE0zMkw1IHx8IFNUTTMyRzQgKi8KKyNlbmRpZiAvKiBTVE0zMkg3IHx8IFNUTTMyV0IgIHx8IFNUTTMyRzAgfHwgU1RNMzJGNCB8fCBTVE0zMkY3IHx8IFNUTTMyTDAgfHwgU1RNMzJMNCB8fCBTVE0zMkw1IHx8IFNUTTMyRzQgfHwgU1RNMzJMMSAqLwogCiAjaWYgZGVmaW5lZChTVE0zMkY0KQogI2RlZmluZSBIQUxfRk1QSTJDX01hc3Rlcl9TZXF1ZW50aWFsX1RyYW5zbWl0X0lUICBIQUxfRk1QSTJDX01hc3Rlcl9TZXFfVHJhbnNtaXRfSVQKQEAgLTE1NTQsMTkgKzE1MjcsMTkgQEAKICNkZWZpbmUgSEFMX0ZNUEkyQ19TbGF2ZV9TZXF1ZW50aWFsX1RyYW5zbWl0X0RNQSAgSEFMX0ZNUEkyQ19TbGF2ZV9TZXFfVHJhbnNtaXRfRE1BCiAjZGVmaW5lIEhBTF9GTVBJMkNfU2xhdmVfU2VxdWVudGlhbF9SZWNlaXZlX0RNQSAgIEhBTF9GTVBJMkNfU2xhdmVfU2VxX1JlY2VpdmVfRE1BCiAjZW5kaWYgLyogU1RNMzJGNCAqLwotIC8qKgorLyoqCiAgICogQH0KLSAgKi8KKyAqLwogCiAvKiogQGRlZmdyb3VwIEhBTF9QV1JfQWxpYXNlZCBIQUwgUFdSIEFsaWFzZWQgbWFpbnRhaW5lZCBmb3IgbGVnYWN5IHB1cnBvc2UKICAgKiBAewogICAqLwogCiAjaWYgZGVmaW5lZChTVE0zMkcwKQotI2RlZmluZSBIQUxfUFdSX0NvbmZpZ1BWRAkJCQkJCQkJCQkJCQkJCUhBTF9QV1JFeF9Db25maWdQVkQKLSNkZWZpbmUgSEFMX1BXUl9FbmFibGVQVkQJCQkJCQkJCQkJCQkJCQlIQUxfUFdSRXhfRW5hYmxlUFZECi0jZGVmaW5lIEhBTF9QV1JfRGlzYWJsZVBWRAkJCQkJCQkJCQkJCQkgIEhBTF9QV1JFeF9EaXNhYmxlUFZECi0jZGVmaW5lIEhBTF9QV1JfUFZEX0lSUUhhbmRsZXIJCQkJCQkJCQkJCSAgSEFMX1BXUkV4X1BWRF9JUlFIYW5kbGVyCisjZGVmaW5lIEhBTF9QV1JfQ29uZmlnUFZEICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfUFdSRXhfQ29uZmlnUFZECisjZGVmaW5lIEhBTF9QV1JfRW5hYmxlUFZEICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfUFdSRXhfRW5hYmxlUFZECisjZGVmaW5lIEhBTF9QV1JfRGlzYWJsZVBWRCAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfUFdSRXhfRGlzYWJsZVBWRAorI2RlZmluZSBIQUxfUFdSX1BWRF9JUlFIYW5kbGVyICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1BXUkV4X1BWRF9JUlFIYW5kbGVyCiAjZW5kaWYKICNkZWZpbmUgSEFMX1BXUl9QVkRDb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9QV1JfQ29uZmlnUFZECiAjZGVmaW5lIEhBTF9QV1JfRGlzYWJsZUJrVXBSZWcgICAgICAgICAgICAgICAgICAgICAgICBIQUxfUFdSRXhfRGlzYWJsZUJrVXBSZWcKQEAgLTE2MTEsOSArMTU4NCw5IEBACiAKICNkZWZpbmUgUFdSX01PREVfRVZUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBXUl9QVkRfTU9ERV9OT1JNQUwKIAotIC8qKgorLyoqCiAgICogQH0KLSAgKi8KKyAqLwogCiAvKiogQGRlZmdyb3VwIEhBTF9TTUJVU19BbGlhc2VkX0Z1bmN0aW9ucyBIQUwgU01CVVMgQWxpYXNlZCBGdW5jdGlvbnMgbWFpbnRhaW5lZCBmb3IgbGVnYWN5IHB1cnBvc2UKICAgKiBAewpAQCAtMTg2MiwxNSArMTgzNSwxNSBAQAogI2RlZmluZSBfX0hBTF9GUkVFWkVfUlRDX0RCR01DVSBfX0hBTF9EQkdNQ1VfRlJFRVpFX1JUQwogI2RlZmluZSBfX0hBTF9VTkZSRUVaRV9SVENfREJHTUNVIF9fSEFMX0RCR01DVV9VTkZSRUVaRV9SVEMKICNpZiBkZWZpbmVkKFNUTTMySDcpCi0gICNkZWZpbmUgX19IQUxfRlJFRVpFX1dXREdfREJHTUNVIF9fSEFMX0RCR01DVV9GUkVFWkVfV1dERzEKLSAgI2RlZmluZSBfX0hBTF9VTkZSRUVaRV9XV0RHX0RCR01DVSBfX0hBTF9EQkdNQ1VfVW5GcmVlemVfV1dERzEKLSAgI2RlZmluZSBfX0hBTF9GUkVFWkVfSVdER19EQkdNQ1UgX19IQUxfREJHTUNVX0ZSRUVaRV9JV0RHMQotICAjZGVmaW5lIF9fSEFMX1VORlJFRVpFX0lXREdfREJHTUNVIF9fSEFMX0RCR01DVV9VbkZyZWV6ZV9JV0RHMQorI2RlZmluZSBfX0hBTF9GUkVFWkVfV1dER19EQkdNQ1UgX19IQUxfREJHTUNVX0ZSRUVaRV9XV0RHMQorI2RlZmluZSBfX0hBTF9VTkZSRUVaRV9XV0RHX0RCR01DVSBfX0hBTF9EQkdNQ1VfVW5GcmVlemVfV1dERzEKKyNkZWZpbmUgX19IQUxfRlJFRVpFX0lXREdfREJHTUNVIF9fSEFMX0RCR01DVV9GUkVFWkVfSVdERzEKKyNkZWZpbmUgX19IQUxfVU5GUkVFWkVfSVdER19EQkdNQ1UgX19IQUxfREJHTUNVX1VuRnJlZXplX0lXREcxCiAjZWxzZQotICAjZGVmaW5lIF9fSEFMX0ZSRUVaRV9XV0RHX0RCR01DVSBfX0hBTF9EQkdNQ1VfRlJFRVpFX1dXREcKLSAgI2RlZmluZSBfX0hBTF9VTkZSRUVaRV9XV0RHX0RCR01DVSBfX0hBTF9EQkdNQ1VfVU5GUkVFWkVfV1dERwotICAjZGVmaW5lIF9fSEFMX0ZSRUVaRV9JV0RHX0RCR01DVSBfX0hBTF9EQkdNQ1VfRlJFRVpFX0lXREcKLSAgI2RlZmluZSBfX0hBTF9VTkZSRUVaRV9JV0RHX0RCR01DVSBfX0hBTF9EQkdNQ1VfVU5GUkVFWkVfSVdERworI2RlZmluZSBfX0hBTF9GUkVFWkVfV1dER19EQkdNQ1UgX19IQUxfREJHTUNVX0ZSRUVaRV9XV0RHCisjZGVmaW5lIF9fSEFMX1VORlJFRVpFX1dXREdfREJHTUNVIF9fSEFMX0RCR01DVV9VTkZSRUVaRV9XV0RHCisjZGVmaW5lIF9fSEFMX0ZSRUVaRV9JV0RHX0RCR01DVSBfX0hBTF9EQkdNQ1VfRlJFRVpFX0lXREcKKyNkZWZpbmUgX19IQUxfVU5GUkVFWkVfSVdER19EQkdNQ1UgX19IQUxfREJHTUNVX1VORlJFRVpFX0lXREcKICNlbmRpZiAvKiBTVE0zMkg3ICovCiAjZGVmaW5lIF9fSEFMX0ZSRUVaRV9JMkMxX1RJTUVPVVRfREJHTUNVIF9fSEFMX0RCR01DVV9GUkVFWkVfSTJDMV9USU1FT1VUCiAjZGVmaW5lIF9fSEFMX1VORlJFRVpFX0kyQzFfVElNRU9VVF9EQkdNQ1UgX19IQUxfREJHTUNVX1VORlJFRVpFX0kyQzFfVElNRU9VVApAQCAtMjA4MSw4ICsyMDU0LDggQEAKICAgKi8KIAogI2RlZmluZSBJU19EQUNfV0FWRShXQVZFKSAoKChXQVZFKSA9PSBEQUNfV0FWRV9OT05FKSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICgoV0FWRSkgPT0gREFDX1dBVkVfTk9JU0UpfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAoKFdBVkUpID09IERBQ19XQVZFX1RSSUFOR0xFKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoV0FWRSkgPT0gREFDX1dBVkVfTk9JU0UpfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChXQVZFKSA9PSBEQUNfV0FWRV9UUklBTkdMRSkpCiAKIC8qKgogICAqIEB9CkBAIC0yMTM4LDcgKzIxMTEsNyBAQAogI2RlZmluZSBJU19JMlNfSU5TVEFOQ0VfRVhUICAgICAgICAgICAgIElTX0kyU19BTExfSU5TVEFOQ0VfRVhUCiAKICNpZiBkZWZpbmVkKFNUTTMySDcpCi0gICNkZWZpbmUgX19IQUxfSTJTX0NMRUFSX0ZSRUZMQUcgICAgICAgX19IQUxfSTJTX0NMRUFSX1RJRlJFRkxBRworI2RlZmluZSBfX0hBTF9JMlNfQ0xFQVJfRlJFRkxBRyAgICAgICBfX0hBTF9JMlNfQ0xFQVJfVElGUkVGTEFHCiAjZW5kaWYKIAogLyoqCkBAIC0yMjc1LDcgKzIyNDgsOCBAQAogI2RlZmluZSBSQ0NfU3RvcFdha2VVcENsb2NrX0hTSSAgICAgUkNDX1NUT1BfV0FLRVVQQ0xPQ0tfSFNJCiAKICNkZWZpbmUgSEFMX1JDQ19DQ1NDYWxsYmFjayBIQUxfUkNDX0NTU0NhbGxiYWNrCi0jZGVmaW5lIEhBTF9SQzQ4X0VuYWJsZUJ1ZmZlcl9DbWQoY21kKSAoKChjbWQpPT1FTkFCTEUpID8gSEFMX1JDQ0V4X0VuYWJsZUhTSTQ4X1ZSRUZJTlQoKSA6IEhBTF9SQ0NFeF9EaXNhYmxlSFNJNDhfVlJFRklOVCgpKQorI2RlZmluZSBIQUxfUkM0OF9FbmFibGVCdWZmZXJfQ21kKGNtZCkgKCgoY21kXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApPT1FTkFCTEUpID8gSEFMX1JDQ0V4X0VuYWJsZUhTSTQ4X1ZSRUZJTlQoKSA6IEhBTF9SQ0NFeF9EaXNhYmxlSFNJNDhfVlJFRklOVCgpKQogCiAjZGVmaW5lIF9fQURDX0NMS19ESVNBQkxFICAgICAgICAgIF9fSEFMX1JDQ19BRENfQ0xLX0RJU0FCTEUKICNkZWZpbmUgX19BRENfQ0xLX0VOQUJMRSAgICAgICAgICAgX19IQUxfUkNDX0FEQ19DTEtfRU5BQkxFCkBAIC0zMjQzLDkgKzMyMTcsOCBAQAogI2RlZmluZSBSQ0NfTUNPU09VUkNFX1BMTENMS19OT0RJViAgUkNDX01DTzFTT1VSQ0VfUExMQ0xLCiAjZGVmaW5lIFJDQ19NQ09TT1VSQ0VfUExMQ0xLX0RJVjIgICBSQ0NfTUNPMVNPVVJDRV9QTExDTEtfRElWMgogCi0jaWYgZGVmaW5lZChTVE0zMkw0KQorI2lmIGRlZmluZWQoU1RNMzJMNCkgfHwgZGVmaW5lZChTVE0zMldCKSB8fCBkZWZpbmVkKFNUTTMyRzApIHx8IGRlZmluZWQoU1RNMzJHNCkgfHwgZGVmaW5lZChTVE0zMkw1KSB8fCBkZWZpbmVkKFNUTTMyV0wpCiAjZGVmaW5lIFJDQ19SVENDTEtTT1VSQ0VfTk9fQ0xLICAgICBSQ0NfUlRDQ0xLU09VUkNFX05PTkUKLSNlbGlmIGRlZmluZWQoU1RNMzJXQikgfHwgZGVmaW5lZChTVE0zMkcwKSB8fCBkZWZpbmVkKFNUTTMyRzQpIHx8IGRlZmluZWQoU1RNMzJMNSkKICNlbHNlCiAjZGVmaW5lIFJDQ19SVENDTEtTT1VSQ0VfTk9ORSAgICAgICBSQ0NfUlRDQ0xLU09VUkNFX05PX0NMSwogI2VuZGlmCkBAIC0zMzczLDcgKzMzNDYsNyBAQAogLyoqIEBkZWZncm91cCBIQUxfUlRDX0FsaWFzZWRfTWFjcm9zIEhBTCBSVEMgQWxpYXNlZCBNYWNyb3MgbWFpbnRhaW5lZCBmb3IgbGVnYWN5IHB1cnBvc2UKICAgKiBAewogICAqLwotI2lmIGRlZmluZWQgKFNUTTMyRzApIHx8IGRlZmluZWQgKFNUTTMyTDUpIHx8IGRlZmluZWQgKFNUTTMyTDQxMnh4KSB8fCBkZWZpbmVkIChTVE0zMkw0MjJ4eCkgfHwgZGVmaW5lZCAoU1RNMzJMNFA1eHgpIHx8IGRlZmluZWQgKFNUTTMyTDRRNXh4KSB8fCBkZWZpbmVkIChTVE0zMkc0KQorI2lmIGRlZmluZWQgKFNUTTMyRzApIHx8IGRlZmluZWQgKFNUTTMyTDUpIHx8IGRlZmluZWQgKFNUTTMyTDQxMnh4KSB8fCBkZWZpbmVkIChTVE0zMkw0MjJ4eCkgfHwgZGVmaW5lZCAoU1RNMzJMNFA1eHgpIHx8IGRlZmluZWQgKFNUTTMyTDRRNXh4KSB8fCBkZWZpbmVkIChTVE0zMkc0KSB8fCBkZWZpbmVkIChTVE0zMldMKQogI2Vsc2UKICNkZWZpbmUgX19IQUxfUlRDX0NMRUFSX0ZMQUcgICAgICAgICAgICAgICAgICAgICAgX19IQUxfUlRDX0VYVElfQ0xFQVJfRkxBRwogI2VuZGlmCkBAIC0zMzkzLDE5ICszMzY2LDE5IEBACiAjZWxzZQogI2RlZmluZSBfX0hBTF9SVENfRVhUSV9DTEVBUl9GTEFHKF9fRVhUSV9MSU5FX18pICAoKChfX0VYVElfTElORV9fKSA9PSBSVENfRVhUSV9MSU5FX0FMQVJNX0VWRU5UKSA/IF9fSEFMX1JUQ19BTEFSTV9FWFRJX0NMRUFSX0ZMQUcoKSA6IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fRVhUSV9MSU5FX18pID09IFJUQ19FWFRJX0xJTkVfV0FLRVVQVElNRVJfRVZFTlQpID8gX19IQUxfUlRDX1dBS0VVUFRJTUVSX0VYVElfQ0xFQVJfRkxBRygpIDogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19IQUxfUlRDX1RBTVBFUl9USU1FU1RBTVBfRVhUSV9DTEVBUl9GTEFHKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSEFMX1JUQ19UQU1QRVJfVElNRVNUQU1QX0VYVElfQ0xFQVJfRkxBRygpKSkKICNkZWZpbmUgX19IQUxfUlRDX0VYVElfRU5BQkxFX0lUKF9fRVhUSV9MSU5FX18pICAgKCgoX19FWFRJX0xJTkVfXykgID09IFJUQ19FWFRJX0xJTkVfQUxBUk1fRVZFTlQpID8gX19IQUxfUlRDX0FMQVJNX0VYVElfRU5BQkxFX0lUKCkgOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fRVhUSV9MSU5FX18pID09IFJUQ19FWFRJX0xJTkVfV0FLRVVQVElNRVJfRVZFTlQpID8gX19IQUxfUlRDX1dBS0VVUFRJTUVSX0VYVElfRU5BQkxFX0lUKCkgOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0hBTF9SVENfVEFNUEVSX1RJTUVTVEFNUF9FWFRJX0VOQUJMRV9JVCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fRVhUSV9MSU5FX18pID09IFJUQ19FWFRJX0xJTkVfV0FLRVVQVElNRVJfRVZFTlQpID8gX19IQUxfUlRDX1dBS0VVUFRJTUVSX0VYVElfRU5BQkxFX0lUKCkgOiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19IQUxfUlRDX1RBTVBFUl9USU1FU1RBTVBfRVhUSV9FTkFCTEVfSVQoKSkpCiAjZGVmaW5lIF9fSEFMX1JUQ19FWFRJX0RJU0FCTEVfSVQoX19FWFRJX0xJTkVfXykgICgoKF9fRVhUSV9MSU5FX18pID09IFJUQ19FWFRJX0xJTkVfQUxBUk1fRVZFTlQpID8gX19IQUxfUlRDX0FMQVJNX0VYVElfRElTQUJMRV9JVCgpIDogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChfX0VYVElfTElORV9fKSA9PSBSVENfRVhUSV9MSU5FX1dBS0VVUFRJTUVSX0VWRU5UKSA/IF9fSEFMX1JUQ19XQUtFVVBUSU1FUl9FWFRJX0RJU0FCTEVfSVQoKSA6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSEFMX1JUQ19UQU1QRVJfVElNRVNUQU1QX0VYVElfRElTQUJMRV9JVCgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fRVhUSV9MSU5FX18pID09IFJUQ19FWFRJX0xJTkVfV0FLRVVQVElNRVJfRVZFTlQpID8gX19IQUxfUlRDX1dBS0VVUFRJTUVSX0VYVElfRElTQUJMRV9JVCgpIDogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSEFMX1JUQ19UQU1QRVJfVElNRVNUQU1QX0VYVElfRElTQUJMRV9JVCgpKSkKICNkZWZpbmUgX19IQUxfUlRDX0VYVElfR0VUX0ZMQUcoX19FWFRJX0xJTkVfXykgICAgKCgoX19FWFRJX0xJTkVfXykgPT0gUlRDX0VYVElfTElORV9BTEFSTV9FVkVOVCkgPyBfX0hBTF9SVENfQUxBUk1fRVhUSV9HRVRfRkxBRygpIDogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChfX0VYVElfTElORV9fKSA9PSBSVENfRVhUSV9MSU5FX1dBS0VVUFRJTUVSX0VWRU5UKSA/IF9fSEFMX1JUQ19XQUtFVVBUSU1FUl9FWFRJX0dFVF9GTEFHKCkgOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0hBTF9SVENfVEFNUEVSX1RJTUVTVEFNUF9FWFRJX0dFVF9GTEFHKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoX19FWFRJX0xJTkVfXykgPT0gUlRDX0VYVElfTElORV9XQUtFVVBUSU1FUl9FVkVOVCkgPyBfX0hBTF9SVENfV0FLRVVQVElNRVJfRVhUSV9HRVRfRkxBRygpIDogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSEFMX1JUQ19UQU1QRVJfVElNRVNUQU1QX0VYVElfR0VUX0ZMQUcoKSkpCiAjZGVmaW5lIF9fSEFMX1JUQ19FWFRJX0dFTkVSQVRFX1NXSVQoX19FWFRJX0xJTkVfXykgICAoKChfX0VYVElfTElORV9fKSA9PSBSVENfRVhUSV9MSU5FX0FMQVJNX0VWRU5UKSA/IF9fSEFMX1JUQ19BTEFSTV9FWFRJX0dFTkVSQVRFX1NXSVQoKSA6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fRVhUSV9MSU5FX18pID09IFJUQ19FWFRJX0xJTkVfV0FLRVVQVElNRVJfRVZFTlQpID8gX19IQUxfUlRDX1dBS0VVUFRJTUVSX0VYVElfR0VORVJBVEVfU1dJVCgpIDogIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0hBTF9SVENfVEFNUEVSX1RJTUVTVEFNUF9FWFRJX0dFTkVSQVRFX1NXSVQoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoX19FWFRJX0xJTkVfXykgPT0gUlRDX0VYVElfTElORV9XQUtFVVBUSU1FUl9FVkVOVCkgPyBfX0hBTF9SVENfV0FLRVVQVElNRVJfRVhUSV9HRU5FUkFURV9TV0lUKCkgOiAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0hBTF9SVENfVEFNUEVSX1RJTUVTVEFNUF9FWFRJX0dFTkVSQVRFX1NXSVQoKSkpCiAjZW5kaWYgICAvKiBTVE0zMkYxICovCiAKICNkZWZpbmUgSVNfQUxBUk0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNfUlRDX0FMQVJNCkBAIC0zNDgxLDkgKzM0NTQsOSBAQAogI2RlZmluZSAgX19IQUxfU0RfU0RJT19DTEVBUl9GTEFHICAgX19IQUxfU0RfU0RNTUNfQ0xFQVJfRkxBRwogI2RlZmluZSAgX19IQUxfU0RfU0RJT19HRVRfSVQgICAgICAgX19IQUxfU0RfU0RNTUNfR0VUX0lUCiAjZGVmaW5lICBfX0hBTF9TRF9TRElPX0NMRUFSX0lUICAgICBfX0hBTF9TRF9TRE1NQ19DTEVBUl9JVAotI2RlZmluZSAgU0RJT19TVEFUSUNfRkxBR1MJICAgICAgICBTRE1NQ19TVEFUSUNfRkxBR1MKLSNkZWZpbmUgIFNESU9fQ01EMFRJTUVPVVQJICAgICAgICAgIFNETU1DX0NNRDBUSU1FT1VUCi0jZGVmaW5lICBTRF9TRElPX1NFTkRfSUZfQ09ORAkgICAgICBTRF9TRE1NQ19TRU5EX0lGX0NPTkQKKyNkZWZpbmUgIFNESU9fU1RBVElDX0ZMQUdTICAgICAgICAgIFNETU1DX1NUQVRJQ19GTEFHUworI2RlZmluZSAgU0RJT19DTUQwVElNRU9VVCAgICAgICAgICAgU0RNTUNfQ01EMFRJTUVPVVQKKyNkZWZpbmUgIFNEX1NESU9fU0VORF9JRl9DT05EICAgICAgIFNEX1NETU1DX1NFTkRfSUZfQ09ORAogLyogYWxpYXMgQ01TSVMgZm9yIGNvbXBhdGliaWxpdGllcyAqLwogI2RlZmluZSAgU0RJT19JUlFuICAgICAgICAgICAgICAgICAgU0RNTUMxX0lSUW4KICNkZWZpbmUgIFNESU9fSVJRSGFuZGxlciAgICAgICAgICAgIFNETU1DMV9JUlFIYW5kbGVyCkBAIC0zNTg5LDYgKzM1NjIsMTMgQEAKICNkZWZpbmUgX19IQUxfVVNBUlRfR0VUQ0xPQ0tTT1VSQ0UgICAgICBVU0FSVF9HRVRDTE9DS1NPVVJDRQogI2RlZmluZSBfX1VTQVJUX0dFVENMT0NLU09VUkNFICAgICAgICAgIFVTQVJUX0dFVENMT0NLU09VUkNFCiAKKyNpZiBkZWZpbmVkKFNUTTMyRjApIHx8IGRlZmluZWQoU1RNMzJGMykgfHwgZGVmaW5lZChTVE0zMkY3KQorI2RlZmluZSBVU0FSVF9PVkVSU0FNUExJTkdfMTYgICAgICAgICAgICAgICAweDAwMDAwMDAwVQorI2RlZmluZSBVU0FSVF9PVkVSU0FNUExJTkdfOCAgICAgICAgICAgICAgICBVU0FSVF9DUjFfT1ZFUjgKKworI2RlZmluZSBJU19VU0FSVF9PVkVSU0FNUExJTkcoX19TQU1QTElOR19fKSAoKChfX1NBTVBMSU5HX18pID09IFVTQVJUX09WRVJTQU1QTElOR18xNikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1NBTVBMSU5HX18pID09IFVTQVJUX09WRVJTQU1QTElOR184KSkKKyNlbmRpZiAvKiBTVE0zMkYwIHx8IFNUTTMyRjMgfHwgU1RNMzJGNyAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTM3NTEsNyArMzczMSw3IEBACiAvKiogQGRlZmdyb3VwIEhBTF9RU1BJX0FsaWFzZWRfTWFjcm9zIEhBTCBRU1BJIEFsaWFzZWQgTWFjcm9zIG1haW50YWluZWQgZm9yIGxlZ2FjeSBwdXJwb3NlCiAgICogQHsKICAgKi8KLSNpZiBkZWZpbmVkIChTVE0zMkw0KSB8fCBkZWZpbmVkIChTVE0zMkY0KSB8fCBkZWZpbmVkIChTVE0zMkY3KQorI2lmIGRlZmluZWQgKFNUTTMyTDQpIHx8IGRlZmluZWQgKFNUTTMyRjQpIHx8IGRlZmluZWQgKFNUTTMyRjcpIHx8IGRlZmluZWQoU1RNMzJINykKICNkZWZpbmUgSEFMX1FQU0lfVElNRU9VVF9ERUZBVUxUX1ZBTFVFIEhBTF9RU1BJX1RJTUVPVVRfREVGQVVMVF9WQUxVRQogI2VuZGlmIC8qIFNUTTMyTDQgfHwgU1RNMzJGNCB8fCBTVE0zMkY3ICovCiAvKioKZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2FkYy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfYWRjLmgKaW5kZXggMmQ4ODJjMC4uMzhhNjgxOCAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfYWRjLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfYWRjLmgKQEAgLTUyLDcgKzUyLDcgQEAKICAgKiAgICAgICAgICAtIEZvciBhbGwgcGFyYW1ldGVycyBleGNlcHQgJ1Jlc29sdXRpb24nLCAnU2NhbkNvbnZNb2RlJywgJ0Rpc2NvbnRpbnVvdXNDb252TW9kZScsICdOYnJPZkRpc2NDb252ZXJzaW9uJyA6IEFEQyBlbmFibGVkIHdpdGhvdXQgY29udmVyc2lvbiBvbiBnb2luZyBvbiByZWd1bGFyIGdyb3VwLgogICAqICAgICAgICAgIC0gRm9yIHBhcmFtZXRlcnMgJ0V4dGVybmFsVHJpZ0NvbnYnIGFuZCAnRXh0ZXJuYWxUcmlnQ29udkVkZ2UnOiBBREMgZW5hYmxlZCwgZXZlbiB3aXRoIGNvbnZlcnNpb24gb24gZ29pbmcuCiAgICogICAgICAgICBJZiBBREMgaXMgbm90IGluIHRoZSBhcHByb3ByaWF0ZSBzdGF0ZSB0byBtb2RpZnkgc29tZSBwYXJhbWV0ZXJzLCB0aGVzZSBwYXJhbWV0ZXJzIHNldHRpbmcgaXMgYnlwYXNzZWQKLSAgKiAgICAgICAgIHdpdGhvdXQgZXJyb3IgcmVwb3J0aW5nIChhcyBpdCBjYW4gYmUgdGhlIGV4cGVjdGVkIGJlaGF2aW91ciBpbiBjYXNlIG9mIGludGVuZGVkIGFjdGlvbiB0byB1cGRhdGUgYW5vdGhlciBwYXJhbWV0ZXIgKHdoaWNoIGZ1bGxmaWxscyB0aGUgQURDIHN0YXRlIGNvbmRpdGlvbikgb24gdGhlIGZseSkuCisgICogICAgICAgICB3aXRob3V0IGVycm9yIHJlcG9ydGluZyAoYXMgaXQgY2FuIGJlIHRoZSBleHBlY3RlZCBiZWhhdmlvdXIgaW4gY2FzZSBvZiBpbnRlbmRlZCBhY3Rpb24gdG8gdXBkYXRlIGFub3RoZXIgcGFyYW1ldGVyICh3aGljaCBmdWxmaWxscyB0aGUgQURDIHN0YXRlIGNvbmRpdGlvbikgb24gdGhlIGZseSkuCiAgICovCiB0eXBlZGVmIHN0cnVjdAogewpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfY2FuLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9jYW4uaAppbmRleCBjMDc2ZTA3Li41NDAzODI4IDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9jYW4uaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9jYW4uaApAQCAtMjU1LDcgKzI1NSw3IEBACiAgIEhBTF9DQU5fUlhfRklGTzFfTVNHX1BFTkRJTkdfQ0JfSUQgICAgICAgPSAweDA4VSwgICAgLyohPCBDQU4gUnggRklGTyAxIG1lc3NhZ2UgcGVuZGluZyBjYWxsYmFjayBJRCAgICAgKi8KICAgSEFMX0NBTl9SWF9GSUZPMV9GVUxMX0NCX0lEICAgICAgICAgICAgICA9IDB4MDlVLCAgICAvKiE8IENBTiBSeCBGSUZPIDEgZnVsbCBjYWxsYmFjayBJRCAgICAgICAgICAgICAgICAqLwogICBIQUxfQ0FOX1NMRUVQX0NCX0lEICAgICAgICAgICAgICAgICAgICAgID0gMHgwQVUsICAgIC8qITwgQ0FOIFNsZWVwIGNhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gIEhBTF9DQU5fV0FLRVVQX0ZST01fUlhfTVNHX0NCX0lEICAgICAgICAgPSAweDBCVSwgICAgLyohPCBDQU4gV2FrZSBVcCBmcm9wbSBSeCBtc2cgY2FsbGJhY2sgSUQgICAgICAgICAgKi8KKyAgSEFMX0NBTl9XQUtFVVBfRlJPTV9SWF9NU0dfQ0JfSUQgICAgICAgICA9IDB4MEJVLCAgICAvKiE8IENBTiBXYWtlIFVwIGZyb20gUnggbXNnIGNhbGxiYWNrIElEICAgICAgICAgICovCiAgIEhBTF9DQU5fRVJST1JfQ0JfSUQgICAgICAgICAgICAgICAgICAgICAgPSAweDBDVSwgICAgLyohPCBDQU4gRXJyb3IgY2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAogICBIQUxfQ0FOX01TUElOSVRfQ0JfSUQgICAgICAgICAgICAgICAgICAgID0gMHgwRFUsICAgIC8qITwgQ0FOIE1zcEluaXQgY2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgICAgICAgICovCkBAIC0yOTUsMTEgKzI5NSwxMSBAQAogI2RlZmluZSBIQUxfQ0FOX0VSUk9SX1JYX0ZPVjAgICAgICAgICAoMHgwMDAwMDIwMFUpICAvKiE8IFJ4IEZJRk8wIG92ZXJydW4gZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgSEFMX0NBTl9FUlJPUl9SWF9GT1YxICAgICAgICAgKDB4MDAwMDA0MDBVKSAgLyohPCBSeCBGSUZPMSBvdmVycnVuIGVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIEhBTF9DQU5fRVJST1JfVFhfQUxTVDAgICAgICAgICgweDAwMDAwODAwVSkgIC8qITwgVHhNYWlsYm94IDAgdHJhbnNtaXQgZmFpbHVyZSBkdWUgdG8gYXJiaXRyYXRpb24gbG9zdCAqLwotI2RlZmluZSBIQUxfQ0FOX0VSUk9SX1RYX1RFUlIwICAgICAgICAoMHgwMDAwMTAwMFUpICAvKiE8IFR4TWFpbGJveCAxIHRyYW5zbWl0IGZhaWx1cmUgZHVlIHRvIHRyYW5taXQgZXJyb3IgICAgKi8KLSNkZWZpbmUgSEFMX0NBTl9FUlJPUl9UWF9BTFNUMSAgICAgICAgKDB4MDAwMDIwMDBVKSAgLyohPCBUeE1haWxib3ggMCB0cmFuc21pdCBmYWlsdXJlIGR1ZSB0byBhcmJpdHJhdGlvbiBsb3N0ICovCi0jZGVmaW5lIEhBTF9DQU5fRVJST1JfVFhfVEVSUjEgICAgICAgICgweDAwMDA0MDAwVSkgIC8qITwgVHhNYWlsYm94IDEgdHJhbnNtaXQgZmFpbHVyZSBkdWUgdG8gdHJhbm1pdCBlcnJvciAgICAqLwotI2RlZmluZSBIQUxfQ0FOX0VSUk9SX1RYX0FMU1QyICAgICAgICAoMHgwMDAwODAwMFUpICAvKiE8IFR4TWFpbGJveCAwIHRyYW5zbWl0IGZhaWx1cmUgZHVlIHRvIGFyYml0cmF0aW9uIGxvc3QgKi8KLSNkZWZpbmUgSEFMX0NBTl9FUlJPUl9UWF9URVJSMiAgICAgICAgKDB4MDAwMTAwMDBVKSAgLyohPCBUeE1haWxib3ggMSB0cmFuc21pdCBmYWlsdXJlIGR1ZSB0byB0cmFubWl0IGVycm9yICAgICovCisjZGVmaW5lIEhBTF9DQU5fRVJST1JfVFhfVEVSUjAgICAgICAgICgweDAwMDAxMDAwVSkgIC8qITwgVHhNYWlsYm94IDAgdHJhbnNtaXQgZmFpbHVyZSBkdWUgdG8gdHJhbnNtaXQgZXJyb3IgICAgKi8KKyNkZWZpbmUgSEFMX0NBTl9FUlJPUl9UWF9BTFNUMSAgICAgICAgKDB4MDAwMDIwMDBVKSAgLyohPCBUeE1haWxib3ggMSB0cmFuc21pdCBmYWlsdXJlIGR1ZSB0byBhcmJpdHJhdGlvbiBsb3N0ICovCisjZGVmaW5lIEhBTF9DQU5fRVJST1JfVFhfVEVSUjEgICAgICAgICgweDAwMDA0MDAwVSkgIC8qITwgVHhNYWlsYm94IDEgdHJhbnNtaXQgZmFpbHVyZSBkdWUgdG8gdHJhbnNtaXQgZXJyb3IgICAgKi8KKyNkZWZpbmUgSEFMX0NBTl9FUlJPUl9UWF9BTFNUMiAgICAgICAgKDB4MDAwMDgwMDBVKSAgLyohPCBUeE1haWxib3ggMiB0cmFuc21pdCBmYWlsdXJlIGR1ZSB0byBhcmJpdHJhdGlvbiBsb3N0ICovCisjZGVmaW5lIEhBTF9DQU5fRVJST1JfVFhfVEVSUjIgICAgICAgICgweDAwMDEwMDAwVSkgIC8qITwgVHhNYWlsYm94IDIgdHJhbnNtaXQgZmFpbHVyZSBkdWUgdG8gdHJhbnNtaXQgZXJyb3IgICAgKi8KICNkZWZpbmUgSEFMX0NBTl9FUlJPUl9USU1FT1VUICAgICAgICAgKDB4MDAwMjAwMDBVKSAgLyohPCBUaW1lb3V0IGVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIEhBTF9DQU5fRVJST1JfTk9UX0lOSVRJQUxJWkVEICgweDAwMDQwMDAwVSkgIC8qITwgUGVyaXBoZXJhbCBub3QgaW5pdGlhbGl6ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogI2RlZmluZSBIQUxfQ0FOX0VSUk9SX05PVF9SRUFEWSAgICAgICAoMHgwMDA4MDAwMFUpICAvKiE8IFBlcmlwaGVyYWwgbm90IHJlYWR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2NlYy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfY2VjLmgKaW5kZXggZWQ3ZWU4Yy4uNzIxZWRjMSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfY2VjLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfY2VjLmgKQEAgLTEyMSw3ICsxMjEsNyBAQAogICAqICAgICAgICAgIGI2ICBFcnJvciBpbmZvcm1hdGlvbgogICAqICAgICAgICAgICAgIDAgIDogTm8gRXJyb3IKICAgKiAgICAgICAgICAgICAxICA6IEVycm9yCi0gICogICAgICAgICAgYjUgICAgIElQIGluaXRpbGlzYXRpb24gc3RhdHVzCisgICogICAgICAgICAgYjUgICAgIElQIGluaXRpYWxpemF0aW9uIHN0YXR1cwogICAqICAgICAgICAgICAgIDAgIDogUmVzZXQgKElQIG5vdCBpbml0aWFsaXplZCkKICAgKiAgICAgICAgICAgICAxICA6IEluaXQgZG9uZSAoSVAgaW5pdGlhbGl6ZWQuIEhBTCBDRUMgSW5pdCBmdW5jdGlvbiBhbHJlYWR5IGNhbGxlZCkKICAgKiAgICAgICAgICBiNC1iMyAgKG5vdCB1c2VkKQpAQCAtMTM4LDcgKzEzOCw3IEBACiAgICogICAgICAgICAgUnhTdGF0ZSB2YWx1ZSBjb2RpbmcgZm9sbG93IGJlbG93IGRlc2NyaWJlZCBiaXRtYXAgOgogICAqICAgICAgICAgIGI3LWI2ICAobm90IHVzZWQpCiAgICogICAgICAgICAgICAgeHggOiBTaG91bGQgYmUgc2V0IHRvIDAwCi0gICogICAgICAgICAgYjUgICAgIElQIGluaXRpbGlzYXRpb24gc3RhdHVzCisgICogICAgICAgICAgYjUgICAgIElQIGluaXRpYWxpemF0aW9uIHN0YXR1cwogICAqICAgICAgICAgICAgIDAgIDogUmVzZXQgKElQIG5vdCBpbml0aWFsaXplZCkKICAgKiAgICAgICAgICAgICAxICA6IEluaXQgZG9uZSAoSVAgaW5pdGlhbGl6ZWQpCiAgICogICAgICAgICAgYjQtYjIgIChub3QgdXNlZCkKZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2NyYy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfY3JjLmgKaW5kZXggZWNlODc5MC4uMDhhNTAyNSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfY3JjLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfY3JjLmgKQEAgLTI2Nyw3ICsyNjcsNiBAQAogI2RlZmluZSBJU19ERUZBVUxUX1BPTFlOT01JQUwoREVGQVVMVCkgKCgoREVGQVVMVCkgPT0gREVGQVVMVF9QT0xZTk9NSUFMX0VOQUJMRSkgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoREVGQVVMVCkgPT0gREVGQVVMVF9QT0xZTk9NSUFMX0RJU0FCTEUpKQogCi0KICNkZWZpbmUgSVNfREVGQVVMVF9JTklUX1ZBTFVFKFZBTFVFKSAgKCgoVkFMVUUpID09IERFRkFVTFRfSU5JVF9WQUxVRV9FTkFCTEUpIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVkFMVUUpID09IERFRkFVTFRfSU5JVF9WQUxVRV9ESVNBQkxFKSkKIApkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfY3J5cC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfY3J5cC5oCmluZGV4IDA3NmQyY2QuLjgzYmZmYWYgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2NyeXAuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9jcnlwLmgKQEAgLTY1LDYgKzY1LDcgQEAKICAgdWludDMyX3QgSGVhZGVyU2l6ZTsgICAgICAgICAgICAgICAgLyohPCBUaGUgc2l6ZSBvZiBoZWFkZXIgYnVmZmVyIGluIHdvcmQgICovCiAgIHVpbnQzMl90ICpCMDsgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQjAgaXMgZmlyc3QgYXV0aGVudGljYXRpb24gYmxvY2sgdXNlZCBvbmx5ICBpbiBBRVMgQ0NNIG1vZGUgKi8KICAgdWludDMyX3QgRGF0YVdpZHRoVW5pdDsgICAgICAgICAgICAgIC8qITwgRGF0YSBXaXRoIFVuaXQsIHRoaXMgcGFyYW1ldGVyIGNhbiBiZSB2YWx1ZSBvZiBAcmVmIENSWVBfRGF0YV9XaWR0aF9Vbml0Ki8KKyAgdWludDMyX3QgSGVhZGVyV2lkdGhVbml0OyAgICAgICAgICAgIC8qITwgSGVhZGVyIFdpZHRoIFVuaXQsIHRoaXMgcGFyYW1ldGVyIGNhbiBiZSB2YWx1ZSBvZiBAcmVmIENSWVBfSGVhZGVyX1dpZHRoX1VuaXQqLwogICB1aW50MzJfdCBLZXlJVkNvbmZpZ1NraXA7ICAgICAgICAgICAgLyohPCBDUllQIHBlcmlwaGVyYWwgS2V5IGFuZCBJViBjb25maWd1cmF0aW9uIHNraXAsIHRvIGNvbmZpZyBLZXkgYW5kIEluaXRpYWxpemF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yIG9ubHkgb25jZSBhbmQgdG8gc2tpcCBjb25maWd1cmF0aW9uIGZvciBjb25zZWN1dGl2ZSBwcm9jZXNzaW5ncy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIENSWVBfQ29uZmlndXJhdGlvbl9Ta2lwICovCkBAIC0yMTQsNiArMjE1LDE3IEBACiAgICogQH0KICAgKi8KIAorLyoqIEBkZWZncm91cCBDUllQX0hlYWRlcl9XaWR0aF9Vbml0IENSWVAgSGVhZGVyIFdpZHRoIFVuaXQKKyAgKiBAeworICAqLworCisjZGVmaW5lIENSWVBfSEVBREVSV0lEVEhVTklUX1dPUkQgICAweDAwMDAwMDAwVSAgLyohPCBCeSBkZWZhdWx0LCBoZWFkZXIgc2l6ZSB1bml0IGlzIHdvcmQgKi8KKyNkZWZpbmUgQ1JZUF9IRUFERVJXSURUSFVOSVRfQllURSAgIDB4MDAwMDAwMDFVICAvKiE8IEJ5IGRlZmF1bHQsIGhlYWRlciBzaXplIHVuaXQgaXMgYnl0ZSAqLworCisvKioKKyAgKiBAfQorICAqLworICAKIC8qKiBAZGVmZ3JvdXAgQ1JZUF9BbGdvcml0aG1fTW9kZSBDUllQIEFsZ29yaXRobSBNb2RlCiAgICogQHsKICAgKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2RhYy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfZGFjLmgKaW5kZXggYjg2MjA1ZC4uM2UwMWUyOSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfZGFjLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfZGFjLmgKQEAgLTE4LDMxICsxOCwzNCBAQAogICAqLwogCiAvKiBEZWZpbmUgdG8gcHJldmVudCByZWN1cnNpdmUgaW5jbHVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotI2lmbmRlZiBfX1NUTTMyRjd4eF9IQUxfREFDX0gKLSNkZWZpbmUgX19TVE0zMkY3eHhfSEFMX0RBQ19ICisjaWZuZGVmIFNUTTMyRjd4eF9IQUxfREFDX0gKKyNkZWZpbmUgU1RNMzJGN3h4X0hBTF9EQUNfSAogCiAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKK2V4dGVybiAiQyIgewogI2VuZGlmCiAKLS8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0jaW5jbHVkZSAic3RtMzJmN3h4X2hhbF9kZWYuaCIKLQogLyoqIEBhZGR0b2dyb3VwIFNUTTMyRjd4eF9IQUxfRHJpdmVyCiAgICogQHsKICAgKi8KIAorLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyNpbmNsdWRlICJzdG0zMmY3eHhfaGFsX2RlZi5oIgorCisjaWYgZGVmaW5lZChEQUMpCisKIC8qKiBAYWRkdG9ncm91cCBEQUMKICAgKiBAewogICAqLwogCiAvKiBFeHBvcnRlZCB0eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCiAvKiogQGRlZmdyb3VwIERBQ19FeHBvcnRlZF9UeXBlcyBEQUMgRXhwb3J0ZWQgVHlwZXMKICAgKiBAewogICAqLwogCi0vKiogCi0gICogQGJyaWVmIEhBTCBTdGF0ZSBzdHJ1Y3R1cmVzIGRlZmluaXRpb24KKy8qKgorICAqIEBicmllZiAgSEFMIFN0YXRlIHN0cnVjdHVyZXMgZGVmaW5pdGlvbgogICAqLwogdHlwZWRlZiBlbnVtCiB7CkBAIC01MSwxNiArNTQsMTcgQEAKICAgSEFMX0RBQ19TVEFURV9CVVNZICAgICAgICAgICAgICA9IDB4MDJVLCAgLyohPCBEQUMgaW50ZXJuYWwgcHJvY2Vzc2luZyBpcyBvbmdvaW5nICAgKi8KICAgSEFMX0RBQ19TVEFURV9USU1FT1VUICAgICAgICAgICA9IDB4MDNVLCAgLyohPCBEQUMgdGltZW91dCBzdGF0ZSAgICAgICAgICAgICAgICAgICAgKi8KICAgSEFMX0RBQ19TVEFURV9FUlJPUiAgICAgICAgICAgICA9IDB4MDRVICAgLyohPCBEQUMgZXJyb3Igc3RhdGUgICAgICAgICAgICAgICAgICAgICAgKi8KLX1IQUxfREFDX1N0YXRlVHlwZURlZjsKLSAKLS8qKiAKLSAgKiBAYnJpZWYgREFDIGhhbmRsZSBTdHJ1Y3R1cmUgZGVmaW5pdGlvbgorCit9IEhBTF9EQUNfU3RhdGVUeXBlRGVmOworCisvKioKKyAgKiBAYnJpZWYgIERBQyBoYW5kbGUgU3RydWN0dXJlIGRlZmluaXRpb24KICAgKi8KICNpZiAoVVNFX0hBTF9EQUNfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCiB0eXBlZGVmIHN0cnVjdCBfX0RBQ19IYW5kbGVUeXBlRGVmCiAjZWxzZQogdHlwZWRlZiBzdHJ1Y3QKLSNlbmRpZgorI2VuZGlmIC8qIFVTRV9IQUxfREFDX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogewogICBEQUNfVHlwZURlZiAgICAgICAgICAgICAgICAgKkluc3RhbmNlOyAgICAgLyohPCBSZWdpc3RlciBiYXNlIGFkZHJlc3MgICAgICAgICAgICAgKi8KIApAQCAtNzMsMzMgKzc3LDM3IEBACiAgIERNQV9IYW5kbGVUeXBlRGVmICAgICAgICAgICAqRE1BX0hhbmRsZTI7ICAvKiE8IFBvaW50ZXIgRE1BIGhhbmRsZXIgZm9yIGNoYW5uZWwgMiAqLwogCiAgIF9fSU8gdWludDMyX3QgICAgICAgICAgICAgICBFcnJvckNvZGU7ICAgICAvKiE8IERBQyBFcnJvciBjb2RlICAgICAgICAgICAgICAgICAgICAqLwotI2lmIChVU0VfSEFMX0RBQ19SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSAgdm9pZCAoKiBDb252Q3BsdENhbGxiYWNrQ2gxKSAgICAgICAgICAgIChzdHJ1Y3QgX19EQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7Ci0gIHZvaWQgKCogQ29udkhhbGZDcGx0Q2FsbGJhY2tDaDEpICAgICAgICAoc3RydWN0IF9fREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOwotICB2b2lkICgqIEVycm9yQ2FsbGJhY2tDaDEpICAgICAgICAgICAgICAgKHN0cnVjdCBfX0RBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKLSAgdm9pZCAoKiBETUFVbmRlcnJ1bkNhbGxiYWNrQ2gxKSAgICAgICAgIChzdHJ1Y3QgX19EQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7Ci0gIHZvaWQgKCogQ29udkNwbHRDYWxsYmFja0NoMikgICAgICAgICAgICAoc3RydWN0IF9fREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMpOwotICB2b2lkICgqIENvbnZIYWxmQ3BsdENhbGxiYWNrQ2gyKSAgICAgICAgKHN0cnVjdCBfX0RBQ19IYW5kbGVUeXBlRGVmKiBoZGFjKTsKLSAgdm9pZCAoKiBFcnJvckNhbGxiYWNrQ2gyKSAgICAgICAgICAgICAgIChzdHJ1Y3QgX19EQUNfSGFuZGxlVHlwZURlZiogaGRhYyk7Ci0gIHZvaWQgKCogRE1BVW5kZXJydW5DYWxsYmFja0NoMikgICAgICAgICAoc3RydWN0IF9fREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMpOwogCi0gIHZvaWQgKCogTXNwSW5pdENhbGxiYWNrKSAgICAgICAgICAgICAgICAoc3RydWN0IF9fREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOwotICB2b2lkICgqIE1zcERlSW5pdENhbGxiYWNrICkgICAgICAgICAgICAgKHN0cnVjdCBfX0RBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKKyNpZiAoVVNFX0hBTF9EQUNfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCisgIHZvaWQgKCogQ29udkNwbHRDYWxsYmFja0NoMSkoc3RydWN0IF9fREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOworICB2b2lkICgqIENvbnZIYWxmQ3BsdENhbGxiYWNrQ2gxKShzdHJ1Y3QgX19EQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7CisgIHZvaWQgKCogRXJyb3JDYWxsYmFja0NoMSkoc3RydWN0IF9fREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOworICB2b2lkICgqIERNQVVuZGVycnVuQ2FsbGJhY2tDaDEpKHN0cnVjdCBfX0RBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKKworICB2b2lkICgqIENvbnZDcGx0Q2FsbGJhY2tDaDIpKHN0cnVjdCBfX0RBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKKyAgdm9pZCAoKiBDb252SGFsZkNwbHRDYWxsYmFja0NoMikoc3RydWN0IF9fREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOworICB2b2lkICgqIEVycm9yQ2FsbGJhY2tDaDIpKHN0cnVjdCBfX0RBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKKyAgdm9pZCAoKiBETUFVbmRlcnJ1bkNhbGxiYWNrQ2gyKShzdHJ1Y3QgX19EQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7CisKKworICB2b2lkICgqIE1zcEluaXRDYWxsYmFjaykoc3RydWN0IF9fREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOworICB2b2lkICgqIE1zcERlSW5pdENhbGxiYWNrKShzdHJ1Y3QgX19EQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7CiAjZW5kaWYgLyogVVNFX0hBTF9EQUNfUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAKLX1EQUNfSGFuZGxlVHlwZURlZjsKK30gREFDX0hhbmRsZVR5cGVEZWY7CiAKLS8qKiAKLSAgKiBAYnJpZWYgREFDIENvbmZpZ3VyYXRpb24gcmVndWxhciBDaGFubmVsIHN0cnVjdHVyZSBkZWZpbml0aW9uCisvKioKKyAgKiBAYnJpZWYgICBEQUMgQ29uZmlndXJhdGlvbiByZWd1bGFyIENoYW5uZWwgc3RydWN0dXJlIGRlZmluaXRpb24KICAgKi8KIHR5cGVkZWYgc3RydWN0CiB7Ci0gIHVpbnQzMl90IERBQ19UcmlnZ2VyOyAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgZXh0ZXJuYWwgdHJpZ2dlciBmb3IgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIERBQ190cmlnZ2VyX3NlbGVjdGlvbiAqLworICB1aW50MzJfdCBEQUNfVHJpZ2dlcjsgICAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgZXh0ZXJuYWwgdHJpZ2dlciBmb3IgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgREFDX3RyaWdnZXJfc2VsZWN0aW9uICovCiAKLSAgdWludDMyX3QgREFDX091dHB1dEJ1ZmZlcjsgIC8qITwgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIERBQyBjaGFubmVsIG91dHB1dCBidWZmZXIgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBEQUNfb3V0cHV0X2J1ZmZlciAqLwotfURBQ19DaGFubmVsQ29uZlR5cGVEZWY7CisgIHVpbnQzMl90IERBQ19PdXRwdXRCdWZmZXI7ICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIERBQyBjaGFubmVsIG91dHB1dCBidWZmZXIgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBEQUNfb3V0cHV0X2J1ZmZlciAqLworCit9IERBQ19DaGFubmVsQ29uZlR5cGVEZWY7CiAKICNpZiAoVVNFX0hBTF9EQUNfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCiAvKioKQEAgLTExMSwyNSArMTE5LDI5IEBACiAgIEhBTF9EQUNfQ0gxX0hBTEZfQ09NUExFVEVfQ0JfSUQgICAgICAgICAgICA9IDB4MDFVLCAgLyohPCBEQUMgQ0gxIGhhbGYgQ29tcGxldGUgQ2FsbGJhY2sgSUQgKi8KICAgSEFMX0RBQ19DSDFfRVJST1JfSUQgICAgICAgICAgICAgICAgICAgICAgID0gMHgwMlUsICAvKiE8IERBQyBDSDEgZXJyb3IgQ2FsbGJhY2sgSUQgICAgICAgICAqLwogICBIQUxfREFDX0NIMV9VTkRFUlJVTl9DQl9JRCAgICAgICAgICAgICAgICAgPSAweDAzVSwgIC8qITwgREFDIENIMSB1bmRlcnJ1biBDYWxsYmFjayBJRCAgICAgICovCisKICAgSEFMX0RBQ19DSDJfQ09NUExFVEVfQ0JfSUQgICAgICAgICAgICAgICAgID0gMHgwNFUsICAvKiE8IERBQyBDSDIgQ29tcGxldGUgQ2FsbGJhY2sgSUQgICAgICAqLwogICBIQUxfREFDX0NIMl9IQUxGX0NPTVBMRVRFX0NCX0lEICAgICAgICAgICAgPSAweDA1VSwgIC8qITwgREFDIENIMiBoYWxmIENvbXBsZXRlIENhbGxiYWNrIElEICovCiAgIEhBTF9EQUNfQ0gyX0VSUk9SX0lEICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDZVLCAgLyohPCBEQUMgQ0gyIGVycm9yIENhbGxiYWNrIElEICAgICAgICAgKi8KICAgSEFMX0RBQ19DSDJfVU5ERVJSVU5fQ0JfSUQgICAgICAgICAgICAgICAgID0gMHgwN1UsICAvKiE8IERBQyBDSDIgdW5kZXJydW4gQ2FsbGJhY2sgSUQgICAgICAqLwotICBIQUxfREFDX01TUF9JTklUX0NCX0lEICAgICAgICAgICAgICAgICAgICAgPSAweDA4VSwgIC8qITwgREFDIE1zcEluaXQgQ2FsbGJhY2sgSUQgICAgICAgICAgICovCi0gIEhBTF9EQUNfTVNQX0RFSU5JVF9DQl9JRCAgICAgICAgICAgICAgICAgICA9IDB4MDlVLCAgLyohPCBEQUMgTXNwRGVJbml0IENhbGxiYWNrIElEICAgICAgICAgKi8KKworICBIQUxfREFDX01TUElOSVRfQ0JfSUQgICAgICAgICAgICAgICAgICAgICAgPSAweDA4VSwgIC8qITwgREFDIE1zcEluaXQgQ2FsbGJhY2sgSUQgICAgICAgICAgICovCisgIEhBTF9EQUNfTVNQREVJTklUX0NCX0lEICAgICAgICAgICAgICAgICAgICA9IDB4MDlVLCAgLyohPCBEQUMgTXNwRGVJbml0IENhbGxiYWNrIElEICAgICAgICAgKi8KICAgSEFMX0RBQ19BTExfQ0JfSUQgICAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwQVUgICAvKiE8IERBQyBBbGwgSUQgICAgICAgICAgICAgICAgICAgICAgICAqLwotfUhBTF9EQUNfQ2FsbGJhY2tJRFR5cGVEZWY7Cit9IEhBTF9EQUNfQ2FsbGJhY2tJRFR5cGVEZWY7CiAKIC8qKgogICAqIEBicmllZiAgSEFMIERBQyBDYWxsYmFjayBwb2ludGVyIGRlZmluaXRpb24KICAgKi8KIHR5cGVkZWYgdm9pZCAoKnBEQUNfQ2FsbGJhY2tUeXBlRGVmKShEQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7CiAjZW5kaWYgLyogVVNFX0hBTF9EQUNfUkVHSVNURVJfQ0FMTEJBQ0tTICovCisKIC8qKgogICAqIEB9CiAgICovCiAKIC8qIEV4cG9ydGVkIGNvbnN0YW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKIC8qKiBAZGVmZ3JvdXAgREFDX0V4cG9ydGVkX0NvbnN0YW50cyBEQUMgRXhwb3J0ZWQgQ29uc3RhbnRzCiAgICogQHsKICAgKi8KQEAgLTEzOCw3NyArMTUwLDg3IEBACiAgICogQHsKICAgKi8KICNkZWZpbmUgIEhBTF9EQUNfRVJST1JfTk9ORSAgICAgICAgICAgICAgMHgwMFUgICAgLyohPCBObyBlcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgIEhBTF9EQUNfRVJST1JfRE1BVU5ERVJSVU5DSDEgICAgMHgwMVUgICAgLyohPCBEQUMgY2hhbm5lbDEgREFNIHVuZGVycnVuIGVycm9yICAgKi8KLSNkZWZpbmUgIEhBTF9EQUNfRVJST1JfRE1BVU5ERVJSVU5DSDIgICAgMHgwMlUgICAgLyohPCBEQUMgY2hhbm5lbDIgREFNIHVuZGVycnVuIGVycm9yICAgKi8KKyNkZWZpbmUgIEhBTF9EQUNfRVJST1JfRE1BVU5ERVJSVU5DSDEgICAgMHgwMVUgICAgLyohPCBEQUMgY2hhbm5lbDEgRE1BIHVuZGVycnVuIGVycm9yICAgKi8KKyNkZWZpbmUgIEhBTF9EQUNfRVJST1JfRE1BVU5ERVJSVU5DSDIgICAgMHgwMlUgICAgLyohPCBEQUMgY2hhbm5lbDIgRE1BIHVuZGVycnVuIGVycm9yICAgKi8KICNkZWZpbmUgIEhBTF9EQUNfRVJST1JfRE1BICAgICAgICAgICAgICAgMHgwNFUgICAgLyohPCBETUEgZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgIEhBTF9EQUNfRVJST1JfVElNRU9VVCAgICAgICAgICAgMHgwOFUgICAgLyohPCBUaW1lb3V0IGVycm9yICAgICAgICAgICAgICAgICAgICAgKi8KICNpZiAoVVNFX0hBTF9EQUNfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCiAjZGVmaW5lIEhBTF9EQUNfRVJST1JfSU5WQUxJRF9DQUxMQkFDSyAgIDB4MTBVICAgIC8qITwgSW52YWxpZCBjYWxsYmFjayBlcnJvciAgICAgICAgICAgICovCiAjZW5kaWYgLyogVVNFX0hBTF9EQUNfUkVHSVNURVJfQ0FMTEJBQ0tTICovCisKIC8qKgogICAqIEB9CiAgICovCiAKLS8qKiBAZGVmZ3JvdXAgREFDX3RyaWdnZXJfc2VsZWN0aW9uIERBQyBUcmlnZ2VyIFNlbGVjdGlvbgorLyoqIEBkZWZncm91cCBEQUNfdHJpZ2dlcl9zZWxlY3Rpb24gREFDIHRyaWdnZXIgc2VsZWN0aW9uCiAgICogQHsKICAgKi8KKyNkZWZpbmUgREFDX1RSSUdHRVJfTk9ORSAgICAgICAgICAgICAgICAweDAwMDAwMDAwVUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgQ29udmVyc2lvbiBpcyBhdXRvbWF0aWMgb25jZSB0aGUgREFDMV9ESFJ4eHh4IHJlZ2lzdGVyIGhhcyBiZWVuIGxvYWRlZCwgYW5kIG5vdCBieSBleHRlcm5hbCB0cmlnZ2VyICovCisjZGVmaW5lIERBQ19UUklHR0VSX1QyX1RSR08gICAgICAgICAgICAgKERBQ19DUl9UU0VMMV8yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERBQ19DUl9URU4xKSAvKiE8IFRJTTIgVFJHTyBzZWxlY3RlZCBhcyBleHRlcm5hbCBjb252ZXJzaW9uIHRyaWdnZXIgZm9yIERBQyBjaGFubmVsICovCisjZGVmaW5lIERBQ19UUklHR0VSX1Q0X1RSR08gICAgICAgICAgICAgKERBQ19DUl9UU0VMMV8yICAgICAgICAgICAgICAgICAgfCBEQUNfQ1JfVFNFTDFfMCB8IERBQ19DUl9URU4xKSAvKiE8IFRJTTQgVFJHTyBzZWxlY3RlZCBhcyBleHRlcm5hbCBjb252ZXJzaW9uIHRyaWdnZXIgZm9yIERBQyBjaGFubmVsICovCisjZGVmaW5lIERBQ19UUklHR0VSX1Q1X1RSR08gICAgICAgICAgICAgKCAgICAgICAgICAgICAgICAgREFDX0NSX1RTRUwxXzEgfCBEQUNfQ1JfVFNFTDFfMCB8IERBQ19DUl9URU4xKSAvKiE8IFRJTTUgVFJHTyBzZWxlY3RlZCBhcyBleHRlcm5hbCBjb252ZXJzaW9uIHRyaWdnZXIgZm9yIERBQyBjaGFubmVsICovCisjZGVmaW5lIERBQ19UUklHR0VSX1Q2X1RSR08gICAgICAgICAgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBQ19DUl9URU4xKSAvKiE8IFRJTTYgVFJHTyBzZWxlY3RlZCBhcyBleHRlcm5hbCBjb252ZXJzaW9uIHRyaWdnZXIgZm9yIERBQyBjaGFubmVsICovCisjZGVmaW5lIERBQ19UUklHR0VSX1Q3X1RSR08gICAgICAgICAgICAgKCAgICAgICAgICAgICAgICAgREFDX0NSX1RTRUwxXzEgICAgICAgICAgICAgICAgICB8IERBQ19DUl9URU4xKSAvKiE8IFRJTTcgVFJHTyBzZWxlY3RlZCBhcyBleHRlcm5hbCBjb252ZXJzaW9uIHRyaWdnZXIgZm9yIERBQyBjaGFubmVsICovCisjZGVmaW5lIERBQ19UUklHR0VSX1Q4X1RSR08gICAgICAgICAgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQUNfQ1JfVFNFTDFfMCB8IERBQ19DUl9URU4xKSAvKiE8IFRJTTggVFJHTyBzZWxlY3RlZCBhcyBleHRlcm5hbCBjb252ZXJzaW9uIHRyaWdnZXIgZm9yIERBQyBjaGFubmVsICovCisjZGVmaW5lIERBQ19UUklHR0VSX0VYVF9JVDkgICAgICAgICAgICAgKERBQ19DUl9UU0VMMV8yIHwgREFDX0NSX1RTRUwxXzEgICAgICAgICAgICAgICAgICB8IERBQ19DUl9URU4xKSAvKiE8IEVYVEkgTGluZTkgZXZlbnQgc2VsZWN0ZWQgYXMgZXh0ZXJuYWwgY29udmVyc2lvbiB0cmlnZ2VyIGZvciBEQUMgY2hhbm5lbCAqLworI2RlZmluZSBEQUNfVFJJR0dFUl9TT0ZUV0FSRSAgICAgICAgICAgIChEQUNfQ1JfVFNFTDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEQUNfQ1JfVEVOMSkgLyohPCBDb252ZXJzaW9uIHN0YXJ0ZWQgYnkgc29mdHdhcmUgdHJpZ2dlciBmb3IgREFDIGNoYW5uZWwgKi8KIAotI2RlZmluZSBEQUNfVFJJR0dFUl9OT05FICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpIC8qITwgQ29udmVyc2lvbiBpcyBhdXRvbWF0aWMgb25jZSB0aGUgREFDMV9ESFJ4eHh4IHJlZ2lzdGVyIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiBsb2FkZWQsIGFuZCBub3QgYnkgZXh0ZXJuYWwgdHJpZ2dlciAqLwotI2RlZmluZSBEQUNfVFJJR0dFUl9UMl9UUkdPICAgICAgICAgICAgICAgICgodWludDMyX3QpKERBQ19DUl9UU0VMMV8yIHwgREFDX0NSX1RFTjEpKSAvKiE8IFRJTTIgVFJHTyBzZWxlY3RlZCBhcyBleHRlcm5hbCBjb252ZXJzaW9uIHRyaWdnZXIgZm9yIERBQyBjaGFubmVsICovCi0jZGVmaW5lIERBQ19UUklHR0VSX1Q0X1RSR08gICAgICAgICAgICAgICAgKCh1aW50MzJfdCkoREFDX0NSX1RTRUwxXzIgfCBEQUNfQ1JfVFNFTDFfMCB8IERBQ19DUl9URU4xKSkgLyohPCBUSU00IFRSR08gc2VsZWN0ZWQgYXMgZXh0ZXJuYWwgY29udmVyc2lvbiB0cmlnZ2VyIGZvciBEQUMgY2hhbm5lbCAqLwotI2RlZmluZSBEQUNfVFJJR0dFUl9UNV9UUkdPICAgICAgICAgICAgICAgICgodWludDMyX3QpKERBQ19DUl9UU0VMMV8xIHwgREFDX0NSX1RTRUwxXzAgfCBEQUNfQ1JfVEVOMSkpIC8qITwgVElNNSBUUkdPIHNlbGVjdGVkIGFzIGV4dGVybmFsIGNvbnZlcnNpb24gdHJpZ2dlciBmb3IgREFDIGNoYW5uZWwgKi8KLSNkZWZpbmUgREFDX1RSSUdHRVJfVDZfVFJHTyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KURBQ19DUl9URU4xKSAvKiE8IFRJTTYgVFJHTyBzZWxlY3RlZCBhcyBleHRlcm5hbCBjb252ZXJzaW9uIHRyaWdnZXIgZm9yIERBQyBjaGFubmVsICovCi0jZGVmaW5lIERBQ19UUklHR0VSX1Q3X1RSR08gICAgICAgICAgICAgICAgKCh1aW50MzJfdCkoREFDX0NSX1RTRUwxXzEgfCBEQUNfQ1JfVEVOMSkpIC8qITwgVElNNyBUUkdPIHNlbGVjdGVkIGFzIGV4dGVybmFsIGNvbnZlcnNpb24gdHJpZ2dlciBmb3IgREFDIGNoYW5uZWwgKi8KLSNkZWZpbmUgREFDX1RSSUdHRVJfVDhfVFJHTyAgICAgICAgICAgICAgICAoKHVpbnQzMl90KShEQUNfQ1JfVFNFTDFfMCB8IERBQ19DUl9URU4xKSkgLyohPCBUSU04IFRSR08gc2VsZWN0ZWQgYXMgZXh0ZXJuYWwgY29udmVyc2lvbiB0cmlnZ2VyIGZvciBEQUMgY2hhbm5lbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0KLSNkZWZpbmUgREFDX1RSSUdHRVJfRVhUX0lUOSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KShEQUNfQ1JfVFNFTDFfMiB8IERBQ19DUl9UU0VMMV8xIHwgREFDX0NSX1RFTjEpKSAvKiE8IEVYVEkgTGluZTkgZXZlbnQgc2VsZWN0ZWQgYXMgZXh0ZXJuYWwgY29udmVyc2lvbiB0cmlnZ2VyIGZvciBEQUMgY2hhbm5lbCAqLwotI2RlZmluZSBEQUNfVFJJR0dFUl9TT0ZUV0FSRSAgICAgICAgICAgICAgICgodWludDMyX3QpKERBQ19DUl9UU0VMMSB8IERBQ19DUl9URU4xKSkgLyohPCBDb252ZXJzaW9uIHN0YXJ0ZWQgYnkgc29mdHdhcmUgdHJpZ2dlciBmb3IgREFDIGNoYW5uZWwgKi8KIC8qKgogICAqIEB9CiAgICovCiAKLS8qKiBAZGVmZ3JvdXAgREFDX291dHB1dF9idWZmZXIgIERBQyBPdXRwdXQgQnVmZmVyCisvKiogQGRlZmdyb3VwIERBQ19vdXRwdXRfYnVmZmVyIERBQyBvdXRwdXQgYnVmZmVyCiAgICogQHsKICAgKi8KLSNkZWZpbmUgREFDX09VVFBVVEJVRkZFUl9FTkFCTEUgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDBVKQotI2RlZmluZSBEQUNfT1VUUFVUQlVGRkVSX0RJU0FCTEUgICAgICAgICAgICgodWludDMyX3QpREFDX0NSX0JPRkYxKQorI2RlZmluZSBEQUNfT1VUUFVUQlVGRkVSX0VOQUJMRSAgICAgICAgICAgIDB4MDAwMDAwMDBVCisjZGVmaW5lIERBQ19PVVRQVVRCVUZGRVJfRElTQUJMRSAgICAgICAgICAgKERBQ19DUl9CT0ZGMSkKKwogLyoqCiAgICogQH0KICAgKi8KIAotLyoqIEBkZWZncm91cCBEQUNfQ2hhbm5lbF9zZWxlY3Rpb24gREFDIENoYW5uZWwgU2VsZWN0aW9uCisvKiogQGRlZmdyb3VwIERBQ19DaGFubmVsX3NlbGVjdGlvbiBEQUMgQ2hhbm5lbCBzZWxlY3Rpb24KICAgKiBAewogICAqLwotI2RlZmluZSBEQUNfQ0hBTk5FTF8xICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpCi0jZGVmaW5lIERBQ19DSEFOTkVMXzIgICAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwVSkKKyNkZWZpbmUgREFDX0NIQU5ORUxfMSAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwVQorCisjZGVmaW5lIERBQ19DSEFOTkVMXzIgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMFUKKwogLyoqCiAgICogQH0KICAgKi8KIAotLyoqIEBkZWZncm91cCBEQUNfZGF0YV9hbGlnbm1lbnQgREFDIERhdGEgQWxpZ25tZW50CisvKiogQGRlZmdyb3VwIERBQ19kYXRhX2FsaWdubWVudCBEQUMgZGF0YSBhbGlnbm1lbnQKICAgKiBAewogICAqLwotI2RlZmluZSBEQUNfQUxJR05fMTJCX1IgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpCi0jZGVmaW5lIERBQ19BTElHTl8xMkJfTCAgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0VSkKLSNkZWZpbmUgREFDX0FMSUdOXzhCX1IgICAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDhVKQorI2RlZmluZSBEQUNfQUxJR05fMTJCX1IgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDBVCisjZGVmaW5lIERBQ19BTElHTl8xMkJfTCAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNFUKKyNkZWZpbmUgREFDX0FMSUdOXzhCX1IgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA4VQorCiAvKioKICAgKiBAfQogICAqLwogCi0vKiogQGRlZmdyb3VwIERBQ19mbGFnc19kZWZpbml0aW9uIERBQyBGbGFncyBEZWZpbml0aW9uCisvKiogQGRlZmdyb3VwIERBQ19mbGFnc19kZWZpbml0aW9uIERBQyBmbGFncyBkZWZpbml0aW9uCiAgICogQHsKLSAgKi8gCi0jZGVmaW5lIERBQ19GTEFHX0RNQVVEUjEgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdClEQUNfU1JfRE1BVURSMSkKLSNkZWZpbmUgREFDX0ZMQUdfRE1BVURSMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KURBQ19TUl9ETUFVRFIyKQorICAqLworI2RlZmluZSBEQUNfRkxBR19ETUFVRFIxICAgICAgICAgICAgICAgICAgIChEQUNfU1JfRE1BVURSMSkKKworI2RlZmluZSBEQUNfRkxBR19ETUFVRFIyICAgICAgICAgICAgICAgICAgIChEQUNfU1JfRE1BVURSMikKKworCiAvKioKICAgKiBAfQogICAqLwogCi0vKiogQGRlZmdyb3VwIERBQ19JVF9kZWZpbml0aW9uIERBQyBJVCBEZWZpbml0aW9uCisvKiogQGRlZmdyb3VwIERBQ19JVF9kZWZpbml0aW9uICBEQUMgSVQgZGVmaW5pdGlvbgogICAqIEB7Ci0gICovIAotI2RlZmluZSBEQUNfSVRfRE1BVURSMSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KURBQ19TUl9ETUFVRFIxKQotI2RlZmluZSBEQUNfSVRfRE1BVURSMiAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KURBQ19TUl9ETUFVRFIyKQorICAqLworI2RlZmluZSBEQUNfSVRfRE1BVURSMSAgICAgICAgICAgICAgICAgICAoREFDX1NSX0RNQVVEUjEpCisKKyNkZWZpbmUgREFDX0lUX0RNQVVEUjIgICAgICAgICAgICAgICAgICAgKERBQ19TUl9ETUFVRFIyKQorCisKIC8qKgogICAqIEB9CiAgICovCkBAIC0yMTgsOTIgKzI0MCwxNDIgQEAKICAgKi8KIAogLyogRXhwb3J0ZWQgbWFjcm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwogLyoqIEBkZWZncm91cCBEQUNfRXhwb3J0ZWRfTWFjcm9zIERBQyBFeHBvcnRlZCBNYWNyb3MKICAgKiBAewogICAqLwogCi0vKiogQGJyaWVmIFJlc2V0IERBQyBoYW5kbGUgc3RhdGUKLSAgKiBAcGFyYW0gIF9fSEFORExFX186IHNwZWNpZmllcyB0aGUgREFDIGhhbmRsZS4KKy8qKiBAYnJpZWYgUmVzZXQgREFDIGhhbmRsZSBzdGF0ZS4KKyAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBEQUMgaGFuZGxlLgogICAqIEByZXR2YWwgTm9uZQogICAqLwogI2lmIChVU0VfSEFMX0RBQ19SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSNkZWZpbmUgX19IQUxfREFDX1JFU0VUX0hBTkRMRV9TVEFURShfX0hBTkRMRV9fKSAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+U3RhdGUgPSBIQUxfREFDX1NUQVRFX1JFU0VUOyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+TXNwSW5pdENhbGxiYWNrID0gTlVMTDsgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPk1zcERlSW5pdENhbGxiYWNrID0gTlVMTDsgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUoMCkKKyNkZWZpbmUgX19IQUxfREFDX1JFU0VUX0hBTkRMRV9TVEFURShfX0hBTkRMRV9fKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPlN0YXRlICAgICAgICAgICAgID0gSEFMX0RBQ19TVEFURV9SRVNFVDsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5Nc3BJbml0Q2FsbGJhY2sgICA9IE5VTEw7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+TXNwRGVJbml0Q2FsbGJhY2sgPSBOVUxMOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUoMCkKICNlbHNlCiAjZGVmaW5lIF9fSEFMX0RBQ19SRVNFVF9IQU5ETEVfU1RBVEUoX19IQU5ETEVfXykgKChfX0hBTkRMRV9fKS0+U3RhdGUgPSBIQUxfREFDX1NUQVRFX1JFU0VUKQogI2VuZGlmIC8qIFVTRV9IQUxfREFDX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogCi0vKiogQGJyaWVmIEVuYWJsZSB0aGUgREFDIGNoYW5uZWwKLSAgKiBAcGFyYW0gIF9fSEFORExFX186IHNwZWNpZmllcyB0aGUgREFDIGhhbmRsZS4KLSAgKiBAcGFyYW0gIF9fREFDX0NIQU5ORUxfXzogc3BlY2lmaWVzIHRoZSBEQUMgY2hhbm5lbAorLyoqIEBicmllZiBFbmFibGUgdGhlIERBQyBjaGFubmVsLgorICAqIEBwYXJhbSAgX19IQU5ETEVfXyBzcGVjaWZpZXMgdGhlIERBQyBoYW5kbGUuCisgICogQHBhcmFtICBfX0RBQ19DaGFubmVsX18gc3BlY2lmaWVzIHRoZSBEQUMgY2hhbm5lbAogICAqIEByZXR2YWwgTm9uZQogICAqLwotI2RlZmluZSBfX0hBTF9EQUNfRU5BQkxFKF9fSEFORExFX18sIF9fREFDX0NIQU5ORUxfXykgXAotKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSIHw9ICAoREFDX0NSX0VOMSA8PCAoX19EQUNfQ0hBTk5FTF9fKSkpCisjZGVmaW5lIF9fSEFMX0RBQ19FTkFCTEUoX19IQU5ETEVfXywgX19EQUNfQ2hhbm5lbF9fKSBcCisgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUiB8PSAgKERBQ19DUl9FTjEgPDwgKChfX0RBQ19DaGFubmVsX18pICYgMHgxMFVMKSkpCiAKLS8qKiBAYnJpZWYgRGlzYWJsZSB0aGUgREFDIGNoYW5uZWwKLSAgKiBAcGFyYW0gIF9fSEFORExFX186IHNwZWNpZmllcyB0aGUgREFDIGhhbmRsZQotICAqIEBwYXJhbSAgX19EQUNfQ0hBTk5FTF9fOiBzcGVjaWZpZXMgdGhlIERBQyBjaGFubmVsLgorLyoqIEBicmllZiBEaXNhYmxlIHRoZSBEQUMgY2hhbm5lbC4KKyAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBEQUMgaGFuZGxlCisgICogQHBhcmFtICBfX0RBQ19DaGFubmVsX18gc3BlY2lmaWVzIHRoZSBEQUMgY2hhbm5lbC4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLSNkZWZpbmUgX19IQUxfREFDX0RJU0FCTEUoX19IQU5ETEVfXywgX19EQUNfQ0hBTk5FTF9fKSBcCi0oKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IgJj0gIH4oREFDX0NSX0VOMSA8PCAoX19EQUNfQ0hBTk5FTF9fKSkpCisjZGVmaW5lIF9fSEFMX0RBQ19ESVNBQkxFKF9fSEFORExFX18sIF9fREFDX0NoYW5uZWxfXykgXAorICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IgJj0gIH4oREFDX0NSX0VOMSA8PCAoKF9fREFDX0NoYW5uZWxfXykgJiAweDEwVUwpKSkKKworLyoqIEBicmllZiBTZXQgREhSMTJSMSBhbGlnbm1lbnQuCisgICogQHBhcmFtICBfX0FMSUdOTUVOVF9fIHNwZWNpZmllcyB0aGUgREFDIGFsaWdubWVudAorICAqIEByZXR2YWwgTm9uZQorICAqLworI2RlZmluZSBEQUNfREhSMTJSMV9BTElHTk1FTlQoX19BTElHTk1FTlRfXykgKDB4MDAwMDAwMDhVTCArIChfX0FMSUdOTUVOVF9fKSkKIAogCi0vKiogQGJyaWVmIEVuYWJsZSB0aGUgREFDIGludGVycnVwdAotICAqIEBwYXJhbSAgX19IQU5ETEVfXzogc3BlY2lmaWVzIHRoZSBEQUMgaGFuZGxlCi0gICogQHBhcmFtICBfX0lOVEVSUlVQVF9fOiBzcGVjaWZpZXMgdGhlIERBQyBpbnRlcnJ1cHQuCisvKiogQGJyaWVmICBTZXQgREhSMTJSMiBhbGlnbm1lbnQuCisgICogQHBhcmFtICBfX0FMSUdOTUVOVF9fIHNwZWNpZmllcyB0aGUgREFDIGFsaWdubWVudAorICAqIEByZXR2YWwgTm9uZQorICAqLworI2RlZmluZSBEQUNfREhSMTJSMl9BTElHTk1FTlQoX19BTElHTk1FTlRfXykgKDB4MDAwMDAwMTRVTCArIChfX0FMSUdOTUVOVF9fKSkKKworCisvKiogQGJyaWVmICBTZXQgREhSMTJSRCBhbGlnbm1lbnQuCisgICogQHBhcmFtICBfX0FMSUdOTUVOVF9fIHNwZWNpZmllcyB0aGUgREFDIGFsaWdubWVudAorICAqIEByZXR2YWwgTm9uZQorICAqLworI2RlZmluZSBEQUNfREhSMTJSRF9BTElHTk1FTlQoX19BTElHTk1FTlRfXykgKDB4MDAwMDAwMjBVTCArIChfX0FMSUdOTUVOVF9fKSkKKworLyoqIEBicmllZiBFbmFibGUgdGhlIERBQyBpbnRlcnJ1cHQuCisgICogQHBhcmFtICBfX0hBTkRMRV9fIHNwZWNpZmllcyB0aGUgREFDIGhhbmRsZQorICAqIEBwYXJhbSAgX19JTlRFUlJVUFRfXyBzcGVjaWZpZXMgdGhlIERBQyBpbnRlcnJ1cHQuCisgICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgICAgICAgIEBhcmcgREFDX0lUX0RNQVVEUjEgREFDIGNoYW5uZWwgMSBETUEgdW5kZXJydW4gaW50ZXJydXB0CisgICogICAgICAgICAgICBAYXJnIERBQ19JVF9ETUFVRFIyIERBQyBjaGFubmVsIDIgRE1BIHVuZGVycnVuIGludGVycnVwdAogICAqIEByZXR2YWwgTm9uZQogICAqLwogI2RlZmluZSBfX0hBTF9EQUNfRU5BQkxFX0lUKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IpIHw9IChfX0lOVEVSUlVQVF9fKSkKIAotLyoqIEBicmllZiBEaXNhYmxlIHRoZSBEQUMgaW50ZXJydXB0Ci0gICogQHBhcmFtICBfX0hBTkRMRV9fOiBzcGVjaWZpZXMgdGhlIERBQyBoYW5kbGUKLSAgKiBAcGFyYW0gIF9fSU5URVJSVVBUX186IHNwZWNpZmllcyB0aGUgREFDIGludGVycnVwdC4KKy8qKiBAYnJpZWYgRGlzYWJsZSB0aGUgREFDIGludGVycnVwdC4KKyAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBEQUMgaGFuZGxlCisgICogQHBhcmFtICBfX0lOVEVSUlVQVF9fIHNwZWNpZmllcyB0aGUgREFDIGludGVycnVwdC4KKyAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICAgICAgICAgQGFyZyBEQUNfSVRfRE1BVURSMSBEQUMgY2hhbm5lbCAxIERNQSB1bmRlcnJ1biBpbnRlcnJ1cHQKKyAgKiAgICAgICAgICAgIEBhcmcgREFDX0lUX0RNQVVEUjIgREFDIGNoYW5uZWwgMiBETUEgdW5kZXJydW4gaW50ZXJydXB0CiAgICogQHJldHZhbCBOb25lCiAgICovCiAjZGVmaW5lIF9fSEFMX0RBQ19ESVNBQkxFX0lUKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IpICY9IH4oX19JTlRFUlJVUFRfXykpCiAKLS8qKiBAYnJpZWYgIENoZWNrcyBpZiB0aGUgc3BlY2lmaWVkIERBQyBpbnRlcnJ1cHQgc291cmNlIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCi0gICogQHBhcmFtIF9fSEFORExFX186IERBQyBoYW5kbGUKLSAgKiBAcGFyYW0gX19JTlRFUlJVUFRfXzogREFDIGludGVycnVwdCBzb3VyY2UgdG8gY2hlY2sKKy8qKiBAYnJpZWYgIENoZWNrIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBEQUMgaW50ZXJydXB0IHNvdXJjZSBpcyBlbmFibGVkIG9yIG5vdC4KKyAgKiBAcGFyYW0gX19IQU5ETEVfXyBEQUMgaGFuZGxlCisgICogQHBhcmFtIF9fSU5URVJSVVBUX18gREFDIGludGVycnVwdCBzb3VyY2UgdG8gY2hlY2sKICAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgotICAqICAgICAgICAgICAgQGFyZyBEQUNfSVRfRE1BVURSMTogREFDIGNoYW5uZWwgMSBETUEgdW5kZXJydW4gaW50ZXJydXB0Ci0gICogICAgICAgICAgICBAYXJnIERBQ19JVF9ETUFVRFIyOiBEQUMgY2hhbm5lbCAyIERNQSB1bmRlcnJ1biBpbnRlcnJ1cHQKKyAgKiAgICAgICAgICAgIEBhcmcgREFDX0lUX0RNQVVEUjEgREFDIGNoYW5uZWwgMSBETUEgdW5kZXJydW4gaW50ZXJydXB0CisgICogICAgICAgICAgICBAYXJnIERBQ19JVF9ETUFVRFIyIERBQyBjaGFubmVsIDIgRE1BIHVuZGVycnVuIGludGVycnVwdAogICAqIEByZXR2YWwgU3RhdGUgb2YgaW50ZXJydXB0aW9uIChTRVQgb3IgUkVTRVQpCiAgICovCi0jZGVmaW5lIF9fSEFMX0RBQ19HRVRfSVRfU09VUkNFKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IgJiAoX19JTlRFUlJVUFRfXykpID09IChfX0lOVEVSUlVQVF9fKSkKKyNkZWZpbmUgX19IQUxfREFDX0dFVF9JVF9TT1VSQ0UoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXykgKCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIChfX0lOVEVSUlVQVF9fKSkgPT0gKF9fSU5URVJSVVBUX18pKQogCiAvKiogQGJyaWVmICBHZXQgdGhlIHNlbGVjdGVkIERBQydzIGZsYWcgc3RhdHVzLgotICAqIEBwYXJhbSAgX19IQU5ETEVfXzogc3BlY2lmaWVzIHRoZSBEQUMgaGFuZGxlLgotICAqIEBwYXJhbSAgX19GTEFHX186IHNwZWNpZmllcyB0aGUgZmxhZyB0byBjbGVhci4KLSAgKiAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6Ci0gICogICAgICAgICAgICBAYXJnIERBQ19GTEFHX0RNQVVEUjE6IERNQSB1bmRlcnJ1biAxIGZsYWcKLSAgKiAgICAgICAgICAgIEBhcmcgREFDX0ZMQUdfRE1BVURSMjogRE1BIHVuZGVycnVuIDIgZmxhZworICAqIEBwYXJhbSAgX19IQU5ETEVfXyBzcGVjaWZpZXMgdGhlIERBQyBoYW5kbGUuCisgICogQHBhcmFtICBfX0ZMQUdfXyBzcGVjaWZpZXMgdGhlIERBQyBmbGFnIHRvIGdldC4KKyAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICAgICAgICAgQGFyZyBEQUNfRkxBR19ETUFVRFIxIERBQyBjaGFubmVsIDEgRE1BIHVuZGVycnVuIGZsYWcKKyAgKiAgICAgICAgICAgIEBhcmcgREFDX0ZMQUdfRE1BVURSMiBEQUMgY2hhbm5lbCAyIERNQSB1bmRlcnJ1biBmbGFnCiAgICogQHJldHZhbCBOb25lCiAgICovCiAjZGVmaW5lIF9fSEFMX0RBQ19HRVRfRkxBRyhfX0hBTkRMRV9fLCBfX0ZMQUdfXykgKCgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+U1IpICYgKF9fRkxBR19fKSkgPT0gKF9fRkxBR19fKSkKIAogLyoqIEBicmllZiAgQ2xlYXIgdGhlIERBQydzIGZsYWcuCi0gICogQHBhcmFtICBfX0hBTkRMRV9fOiBzcGVjaWZpZXMgdGhlIERBQyBoYW5kbGUuCi0gICogQHBhcmFtICBfX0ZMQUdfXzogc3BlY2lmaWVzIHRoZSBmbGFnIHRvIGNsZWFyLgotICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKLSAgKiAgICAgICAgICAgIEBhcmcgREFDX0ZMQUdfRE1BVURSMTogRE1BIHVuZGVycnVuIDEgZmxhZwotICAqICAgICAgICAgICAgQGFyZyBEQUNfRkxBR19ETUFVRFIyOiBETUEgdW5kZXJydW4gMiBmbGFnCisgICogQHBhcmFtICBfX0hBTkRMRV9fIHNwZWNpZmllcyB0aGUgREFDIGhhbmRsZS4KKyAgKiBAcGFyYW0gIF9fRkxBR19fIHNwZWNpZmllcyB0aGUgREFDIGZsYWcgdG8gY2xlYXIuCisgICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgICAgICAgIEBhcmcgREFDX0ZMQUdfRE1BVURSMSBEQUMgY2hhbm5lbCAxIERNQSB1bmRlcnJ1biBmbGFnCisgICogICAgICAgICAgICBAYXJnIERBQ19GTEFHX0RNQVVEUjIgREFDIGNoYW5uZWwgMiBETUEgdW5kZXJydW4gZmxhZwogICAqIEByZXR2YWwgTm9uZQogICAqLwogI2RlZmluZSBfX0hBTF9EQUNfQ0xFQVJfRkxBRyhfX0hBTkRMRV9fLCBfX0ZMQUdfXykgKCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5TUikgPSAoX19GTEFHX18pKQorCiAvKioKICAgKiBAfQogICAqLwogCi0vKiBJbmNsdWRlIERBQyBIQUwgRXh0ZW5zaW9uIG1vZHVsZSAqLworLyogUHJpdmF0ZSBtYWNybyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyoqIEBkZWZncm91cCBEQUNfUHJpdmF0ZV9NYWNyb3MgREFDIFByaXZhdGUgTWFjcm9zCisgICogQHsKKyAgKi8KKyNkZWZpbmUgSVNfREFDX09VVFBVVF9CVUZGRVJfU1RBVEUoU1RBVEUpICgoKFNUQVRFKSA9PSBEQUNfT1VUUFVUQlVGRkVSX0VOQUJMRSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoU1RBVEUpID09IERBQ19PVVRQVVRCVUZGRVJfRElTQUJMRSkpCisKKyNkZWZpbmUgSVNfREFDX0NIQU5ORUwoQ0hBTk5FTCkgKCgoQ0hBTk5FTCkgPT0gREFDX0NIQU5ORUxfMSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChDSEFOTkVMKSA9PSBEQUNfQ0hBTk5FTF8yKSkKKworI2RlZmluZSBJU19EQUNfQUxJR04oQUxJR04pICgoKEFMSUdOKSA9PSBEQUNfQUxJR05fMTJCX1IpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChBTElHTikgPT0gREFDX0FMSUdOXzEyQl9MKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQUxJR04pID09IERBQ19BTElHTl84Ql9SKSkKKworI2RlZmluZSBJU19EQUNfREFUQShEQVRBKSAoKERBVEEpIDw9IDB4RkZGMFVMKQorCisvKioKKyAgKiBAfQorICAqLworCisvKiBJbmNsdWRlIERBQyBIQUwgRXh0ZW5kZWQgbW9kdWxlICovCiAjaW5jbHVkZSAic3RtMzJmN3h4X2hhbF9kYWNfZXguaCIKIAogLyogRXhwb3J0ZWQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwogLyoqIEBhZGR0b2dyb3VwIERBQ19FeHBvcnRlZF9GdW5jdGlvbnMKICAgKiBAewogICAqLwpAQCAtMzExLDExICszODMsMTIgQEAKIC8qKiBAYWRkdG9ncm91cCBEQUNfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMQogICAqIEB7CiAgICovCi0vKiBJbml0aWFsaXphdGlvbi9kZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RBQ19Jbml0KERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNfRGVJbml0KERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjKTsKLXZvaWQgSEFMX0RBQ19Nc3BJbml0KERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjKTsKLXZvaWQgSEFMX0RBQ19Nc3BEZUluaXQoREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMpOworLyogSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNfSW5pdChEQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDX0RlSW5pdChEQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7Cit2b2lkIEhBTF9EQUNfTXNwSW5pdChEQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7Cit2b2lkIEhBTF9EQUNfTXNwRGVJbml0KERBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKKwogLyoqCiAgICogQH0KICAgKi8KQEAgLTMyMywxMiArMzk2LDI3IEBACiAvKiogQGFkZHRvZ3JvdXAgREFDX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDIKICAgKiBAewogICAqLwotLyogSS9PIG9wZXJhdGlvbiBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNfU3RhcnQoREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMsIHVpbnQzMl90IENoYW5uZWwpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RBQ19TdG9wKERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjLCB1aW50MzJfdCBDaGFubmVsKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNfU3RhcnRfRE1BKERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjLCB1aW50MzJfdCBDaGFubmVsLCB1aW50MzJfdCogcERhdGEsIHVpbnQzMl90IExlbmd0aCwgdWludDMyX3QgQWxpZ25tZW50KTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNfU3RvcF9ETUEoREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMsIHVpbnQzMl90IENoYW5uZWwpOwotdWludDMyX3QgSEFMX0RBQ19HZXRWYWx1ZShEQUNfSGFuZGxlVHlwZURlZiogaGRhYywgdWludDMyX3QgQ2hhbm5lbCk7CisvKiBJTyBvcGVyYXRpb24gZnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RBQ19TdGFydChEQUNfSGFuZGxlVHlwZURlZiAqaGRhYywgdWludDMyX3QgQ2hhbm5lbCk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDX1N0b3AoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMsIHVpbnQzMl90IENoYW5uZWwpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RBQ19TdGFydF9ETUEoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMsIHVpbnQzMl90IENoYW5uZWwsIHVpbnQzMl90ICpwRGF0YSwgdWludDMyX3QgTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQWxpZ25tZW50KTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNfU3RvcF9ETUEoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMsIHVpbnQzMl90IENoYW5uZWwpOwordm9pZCBIQUxfREFDX0lSUUhhbmRsZXIoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RBQ19TZXRWYWx1ZShEQUNfSGFuZGxlVHlwZURlZiAqaGRhYywgdWludDMyX3QgQ2hhbm5lbCwgdWludDMyX3QgQWxpZ25tZW50LCB1aW50MzJfdCBEYXRhKTsKKwordm9pZCBIQUxfREFDX0NvbnZDcGx0Q2FsbGJhY2tDaDEoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOwordm9pZCBIQUxfREFDX0NvbnZIYWxmQ3BsdENhbGxiYWNrQ2gxKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKK3ZvaWQgSEFMX0RBQ19FcnJvckNhbGxiYWNrQ2gxKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKK3ZvaWQgSEFMX0RBQ19ETUFVbmRlcnJ1bkNhbGxiYWNrQ2gxKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKKworI2lmIChVU0VfSEFMX0RBQ19SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKKy8qIERBQyBjYWxsYmFjayByZWdpc3RlcmluZy91bnJlZ2lzdGVyaW5nICovCitIQUxfU3RhdHVzVHlwZURlZiAgICAgSEFMX0RBQ19SZWdpc3RlckNhbGxiYWNrKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjLCBIQUxfREFDX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBEQUNfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CitIQUxfU3RhdHVzVHlwZURlZiAgICAgSEFMX0RBQ19VblJlZ2lzdGVyQ2FsbGJhY2soREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMsIEhBTF9EQUNfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCk7CisjZW5kaWYgLyogVVNFX0hBTF9EQUNfUkVHSVNURVJfQ0FMTEJBQ0tTICovCisKIC8qKgogICAqIEB9CiAgICovCkBAIC0zMzcsOCArNDI1LDggQEAKICAgKiBAewogICAqLwogLyogUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNfQ29uZmlnQ2hhbm5lbChEQUNfSGFuZGxlVHlwZURlZiogaGRhYywgREFDX0NoYW5uZWxDb25mVHlwZURlZiogc0NvbmZpZywgdWludDMyX3QgQ2hhbm5lbCk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDX1NldFZhbHVlKERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjLCB1aW50MzJfdCBDaGFubmVsLCB1aW50MzJfdCBBbGlnbm1lbnQsIHVpbnQzMl90IERhdGEpOwordWludDMyX3QgSEFMX0RBQ19HZXRWYWx1ZShEQUNfSGFuZGxlVHlwZURlZiAqaGRhYywgdWludDMyX3QgQ2hhbm5lbCk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDX0NvbmZpZ0NoYW5uZWwoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMsIERBQ19DaGFubmVsQ29uZlR5cGVEZWYgKnNDb25maWcsIHVpbnQzMl90IENoYW5uZWwpOwogLyoqCiAgICogQH0KICAgKi8KQEAgLTM0NiwyMCArNDM0LDEwIEBACiAvKiogQGFkZHRvZ3JvdXAgREFDX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDQKICAgKiBAewogICAqLwotLyogUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLUhBTF9EQUNfU3RhdGVUeXBlRGVmIEhBTF9EQUNfR2V0U3RhdGUoREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMpOwotdm9pZCBIQUxfREFDX0lSUUhhbmRsZXIoREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMpOworLyogUGVyaXBoZXJhbCBTdGF0ZSBhbmQgRXJyb3IgZnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK0hBTF9EQUNfU3RhdGVUeXBlRGVmIEhBTF9EQUNfR2V0U3RhdGUoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOwogdWludDMyX3QgSEFMX0RBQ19HZXRFcnJvcihEQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7CiAKLXZvaWQgSEFMX0RBQ19Db252Q3BsdENhbGxiYWNrQ2gxKERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjKTsKLXZvaWQgSEFMX0RBQ19Db252SGFsZkNwbHRDYWxsYmFja0NoMShEQUNfSGFuZGxlVHlwZURlZiogaGRhYyk7Ci12b2lkIEhBTF9EQUNfRXJyb3JDYWxsYmFja0NoMShEQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7Ci12b2lkIEhBTF9EQUNfRE1BVW5kZXJydW5DYWxsYmFja0NoMShEQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7Ci0jaWYgKFVTRV9IQUxfREFDX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotLyogREFDIGNhbGxiYWNrIHJlZ2lzdGVyaW5nL3VucmVnaXN0ZXJpbmcgKi8KLUhBTF9TdGF0dXNUeXBlRGVmICAgICBIQUxfREFDX1JlZ2lzdGVyQ2FsbGJhY2sgKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjLCBIQUxfREFDX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsIHBEQUNfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7Ci1IQUxfU3RhdHVzVHlwZURlZiAgICAgSEFMX0RBQ19VblJlZ2lzdGVyQ2FsbGJhY2sgKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjLCBIQUxfREFDX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQpOwotI2VuZGlmIC8qIFVTRV9IQUxfREFDX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTM2Nyw2NiArNDQ1LDEzIEBACiAvKioKICAgKiBAfQogICAqLwotLyogUHJpdmF0ZSB0eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qIFByaXZhdGUgdmFyaWFibGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiBQcml2YXRlIGNvbnN0YW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyoqIEBkZWZncm91cCBEQUNfUHJpdmF0ZV9Db25zdGFudHMgREFDIFByaXZhdGUgQ29uc3RhbnRzCi0gICogQHsKLSAgKi8KIAotLyoqCi0gICogQH0KLSAgKi8KLQotLyogUHJpdmF0ZSBtYWNyb3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qKiBAZGVmZ3JvdXAgREFDX1ByaXZhdGVfTWFjcm9zIERBQyBQcml2YXRlIE1hY3JvcwotICAqIEB7Ci0gICovCi0jZGVmaW5lIElTX0RBQ19EQVRBKERBVEEpICgoREFUQSkgPD0gMHhGRkYwVSkKLSNkZWZpbmUgSVNfREFDX0FMSUdOKEFMSUdOKSAoKChBTElHTikgPT0gREFDX0FMSUdOXzEyQl9SKSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQUxJR04pID09IERBQ19BTElHTl8xMkJfTCkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEFMSUdOKSA9PSBEQUNfQUxJR05fOEJfUikpCi0jZGVmaW5lIElTX0RBQ19DSEFOTkVMKENIQU5ORUwpICgoKENIQU5ORUwpID09IERBQ19DSEFOTkVMXzEpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQ0hBTk5FTCkgPT0gREFDX0NIQU5ORUxfMikpCi0jZGVmaW5lIElTX0RBQ19PVVRQVVRfQlVGRkVSX1NUQVRFKFNUQVRFKSAoKChTVEFURSkgPT0gREFDX09VVFBVVEJVRkZFUl9FTkFCTEUpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNUQVRFKSA9PSBEQUNfT1VUUFVUQlVGRkVSX0RJU0FCTEUpKQotCi0jZGVmaW5lIElTX0RBQ19UUklHR0VSKFRSSUdHRVIpICgoKFRSSUdHRVIpID09IERBQ19UUklHR0VSX05PTkUpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVFJJR0dFUikgPT0gREFDX1RSSUdHRVJfVDJfVFJHTykgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUUklHR0VSKSA9PSBEQUNfVFJJR0dFUl9UOF9UUkdPKSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRSSUdHRVIpID09IERBQ19UUklHR0VSX1Q3X1RSR08pIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVFJJR0dFUikgPT0gREFDX1RSSUdHRVJfVDVfVFJHTykgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUUklHR0VSKSA9PSBEQUNfVFJJR0dFUl9UNl9UUkdPKSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRSSUdHRVIpID09IERBQ19UUklHR0VSX1Q0X1RSR08pIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVFJJR0dFUikgPT0gREFDX1RSSUdHRVJfRVhUX0lUOSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUUklHR0VSKSA9PSBEQUNfVFJJR0dFUl9TT0ZUV0FSRSkpCi0KLS8qKiBAYnJpZWYgU2V0IERIUjEyUjEgYWxpZ25tZW50Ci0gICogQHBhcmFtICBfX0FMSUdOTUVOVF9fOiBzcGVjaWZpZXMgdGhlIERBQyBhbGlnbm1lbnQKLSAgKiBAcmV0dmFsIE5vbmUKLSAgKi8KLSNkZWZpbmUgREFDX0RIUjEyUjFfQUxJR05NRU5UKF9fQUxJR05NRU5UX18pICgoKHVpbnQzMl90KTB4MDAwMDAwMDhVKSArIChfX0FMSUdOTUVOVF9fKSkKLQotLyoqIEBicmllZiAgU2V0IERIUjEyUjIgYWxpZ25tZW50Ci0gICogQHBhcmFtICBfX0FMSUdOTUVOVF9fOiBzcGVjaWZpZXMgdGhlIERBQyBhbGlnbm1lbnQKLSAgKiBAcmV0dmFsIE5vbmUKLSAgKi8KLSNkZWZpbmUgREFDX0RIUjEyUjJfQUxJR05NRU5UKF9fQUxJR05NRU5UX18pICgoKHVpbnQzMl90KTB4MDAwMDAwMTRVKSArIChfX0FMSUdOTUVOVF9fKSkKLQotLyoqIEBicmllZiAgU2V0IERIUjEyUkQgYWxpZ25tZW50Ci0gICogQHBhcmFtICBfX0FMSUdOTUVOVF9fOiBzcGVjaWZpZXMgdGhlIERBQyBhbGlnbm1lbnQKLSAgKiBAcmV0dmFsIE5vbmUKLSAgKi8KLSNkZWZpbmUgREFDX0RIUjEyUkRfQUxJR05NRU5UKF9fQUxJR05NRU5UX18pICgoKHVpbnQzMl90KTB4MDAwMDAwMjBVKSArIChfX0FMSUdOTUVOVF9fKSkKLQotLyoqCi0gICogQH0KLSAgKi8KLQotLyogUHJpdmF0ZSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qKiBAZGVmZ3JvdXAgREFDX1ByaXZhdGVfRnVuY3Rpb25zIERBQyBQcml2YXRlIEZ1bmN0aW9ucwogICAqIEB7CiAgICovCit2b2lkIERBQ19ETUFDb252Q3BsdENoMShETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7Cit2b2lkIERBQ19ETUFFcnJvckNoMShETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7Cit2b2lkIERBQ19ETUFIYWxmQ29udkNwbHRDaDEoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpOwogLyoqCiAgICogQH0KICAgKi8KQEAgLTQzNSwxNCArNDYwLDE3IEBACiAgICogQH0KICAgKi8KIAorI2VuZGlmIC8qIERBQyAqLworCiAvKioKICAgKiBAfQogICAqLwotICAKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKIAotI2VuZGlmIC8qX19TVE0zMkY3eHhfSEFMX0RBQ19IICovCisKKyNlbmRpZiAvKiBTVE0zMkY3eHhfSEFMX0RBQ19IICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKiogKEMpIENPUFlSSUdIVCBTVE1pY3JvZWxlY3Ryb25pY3MgKioqKipFTkQgT0YgRklMRSoqKiovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9kYWNfZXguaCBiL0luYy9zdG0zMmY3eHhfaGFsX2RhY19leC5oCmluZGV4IDJlMzY1MGQuLjE2NDZjOGUgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2RhY19leC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2RhY19leC5oCkBAIC0xLDggKzEsOCBAQAogLyoqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqIEBmaWxlICAgIHN0bTMyZjd4eF9oYWxfZGFjLmgKKyAgKiBAZmlsZSAgICBzdG0zMmY3eHhfaGFsX2RhY19leC5oCiAgICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KLSAgKiBAYnJpZWYgICBIZWFkZXIgZmlsZSBvZiBEQUMgSEFMIEV4dGVuc2lvbiBtb2R1bGUuCisgICogQGJyaWVmICAgSGVhZGVyIGZpbGUgb2YgREFDIEhBTCBFeHRlbmRlZCBtb2R1bGUuCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgpAQCAtMTgsNTcgKzE4LDY2IEBACiAgICovCiAKIC8qIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0jaWZuZGVmIF9fU1RNMzJGN3h4X0hBTF9EQUNfRVhfSAotI2RlZmluZSBfX1NUTTMyRjd4eF9IQUxfREFDX0VYX0gKKyNpZm5kZWYgU1RNMzJGN3h4X0hBTF9EQUNfRVhfSAorI2RlZmluZSBTVE0zMkY3eHhfSEFMX0RBQ19FWF9ICiAKICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgeworZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSNpbmNsdWRlICJzdG0zMmY3eHhfaGFsX2RlZi5oIgotCiAvKiogQGFkZHRvZ3JvdXAgU1RNMzJGN3h4X0hBTF9Ecml2ZXIKICAgKiBAewogICAqLwogCisvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2luY2x1ZGUgInN0bTMyZjd4eF9oYWxfZGVmLmgiCisKKyNpZiBkZWZpbmVkKERBQykKKwogLyoqIEBhZGR0b2dyb3VwIERBQ0V4CiAgICogQHsKICAgKi8KIAogLyogRXhwb3J0ZWQgdHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyoqCisgICogQGJyaWVmICBIQUwgU3RhdGUgc3RydWN0dXJlcyBkZWZpbml0aW9uCisgICovCisKIC8qIEV4cG9ydGVkIGNvbnN0YW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiogQGRlZmdyb3VwIERBQ0V4X0V4cG9ydGVkX0NvbnN0YW50cyBEQUMgRXhwb3J0ZWQgQ29uc3RhbnRzCisKKy8qKiBAZGVmZ3JvdXAgREFDRXhfRXhwb3J0ZWRfQ29uc3RhbnRzIERBQ0V4IEV4cG9ydGVkIENvbnN0YW50cwogICAqIEB7CiAgICovCi0gICAKLS8qKiBAZGVmZ3JvdXAgREFDRXhfbGZzcnVubWFza190cmlhbmdsZWFtcGxpdHVkZSBEQUMgTEZTIFJ1biBNYXNrIFRyaWFuZ2xlIEFtcGxpdHVkZQorCisvKiogQGRlZmdyb3VwIERBQ0V4X2xmc3J1bm1hc2tfdHJpYW5nbGVhbXBsaXR1ZGUgREFDRXggbGZzcnVubWFzayB0cmlhbmdsZSBhbXBsaXR1ZGUKICAgKiBAewogICAqLwotI2RlZmluZSBEQUNfTEZTUlVOTUFTS19CSVQwICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpIC8qITwgVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0MCBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uICovCi0jZGVmaW5lIERBQ19MRlNSVU5NQVNLX0JJVFMxXzAgICAgICAgICAgICAgKCh1aW50MzJfdClEQUNfQ1JfTUFNUDFfMCkgLyohPCBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbMTowXSBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uICovCi0jZGVmaW5lIERBQ19MRlNSVU5NQVNLX0JJVFMyXzAgICAgICAgICAgICAgKCh1aW50MzJfdClEQUNfQ1JfTUFNUDFfMSkgLyohPCBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbMjowXSBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uICovCi0jZGVmaW5lIERBQ19MRlNSVU5NQVNLX0JJVFMzXzAgICAgICAgICAgICAgKCh1aW50MzJfdClEQUNfQ1JfTUFNUDFfMSB8IERBQ19DUl9NQU1QMV8wKS8qITwgVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0WzM6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAqLwotI2RlZmluZSBEQUNfTEZTUlVOTUFTS19CSVRTNF8wICAgICAgICAgICAgICgodWludDMyX3QpREFDX0NSX01BTVAxXzIpIC8qITwgVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0WzQ6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAqLwotI2RlZmluZSBEQUNfTEZTUlVOTUFTS19CSVRTNV8wICAgICAgICAgICAgICgodWludDMyX3QpREFDX0NSX01BTVAxXzIgfCBEQUNfQ1JfTUFNUDFfMCkgLyohPCBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbNTowXSBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uICovCi0jZGVmaW5lIERBQ19MRlNSVU5NQVNLX0JJVFM2XzAgICAgICAgICAgICAgKCh1aW50MzJfdClEQUNfQ1JfTUFNUDFfMiB8IERBQ19DUl9NQU1QMV8xKSAvKiE8IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGJpdFs2OjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24gKi8KLSNkZWZpbmUgREFDX0xGU1JVTk1BU0tfQklUUzdfMCAgICAgICAgICAgICAoKHVpbnQzMl90KURBQ19DUl9NQU1QMV8yIHwgREFDX0NSX01BTVAxXzEgfCBEQUNfQ1JfTUFNUDFfMCkgLyohPCBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbNzowXSBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uICovCi0jZGVmaW5lIERBQ19MRlNSVU5NQVNLX0JJVFM4XzAgICAgICAgICAgICAgKCh1aW50MzJfdClEQUNfQ1JfTUFNUDFfMykgLyohPCBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbODowXSBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uICovCi0jZGVmaW5lIERBQ19MRlNSVU5NQVNLX0JJVFM5XzAgICAgICAgICAgICAgKCh1aW50MzJfdClEQUNfQ1JfTUFNUDFfMyB8IERBQ19DUl9NQU1QMV8wKSAvKiE8IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGJpdFs5OjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24gKi8KLSNkZWZpbmUgREFDX0xGU1JVTk1BU0tfQklUUzEwXzAgICAgICAgICAgICAoKHVpbnQzMl90KURBQ19DUl9NQU1QMV8zIHwgREFDX0NSX01BTVAxXzEpIC8qITwgVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0WzEwOjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24gKi8KLSNkZWZpbmUgREFDX0xGU1JVTk1BU0tfQklUUzExXzAgICAgICAgICAgICAoKHVpbnQzMl90KURBQ19DUl9NQU1QMV8zIHwgREFDX0NSX01BTVAxXzEgfCBEQUNfQ1JfTUFNUDFfMCkgLyohPCBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbMTE6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAqLwotI2RlZmluZSBEQUNfVFJJQU5HTEVBTVBMSVRVREVfMSAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgMSAqLwotI2RlZmluZSBEQUNfVFJJQU5HTEVBTVBMSVRVREVfMyAgICAgICAgICAgICgodWludDMyX3QpREFDX0NSX01BTVAxXzApIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgMyAqLwotI2RlZmluZSBEQUNfVFJJQU5HTEVBTVBMSVRVREVfNyAgICAgICAgICAgICgodWludDMyX3QpREFDX0NSX01BTVAxXzEpIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgNyAqLwotI2RlZmluZSBEQUNfVFJJQU5HTEVBTVBMSVRVREVfMTUgICAgICAgICAgICgodWludDMyX3QpREFDX0NSX01BTVAxXzEgfCBEQUNfQ1JfTUFNUDFfMCkgLyohPCBTZWxlY3QgbWF4IHRyaWFuZ2xlIGFtcGxpdHVkZSBvZiAxNSAqLwotI2RlZmluZSBEQUNfVFJJQU5HTEVBTVBMSVRVREVfMzEgICAgICAgICAgICgodWludDMyX3QpREFDX0NSX01BTVAxXzIpIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgMzEgKi8KLSNkZWZpbmUgREFDX1RSSUFOR0xFQU1QTElUVURFXzYzICAgICAgICAgICAoKHVpbnQzMl90KURBQ19DUl9NQU1QMV8yIHwgREFDX0NSX01BTVAxXzApIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgNjMgKi8KLSNkZWZpbmUgREFDX1RSSUFOR0xFQU1QTElUVURFXzEyNyAgICAgICAgICAoKHVpbnQzMl90KURBQ19DUl9NQU1QMV8yIHwgREFDX0NSX01BTVAxXzEpIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgMTI3ICovCi0jZGVmaW5lIERBQ19UUklBTkdMRUFNUExJVFVERV8yNTUgICAgICAgICAgKCh1aW50MzJfdClEQUNfQ1JfTUFNUDFfMiB8IERBQ19DUl9NQU1QMV8xIHwgREFDX0NSX01BTVAxXzApIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgMjU1ICovCi0jZGVmaW5lIERBQ19UUklBTkdMRUFNUExJVFVERV81MTEgICAgICAgICAgKCh1aW50MzJfdClEQUNfQ1JfTUFNUDFfMykgLyohPCBTZWxlY3QgbWF4IHRyaWFuZ2xlIGFtcGxpdHVkZSBvZiA1MTEgKi8KLSNkZWZpbmUgREFDX1RSSUFOR0xFQU1QTElUVURFXzEwMjMgICAgICAgICAoKHVpbnQzMl90KURBQ19DUl9NQU1QMV8zIHwgREFDX0NSX01BTVAxXzApIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgMTAyMyAqLwotI2RlZmluZSBEQUNfVFJJQU5HTEVBTVBMSVRVREVfMjA0NyAgICAgICAgICgodWludDMyX3QpREFDX0NSX01BTVAxXzMgfCBEQUNfQ1JfTUFNUDFfMSkgLyohPCBTZWxlY3QgbWF4IHRyaWFuZ2xlIGFtcGxpdHVkZSBvZiAyMDQ3ICovCi0jZGVmaW5lIERBQ19UUklBTkdMRUFNUExJVFVERV80MDk1ICAgICAgICAgKCh1aW50MzJfdClEQUNfQ1JfTUFNUDFfMyB8IERBQ19DUl9NQU1QMV8xIHwgREFDX0NSX01BTVAxXzApIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgNDA5NSAqLworI2RlZmluZSBEQUNfTEZTUlVOTUFTS19CSVQwICAgICAgICAgICAgICAgIDB4MDAwMDAwMDBVTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXQwIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24gKi8KKyNkZWZpbmUgREFDX0xGU1JVTk1BU0tfQklUUzFfMCAgICAgICAgICAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFDX0NSX01BTVAxXzApIC8qITwgVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0WzE6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAqLworI2RlZmluZSBEQUNfTEZTUlVOTUFTS19CSVRTMl8wICAgICAgICAgICAgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFDX0NSX01BTVAxXzEgICAgICAgICAgICAgICAgICkgLyohPCBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbMjowXSBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uICovCisjZGVmaW5lIERBQ19MRlNSVU5NQVNLX0JJVFMzXzAgICAgICAgICAgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQUNfQ1JfTUFNUDFfMSB8IERBQ19DUl9NQU1QMV8wKSAvKiE8IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGJpdFszOjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24gKi8KKyNkZWZpbmUgREFDX0xGU1JVTk1BU0tfQklUUzRfMCAgICAgICAgICAgICAoICAgICAgICAgICAgICAgICBEQUNfQ1JfTUFNUDFfMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIC8qITwgVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0WzQ6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAqLworI2RlZmluZSBEQUNfTEZTUlVOTUFTS19CSVRTNV8wICAgICAgICAgICAgICggICAgICAgICAgICAgICAgIERBQ19DUl9NQU1QMV8yICAgICAgICAgICAgICAgICAgfCBEQUNfQ1JfTUFNUDFfMCkgLyohPCBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbNTowXSBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uICovCisjZGVmaW5lIERBQ19MRlNSVU5NQVNLX0JJVFM2XzAgICAgICAgICAgICAgKCAgICAgICAgICAgICAgICAgREFDX0NSX01BTVAxXzIgfCBEQUNfQ1JfTUFNUDFfMSAgICAgICAgICAgICAgICAgKSAvKiE8IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGJpdFs2OjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24gKi8KKyNkZWZpbmUgREFDX0xGU1JVTk1BU0tfQklUUzdfMCAgICAgICAgICAgICAoICAgICAgICAgICAgICAgICBEQUNfQ1JfTUFNUDFfMiB8IERBQ19DUl9NQU1QMV8xIHwgREFDX0NSX01BTVAxXzApIC8qITwgVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0Wzc6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAqLworI2RlZmluZSBEQUNfTEZTUlVOTUFTS19CSVRTOF8wICAgICAgICAgICAgIChEQUNfQ1JfTUFNUDFfMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgLyohPCBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbODowXSBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uICovCisjZGVmaW5lIERBQ19MRlNSVU5NQVNLX0JJVFM5XzAgICAgICAgICAgICAgKERBQ19DUl9NQU1QMV8zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERBQ19DUl9NQU1QMV8wKSAvKiE8IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGJpdFs5OjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24gKi8KKyNkZWZpbmUgREFDX0xGU1JVTk1BU0tfQklUUzEwXzAgICAgICAgICAgICAoREFDX0NSX01BTVAxXzMgICAgICAgICAgICAgICAgICB8IERBQ19DUl9NQU1QMV8xICAgICAgICAgICAgICAgICApIC8qITwgVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0WzEwOjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24gKi8KKyNkZWZpbmUgREFDX0xGU1JVTk1BU0tfQklUUzExXzAgICAgICAgICAgICAoREFDX0NSX01BTVAxXzMgICAgICAgICAgICAgICAgICB8IERBQ19DUl9NQU1QMV8xIHwgREFDX0NSX01BTVAxXzApIC8qITwgVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0WzExOjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24gKi8KKyNkZWZpbmUgREFDX1RSSUFOR0xFQU1QTElUVURFXzEgICAgICAgICAgICAweDAwMDAwMDAwVUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgMSAqLworI2RlZmluZSBEQUNfVFJJQU5HTEVBTVBMSVRVREVfMyAgICAgICAgICAgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQUNfQ1JfTUFNUDFfMCkgLyohPCBTZWxlY3QgbWF4IHRyaWFuZ2xlIGFtcGxpdHVkZSBvZiAzICovCisjZGVmaW5lIERBQ19UUklBTkdMRUFNUExJVFVERV83ICAgICAgICAgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQUNfQ1JfTUFNUDFfMSAgICAgICAgICAgICAgICAgKSAvKiE8IFNlbGVjdCBtYXggdHJpYW5nbGUgYW1wbGl0dWRlIG9mIDcgKi8KKyNkZWZpbmUgREFDX1RSSUFOR0xFQU1QTElUVURFXzE1ICAgICAgICAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBQ19DUl9NQU1QMV8xIHwgREFDX0NSX01BTVAxXzApIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgMTUgKi8KKyNkZWZpbmUgREFDX1RSSUFOR0xFQU1QTElUVURFXzMxICAgICAgICAgICAoICAgICAgICAgICAgICAgICBEQUNfQ1JfTUFNUDFfMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgMzEgKi8KKyNkZWZpbmUgREFDX1RSSUFOR0xFQU1QTElUVURFXzYzICAgICAgICAgICAoICAgICAgICAgICAgICAgICBEQUNfQ1JfTUFNUDFfMiAgICAgICAgICAgICAgICAgIHwgREFDX0NSX01BTVAxXzApIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgNjMgKi8KKyNkZWZpbmUgREFDX1RSSUFOR0xFQU1QTElUVURFXzEyNyAgICAgICAgICAoICAgICAgICAgICAgICAgICBEQUNfQ1JfTUFNUDFfMiB8IERBQ19DUl9NQU1QMV8xICAgICAgICAgICAgICAgICApIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgMTI3ICovCisjZGVmaW5lIERBQ19UUklBTkdMRUFNUExJVFVERV8yNTUgICAgICAgICAgKCAgICAgICAgICAgICAgICAgREFDX0NSX01BTVAxXzIgfCBEQUNfQ1JfTUFNUDFfMSB8IERBQ19DUl9NQU1QMV8wKSAvKiE8IFNlbGVjdCBtYXggdHJpYW5nbGUgYW1wbGl0dWRlIG9mIDI1NSAqLworI2RlZmluZSBEQUNfVFJJQU5HTEVBTVBMSVRVREVfNTExICAgICAgICAgIChEQUNfQ1JfTUFNUDFfMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgLyohPCBTZWxlY3QgbWF4IHRyaWFuZ2xlIGFtcGxpdHVkZSBvZiA1MTEgKi8KKyNkZWZpbmUgREFDX1RSSUFOR0xFQU1QTElUVURFXzEwMjMgICAgICAgICAoREFDX0NSX01BTVAxXzMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgREFDX0NSX01BTVAxXzApIC8qITwgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgMTAyMyAqLworI2RlZmluZSBEQUNfVFJJQU5HTEVBTVBMSVRVREVfMjA0NyAgICAgICAgIChEQUNfQ1JfTUFNUDFfMyAgICAgICAgICAgICAgICAgIHwgREFDX0NSX01BTVAxXzEgICAgICAgICAgICAgICAgICkgLyohPCBTZWxlY3QgbWF4IHRyaWFuZ2xlIGFtcGxpdHVkZSBvZiAyMDQ3ICovCisjZGVmaW5lIERBQ19UUklBTkdMRUFNUExJVFVERV80MDk1ICAgICAgICAgKERBQ19DUl9NQU1QMV8zICAgICAgICAgICAgICAgICAgfCBEQUNfQ1JfTUFNUDFfMSB8IERBQ19DUl9NQU1QMV8wKSAvKiE8IFNlbGVjdCBtYXggdHJpYW5nbGUgYW1wbGl0dWRlIG9mIDQwOTUgKi8KKwogLyoqCiAgICogQH0KICAgKi8KQEAgLTc2LDQ3ICs4NSwyNSBAQAogLyoqCiAgICogQH0KICAgKi8KKwogLyogRXhwb3J0ZWQgbWFjcm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qIEV4cG9ydGVkIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiogQGFkZHRvZ3JvdXAgREFDRXhfRXhwb3J0ZWRfRnVuY3Rpb25zCisKKworLyogUHJpdmF0ZSBtYWNybyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyoqIEBkZWZncm91cCBEQUNFeF9Qcml2YXRlX01hY3JvcyBEQUNFeCBQcml2YXRlIE1hY3JvcwogICAqIEB7CiAgICovCisjZGVmaW5lIElTX0RBQ19UUklHR0VSKFRSSUdHRVIpICgoKFRSSUdHRVIpID09IERBQ19UUklHR0VSX05PTkUpICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVFJJR0dFUikgPT0gREFDX1RSSUdHRVJfVDJfVFJHTykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUUklHR0VSKSA9PSBEQUNfVFJJR0dFUl9UOF9UUkdPKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRSSUdHRVIpID09IERBQ19UUklHR0VSX1Q3X1RSR08pIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVFJJR0dFUikgPT0gREFDX1RSSUdHRVJfVDVfVFJHTykgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUUklHR0VSKSA9PSBEQUNfVFJJR0dFUl9UNl9UUkdPKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFRSSUdHRVIpID09IERBQ19UUklHR0VSX1Q0X1RSR08pIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVFJJR0dFUikgPT0gREFDX1RSSUdHRVJfRVhUX0lUOSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChUUklHR0VSKSA9PSBEQUNfVFJJR0dFUl9TT0ZUV0FSRSkpCiAKLS8qKiBAYWRkdG9ncm91cCBEQUNFeF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAxCi0gICogQHsKLSAgKi8KLS8qIEV4dGVuc2lvbiBmZWF0dXJlcyBmdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi11aW50MzJfdCBIQUxfREFDRXhfRHVhbEdldFZhbHVlKERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNFeF9UcmlhbmdsZVdhdmVHZW5lcmF0ZShEQUNfSGFuZGxlVHlwZURlZiogaGRhYywgdWludDMyX3QgQ2hhbm5lbCwgdWludDMyX3QgQW1wbGl0dWRlKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNFeF9Ob2lzZVdhdmVHZW5lcmF0ZShEQUNfSGFuZGxlVHlwZURlZiogaGRhYywgdWludDMyX3QgQ2hhbm5lbCwgdWludDMyX3QgQW1wbGl0dWRlKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNFeF9EdWFsU2V0VmFsdWUoREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMsIHVpbnQzMl90IEFsaWdubWVudCwgdWludDMyX3QgRGF0YTEsIHVpbnQzMl90IERhdGEyKTsKLQotdm9pZCBIQUxfREFDRXhfQ29udkNwbHRDYWxsYmFja0NoMihEQUNfSGFuZGxlVHlwZURlZiogaGRhYyk7Ci12b2lkIEhBTF9EQUNFeF9Db252SGFsZkNwbHRDYWxsYmFja0NoMihEQUNfSGFuZGxlVHlwZURlZiogaGRhYyk7Ci12b2lkIEhBTF9EQUNFeF9FcnJvckNhbGxiYWNrQ2gyKERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjKTsKLXZvaWQgSEFMX0RBQ0V4X0RNQVVuZGVycnVuQ2FsbGJhY2tDaDIoREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMpOwotLyoqCi0gICogQH0KLSAgKi8KLQotLyoqCi0gICogQH0KLSAgKi8KLS8qIFByaXZhdGUgdHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiBQcml2YXRlIHZhcmlhYmxlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyogUHJpdmF0ZSBjb25zdGFudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qKiBAZGVmZ3JvdXAgREFDRXhfUHJpdmF0ZV9Db25zdGFudHMgREFDIFByaXZhdGUgQ29uc3RhbnRzCi0gICogQHsKLSAgKi8KLQotLyoqCi0gICogQH0KLSAgKi8KLQotLyogUHJpdmF0ZSBtYWNyb3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qKiBAZGVmZ3JvdXAgREFDRXhfUHJpdmF0ZV9NYWNyb3MgREFDIFByaXZhdGUgTWFjcm9zCi0gICogQHsKLSAgKi8KICNkZWZpbmUgSVNfREFDX0xGU1JfVU5NQVNLX1RSSUFOR0xFX0FNUExJVFVERShWQUxVRSkgKCgoVkFMVUUpID09IERBQ19MRlNSVU5NQVNLX0JJVDApIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVkFMVUUpID09IERBQ19MRlNSVU5NQVNLX0JJVFMxXzApIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVkFMVUUpID09IERBQ19MRlNSVU5NQVNLX0JJVFMyXzApIHx8IFwKQEAgLTE0NSwxNiArMTMyLDUzIEBACiAgICogQH0KICAgKi8KIAotLyogUHJpdmF0ZSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qKiBAZGVmZ3JvdXAgREFDRXhfUHJpdmF0ZV9GdW5jdGlvbnMgREFDIFByaXZhdGUgRnVuY3Rpb25zCisvKiBFeHBvcnRlZCBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogRXh0ZW5kZWQgZmVhdHVyZXMgZnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiogQGFkZHRvZ3JvdXAgREFDRXhfRXhwb3J0ZWRfRnVuY3Rpb25zCiAgICogQHsKICAgKi8KKworLyoqIEBhZGR0b2dyb3VwIERBQ0V4X0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDIKKyAgKiBAeworICAqLworLyogSU8gb3BlcmF0aW9uIGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RBQ0V4X1RyaWFuZ2xlV2F2ZUdlbmVyYXRlKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjLCB1aW50MzJfdCBDaGFubmVsLCB1aW50MzJfdCBBbXBsaXR1ZGUpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RBQ0V4X05vaXNlV2F2ZUdlbmVyYXRlKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjLCB1aW50MzJfdCBDaGFubmVsLCB1aW50MzJfdCBBbXBsaXR1ZGUpOworCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDRXhfRHVhbFN0YXJ0KERBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNFeF9EdWFsU3RvcChEQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDRXhfRHVhbFNldFZhbHVlKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjLCB1aW50MzJfdCBBbGlnbm1lbnQsIHVpbnQzMl90IERhdGExLCB1aW50MzJfdCBEYXRhMik7Cit1aW50MzJfdCBIQUxfREFDRXhfRHVhbEdldFZhbHVlKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKKwordm9pZCBIQUxfREFDRXhfQ29udkNwbHRDYWxsYmFja0NoMihEQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7Cit2b2lkIEhBTF9EQUNFeF9Db252SGFsZkNwbHRDYWxsYmFja0NoMihEQUNfSGFuZGxlVHlwZURlZiAqaGRhYyk7Cit2b2lkIEhBTF9EQUNFeF9FcnJvckNhbGxiYWNrQ2gyKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjKTsKK3ZvaWQgSEFMX0RBQ0V4X0RNQVVuZGVycnVuQ2FsbGJhY2tDaDIoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpOworCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAYWRkdG9ncm91cCBEQUNFeF9Qcml2YXRlX0Z1bmN0aW9ucworICAqIEB7CisgICovCisKKy8qIERBQ19ETUFDb252Q3BsdENoMiAvIERBQ19ETUFFcnJvckNoMiAvIERBQ19ETUFIYWxmQ29udkNwbHRDaDIgKi8KKy8qIGFyZSBjYWxsZWQgYnkgSEFMX0RBQ19TdGFydF9ETUEgKi8KIHZvaWQgREFDX0RNQUNvbnZDcGx0Q2gyKERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKTsKIHZvaWQgREFDX0RNQUVycm9yQ2gyKERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKTsKLXZvaWQgREFDX0RNQUhhbGZDb252Q3BsdENoMihETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7IAotLyoqCi0gICogQH0KLSAgKi8KK3ZvaWQgREFDX0RNQUhhbGZDb252Q3BsdENoMihETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7CiAKIC8qKgogICAqIEB9CkBAIC0xNjMsMTEgKzE4NywxNyBAQAogLyoqCiAgICogQH0KICAgKi8KLSAgCisKKyNlbmRpZiAvKiBEQUMgKi8KKworLyoqCisgICogQH0KKyAgKi8KKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKIAotI2VuZGlmIC8qX19TVE0zMkY3eHhfSEFMX0RBQ19FWF9IICovCisjZW5kaWYgLyogU1RNMzJGN3h4X0hBTF9EQUNfRVhfSCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfZGVmLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9kZWYuaAppbmRleCAzMzRiNDJjLi4zZDk0ZmIyIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9kZWYuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9kZWYuaApAQCAtMTA3LDcgKzEwNywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfXdoaWxlICgwVSkKICNlbmRpZiAvKiBVU0VfUlRPUyAqLwogCi0jaWYgZGVmaW5lZCAoIF9fR05VQ19fICkgJiYgIWRlZmluZWQgKF9fQ0NfQVJNKSAvKiBHTlUgQ29tcGlsZXIgKi8KKyNpZiBkZWZpbmVkIChfX0FSTUNDX1ZFUlNJT04pICYmIChfX0FSTUNDX1ZFUlNJT04gPj0gNjAxMDA1MCkgLyogQVJNIENvbXBpbGVyIFY2ICovCisgICNpZm5kZWYgX193ZWFrCisgICAgI2RlZmluZSBfX3dlYWsgIF9fYXR0cmlidXRlX18oKHdlYWspKQorICAjZW5kaWYKKyAgI2lmbmRlZiBfX3BhY2tlZAorICAgICNkZWZpbmUgX19wYWNrZWQgIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpCisgICNlbmRpZgorI2VsaWYgZGVmaW5lZCAoIF9fR05VQ19fICkgJiYgIWRlZmluZWQgKF9fQ0NfQVJNKSAvKiBHTlUgQ29tcGlsZXIgKi8KICAgI2lmbmRlZiBfX3dlYWsKICAgICAjZGVmaW5lIF9fd2VhayAgIF9fYXR0cmlidXRlX18oKHdlYWspKQogICAjZW5kaWYgLyogX193ZWFrICovCkBAIC0xMTgsNyArMTI1LDE0IEBACiAKIAogLyogTWFjcm8gdG8gZ2V0IHZhcmlhYmxlIGFsaWduZWQgb24gNC1ieXRlcywgZm9yIF9fSUNDQVJNX18gdGhlIGRpcmVjdGl2ZSAiI3ByYWdtYSBkYXRhX2FsaWdubWVudD00IiBtdXN0IGJlIHVzZWQgaW5zdGVhZCAqLwotI2lmIGRlZmluZWQgKCBfX0dOVUNfXyApICYmICFkZWZpbmVkIChfX0NDX0FSTSkgLyogR05VIENvbXBpbGVyICovCisjaWYgZGVmaW5lZCAoX19BUk1DQ19WRVJTSU9OKSAmJiAoX19BUk1DQ19WRVJTSU9OID49IDYwMTAwNTApIC8qIEFSTSBDb21waWxlciBWNiAqLworICAjaWZuZGVmIF9fQUxJR05fQkVHSU4KKyAgICAjZGVmaW5lIF9fQUxJR05fQkVHSU4KKyAgI2VuZGlmCisgICNpZm5kZWYgX19BTElHTl9FTkQKKyAgICAjZGVmaW5lIF9fQUxJR05fRU5EICAgICAgX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDQpKSkKKyAgI2VuZGlmCisjZWxpZiBkZWZpbmVkICggX19HTlVDX18gKSAmJiAhZGVmaW5lZCAoX19DQ19BUk0pIC8qIEdOVSBDb21waWxlciAqLwogICAjaWZuZGVmIF9fQUxJR05fRU5ECiAgICAgI2RlZmluZSBfX0FMSUdOX0VORCAgICBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoNCkpKQogICAjZW5kaWYgLyogX19BTElHTl9FTkQgKi8KQEAgLTEzMCw3ICsxNDQsNyBAQAogICAgICNkZWZpbmUgX19BTElHTl9FTkQKICAgI2VuZGlmIC8qIF9fQUxJR05fRU5EICovCiAgICNpZm5kZWYgX19BTElHTl9CRUdJTiAgICAgIAotICAgICNpZiBkZWZpbmVkICAgKF9fQ0NfQVJNKSAgICAgIC8qIEFSTSBDb21waWxlciAqLworICAgICNpZiBkZWZpbmVkICAgKF9fQ0NfQVJNKSAgICAgIC8qIEFSTSBDb21waWxlciBWNSovCiAgICAgICAjZGVmaW5lIF9fQUxJR05fQkVHSU4gICAgX19hbGlnbig0KQogICAgICNlbGlmIGRlZmluZWQgKF9fSUNDQVJNX18pICAgIC8qIElBUiBDb21waWxlciAqLwogICAgICAgI2RlZmluZSBfX0FMSUdOX0JFR0lOIApAQCAtMTUwLDkgKzE2NCw5IEBACiAvKioKICAgKiBAYnJpZWYgIF9fUkFNX0ZVTkMgZGVmaW5pdGlvbgogICAqLyAKLSNpZiBkZWZpbmVkICggX19DQ19BUk0gICApCi0vKiBBUk0gQ29tcGlsZXIKLSAgIC0tLS0tLS0tLS0tLQorI2lmIGRlZmluZWQgKCBfX0NDX0FSTSAgICkgfHwgKGRlZmluZWQgKF9fQVJNQ0NfVkVSU0lPTikgJiYgKF9fQVJNQ0NfVkVSU0lPTiA+PSA2MDEwMDUwKSkKKy8qIEFSTSBDb21waWxlciBWNC9WNSBhbmQgVjYKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICBSQU0gZnVuY3Rpb25zIGFyZSBkZWZpbmVkIHVzaW5nIHRoZSB0b29sY2hhaW4gb3B0aW9ucy4gCiAgICBGdW5jdGlvbnMgdGhhdCBhcmUgZXhlY3V0ZWQgaW4gUkFNIHNob3VsZCByZXNpZGUgaW4gYSBzZXBhcmF0ZSBzb3VyY2UgbW9kdWxlLgogICAgVXNpbmcgdGhlICdPcHRpb25zIGZvciBGaWxlJyBkaWFsb2cgeW91IGNhbiBzaW1wbHkgY2hhbmdlIHRoZSAnQ29kZSAvIENvbnN0JyAKQEAgLTE4Miw5ICsxOTYsOSBAQAogLyoqIAogICAqIEBicmllZiAgX19OT0lOTElORSBkZWZpbml0aW9uCiAgICovIAotI2lmIGRlZmluZWQgKCBfX0NDX0FSTSAgICkgfHwgZGVmaW5lZCAgICggIF9fR05VQ19fICApCi0vKiBBUk0gJiBHTlVDb21waWxlciAKLSAgIC0tLS0tLS0tLS0tLS0tLS0gCisjaWYgZGVmaW5lZCAoIF9fQ0NfQVJNICAgKSB8fCAoZGVmaW5lZCAoX19BUk1DQ19WRVJTSU9OKSAmJiAoX19BUk1DQ19WRVJTSU9OID49IDYwMTAwNTApKSB8fCBkZWZpbmVkICAgKCAgX19HTlVDX18gICkKKy8qIEFSTSBWNC9WNSBhbmQgVjYgJiBHTlUgQ29tcGlsZXIKKyAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICovCiAjZGVmaW5lIF9fTk9JTkxJTkUgX19hdHRyaWJ1dGVfXyAoIChub2lubGluZSkgKQogCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9kZnNkbS5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfZGZzZG0uaAppbmRleCA1M2NkNzk0Li42NzdkYmFkIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9kZnNkbS5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2Rmc2RtLmgKQEAgLTMwMSw4ICszMDEsOCBAQAogLyoqIEBkZWZncm91cCBERlNETV9DaGFubmVsX091cHV0Q2xvY2sgREZTRE0gY2hhbm5lbCBvdXRwdXQgY2xvY2sgc2VsZWN0aW9uCiAgICogQHsKICAgKi8KLSNkZWZpbmUgREZTRE1fQ0hBTk5FTF9PVVRQVVRfQ0xPQ0tfU1lTVEVNICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpIC8qITwgU291cmNlIGZvciBvdXB1dCBjbG9jayBpcyBzeXN0ZW0gY2xvY2sgKi8KLSNkZWZpbmUgREZTRE1fQ0hBTk5FTF9PVVRQVVRfQ0xPQ0tfQVVESU8gICAgIERGU0RNX0NIQ0ZHUjFfQ0tPVVRTUkMgIC8qITwgU291cmNlIGZvciBvdXB1dCBjbG9jayBpcyBhdWRpbyBjbG9jayAqLworI2RlZmluZSBERlNETV9DSEFOTkVMX09VVFBVVF9DTE9DS19TWVNURU0gICAgKCh1aW50MzJfdCkweDAwMDAwMDAwVSkgLyohPCBTb3VyY2UgZm9yIG91dHB1dCBjbG9jayBpcyBzeXN0ZW0gY2xvY2sgKi8KKyNkZWZpbmUgREZTRE1fQ0hBTk5FTF9PVVRQVVRfQ0xPQ0tfQVVESU8gICAgIERGU0RNX0NIQ0ZHUjFfQ0tPVVRTUkMgIC8qITwgU291cmNlIGZvciBvdXRwdXQgY2xvY2sgaXMgYXVkaW8gY2xvY2sgKi8KIC8qKgogICAqIEB9CiAgICovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9kbWEyZC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfZG1hMmQuaAppbmRleCAzMWQ1YjFhLi43YWYwYzZjIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9kbWEyZC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2RtYTJkLmgKQEAgLTIyLDExICsyMiw5IEBACiAjZGVmaW5lIFNUTTMyRjd4eF9IQUxfRE1BMkRfSAogCiAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKK2V4dGVybiAiQyIgewogI2VuZGlmCiAKLSNpZiBkZWZpbmVkIChETUEyRCkKLQogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNpbmNsdWRlICJzdG0zMmY3eHhfaGFsX2RlZi5oIgogCkBAIC0zNCw2ICszMiw4IEBACiAgICogQHsKICAgKi8KIAorI2lmIGRlZmluZWQgKERNQTJEKQorCiAvKiogQGFkZHRvZ3JvdXAgRE1BMkQgRE1BMkQKICAgKiBAYnJpZWYgRE1BMkQgSEFMIG1vZHVsZSBkcml2ZXIKICAgKiBAewpAQCAtNzEsOSArNzEsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgdmFsdWUgb2YgQHJlZiBETUEyRF9PdXRwdXRfQ29sb3JfTW9kZS4gKi8KIAogICB1aW50MzJfdCAgICAgICAgICAgICBPdXRwdXRPZmZzZXQ7ICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBPZmZzZXQgdmFsdWUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwMDAgYW5kIE1heF9EYXRhID0gMHgzRkZGLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAwMCBhbmQgTWF4X0RhdGEgPSAweDNGRkYuICovCiAjaWYgZGVmaW5lZCAoRE1BMkRfQUxQSEFfSU5WX1JCX1NXQVBfU1VQUE9SVCkKLSAgdWludDMyX3QgICAgICAgICAgICAgQWxwaGFJbnZlcnRlZDsgICAgIC8qITwgU2VsZWN0IHJlZ3VsYXIgb3IgaW52ZXJ0ZWQgYWxwaGEgdmFsdWUgZm9yIHRoZSBvdXRwdXQgcGl4ZWwgZm9ybWF0IGNvbnZlcnRlci4KKyAgdWludDMyX3QgICAgICAgICAgICAgQWxwaGFJbnZlcnRlZDsgICAgIC8qITwgU2VsZWN0IHJlZ3VsYXIgb3IgaW52ZXJ0ZWQgYWxwaGEgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoZSBvdXRwdXQgcGl4ZWwgZm9ybWF0IGNvbnZlcnRlci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSB2YWx1ZSBvZiBAcmVmIERNQTJEX0FscGhhX0ludmVydGVkLiAqLwogCiAgIHVpbnQzMl90ICAgICAgICAgICAgIFJlZEJsdWVTd2FwOyAgICAgICAvKiE8IFNlbGVjdCByZWd1bGFyIG1vZGUgKFJHQiBvciBBUkdCKSBvciBzd2FwIG1vZGUgKEJHUiBvciBBQkdSKQpAQCAtOTQsNyArOTYsOCBAQAogdHlwZWRlZiBzdHJ1Y3QKIHsKICAgdWludDMyX3QgICAgICAgICAgICAgSW5wdXRPZmZzZXQ7ICAgICAgIC8qITwgQ29uZmlndXJlcyB0aGUgRE1BMkQgZm9yZWdyb3VuZCBvciBiYWNrZ3JvdW5kIG9mZnNldC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMDAwIGFuZCBNYXhfRGF0YSA9IDB4M0ZGRi4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbl9EYXRhID0gMHgwMDAwIGFuZCBNYXhfRGF0YSA9IDB4M0ZGRi4gKi8KIAogICB1aW50MzJfdCAgICAgICAgICAgICBJbnB1dENvbG9yTW9kZTsgICAgLyohPCBDb25maWd1cmVzIHRoZSBETUEyRCBmb3JlZ3JvdW5kIG9yIGJhY2tncm91bmQgY29sb3IgbW9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSB2YWx1ZSBvZiBAcmVmIERNQTJEX0lucHV0X0NvbG9yX01vZGUuICovCkBAIC0xMDIsOSArMTA1LDEyIEBACiAgIHVpbnQzMl90ICAgICAgICAgICAgIEFscGhhTW9kZTsgICAgICAgICAvKiE8IENvbmZpZ3VyZXMgdGhlIERNQTJEIGZvcmVncm91bmQgb3IgYmFja2dyb3VuZCBhbHBoYSBtb2RlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIHZhbHVlIG9mIEByZWYgRE1BMkRfQWxwaGFfTW9kZS4gKi8KIAotICB1aW50MzJfdCAgICAgICAgICAgICBJbnB1dEFscGhhOyAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIERNQTJEIGZvcmVncm91bmQgb3IgYmFja2dyb3VuZCBhbHBoYSB2YWx1ZSBhbmQgY29sb3IgdmFsdWUgaW4gY2FzZSBvZiBBOCBvciBBNCBjb2xvciBtb2RlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4RkYgZXhjZXB0IGZvciB0aGUgY29sb3IgbW9kZXMgZGV0YWlsZWQgYmVsb3cuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIEluIGNhc2Ugb2YgQTggb3IgQTQgY29sb3IgbW9kZSAoQVJHQiksIHRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbgorICB1aW50MzJfdCAgICAgICAgICAgICBJbnB1dEFscGhhOyAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIERNQTJEIGZvcmVncm91bmQgb3IgYmFja2dyb3VuZCBhbHBoYSB2YWx1ZSBhbmQgY29sb3IgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gY2FzZSBvZiBBOCBvciBBNCBjb2xvciBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBNYXhfRGF0YSA9IDB4RkYgZXhjZXB0IGZvciB0aGUgY29sb3IgbW9kZXMgZGV0YWlsZWQgYmVsb3cuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIEluIGNhc2Ugb2YgQTggb3IgQTQgY29sb3IgbW9kZSAoQVJHQiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAwMDAwMDAgYW5kIE1heF9EYXRhID0gMHhGRkZGRkZGRiB3aGVyZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIElucHV0QWxwaGFbMjQ6MzFdIGlzIHRoZSBhbHBoYSB2YWx1ZSBBTFBIQVswOjddCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSW5wdXRBbHBoYVsxNjoyM10gaXMgdGhlIHJlZCB2YWx1ZSBSRURbMDo3XQpAQCAtMTMyLDQ2ICsxMzgsNDYgQEAKICAgSEFMX0RNQTJEX1NUQVRFX1RJTUVPVVQgICAgICAgICAgID0gMHgwM1UsICAgIC8qITwgVGltZW91dCBzdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICBIQUxfRE1BMkRfU1RBVEVfRVJST1IgICAgICAgICAgICAgPSAweDA0VSwgICAgLyohPCBETUEyRCBzdGF0ZSBlcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgIEhBTF9ETUEyRF9TVEFURV9TVVNQRU5EICAgICAgICAgICA9IDB4MDVVICAgICAvKiE8IERNQTJEIHByb2Nlc3MgaXMgc3VzcGVuZGVkICAgICAgICAgICAgICAgICAgKi8KLX1IQUxfRE1BMkRfU3RhdGVUeXBlRGVmOworfSBIQUxfRE1BMkRfU3RhdGVUeXBlRGVmOwogCiAvKioKICAgKiBAYnJpZWYgIERNQTJEIGhhbmRsZSBTdHJ1Y3R1cmUgZGVmaW5pdGlvbgogICAqLwogdHlwZWRlZiBzdHJ1Y3QgX19ETUEyRF9IYW5kbGVUeXBlRGVmCiB7Ci0gIERNQTJEX1R5cGVEZWYgICAgICAgICAgICAgICAqSW5zdGFuY2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgRE1BMkQgcmVnaXN0ZXIgYmFzZSBhZGRyZXNzLiAgICAgICAgICAgICAgICovCisgIERNQTJEX1R5cGVEZWYgICAgICAgICAgICAgICAqSW5zdGFuY2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgRE1BMkQgcmVnaXN0ZXIgYmFzZSBhZGRyZXNzLiAgICAgICAgICAgKi8KIAotICBETUEyRF9Jbml0VHlwZURlZiAgICAgICAgICAgSW5pdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IERNQTJEIGNvbW11bmljYXRpb24gcGFyYW1ldGVycy4gICAgICAgICAgICAqLworICBETUEyRF9Jbml0VHlwZURlZiAgICAgICAgICAgSW5pdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IERNQTJEIGNvbW11bmljYXRpb24gcGFyYW1ldGVycy4gICAgICAgICovCiAKLSAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICgqIFhmZXJDcGx0Q2FsbGJhY2spKHN0cnVjdCBfX0RNQTJEX0hhbmRsZVR5cGVEZWYgKiBoZG1hMmQpOyAgLyohPCBETUEyRCB0cmFuc2ZlciBjb21wbGV0ZSBjYWxsYmFjay4gICAgICAgICAgKi8KKyAgdm9pZCAoKiBYZmVyQ3BsdENhbGxiYWNrKShzdHJ1Y3QgX19ETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQpOyAgICAgICAgLyohPCBETUEyRCB0cmFuc2ZlciBjb21wbGV0ZSBjYWxsYmFjay4gICAgICAqLwogCi0gIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAoKiBYZmVyRXJyb3JDYWxsYmFjaykoc3RydWN0IF9fRE1BMkRfSGFuZGxlVHlwZURlZiAqIGhkbWEyZCk7IC8qITwgRE1BMkQgdHJhbnNmZXIgZXJyb3IgY2FsbGJhY2suICAgICAgICAgICAgICovCisgIHZvaWQgKCogWGZlckVycm9yQ2FsbGJhY2spKHN0cnVjdCBfX0RNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCk7ICAgICAgIC8qITwgRE1BMkQgdHJhbnNmZXIgZXJyb3IgY2FsbGJhY2suICAgICAgICAgKi8KIAogI2lmIChVU0VfSEFMX0RNQTJEX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgKCogTGluZUV2ZW50Q2FsbGJhY2spKCBzdHJ1Y3QgX19ETUEyRF9IYW5kbGVUeXBlRGVmICogaGRtYTJkKTsgICAvKiE8IERNQTJEIGxpbmUgZXZlbnQgY2FsbGJhY2suICAgICAgKi8KKyAgdm9pZCAoKiBMaW5lRXZlbnRDYWxsYmFjaykoc3RydWN0IF9fRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkKTsgICAgICAgLyohPCBETUEyRCBsaW5lIGV2ZW50IGNhbGxiYWNrLiAgICAgICAgICAgICAqLwogCi0gIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAoKiBDTFVUTG9hZGluZ0NwbHRDYWxsYmFjaykoIHN0cnVjdCBfX0RNQTJEX0hhbmRsZVR5cGVEZWYgKiBoZG1hMmQpOyAvKiE8IERNQTJEIENMVVQgbG9hZGluZyBjb21wbGV0aW9uIGNhbGxiYWNrLiAqLworICB2b2lkICgqIENMVVRMb2FkaW5nQ3BsdENhbGxiYWNrKShzdHJ1Y3QgX19ETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQpOyAvKiE8IERNQTJEIENMVVQgbG9hZGluZyBjb21wbGV0aW9uIGNhbGxiYWNrICovCiAKLSAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICgqIE1zcEluaXRDYWxsYmFjaykoIHN0cnVjdCBfX0RNQTJEX0hhbmRsZVR5cGVEZWYgKiBoZG1hMmQpOyAgIC8qITwgRE1BMkQgTXNwIEluaXQgY2FsbGJhY2suICAgICAgICAgICovCisgIHZvaWQgKCogTXNwSW5pdENhbGxiYWNrKShzdHJ1Y3QgX19ETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQpOyAgICAgICAgIC8qITwgRE1BMkQgTXNwIEluaXQgY2FsbGJhY2suICAgICAgICAgICAgICAgKi8KIAotICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgKCogTXNwRGVJbml0Q2FsbGJhY2spKCBzdHJ1Y3QgX19ETUEyRF9IYW5kbGVUeXBlRGVmICogaGRtYTJkKTsgLyohPCBETUEyRCBNc3AgRGVJbml0IGNhbGxiYWNrLiAgICAgICAgKi8KKyAgdm9pZCAoKiBNc3BEZUluaXRDYWxsYmFjaykoc3RydWN0IF9fRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkKTsgICAgICAgLyohPCBETUEyRCBNc3AgRGVJbml0IGNhbGxiYWNrLiAgICAgICAgICAgICAqLwogCiAjZW5kaWYgLyogKFVTRV9IQUxfRE1BMkRfUkVHSVNURVJfQ0FMTEJBQ0tTKSAqLwogCi0gIERNQTJEX0xheWVyQ2ZnVHlwZURlZiAgICAgICBMYXllckNmZ1tNQVhfRE1BMkRfTEFZRVJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgRE1BMkQgTGF5ZXJzIHBhcmFtZXRlcnMgICAgICAgICAgICovCisgIERNQTJEX0xheWVyQ2ZnVHlwZURlZiAgICAgICBMYXllckNmZ1tNQVhfRE1BMkRfTEFZRVJdOyAgICAgICAgICAgICAgICAgIC8qITwgRE1BMkQgTGF5ZXJzIHBhcmFtZXRlcnMgICAgICAgICAgICAgICAgKi8KIAotICBIQUxfTG9ja1R5cGVEZWYgICAgICAgICAgICAgTG9jazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IERNQTJEIGxvY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBIQUxfTG9ja1R5cGVEZWYgICAgICAgICAgICAgTG9jazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IERNQTJEIGxvY2suICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAKLSAgX19JTyBIQUxfRE1BMkRfU3RhdGVUeXBlRGVmIFN0YXRlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBETUEyRCB0cmFuc2ZlciBzdGF0ZS4gICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JTyBIQUxfRE1BMkRfU3RhdGVUeXBlRGVmIFN0YXRlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBETUEyRCB0cmFuc2ZlciBzdGF0ZS4gICAgICAgICAgICAgICAgICAqLwogCi0gIF9fSU8gdWludDMyX3QgICAgICAgICAgICAgICBFcnJvckNvZGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgRE1BMkQgZXJyb3IgY29kZS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIF9fSU8gdWludDMyX3QgICAgICAgICAgICAgICBFcnJvckNvZGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgRE1BMkQgZXJyb3IgY29kZS4gICAgICAgICAgICAgICAgICAgICAgKi8KIH0gRE1BMkRfSGFuZGxlVHlwZURlZjsKIAogI2lmIChVU0VfSEFMX0RNQTJEX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogLyoqCiAgICogQGJyaWVmICBIQUwgRE1BMkQgQ2FsbGJhY2sgcG9pbnRlciBkZWZpbml0aW9uCiAgICovCi10eXBlZGVmICB2b2lkICgqcERNQTJEX0NhbGxiYWNrVHlwZURlZikoRE1BMkRfSGFuZGxlVHlwZURlZiAqIGhkbWEyZCk7IC8qITwgUG9pbnRlciB0byBhIERNQTJEIGNvbW1vbiBjYWxsYmFjayBmdW5jdGlvbiAqLwordHlwZWRlZiB2b2lkICgqcERNQTJEX0NhbGxiYWNrVHlwZURlZikoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkKTsgLyohPCBQb2ludGVyIHRvIGEgRE1BMkQgY29tbW9uIGNhbGxiYWNrIGZ1bmN0aW9uICovCiAjZW5kaWYgLyogVVNFX0hBTF9ETUEyRF9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIC8qKgogICAqIEB9CkBAIC0yNDIsMTAgKzI0OCwxMCBAQAogLyoqIEBkZWZncm91cCBETUEyRF9BbHBoYV9Nb2RlIERNQTJEIEFscGhhIE1vZGUKICAgKiBAewogICAqLwotI2RlZmluZSBETUEyRF9OT19NT0RJRl9BTFBIQSAgICAgICAgMHgwMDAwMDAwMFUgIC8qITwgTm8gbW9kaWZpY2F0aW9uIG9mIHRoZSBhbHBoYSBjaGFubmVsIHZhbHVlICovCisjZGVmaW5lIERNQTJEX05PX01PRElGX0FMUEhBICAgICAgICAweDAwMDAwMDAwVSAgLyohPCBObyBtb2RpZmljYXRpb24gb2YgdGhlIGFscGhhIGNoYW5uZWwgdmFsdWUgICAgICAgICAgICAgICAgICAgICAqLwogI2RlZmluZSBETUEyRF9SRVBMQUNFX0FMUEhBICAgICAgICAgMHgwMDAwMDAwMVUgIC8qITwgUmVwbGFjZSBvcmlnaW5hbCBhbHBoYSBjaGFubmVsIHZhbHVlIGJ5IHByb2dyYW1tZWQgYWxwaGEgdmFsdWUgKi8KICNkZWZpbmUgRE1BMkRfQ09NQklORV9BTFBIQSAgICAgICAgIDB4MDAwMDAwMDJVICAvKiE8IFJlcGxhY2Ugb3JpZ2luYWwgYWxwaGEgY2hhbm5lbCB2YWx1ZSBieSBwcm9ncmFtbWVkIGFscGhhIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBvcmlnaW5hbCBhbHBoYSBjaGFubmVsIHZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggb3JpZ2luYWwgYWxwaGEgY2hhbm5lbCB2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtMzEyLDcgKzMxOCw4IEBACiAvKiogQGRlZmdyb3VwIERNQTJEX0FsaWFzZXMgRE1BMkQgQVBJIEFsaWFzZXMKICAgKiBAewogICAqLwotI2RlZmluZSBIQUxfRE1BMkRfRGlzYWJsZUNMVVQgICAgICAgSEFMX0RNQTJEX0NMVVRMb2FkaW5nX0Fib3J0ICAgIC8qITwgQWxpYXNlZCB0byBIQUxfRE1BMkRfQ0xVVExvYWRpbmdfQWJvcnQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBsZWdhY3kgY29kZSAqLworI2RlZmluZSBIQUxfRE1BMkRfRGlzYWJsZUNMVVQgICAgICAgSEFMX0RNQTJEX0NMVVRMb2FkaW5nX0Fib3J0ICAgIC8qITwgQWxpYXNlZCB0byBIQUxfRE1BMkRfQ0xVVExvYWRpbmdfQWJvcnQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGxlZ2FjeSBjb2RlICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtMzI5LDcgKzMzNiw3IEBACiAgIEhBTF9ETUEyRF9UUkFOU0ZFUkVSUk9SX0NCX0lEICAgICA9IDB4MDNVLCAgICAvKiE8IERNQTJEIHRyYW5zZmVyIGVycm9yIGNhbGxiYWNrIElEICAgICAgICAgICovCiAgIEhBTF9ETUEyRF9MSU5FRVZFTlRfQ0JfSUQgICAgICAgICA9IDB4MDRVLCAgICAvKiE8IERNQTJEIGxpbmUgZXZlbnQgY2FsbGJhY2sgSUQgICAgICAgICAgICAgICovCiAgIEhBTF9ETUEyRF9DTFVUTE9BRElOR0NQTFRfQ0JfSUQgICA9IDB4MDVVLCAgICAvKiE8IERNQTJEIENMVVQgbG9hZGluZyBjb21wbGV0aW9uIGNhbGxiYWNrIElEICovCi19SEFMX0RNQTJEX0NhbGxiYWNrSURUeXBlRGVmOworfSBIQUxfRE1BMkRfQ2FsbGJhY2tJRFR5cGVEZWY7CiAjZW5kaWYgLyogVVNFX0hBTF9ETUEyRF9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIAogCkBAIC0zNDYsMTAgKzM1MywxMCBAQAogICAqIEByZXR2YWwgTm9uZQogICAqLwogI2lmIChVU0VfSEFMX0RNQTJEX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotI2RlZmluZSBfX0hBTF9ETUEyRF9SRVNFVF9IQU5ETEVfU1RBVEUoX19IQU5ETEVfXykgZG97ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPlN0YXRlID0gSEFMX0RNQTJEX1NUQVRFX1JFU0VUO1wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+TXNwSW5pdENhbGxiYWNrID0gTlVMTDsgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5Nc3BEZUluaXRDYWxsYmFjayA9IE5VTEw7ICAgICBcCisjZGVmaW5lIF9fSEFMX0RNQTJEX1JFU0VUX0hBTkRMRV9TVEFURShfX0hBTkRMRV9fKSBkb3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5TdGF0ZSA9IEhBTF9ETUEyRF9TVEFURV9SRVNFVDtcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5Nc3BJbml0Q2FsbGJhY2sgPSBOVUxMOyAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5Nc3BEZUluaXRDYWxsYmFjayA9IE5VTEw7ICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH13aGlsZSgwKQogI2Vsc2UKICNkZWZpbmUgX19IQUxfRE1BMkRfUkVTRVRfSEFORExFX1NUQVRFKF9fSEFORExFX18pICgoX19IQU5ETEVfXyktPlN0YXRlID0gSEFMX0RNQTJEX1NUQVRFX1JFU0VUKQpAQCAtNDU1LDEyICs0NjIsMTMgQEAKIAogLyogSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RNQTJEX0luaXQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9ETUEyRF9EZUluaXQgKERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCk7Ci12b2lkICAgICAgICAgICAgICBIQUxfRE1BMkRfTXNwSW5pdChETUEyRF9IYW5kbGVUeXBlRGVmKiBoZG1hMmQpOwotdm9pZCAgICAgICAgICAgICAgSEFMX0RNQTJEX01zcERlSW5pdChETUEyRF9IYW5kbGVUeXBlRGVmKiBoZG1hMmQpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RNQTJEX0RlSW5pdChETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQpOwordm9pZCAgICAgICAgICAgICAgSEFMX0RNQTJEX01zcEluaXQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkKTsKK3ZvaWQgICAgICAgICAgICAgIEhBTF9ETUEyRF9Nc3BEZUluaXQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkKTsKIC8qIENhbGxiYWNrcyBSZWdpc3Rlci9VblJlZ2lzdGVyIGZ1bmN0aW9ucyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaWYgKFVTRV9IQUxfRE1BMkRfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfRE1BMkRfUmVnaXN0ZXJDYWxsYmFjayhETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQsIEhBTF9ETUEyRF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELCBwRE1BMkRfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfRE1BMkRfUmVnaXN0ZXJDYWxsYmFjayhETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQsIEhBTF9ETUEyRF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcERNQTJEX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RNQTJEX1VuUmVnaXN0ZXJDYWxsYmFjayhETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQsIEhBTF9ETUEyRF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lEKTsKICNlbmRpZiAvKiBVU0VfSEFMX0RNQTJEX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogCkBAIC00NzQsMTQgKzQ4MiwyMiBAQAogICAqLwogCiAvKiBJTyBvcGVyYXRpb24gZnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfRE1BMkRfU3RhcnQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkLCB1aW50MzJfdCBwZGF0YSwgdWludDMyX3QgRHN0QWRkcmVzcywgdWludDMyX3QgV2lkdGgsIHVpbnQzMl90IEhlaWdodCk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfRE1BMkRfQmxlbmRpbmdTdGFydChETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQsIHVpbnQzMl90IFNyY0FkZHJlc3MxLCB1aW50MzJfdCBTcmNBZGRyZXNzMiwgdWludDMyX3QgRHN0QWRkcmVzcywgdWludDMyX3QgV2lkdGgsICB1aW50MzJfdCBIZWlnaHQpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RNQTJEX1N0YXJ0X0lUKERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCwgdWludDMyX3QgcGRhdGEsIHVpbnQzMl90IERzdEFkZHJlc3MsIHVpbnQzMl90IFdpZHRoLCB1aW50MzJfdCBIZWlnaHQpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RNQTJEX0JsZW5kaW5nU3RhcnRfSVQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkLCB1aW50MzJfdCBTcmNBZGRyZXNzMSwgdWludDMyX3QgU3JjQWRkcmVzczIsIHVpbnQzMl90IERzdEFkZHJlc3MsIHVpbnQzMl90IFdpZHRoLCB1aW50MzJfdCBIZWlnaHQpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RNQTJEX1N0YXJ0KERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCwgdWludDMyX3QgcGRhdGEsIHVpbnQzMl90IERzdEFkZHJlc3MsIHVpbnQzMl90IFdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEhlaWdodCk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfRE1BMkRfQmxlbmRpbmdTdGFydChETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQsIHVpbnQzMl90IFNyY0FkZHJlc3MxLCB1aW50MzJfdCBTcmNBZGRyZXNzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IERzdEFkZHJlc3MsIHVpbnQzMl90IFdpZHRoLCAgdWludDMyX3QgSGVpZ2h0KTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9ETUEyRF9TdGFydF9JVChETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQsIHVpbnQzMl90IHBkYXRhLCB1aW50MzJfdCBEc3RBZGRyZXNzLCB1aW50MzJfdCBXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBIZWlnaHQpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RNQTJEX0JsZW5kaW5nU3RhcnRfSVQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkLCB1aW50MzJfdCBTcmNBZGRyZXNzMSwgdWludDMyX3QgU3JjQWRkcmVzczIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBEc3RBZGRyZXNzLCB1aW50MzJfdCBXaWR0aCwgdWludDMyX3QgSGVpZ2h0KTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9ETUEyRF9TdXNwZW5kKERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfRE1BMkRfUmVzdW1lKERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfRE1BMkRfQWJvcnQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9ETUEyRF9FbmFibGVDTFVUKERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCwgdWludDMyX3QgTGF5ZXJJZHgpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RNQTJEX0NMVVRTdGFydExvYWQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkLCBETUEyRF9DTFVUQ2ZnVHlwZURlZiAqQ0xVVENmZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IExheWVySWR4KTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9ETUEyRF9DTFVUU3RhcnRMb2FkX0lUKERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCwgRE1BMkRfQ0xVVENmZ1R5cGVEZWYgKkNMVVRDZmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBMYXllcklkeCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfRE1BMkRfQ0xVVExvYWQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkLCBETUEyRF9DTFVUQ2ZnVHlwZURlZiBDTFVUQ2ZnLCB1aW50MzJfdCBMYXllcklkeCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfRE1BMkRfQ0xVVExvYWRfSVQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkLCBETUEyRF9DTFVUQ2ZnVHlwZURlZiBDTFVUQ2ZnLCB1aW50MzJfdCBMYXllcklkeCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfRE1BMkRfQ0xVVExvYWRpbmdfQWJvcnQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkLCB1aW50MzJfdCBMYXllcklkeCk7CkBAIC02MDEsMTMgKzYxNywxNiBAQAogLyoqIEBkZWZncm91cCBETUEyRF9Qcml2YXRlX01hY3JvcyBETUEyRCBQcml2YXRlIE1hY3JvcwogICAqIEB7CiAgICovCi0jZGVmaW5lIElTX0RNQTJEX0xBWUVSKExBWUVSKSAgICAgICAgICAgICAgICAgKCgoTEFZRVIpID09IERNQTJEX0JBQ0tHUk9VTkRfTEFZRVIpIHx8ICgoTEFZRVIpID09IERNQTJEX0ZPUkVHUk9VTkRfTEFZRVIpKQorI2RlZmluZSBJU19ETUEyRF9MQVlFUihMQVlFUikgICAgICAgICAgICAgICAgICgoKExBWUVSKSA9PSBETUEyRF9CQUNLR1JPVU5EX0xBWUVSKVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChMQVlFUikgPT0gRE1BMkRfRk9SRUdST1VORF9MQVlFUikpCiAKICNkZWZpbmUgSVNfRE1BMkRfTU9ERShNT0RFKSAgICAgICAgICAgICAgICAgICAoKChNT0RFKSA9PSBETUEyRF9NMk0pICAgICAgIHx8ICgoTU9ERSkgPT0gRE1BMkRfTTJNX1BGQykgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IERNQTJEX00yTV9CTEVORCkgfHwgKChNT0RFKSA9PSBETUEyRF9SMk0pKQogCi0jZGVmaW5lIElTX0RNQTJEX0NNT0RFKE1PREVfQVJHQikgICAgICAgICAgICAgKCgoTU9ERV9BUkdCKSA9PSBETUEyRF9PVVRQVVRfQVJHQjg4ODgpIHx8ICgoTU9ERV9BUkdCKSA9PSBETUEyRF9PVVRQVVRfUkdCODg4KSAgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFX0FSR0IpID09IERNQTJEX09VVFBVVF9SR0I1NjUpICAgfHwgKChNT0RFX0FSR0IpID09IERNQTJEX09VVFBVVF9BUkdCMTU1NSkgfHwgXAorI2RlZmluZSBJU19ETUEyRF9DTU9ERShNT0RFX0FSR0IpICAgICAgICAgICAgICgoKE1PREVfQVJHQikgPT0gRE1BMkRfT1VUUFVUX0FSR0I4ODg4KSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERV9BUkdCKSA9PSBETUEyRF9PVVRQVVRfUkdCODg4KSAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFX0FSR0IpID09IERNQTJEX09VVFBVVF9SR0I1NjUpICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREVfQVJHQikgPT0gRE1BMkRfT1VUUFVUX0FSR0IxNTU1KSB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERV9BUkdCKSA9PSBETUEyRF9PVVRQVVRfQVJHQjQ0NDQpKQogCiAjZGVmaW5lIElTX0RNQTJEX0NPTE9SKENPTE9SKSAgICAgICAgICAgICAgICAgKChDT0xPUikgPD0gRE1BMkRfQ09MT1JfVkFMVUUpCkBAIC02MTUsMTEgKzYzNCwxNiBAQAogI2RlZmluZSBJU19ETUEyRF9QSVhFTChQSVhFTCkgICAgICAgICAgICAgICAgICgoUElYRUwpIDw9IERNQTJEX1BJWEVMKQogI2RlZmluZSBJU19ETUEyRF9PRkZTRVQoT09GRlNFVCkgICAgICAgICAgICAgICgoT09GRlNFVCkgPD0gRE1BMkRfT0ZGU0VUKQogCi0jZGVmaW5lIElTX0RNQTJEX0lOUFVUX0NPTE9SX01PREUoSU5QVVRfQ00pICAgKCgoSU5QVVRfQ00pID09IERNQTJEX0lOUFVUX0FSR0I4ODg4KSB8fCAoKElOUFVUX0NNKSA9PSBETUEyRF9JTlBVVF9SR0I4ODgpICAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElOUFVUX0NNKSA9PSBETUEyRF9JTlBVVF9SR0I1NjUpICAgfHwgKChJTlBVVF9DTSkgPT0gRE1BMkRfSU5QVVRfQVJHQjE1NTUpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJTlBVVF9DTSkgPT0gRE1BMkRfSU5QVVRfQVJHQjQ0NDQpIHx8ICgoSU5QVVRfQ00pID09IERNQTJEX0lOUFVUX0w4KSAgICAgICB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSU5QVVRfQ00pID09IERNQTJEX0lOUFVUX0FMNDQpICAgICB8fCAoKElOUFVUX0NNKSA9PSBETUEyRF9JTlBVVF9BTDg4KSAgICAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElOUFVUX0NNKSA9PSBETUEyRF9JTlBVVF9MNCkgICAgICAgfHwgKChJTlBVVF9DTSkgPT0gRE1BMkRfSU5QVVRfQTgpICAgICAgIHx8IFwKKyNkZWZpbmUgSVNfRE1BMkRfSU5QVVRfQ09MT1JfTU9ERShJTlBVVF9DTSkgICAoKChJTlBVVF9DTSkgPT0gRE1BMkRfSU5QVVRfQVJHQjg4ODgpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJTlBVVF9DTSkgPT0gRE1BMkRfSU5QVVRfUkdCODg4KSAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJTlBVVF9DTSkgPT0gRE1BMkRfSU5QVVRfUkdCNTY1KSAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJTlBVVF9DTSkgPT0gRE1BMkRfSU5QVVRfQVJHQjE1NTUpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJTlBVVF9DTSkgPT0gRE1BMkRfSU5QVVRfQVJHQjQ0NDQpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJTlBVVF9DTSkgPT0gRE1BMkRfSU5QVVRfTDgpICAgICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJTlBVVF9DTSkgPT0gRE1BMkRfSU5QVVRfQUw0NCkgICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJTlBVVF9DTSkgPT0gRE1BMkRfSU5QVVRfQUw4OCkgICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJTlBVVF9DTSkgPT0gRE1BMkRfSU5QVVRfTDQpICAgICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJTlBVVF9DTSkgPT0gRE1BMkRfSU5QVVRfQTgpICAgICAgIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJTlBVVF9DTSkgPT0gRE1BMkRfSU5QVVRfQTQpKQogCiAjZGVmaW5lIElTX0RNQTJEX0FMUEhBX01PREUoQWxwaGFNb2RlKSAgICAgICAgKCgoQWxwaGFNb2RlKSA9PSBETUEyRF9OT19NT0RJRl9BTFBIQSkgfHwgXApAQCAtNjQxLDE1ICs2NjUsMTEgQEAKICNkZWZpbmUgSVNfRE1BMkRfQ0xVVF9TSVpFKENMVVRfU0laRSkgICAgICAgICAoKENMVVRfU0laRSkgPD0gRE1BMkRfQ0xVVF9TSVpFKQogI2RlZmluZSBJU19ETUEyRF9MSU5FV0FURVJNQVJLKExpbmVXYXRlcm1hcmspICgoTGluZVdhdGVybWFyaykgPD0gRE1BMkRfTElORV9XQVRFUk1BUktfTUFYKQogI2RlZmluZSBJU19ETUEyRF9JVChJVCkgICAgICAgICAgICAgICAgICAgICAgICgoKElUKSA9PSBETUEyRF9JVF9DVEMpIHx8ICgoSVQpID09IERNQTJEX0lUX0NBRSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKElUKSA9PSBETUEyRF9JVF9UVykgfHwgKChJVCkgPT0gRE1BMkRfSVRfVEMpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gRE1BMkRfSVRfVEUpIHx8ICgoSVQpID09IERNQTJEX0lUX0NFKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gRE1BMkRfSVRfVFcpICB8fCAoKElUKSA9PSBETUEyRF9JVF9UQykgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChJVCkgPT0gRE1BMkRfSVRfVEUpICB8fCAoKElUKSA9PSBETUEyRF9JVF9DRSkpCiAjZGVmaW5lIElTX0RNQTJEX0dFVF9GTEFHKEZMQUcpICAgICAgICAgICAgICAgKCgoRkxBRykgPT0gRE1BMkRfRkxBR19DVEMpIHx8ICgoRkxBRykgPT0gRE1BMkRfRkxBR19DQUUpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBETUEyRF9GTEFHX1RXKSAgIHx8ICgoRkxBRykgPT0gRE1BMkRfRkxBR19UQykgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBETUEyRF9GTEFHX1RFKSAgIHx8ICgoRkxBRykgPT0gRE1BMkRfRkxBR19DRSkpCi0vKioKLSAgKiBAfQotICAqLwotCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRkxBRykgPT0gRE1BMkRfRkxBR19UVykgIHx8ICgoRkxBRykgPT0gRE1BMkRfRkxBR19UQykgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChGTEFHKSA9PSBETUEyRF9GTEFHX1RFKSAgfHwgKChGTEFHKSA9PSBETUEyRF9GTEFHX0NFKSkKIC8qKgogICAqIEB9CiAgICovCkBAIC02NjAsNiArNjgwLDEwIEBACiAKICNlbmRpZiAvKiBkZWZpbmVkIChETUEyRCkgKi8KIAorLyoqCisgICogQH0KKyAgKi8KKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2RzaS5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfZHNpLmgKaW5kZXggMzhjYjBlNS4uNzA5MWU4MiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfZHNpLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfZHNpLmgKQEAgLTI1LDEwICsyNSwxMSBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoRFNJKQogLyogSW5jbHVkZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNpbmNsdWRlICJzdG0zMmY3eHhfaGFsX2RlZi5oIgogCisjaWYgZGVmaW5lZChEU0kpCisKIC8qKiBAYWRkdG9ncm91cCBTVE0zMkY3eHhfSEFMX0RyaXZlcgogICAqIEB7CiAgICovCkBAIC0zNDcsNiArMzQ4LDkgQEAKICNlbmRpZiAvKiBVU0VfSEFMX0RTSV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIAogLyogRXhwb3J0ZWQgY29uc3RhbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qKiBAZGVmZ3JvdXAgRFNJX0V4cG9ydGVkX0NvbnN0YW50cyBEU0kgRXhwb3J0ZWQgQ29uc3RhbnRzCisgICogQHsKKyAgKi8KIC8qKiBAZGVmZ3JvdXAgRFNJX0RDU19Db21tYW5kIERTSSBEQ1MgQ29tbWFuZAogICAqIEB7CiAgICovCkBAIC05MDgsMTAgKzkxMiwxOCBAQAogICAqIEB9CiAgICovCiAKKy8qKgorICAqIEB9CisgICovCisKIC8qIEV4cG9ydGVkIG1hY3JvcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiogQGRlZmdyb3VwIERTSV9FeHBvcnRlZF9NYWNyb3MgRFNJIEV4cG9ydGVkIE1hY3JvcworICAqIEB7CisgICovCisKIC8qKgogICAqIEBicmllZiBSZXNldCBEU0kgaGFuZGxlIHN0YXRlLgotICAqIEBwYXJhbSAgX19IQU5ETEVfXzogRFNJIGhhbmRsZQorICAqIEBwYXJhbSAgX19IQU5ETEVfXyBEU0kgaGFuZGxlCiAgICogQHJldHZhbCBOb25lCiAgICovCiAjaWYgKFVTRV9IQUxfRFNJX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQpAQCAtMTEwMSw2ICsxMTEzLDEwIEBACiAgICovCiAjZGVmaW5lIF9fSEFMX0RTSV9HRVRfSVRfU09VUkNFKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5XSUVSICYgKF9fSU5URVJSVVBUX18pKQogCisvKioKKyAgKiBAfQorICAqLworCiAvKiBFeHBvcnRlZCBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoqIEBkZWZncm91cCBEU0lfRXhwb3J0ZWRfRnVuY3Rpb25zIERTSSBFeHBvcnRlZCBGdW5jdGlvbnMKICAgKiBAewpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfZXRoLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9ldGguaAppbmRleCBmYmM3YjM1Li4zMDM5ODMyIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9ldGguaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9ldGguaApAQCAtNTkxLDcgKzU5MSw3IEBACiAKIAogLyoqIAotICAqIEBicmllZiAgUmVjZWl2ZWQgRnJhbWUgSW5mb3JtYXRpb25zIHN0cnVjdHVyZSBkZWZpbml0aW9uCisgICogQGJyaWVmICBSZWNlaXZlZCBGcmFtZSBJbmZvcm1hdGlvbiBzdHJ1Y3R1cmUgZGVmaW5pdGlvbgogICAqLyAKIHR5cGVkZWYgc3RydWN0ICAKIHsKZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2V4dGkuaCBiL0luYy9zdG0zMmY3eHhfaGFsX2V4dGkuaAppbmRleCBlNjQ0MTRmLi42NDExZjgxIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9leHRpLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfZXh0aS5oCkBAIC0yMTgsMjEgKzIxOCwyMSBAQAogLyoqIEBkZWZncm91cCBFWFRJX1ByaXZhdGVfTWFjcm9zIEVYVEkgUHJpdmF0ZSBNYWNyb3MKICAgKiBAewogICAqLwotI2RlZmluZSBJU19FWFRJX0xJTkUoX19MSU5FX18pICAgICAgICAgICgoKChfX0xJTkVfXykgJiB+KEVYVElfUFJPUEVSVFlfTUFTSyB8IEVYVElfUElOX01BU0spKSA9PSAweDAwdSkgJiYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKChfX0xJTkVfXykgJiBFWFRJX1BST1BFUlRZX01BU0spID09IEVYVElfQ09ORklHKSAgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoX19MSU5FX18pICYgRVhUSV9QUk9QRVJUWV9NQVNLKSA9PSBFWFRJX0dQSU8pKSAgICAmJiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fTElORV9fKSAmIEVYVElfUElOX01BU0spIDwgRVhUSV9MSU5FX05CKSkKKyNkZWZpbmUgSVNfRVhUSV9MSU5FKF9fRVhUSV9MSU5FX18pICAgICAgICAgICgoKChfX0VYVElfTElORV9fKSAmIH4oRVhUSV9QUk9QRVJUWV9NQVNLIHwgRVhUSV9QSU5fTUFTSykpID09IDB4MDB1KSAmJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgoX19FWFRJX0xJTkVfXykgJiBFWFRJX1BST1BFUlRZX01BU0spID09IEVYVElfQ09ORklHKSAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChfX0VYVElfTElORV9fKSAmIEVYVElfUFJPUEVSVFlfTUFTSykgPT0gRVhUSV9HUElPKSkgICAgJiYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fRVhUSV9MSU5FX18pICYgRVhUSV9QSU5fTUFTSykgPCBFWFRJX0xJTkVfTkIpKQogCi0jZGVmaW5lIElTX0VYVElfTU9ERShfX0xJTkVfXykgICAgICAgICAgKCgoKF9fTElORV9fKSAmIEVYVElfTU9ERV9NQVNLKSAhPSAweDAwdSkgJiYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChfX0xJTkVfXykgJiB+RVhUSV9NT0RFX01BU0spID09IDB4MDB1KSkKKyNkZWZpbmUgSVNfRVhUSV9NT0RFKF9fRVhUSV9MSU5FX18pICAgICAgICAgICgoKChfX0VYVElfTElORV9fKSAmIEVYVElfTU9ERV9NQVNLKSAhPSAweDAwdSkgJiYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fRVhUSV9MSU5FX18pICYgfkVYVElfTU9ERV9NQVNLKSA9PSAweDAwdSkpCiAKLSNkZWZpbmUgSVNfRVhUSV9UUklHR0VSKF9fTElORV9fKSAgICAgICAoKChfX0xJTkVfXykgICYgfkVYVElfVFJJR0dFUl9NQVNLKSA9PSAweDAwdSkKKyNkZWZpbmUgSVNfRVhUSV9UUklHR0VSKF9fRVhUSV9MSU5FX18pICAgICAgICgoKF9fRVhUSV9MSU5FX18pICAmIH5FWFRJX1RSSUdHRVJfTUFTSykgPT0gMHgwMHUpCiAKLSNkZWZpbmUgSVNfRVhUSV9QRU5ESU5HX0VER0UoX19MSU5FX18pICAoKChfX0xJTkVfXykgPT0gRVhUSV9UUklHR0VSX0ZBTExJTkcpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0xJTkVfXykgPT0gRVhUSV9UUklHR0VSX1JJU0lORykgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0xJTkVfXykgPT0gRVhUSV9UUklHR0VSX1JJU0lOR19GQUxMSU5HKSkKKyNkZWZpbmUgSVNfRVhUSV9QRU5ESU5HX0VER0UoX19FWFRJX0xJTkVfXykgICgoKF9fRVhUSV9MSU5FX18pID09IEVYVElfVFJJR0dFUl9GQUxMSU5HKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0VYVElfTElORV9fKSA9PSBFWFRJX1RSSUdHRVJfUklTSU5HKSAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19FWFRJX0xJTkVfXykgPT0gRVhUSV9UUklHR0VSX1JJU0lOR19GQUxMSU5HKSkKIAotI2RlZmluZSBJU19FWFRJX0NPTkZJR19MSU5FKF9fTElORV9fKSAgICgoKF9fTElORV9fKSAmIEVYVElfQ09ORklHKSAhPSAweDAwdSkKKyNkZWZpbmUgSVNfRVhUSV9DT05GSUdfTElORShfX0VYVElfTElORV9fKSAgICgoKF9fRVhUSV9MSU5FX18pICYgRVhUSV9DT05GSUcpICE9IDB4MDB1KQogCiAjaWYgZGVmaW5lZCAoR1BJT0spCiAjZGVmaW5lIElTX0VYVElfR1BJT19QT1JUKF9fUE9SVF9fKSAgICAgKCgoX19QT1JUX18pID09IEVYVElfR1BJT0EpIHx8IFwKZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2ZsYXNoX2V4LmggYi9JbmMvc3RtMzJmN3h4X2hhbF9mbGFzaF9leC5oCmluZGV4IDU3MmQ3ZTUuLjhiMmNmOTkgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2ZsYXNoX2V4LmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfZmxhc2hfZXguaApAQCAtNTAyLDEwICs1MDIsMTAgQEAKICAgKiBAewogICAqLwogLyoqCi0gICogQGJyaWVmICBDYWxjdWxhdGUgdGhlIEZMQVNIIEJvb3QgQmFzZSBBZHJlc3MgKEJPT1RfQUREMCBvciBCT09UX0FERDEpCisgICogQGJyaWVmICBDYWxjdWxhdGUgdGhlIEZMQVNIIEJvb3QgQmFzZSBBZGRyZXNzIChCT09UX0FERDAgb3IgQk9PVF9BREQxKQogICAqIEBub3RlICAgUmV0dXJuZWQgdmFsdWUgQk9PVF9BRER4WzE1OjBdIGNvcnJlc3BvbmRzIHRvIGJvb3QgYWRkcmVzcyBbMjk6MTRdLgogICAqIEBwYXJhbSAgX19BRERSRVNTX18gRkxBU0ggQm9vdCBBZGRyZXNzIChpbiB0aGUgcmFuZ2UgMHgwMDAwIDAwMDAgdG8gMHgyMDA0IEZGRkYgd2l0aCBhIGdyYW51bGFyaXR5IG9mIDE2S0IpCi0gICogQHJldHZhbCBUaGUgRkxBU0ggQm9vdCBCYXNlIEFkcmVzcworICAqIEByZXR2YWwgVGhlIEZMQVNIIEJvb3QgQmFzZSBBZGRyZXNzCiAgICovCiAjZGVmaW5lIF9fSEFMX0ZMQVNIX0NBTENfQk9PVF9CQVNFX0FEUihfX0FERFJFU1NfXykgKChfX0FERFJFU1NfXykgPj4gMTQpCiAgLyoqCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9oYXNoLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9oYXNoLmgKaW5kZXggOTMxNzdiNy4uYTljY2YzZiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfaGFzaC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2hhc2guaApAQCAtMjIsNyArMjIsNyBAQAogI2RlZmluZSBTVE0zMkY3eHhfSEFMX0hBU0hfSAogCiAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKK2V4dGVybiAiQyIgewogI2VuZGlmCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC01MSw3ICs1MSw3IEBACiAKICAgdWludDMyX3QgS2V5U2l6ZTsgICAgIC8qITwgVGhlIGtleSBzaXplIGlzIHVzZWQgb25seSBpbiBITUFDIG9wZXJhdGlvbi4gKi8KIAotICB1aW50OF90KiBwS2V5OyAgICAgICAgLyohPCBUaGUga2V5IGlzIHVzZWQgb25seSBpbiBITUFDIG9wZXJhdGlvbi4gKi8KKyAgdWludDhfdCAqcEtleTsgICAgICAgIC8qITwgVGhlIGtleSBpcyB1c2VkIG9ubHkgaW4gSE1BQyBvcGVyYXRpb24uICovCiAKIH0gSEFTSF9Jbml0VHlwZURlZjsKIApAQCAtNjYsNyArNjYsNyBAQAogICBIQUxfSEFTSF9TVEFURV9USU1FT1VUICAgICAgICAgICA9IDB4MDZVLCAgICAvKiE8IFRpbWVvdXQgc3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgSEFMX0hBU0hfU1RBVEVfRVJST1IgICAgICAgICAgICAgPSAweDA3VSwgICAgLyohPCBFcnJvciBzdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgIEhBTF9IQVNIX1NUQVRFX1NVU1BFTkRFRCAgICAgICAgID0gMHgwOFUgICAgIC8qITwgU3VzcGVuZGVkIHN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotfUhBTF9IQVNIX1N0YXRlVHlwZURlZjsKK30gSEFMX0hBU0hfU3RhdGVUeXBlRGVmOwogCiAvKioKICAgKiBAYnJpZWYgSEFMIHBoYXNlIHN0cnVjdHVyZXMgZGVmaW5pdGlvbgpAQCAtODEsNyArODEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGVwIDIgY29uc2lzdHMgaW4gZW50ZXJpbmcgdGhlIG1lc3NhZ2UgdGV4dCkgKi8KICAgSEFMX0hBU0hfUEhBU0VfSE1BQ19TVEVQXzMgICAgICAgPSAweDA1VSAgICAgLyohPCBIQVNIIHBlcmlwaGVyYWwgaXMgaW4gSE1BQyBzdGVwIDMgcHJvY2Vzc2luZyBwaGFzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdGVwIDMgY29uc2lzdHMgaW4gZW50ZXJpbmcgdGhlIG91dGVyIGhhc2ggZnVuY3Rpb24ga2V5KSAqLwotfUhBTF9IQVNIX1BoYXNlVHlwZURlZjsKK30gSEFMX0hBU0hfUGhhc2VUeXBlRGVmOwogCiAvKioKICAgKiBAYnJpZWYgSEFMIEhBU0ggbW9kZSBzdXNwZW5kIGRlZmluaXRpb25zCkBAIC05MCw3ICs5MCw3IEBACiB7CiAgIEhBTF9IQVNIX1NVU1BFTkRfTk9ORSAgICAgICAgICAgID0gMHgwMFUsICAgIC8qITwgSEFTSCBwZXJpcGhlcmFsIHN1c3BlbnNpb24gbm90IHJlcXVlc3RlZCAqLwogICBIQUxfSEFTSF9TVVNQRU5EICAgICAgICAgICAgICAgICA9IDB4MDFVICAgICAvKiE8IEhBU0ggcGVyaXBoZXJhbCBzdXNwZW5zaW9uIGlzIHJlcXVlc3RlZCAgKi8KLX1IQUxfSEFTSF9TdXNwZW5kVHlwZURlZjsKK30gSEFMX0hBU0hfU3VzcGVuZFR5cGVEZWY7CiAKICNpZiAoVVNFX0hBTF9IQVNIX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxVSkKIC8qKgpAQCAtMTAzLDcgKzEwMyw3IEBACiAgIEhBTF9IQVNIX0lOUFVUQ1BMVF9DQl9JRCAgICAgICAgID0gMHgwMlUsICAgIC8qITwgSEFTSCBpbnB1dCBjb21wbGV0aW9uIGNhbGxiYWNrIElEICovCiAgIEhBTF9IQVNIX0RHU1RDUExUX0NCX0lEICAgICAgICAgID0gMHgwM1UsICAgIC8qITwgSEFTSCBkaWdlc3QgY29tcHV0YXRpb24gY29tcGxldGlvbiBjYWxsYmFjayBJRCAqLwogICBIQUxfSEFTSF9FUlJPUl9DQl9JRCAgICAgICAgICAgICA9IDB4MDRVLCAgICAvKiE8IEhBU0ggZXJyb3IgY2FsbGJhY2sgSUQgICAgICovCi19SEFMX0hBU0hfQ2FsbGJhY2tJRFR5cGVEZWY7Cit9IEhBTF9IQVNIX0NhbGxiYWNrSURUeXBlRGVmOwogI2VuZGlmIC8qIFVTRV9IQUxfSEFTSF9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIAogCkBAIC0xNTUsMTUgKzE1NSwxNSBAQAogICBfX0lPICB1aW50MzJfdCAgICAgICAgICAgICBBY2N1bXVsYXRpb247ICAgICAvKiE8IEhBU0ggbXVsdGkgYnVmZmVycyBhY2N1bXVsYXRpb24gZmxhZyAqLwogCiAjaWYgKFVTRV9IQUxfSEFTSF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSAgdm9pZCAgICAoKiBJbkNwbHRDYWxsYmFjaykoIHN0cnVjdCBfX0hBU0hfSGFuZGxlVHlwZURlZiAqIGhoYXNoKTsgICAgLyohPCBIQVNIIGlucHV0IGNvbXBsZXRpb24gY2FsbGJhY2sgKi8KKyAgdm9pZCAoKiBJbkNwbHRDYWxsYmFjaykoc3RydWN0IF9fSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCk7ICAgICAgICAgLyohPCBIQVNIIGlucHV0IGNvbXBsZXRpb24gY2FsbGJhY2sgKi8KIAotICB2b2lkICAgICgqIERnc3RDcGx0Q2FsbGJhY2spKCBzdHJ1Y3QgX19IQVNIX0hhbmRsZVR5cGVEZWYgKiBoaGFzaCk7ICAvKiE8IEhBU0ggZGlnZXN0IGNvbXB1dGF0aW9uIGNvbXBsZXRpb24gY2FsbGJhY2sgKi8KKyAgdm9pZCAoKiBEZ3N0Q3BsdENhbGxiYWNrKShzdHJ1Y3QgX19IQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoKTsgICAgICAgLyohPCBIQVNIIGRpZ2VzdCBjb21wdXRhdGlvbiBjb21wbGV0aW9uIGNhbGxiYWNrICovCiAKLSAgdm9pZCAgICAoKiBFcnJvckNhbGxiYWNrKSggc3RydWN0IF9fSEFTSF9IYW5kbGVUeXBlRGVmICogaGhhc2gpOyAgICAgLyohPCBIQVNIIGVycm9yIGNhbGxiYWNrICovCisgIHZvaWQgKCogRXJyb3JDYWxsYmFjaykoc3RydWN0IF9fSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCk7ICAgICAgICAgIC8qITwgSEFTSCBlcnJvciBjYWxsYmFjayAqLwogCi0gIHZvaWQgICAgKCogTXNwSW5pdENhbGxiYWNrKSggc3RydWN0IF9fSEFTSF9IYW5kbGVUeXBlRGVmICogaGhhc2gpOyAgIC8qITwgSEFTSCBNc3AgSW5pdCBjYWxsYmFjayAqLworICB2b2lkICgqIE1zcEluaXRDYWxsYmFjaykoc3RydWN0IF9fSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCk7ICAgICAgICAvKiE8IEhBU0ggTXNwIEluaXQgY2FsbGJhY2sgKi8KIAotICB2b2lkICAgICgqIE1zcERlSW5pdENhbGxiYWNrKSggc3RydWN0IF9fSEFTSF9IYW5kbGVUeXBlRGVmICogaGhhc2gpOyAvKiE8IEhBU0ggTXNwIERlSW5pdCBjYWxsYmFjayAqLworICB2b2lkICgqIE1zcERlSW5pdENhbGxiYWNrKShzdHJ1Y3QgX19IQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoKTsgICAgICAvKiE8IEhBU0ggTXNwIERlSW5pdCBjYWxsYmFjayAqLwogCiAjZW5kaWYgLyogKFVTRV9IQUxfSEFTSF9SRUdJU1RFUl9DQUxMQkFDS1MpICovCiB9IEhBU0hfSGFuZGxlVHlwZURlZjsKQEAgLTE3Miw3ICsxNzIsNyBAQAogLyoqCiAgICogQGJyaWVmICBIQUwgSEFTSCBDYWxsYmFjayBwb2ludGVyIGRlZmluaXRpb24KICAgKi8KLXR5cGVkZWYgIHZvaWQgKCpwSEFTSF9DYWxsYmFja1R5cGVEZWYpKEhBU0hfSGFuZGxlVHlwZURlZiAqIGhoYXNoKTsgLyohPCBwb2ludGVyIHRvIGEgSEFTSCBjb21tb24gY2FsbGJhY2sgZnVuY3Rpb25zICovCit0eXBlZGVmICB2b2lkICgqcEhBU0hfQ2FsbGJhY2tUeXBlRGVmKShIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoKTsgIC8qITwgcG9pbnRlciB0byBhIEhBU0ggY29tbW9uIGNhbGxiYWNrIGZ1bmN0aW9ucyAqLwogI2VuZGlmIC8qIFVTRV9IQUxfSEFTSF9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIAogLyoqCkBAIC0yNTAsNyArMjUwLDcgQEAKIC8qKiBAZGVmZ3JvdXAgSEFTSF9hbGlhcyBIQVNIIEFQSSBhbGlhcwogICAqIEB7CiAgICovCi0jZGVmaW5lIEhBTF9IQVNIRXhfSVJRSGFuZGxlciAgIEhBTF9IQVNIX0lSUUhhbmRsZXIgIC8qITwgSEFMX0hBU0hFeF9JUlFIYW5kbGVyKCkgaXMgcmUtZGlyZWN0ZWQgdG8gSEFMX0hBU0hfSVJRSGFuZGxlcigpIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbGVnYWN5IGNvZGUgKi8KKyNkZWZpbmUgSEFMX0hBU0hFeF9JUlFIYW5kbGVyICAgSEFMX0hBU0hfSVJRSGFuZGxlciAgLyohPCBSZWRpcmVjdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGxlZ2FjeSBjb2RlICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtMjg4LDggKzI4OCw4IEBACiAgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIF9fRkxBR19fIChUUlVFIG9yIEZBTFNFKS4KICAgKi8KICNkZWZpbmUgX19IQUxfSEFTSF9HRVRfRkxBRyhfX0ZMQUdfXykgICgoKF9fRkxBR19fKSA+IDhVKSAgPyAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChIQVNILT5DUiAmIChfX0ZMQUdfXykpID09IChfX0ZMQUdfXykpIDpcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEhBU0gtPlNSICYgKF9fRkxBR19fKSkgPT0gKF9fRkxBR19fKSkgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSEFTSC0+Q1IgJiAoX19GTEFHX18pKSA9PSAoX19GTEFHX18pKSA6XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSEFTSC0+U1IgJiAoX19GTEFHX18pKSA9PSAoX19GTEFHX18pKSApCiAKIAogLyoqIEBicmllZiAgQ2xlYXIgdGhlIHNwZWNpZmllZCBIQVNIIGZsYWcuCkBAIC0zNjYsNyArMzY2LDcgQEAKICAgKiBAYnJpZWYgU2V0IHRoZSBudW1iZXIgb2YgdmFsaWQgYml0cyBpbiB0aGUgbGFzdCB3b3JkIHdyaXR0ZW4gaW4gZGF0YSByZWdpc3RlciBESU4uCiAgICogQHBhcmFtICBfX1NJWkVfXyBzaXplIGluIGJ5dGVzIG9mIGxhc3QgZGF0YSB3cml0dGVuIGluIERhdGEgcmVnaXN0ZXIuCiAgICogQHJldHZhbCBOb25lCi0qLworICAqLwogI2RlZmluZSAgX19IQUxfSEFTSF9TRVRfTkJWQUxJREJJVFMoX19TSVpFX18pICAgIE1PRElGWV9SRUcoSEFTSC0+U1RSLCBIQVNIX1NUUl9OQkxXLCA4VSAqICgoX19TSVpFX18pICUgNFUpKQogCiAvKioKQEAgLTM4OSw4ICszODksOCBAQAogICAqIEByZXR2YWwgRGlnZXN0IGxlbmd0aAogICAqLwogI2RlZmluZSBIQVNIX0RJR0VTVF9MRU5HVEgoKSAoKFJFQURfQklUKEhBU0gtPkNSLCBIQVNIX0NSX0FMR08pID09IEhBU0hfQUxHT1NFTEVDVElPTl9TSEExKSAgID8gIDIwVSA6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRUFEX0JJVChIQVNILT5DUiwgSEFTSF9DUl9BTEdPKSA9PSBIQVNIX0FMR09TRUxFQ1RJT05fU0hBMjI0KSA/ICAyOFUgOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVBRF9CSVQoSEFTSC0+Q1IsIEhBU0hfQ1JfQUxHTykgPT0gSEFTSF9BTEdPU0VMRUNUSU9OX1NIQTI1NikgPyAgMzJVIDogMTZVICkgKSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFQURfQklUKEhBU0gtPkNSLCBIQVNIX0NSX0FMR08pID09IEhBU0hfQUxHT1NFTEVDVElPTl9TSEEyMjQpID8gIDI4VSA6IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFQURfQklUKEhBU0gtPkNSLCBIQVNIX0NSX0FMR08pID09IEhBU0hfQUxHT1NFTEVDVElPTl9TSEEyNTYpID8gIDMyVSA6IDE2VSApICkgKQogLyoqCiAgICogQGJyaWVmICBSZXR1cm4gbnVtYmVyIG9mIHdvcmRzIGFscmVhZHkgcHVzaGVkIGluIHRoZSBGSUZPLgogICAqIEByZXR2YWwgTnVtYmVyIG9mIHdvcmRzIGFscmVhZHkgcHVzaGVkIGluIHRoZSBGSUZPCkBAIC00MjQsNyArNDI0LDggQEAKICAgKiBAcGFyYW0gX19TSVpFX18gaW5wdXQgZGF0YSBidWZmZXIgc2l6ZS4KICAgKiBAcmV0dmFsIFNFVCAoX19TSVpFX18gaXMgdmFsaWQpIG9yIFJFU0VUIChfX1NJWkVfXyBpcyBpbnZhbGlkKQogICAqLwotI2RlZmluZSBJU19ITUFDX0RNQV9NVUxUSUJVRkZFUl9TSVpFKF9fSEFORExFX18sX19TSVpFX18pICAoKCgoX19IQU5ETEVfXyktPkRpZ2VzdENhbGN1bGF0aW9uRGlzYWJsZSkgPT0gUkVTRVQpIHx8ICgoKF9fU0laRV9fKSAlIDRVKSA9PSAwVSkpCisjZGVmaW5lIElTX0hNQUNfRE1BX01VTFRJQlVGRkVSX1NJWkUoX19IQU5ETEVfXyxfX1NJWkVfXykgICgoKChfX0hBTkRMRV9fKS0+RGlnZXN0Q2FsY3VsYXRpb25EaXNhYmxlKSA9PSBSRVNFVClcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKChfX1NJWkVfXykgJSA0VSkgPT0gMFUpKQogLyoqCiAgICogQGJyaWVmIEVuc3VyZSB0aGF0IGhhbmRsZSBwaGFzZSBpcyBzZXQgdG8gSEFTSCBwcm9jZXNzaW5nLgogICAqIEBwYXJhbSBfX0hBTkRMRV9fIEhBU0ggaGFuZGxlLgpAQCAtNDY3LDcgKzQ2OCw4IEBACiB2b2lkIEhBTF9IQVNIX0Vycm9yQ2FsbGJhY2soSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCk7CiAvKiBDYWxsYmFja3MgUmVnaXN0ZXIvVW5SZWdpc3RlciBmdW5jdGlvbnMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2lmIChVU0VfSEFMX0hBU0hfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9SZWdpc3RlckNhbGxiYWNrKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIEhBTF9IQVNIX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsIHBIQVNIX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfUmVnaXN0ZXJDYWxsYmFjayhIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCBIQUxfSEFTSF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwSEFTSF9DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX1VuUmVnaXN0ZXJDYWxsYmFjayhIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCBIQUxfSEFTSF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lEKTsKICNlbmRpZiAvKiBVU0VfSEFMX0hBU0hfUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAKQEAgLTQ4MiwxMiArNDg0LDE2IEBACiAKIAogLyogSEFTSCBwcm9jZXNzaW5nIHVzaW5nIHBvbGxpbmcgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX1NIQTFfU3RhcnQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90KiBwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX01ENV9TdGFydChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfU0hBMV9TdGFydChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QgKnBPdXRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpbWVvdXQpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfTUQ1X1N0YXJ0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCAqcE91dEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX01ENV9BY2NtbHQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX1NIQTFfQWNjbWx0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9NRDVfQWNjbWx0X0VuZChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfU0hBMV9BY2NtbHRfRW5kKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9NRDVfQWNjbWx0X0VuZChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX1NIQTFfQWNjbWx0X0VuZChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCk7CiAKIAogLyoqCkBAIC00OTksMTIgKzUwNSwxNiBAQAogICAqLwogCiAvKiBIQVNIIHByb2Nlc3NpbmcgdXNpbmcgSVQgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfU0hBMV9TdGFydF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfU0hBMV9TdGFydF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBPdXRCdWZmZXIpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfU0hBMV9BY2NtbHRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX1NIQTFfQWNjbWx0X0VuZF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfTUQ1X1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlcik7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9TSEExX0FjY21sdF9FbmRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBPdXRCdWZmZXIpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfTUQ1X1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwT3V0QnVmZmVyKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX01ENV9BY2NtbHRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX01ENV9BY2NtbHRfRW5kX0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlcik7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9NRDVfQWNjbWx0X0VuZF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwT3V0QnVmZmVyKTsKIHZvaWQgSEFMX0hBU0hfSVJRSGFuZGxlcihIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoKTsKIC8qKgogICAqIEB9CkBAIC01MTYsOSArNTI2LDkgQEAKIAogLyogSEFTSCBwcm9jZXNzaW5nIHVzaW5nIERNQSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX1NIQTFfU3RhcnRfRE1BKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9TSEExX0ZpbmlzaChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90KiBwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX1NIQTFfRmluaXNoKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfTUQ1X1N0YXJ0X0RNQShIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfTUQ1X0ZpbmlzaChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90KiBwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX01ENV9GaW5pc2goSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCk7CiAKIC8qKgogICAqIEB9CkBAIC01MjksOCArNTM5LDEwIEBACiAgICovCiAKIC8qIEhBU0gtTUFDIHByb2Nlc3NpbmcgdXNpbmcgcG9sbGluZyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSE1BQ19TSEExX1N0YXJ0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSE1BQ19NRDVfU3RhcnQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90KiBwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9ITUFDX1NIQTFfU3RhcnQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90ICpwT3V0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9ITUFDX01ENV9TdGFydChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QgKnBPdXRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgVGltZW91dCk7CiAKIC8qKgogICAqIEB9CkBAIC01NDAsOCArNTUyLDEwIEBACiAgICogQHsKICAgKi8KIAotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hNQUNfTUQ1X1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlcik7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSE1BQ19TSEExX1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlcik7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSE1BQ19NRDVfU3RhcnRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBPdXRCdWZmZXIpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hNQUNfU0hBMV9TdGFydF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBPdXRCdWZmZXIpOwogCiAvKioKICAgKiBAfQpAQCAtNTY3LDggKzU4MSw4IEBACiAvKiBQZXJpcGhlcmFsIFN0YXRlIG1ldGhvZHMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogSEFMX0hBU0hfU3RhdGVUeXBlRGVmIEhBTF9IQVNIX0dldFN0YXRlKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfR2V0U3RhdHVzKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gpOwotdm9pZCBIQUxfSEFTSF9Db250ZXh0U2F2aW5nKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QqIHBNZW1CdWZmZXIpOwotdm9pZCBIQUxfSEFTSF9Db250ZXh0UmVzdG9yaW5nKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QqIHBNZW1CdWZmZXIpOwordm9pZCBIQUxfSEFTSF9Db250ZXh0U2F2aW5nKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBNZW1CdWZmZXIpOwordm9pZCBIQUxfSEFTSF9Db250ZXh0UmVzdG9yaW5nKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBNZW1CdWZmZXIpOwogdm9pZCBIQUxfSEFTSF9Td0ZlZWRfUHJvY2Vzc1N1c3BlbmQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9ETUFGZWVkX1Byb2Nlc3NTdXNwZW5kKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gpOwogdWludDMyX3QgSEFMX0hBU0hfR2V0RXJyb3IoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCk7CkBAIC01ODgsMTQgKzYwMiwxOCBAQAogICAqLwogCiAvKiBQcml2YXRlIGZ1bmN0aW9ucyAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFTSF9TdGFydChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQsIHVpbnQzMl90IEFsZ29yaXRobSk7CitIQUxfU3RhdHVzVHlwZURlZiBIQVNIX1N0YXJ0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCAqcE91dEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgVGltZW91dCwgdWludDMyX3QgQWxnb3JpdGhtKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBU0hfQWNjdW11bGF0ZShIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQzMl90IEFsZ29yaXRobSk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQVNIX0FjY3VtdWxhdGVfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50MzJfdCBBbGdvcml0aG0pOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFTSF9TdGFydF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IEFsZ29yaXRobSk7CitIQUxfU3RhdHVzVHlwZURlZiBIQVNIX1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCAqcE91dEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQWxnb3JpdGhtKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBU0hfU3RhcnRfRE1BKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDMyX3QgQWxnb3JpdGhtKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBU0hfRmluaXNoKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpOwotSEFMX1N0YXR1c1R5cGVEZWYgSE1BQ19TdGFydChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQsIHVpbnQzMl90IEFsZ29yaXRobSk7Ci1IQUxfU3RhdHVzVHlwZURlZiBITUFDX1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlciwgdWludDMyX3QgQWxnb3JpdGhtKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBU0hfRmluaXNoKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpOworSEFMX1N0YXR1c1R5cGVEZWYgSE1BQ19TdGFydChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QgKnBPdXRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpbWVvdXQsIHVpbnQzMl90IEFsZ29yaXRobSk7CitIQUxfU3RhdHVzVHlwZURlZiBITUFDX1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCAqcE91dEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQWxnb3JpdGhtKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhNQUNfU3RhcnRfRE1BKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDMyX3QgQWxnb3JpdGhtKTsKIAogLyoqCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9oYXNoX2V4LmggYi9JbmMvc3RtMzJmN3h4X2hhbF9oYXNoX2V4LmgKaW5kZXggNjA3MTdkZi4uNmFjMDcxNSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfaGFzaF9leC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2hhc2hfZXguaApAQCAtMjIsNyArMjIsNyBAQAogI2RlZmluZSBTVE0zMkY3eHhfSEFMX0hBU0hfRVhfSAogCiAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKK2V4dGVybiAiQyIgewogI2VuZGlmCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC01MSwxMiArNTEsMTYgQEAKICAgKiBAewogICAqLwogCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTIyNF9TdGFydChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hFeF9TSEEyMjRfU3RhcnQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTIyNF9BY2NtbHQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIRXhfU0hBMjI0X0FjY21sdF9FbmQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90KiBwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIRXhfU0hBMjU2X1N0YXJ0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTIyNF9BY2NtbHRfRW5kKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTI1Nl9TdGFydChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIRXhfU0hBMjU2X0FjY21sdChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hFeF9TSEEyNTZfQWNjbWx0X0VuZChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hFeF9TSEEyNTZfQWNjbWx0X0VuZChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpOwogCiAvKioKICAgKiBAfQpAQCAtNjYsMTIgKzcwLDE2IEBACiAgICogQHsKICAgKi8KIAotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hFeF9TSEEyMjRfU3RhcnRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90KiBwT3V0QnVmZmVyKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIRXhfU0hBMjI0X1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBPdXRCdWZmZXIpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hFeF9TSEEyMjRfQWNjbWx0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTIyNF9BY2NtbHRfRW5kX0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlcik7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTI1Nl9TdGFydF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hFeF9TSEEyMjRfQWNjbWx0X0VuZF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBPdXRCdWZmZXIpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hFeF9TSEEyNTZfU3RhcnRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcE91dEJ1ZmZlcik7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTI1Nl9BY2NtbHRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIRXhfU0hBMjU2X0FjY21sdF9FbmRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90KiBwT3V0QnVmZmVyKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIRXhfU0hBMjU2X0FjY21sdF9FbmRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwT3V0QnVmZmVyKTsKIAogLyoqCiAgICogQH0KQEAgLTgxLDkgKzg5LDkgQEAKICAgKiBAewogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hFeF9TSEEyMjRfU3RhcnRfRE1BKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTIyNF9GaW5pc2goSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCogcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTIyNF9GaW5pc2goSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTI1Nl9TdGFydF9ETUEoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIRXhfU0hBMjU2X0ZpbmlzaChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90KiBwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIRXhfU0hBMjU2X0ZpbmlzaChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KTsKIAogLyoqCiAgICogQH0KQEAgLTkyLDggKzEwMCwxMCBAQAogLyoqIEBhZGR0b2dyb3VwIEhBU0hFeF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXA0IEhNQUMgZXh0ZW5kZWQgcHJvY2Vzc2luZyBmdW5jdGlvbnMgaW4gcG9sbGluZyBtb2RlCiAgICogQHsKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9ITUFDRXhfU0hBMjI0X1N0YXJ0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSE1BQ0V4X1NIQTI1Nl9TdGFydChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hNQUNFeF9TSEEyMjRfU3RhcnQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSE1BQ0V4X1NIQTI1Nl9TdGFydChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KTsKIC8qKgogICAqIEB9CiAgICovCkBAIC0xMDIsOCArMTEyLDEwIEBACiAgICogQHsKICAgKi8KIAotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hNQUNFeF9TSEEyMjRfU3RhcnRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90KiBwT3V0QnVmZmVyKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9ITUFDRXhfU0hBMjU2X1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlcik7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSE1BQ0V4X1NIQTIyNF9TdGFydF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwT3V0QnVmZmVyKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9ITUFDRXhfU0hBMjU2X1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBPdXRCdWZmZXIpOwogCiAvKioKICAgKiBAfQpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfaGNkLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9oY2QuaAppbmRleCAyOGM1NzhlLi42OGQ5MTVhIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9oY2QuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9oY2QuaApAQCAtMzMsNyArMzMsNyBAQAogICAqIEB7CiAgICovCiAKLS8qKiBAYWRkdG9ncm91cCBIQ0QKKy8qKiBAYWRkdG9ncm91cCBIQ0QgSENECiAgICogQHsKICAgKi8KIApAQCAtMTEyLDYgKzExMiwxMCBAQAogI2RlZmluZSBIQ0RfU1BFRURfRlVMTCAgICAgICAgICAgICAgIFVTQkhfRlNMU19TUEVFRAogI2RlZmluZSBIQ0RfU1BFRURfTE9XICAgICAgICAgICAgICAgIFVTQkhfRlNMU19TUEVFRAogCisjZGVmaW5lIEhDRF9ERVZJQ0VfU1BFRURfSElHSCAgICAgICAgICAgICAgIDBVCisjZGVmaW5lIEhDRF9ERVZJQ0VfU1BFRURfRlVMTCAgICAgICAgICAgICAgIDFVCisjZGVmaW5lIEhDRF9ERVZJQ0VfU1BFRURfTE9XICAgICAgICAgICAgICAgIDJVCisKIC8qKgogICAqIEB9CiAgICovCkBAIC0xNDMsOSArMTQ3LDkgQEAKIAogLyogRXhwb3J0ZWQgbWFjcm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qKiBAZGVmZ3JvdXAgSENEX0V4cG9ydGVkX01hY3JvcyBIQ0QgRXhwb3J0ZWQgTWFjcm9zCi0gKiAgQGJyaWVmIG1hY3JvcyB0byBoYW5kbGUgaW50ZXJydXB0cyBhbmQgc3BlY2lmaWMgY2xvY2sgY29uZmlndXJhdGlvbnMKLSAqIEB7Ci0gKi8KKyAgKiAgQGJyaWVmIG1hY3JvcyB0byBoYW5kbGUgaW50ZXJydXB0cyBhbmQgc3BlY2lmaWMgY2xvY2sgY29uZmlndXJhdGlvbnMKKyAgKiBAeworICAqLwogI2RlZmluZSBfX0hBTF9IQ0RfRU5BQkxFKF9fSEFORExFX18pICAgICAgICAgICAgICAgICAgICh2b2lkKVVTQl9FbmFibGVHbG9iYWxJbnQgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UpCiAjZGVmaW5lIF9fSEFMX0hDRF9ESVNBQkxFKF9fSEFORExFX18pICAgICAgICAgICAgICAgICAgKHZvaWQpVVNCX0Rpc2FibGVHbG9iYWxJbnQgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UpCiAKQEAgLTIxNCwxMCArMjE4LDE2IEBACiAgICogQH0KICAgKi8KIAotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hDRF9SZWdpc3RlckNhbGxiYWNrKEhDRF9IYW5kbGVUeXBlRGVmICpoaGNkLCBIQUxfSENEX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsIHBIQ0RfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSENEX1VuUmVnaXN0ZXJDYWxsYmFjayhIQ0RfSGFuZGxlVHlwZURlZiAqaGhjZCwgSEFMX0hDRF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lEKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQ0RfUmVnaXN0ZXJDYWxsYmFjayhIQ0RfSGFuZGxlVHlwZURlZiAqaGhjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfSENEX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEhDRF9DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKIAotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hDRF9SZWdpc3RlckhDX05vdGlmeVVSQkNoYW5nZUNhbGxiYWNrKEhDRF9IYW5kbGVUeXBlRGVmICpoaGNkLCBwSENEX0hDX05vdGlmeVVSQkNoYW5nZUNhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hDRF9VblJlZ2lzdGVyQ2FsbGJhY2soSENEX0hhbmRsZVR5cGVEZWYgKmhoY2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfSENEX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQpOworCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSENEX1JlZ2lzdGVySENfTm90aWZ5VVJCQ2hhbmdlQ2FsbGJhY2soSENEX0hhbmRsZVR5cGVEZWYgKmhoY2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEhDRF9IQ19Ob3RpZnlVUkJDaGFuZ2VDYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKKwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hDRF9VblJlZ2lzdGVySENfTm90aWZ5VVJCQ2hhbmdlQ2FsbGJhY2soSENEX0hhbmRsZVR5cGVEZWYgKmhoY2QpOwogI2VuZGlmIC8qIFVTRV9IQUxfSENEX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogLyoqCkBAIC0yMzUsNiArMjQ1LDcgQEAKIAogLyogTm9uLUJsb2NraW5nIG1vZGU6IEludGVycnVwdCAqLwogdm9pZCBIQUxfSENEX0lSUUhhbmRsZXIoSENEX0hhbmRsZVR5cGVEZWYgKmhoY2QpOwordm9pZCBIQUxfSENEX1dLVVBfSVJRSGFuZGxlcihIQ0RfSGFuZGxlVHlwZURlZiAqaGhjZCk7CiB2b2lkIEhBTF9IQ0RfU09GX0NhbGxiYWNrKEhDRF9IYW5kbGVUeXBlRGVmICpoaGNkKTsKIHZvaWQgSEFMX0hDRF9Db25uZWN0X0NhbGxiYWNrKEhDRF9IYW5kbGVUeXBlRGVmICpoaGNkKTsKIHZvaWQgSEFMX0hDRF9EaXNjb25uZWN0X0NhbGxiYWNrKEhDRF9IYW5kbGVUeXBlRGVmICpoaGNkKTsKQEAgLTI2Nyw2ICsyNzgsNyBAQAogdWludDMyX3QgICAgICAgICAgICAgICAgSEFMX0hDRF9IQ19HZXRYZmVyQ291bnQoSENEX0hhbmRsZVR5cGVEZWYgKmhoY2QsIHVpbnQ4X3QgY2hudW0pOwogdWludDMyX3QgICAgICAgICAgICAgICAgSEFMX0hDRF9HZXRDdXJyZW50RnJhbWUoSENEX0hhbmRsZVR5cGVEZWYgKmhoY2QpOwogdWludDMyX3QgICAgICAgICAgICAgICAgSEFMX0hDRF9HZXRDdXJyZW50U3BlZWQoSENEX0hhbmRsZVR5cGVEZWYgKmhoY2QpOworCiAvKioKICAgKiBAfQogICAqLwpAQCAtMjc3LDM2ICsyODksMTcgQEAKIAogLyogUHJpdmF0ZSBtYWNyb3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qKiBAZGVmZ3JvdXAgSENEX1ByaXZhdGVfTWFjcm9zIEhDRCBQcml2YXRlIE1hY3JvcwotICogQHsKLSAqLwotCisgICogQHsKKyAgKi8KIC8qKgogICAqIEB9CiAgICovCi0KIC8qIFByaXZhdGUgZnVuY3Rpb25zIHByb3RvdHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiogQGRlZmdyb3VwIEhDRF9Qcml2YXRlX0Z1bmN0aW9uc19Qcm90b3R5cGVzIEhDRCBQcml2YXRlIEZ1bmN0aW9ucyBQcm90b3R5cGVzCi0gICogQHsKLSAgKi8KIAotLyoqCisgLyoqCiAgICogQH0KICAgKi8KLQotLyogUHJpdmF0ZSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qKiBAZGVmZ3JvdXAgSENEX1ByaXZhdGVfRnVuY3Rpb25zIEhDRCBQcml2YXRlIEZ1bmN0aW9ucwotICAqIEB7Ci0gICovCi0KLS8qKgotICAqIEB9Ci0gICovCi0KLS8qKgotICAqIEB9Ci0gICovCi0KLS8qKgorIC8qKgogICAqIEB9CiAgICovCiAjZW5kaWYgLyogZGVmaW5lZCAoVVNCX09UR19GUykgfHwgZGVmaW5lZCAoVVNCX09UR19IUykgKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2kyYy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfaTJjLmgKaW5kZXggMTcyMjg0My4uYzJhYTlmNiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfaTJjLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfaTJjLmgKQEAgLTQ5NSw3ICs0OTUsOCBAQAogICAqCiAgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIF9fSU5URVJSVVBUX18gKFNFVCBvciBSRVNFVCkuCiAgICovCi0jZGVmaW5lIF9fSEFMX0kyQ19HRVRfSVRfU09VUkNFKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICAgICAgKCgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IxICYgKF9fSU5URVJSVVBUX18pKSA9PSAoX19JTlRFUlJVUFRfXykpID8gU0VUIDogUkVTRVQpCisjZGVmaW5lIF9fSEFMX0kyQ19HRVRfSVRfU09VUkNFKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICAgICAgKCgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IxICYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0lOVEVSUlVQVF9fKSkgPT0gKF9fSU5URVJSVVBUX18pKSA/IFNFVCA6IFJFU0VUKQogCiAvKiogQGJyaWVmICBDaGVjayB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgSTJDIGZsYWcgaXMgc2V0IG9yIG5vdC4KICAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBJMkMgSGFuZGxlLgpAQCAtNTIxLDcgKzUyMiw4IEBACiAgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIF9fRkxBR19fIChTRVQgb3IgUkVTRVQpLgogICAqLwogI2RlZmluZSBJMkNfRkxBR19NQVNLICAoMHgwMDAxRkZGRlUpCi0jZGVmaW5lIF9fSEFMX0kyQ19HRVRfRkxBRyhfX0hBTkRMRV9fLCBfX0ZMQUdfXykgKCgoKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPklTUikgJiAoX19GTEFHX18pKSA9PSAoX19GTEFHX18pKSA/IFNFVCA6IFJFU0VUKQorI2RlZmluZSBfX0hBTF9JMkNfR0VUX0ZMQUcoX19IQU5ETEVfXywgX19GTEFHX18pICgoKCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5JU1IpICYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0ZMQUdfXykpID09IChfX0ZMQUdfXykpID8gU0VUIDogUkVTRVQpCiAKIC8qKiBAYnJpZWYgIENsZWFyIHRoZSBJMkMgcGVuZGluZyBmbGFncyB3aGljaCBhcmUgY2xlYXJlZCBieSB3cml0aW5nIDEgaW4gYSBzcGVjaWZpYyBiaXQuCiAgICogQHBhcmFtICBfX0hBTkRMRV9fIHNwZWNpZmllcyB0aGUgSTJDIEhhbmRsZS4KQEAgLTU0MSw3ICs1NDMsNyBAQAogICAqIEByZXR2YWwgTm9uZQogICAqLwogI2RlZmluZSBfX0hBTF9JMkNfQ0xFQVJfRkxBRyhfX0hBTkRMRV9fLCBfX0ZMQUdfXykgKCgoX19GTEFHX18pID09IEkyQ19GTEFHX1RYRSkgPyAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+SVNSIHw9IChfX0ZMQUdfXykpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPklDUiA9IChfX0ZMQUdfXykpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPklDUiA9IChfX0ZMQUdfXykpKQogCiAvKiogQGJyaWVmICBFbmFibGUgdGhlIHNwZWNpZmllZCBJMkMgcGVyaXBoZXJhbC4KICAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBJMkMgSGFuZGxlLgpAQCAtNTgzLDcgKzU4NSw4IEBACiAKIC8qIENhbGxiYWNrcyBSZWdpc3Rlci9VblJlZ2lzdGVyIGZ1bmN0aW9ucyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaWYgKFVTRV9IQUxfSTJDX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19SZWdpc3RlckNhbGxiYWNrKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCBIQUxfSTJDX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsIHBJMkNfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX1JlZ2lzdGVyQ2FsbGJhY2soSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIEhBTF9JMkNfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwSTJDX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19VblJlZ2lzdGVyQ2FsbGJhY2soSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIEhBTF9JMkNfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCk7CiAKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfUmVnaXN0ZXJBZGRyQ2FsbGJhY2soSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHBJMkNfQWRkckNhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOwpAQCAtNTk4LDQ5ICs2MDEsNzAgQEAKICAgKi8KIC8qIElPIG9wZXJhdGlvbiBmdW5jdGlvbnMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKioqKioqKiBCbG9ja2luZyBtb2RlOiBQb2xsaW5nICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9UcmFuc21pdChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFRpbWVvdXQpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfUmVjZWl2ZShJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFRpbWVvdXQpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfVHJhbnNtaXQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgVGltZW91dCk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9SZWNlaXZlKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgVGltZW91dCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX1NsYXZlX1RyYW5zbWl0KEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgVGltZW91dCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX1NsYXZlX1JlY2VpdmUoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBUaW1lb3V0KTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWVtX1dyaXRlKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgVGltZW91dCk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01lbV9SZWFkKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgVGltZW91dCk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX0lzRGV2aWNlUmVhZHkoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQzMl90IFRyaWFscywgdWludDMyX3QgVGltZW91dCk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01lbV9Xcml0ZShJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDE2X3QgTWVtQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IE1lbUFkZFNpemUsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBUaW1lb3V0KTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWVtX1JlYWQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQxNl90IE1lbUFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IE1lbUFkZFNpemUsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBUaW1lb3V0KTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfSXNEZXZpY2VSZWFkeShJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDMyX3QgVHJpYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpbWVvdXQpOwogCiAvKioqKioqKiBOb24tQmxvY2tpbmcgbW9kZTogSW50ZXJydXB0ICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9UcmFuc21pdF9JVChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfUmVjZWl2ZV9JVChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfVHJhbnNtaXRfSVQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgKnBEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgU2l6ZSk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9SZWNlaXZlX0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgU2l6ZSk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX1NsYXZlX1RyYW5zbWl0X0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX1NsYXZlX1JlY2VpdmVfSVQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWVtX1dyaXRlX0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01lbV9SZWFkX0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01lbV9Xcml0ZV9JVChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDE2X3QgTWVtQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IE1lbUFkZFNpemUsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWVtX1JlYWRfSVQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQxNl90IE1lbUFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IE1lbUFkZFNpemUsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKTsKIAotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfU2VxX1RyYW5zbWl0X0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfU2VxX1JlY2VpdmVfSVQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBYZmVyT3B0aW9ucyk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX1NsYXZlX1NlcV9UcmFuc21pdF9JVChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFhmZXJPcHRpb25zKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfU2xhdmVfU2VxX1JlY2VpdmVfSVQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBYZmVyT3B0aW9ucyk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9TZXFfVHJhbnNtaXRfSVQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgKnBEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFhmZXJPcHRpb25zKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWFzdGVyX1NlcV9SZWNlaXZlX0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFhmZXJPcHRpb25zKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfU2xhdmVfU2VxX1RyYW5zbWl0X0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFhmZXJPcHRpb25zKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfU2xhdmVfU2VxX1JlY2VpdmVfSVQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBYZmVyT3B0aW9ucyk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX0VuYWJsZUxpc3Rlbl9JVChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYyk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX0Rpc2FibGVMaXN0ZW5fSVQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfQWJvcnRfSVQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MpOwogCiAvKioqKioqKiBOb24tQmxvY2tpbmcgbW9kZTogRE1BICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9UcmFuc21pdF9ETUEoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWFzdGVyX1JlY2VpdmVfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9UcmFuc21pdF9ETUEoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgKnBEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFNpemUpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfUmVjZWl2ZV9ETUEoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgKnBEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgU2l6ZSk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX1NsYXZlX1RyYW5zbWl0X0RNQShJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19TbGF2ZV9SZWNlaXZlX0RNQShJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NZW1fV3JpdGVfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSk7Ci1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01lbV9SZWFkX0RNQShJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDE2X3QgTWVtQWRkcmVzcywgdWludDE2X3QgTWVtQWRkU2l6ZSwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NZW1fV3JpdGVfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IE1lbUFkZFNpemUsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWVtX1JlYWRfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgTWVtQWRkU2l6ZSwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpOwogCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9TZXFfVHJhbnNtaXRfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfU2VxX1JlY2VpdmVfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19TbGF2ZV9TZXFfVHJhbnNtaXRfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19TbGF2ZV9TZXFfUmVjZWl2ZV9ETUEoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBYZmVyT3B0aW9ucyk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9TZXFfVHJhbnNtaXRfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfU2VxX1JlY2VpdmVfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBYZmVyT3B0aW9ucyk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX1NsYXZlX1NlcV9UcmFuc21pdF9ETUEoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFhmZXJPcHRpb25zKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfU2xhdmVfU2VxX1JlY2VpdmVfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFhmZXJPcHRpb25zKTsKIC8qKgogICAqIEB9CiAgICovCiAKIC8qKiBAYWRkdG9ncm91cCBJMkNfSVJRX0hhbmRsZXJfYW5kX0NhbGxiYWNrcyBJUlEgSGFuZGxlciBhbmQgQ2FsbGJhY2tzCi0gKiBAewotICovCisgICogQHsKKyAgKi8KIC8qKioqKioqIEkyQyBJUlFIYW5kbGVyIGFuZCBDYWxsYmFja3MgdXNlZCBpbiBub24gYmxvY2tpbmcgbW9kZXMgKEludGVycnVwdCBhbmQgRE1BKSAqLwogdm9pZCBIQUxfSTJDX0VWX0lSUUhhbmRsZXIoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMpOwogdm9pZCBIQUxfSTJDX0VSX0lSUUhhbmRsZXIoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMpOwpAQCAtNzMyLDcgKzc1Niw4IEBACiAjZGVmaW5lIElTX0kyQ19UUkFOU0ZFUl9PVEhFUl9PUFRJT05TX1JFUVVFU1QoUkVRVUVTVCkgKCgoUkVRVUVTVCkgPT0gSTJDX09USEVSX0ZSQU1FKSAgICAgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IEkyQ19PVEhFUl9BTkRfTEFTVF9GUkFNRSkpCiAKLSNkZWZpbmUgSTJDX1JFU0VUX0NSMihfX0hBTkRMRV9fKSAgICAgICAgICAgICAgICAgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMiAmPSAodWludDMyX3QpfigodWludDMyX3QpKEkyQ19DUjJfU0FERCB8IEkyQ19DUjJfSEVBRDEwUiB8IEkyQ19DUjJfTkJZVEVTIHwgSTJDX0NSMl9SRUxPQUQgfCBJMkNfQ1IyX1JEX1dSTikpKQorI2RlZmluZSBJMkNfUkVTRVRfQ1IyKF9fSEFORExFX18pICAgICAgICAgICAgICAgICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IyICY9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCl+KCh1aW50MzJfdCkoSTJDX0NSMl9TQUREIHwgSTJDX0NSMl9IRUFEMTBSIHwgSTJDX0NSMl9OQllURVMgfCBJMkNfQ1IyX1JFTE9BRCB8IEkyQ19DUjJfUkRfV1JOKSkpCiAKICNkZWZpbmUgSTJDX0dFVF9BRERSX01BVENIKF9fSEFORExFX18pICAgICAgICAgICAgKCh1aW50MTZfdCkoKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPklTUiAmIEkyQ19JU1JfQUREQ09ERSkgPj4gMTZVKSkKICNkZWZpbmUgSTJDX0dFVF9ESVIoX19IQU5ETEVfXykgICAgICAgICAgICAgICAgICAgKCh1aW50OF90KSgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+SVNSICYgSTJDX0lTUl9ESVIpID4+IDE2VSkpCkBAIC03NDMsMTMgKzc2OCwxNSBAQAogI2RlZmluZSBJU19JMkNfT1dOX0FERFJFU1MxKEFERFJFU1MxKSAgICAgICAgICAgICAoKEFERFJFU1MxKSA8PSAweDAwMDAwM0ZGVSkKICNkZWZpbmUgSVNfSTJDX09XTl9BRERSRVNTMihBRERSRVNTMikgICAgICAgICAgICAgKChBRERSRVNTMikgPD0gKHVpbnQxNl90KTB4MDBGRlUpCiAKLSNkZWZpbmUgSTJDX01FTV9BRERfTVNCKF9fQUREUkVTU19fKSAgICAgICAgICAgICAgKCh1aW50OF90KSgodWludDE2X3QpKCgodWludDE2X3QpKChfX0FERFJFU1NfXykgJiAodWludDE2X3QpKDB4RkYwMFUpKSkgPj4gOFUpKSkKKyNkZWZpbmUgSTJDX01FTV9BRERfTVNCKF9fQUREUkVTU19fKSAgICAgICAgICAgICAgKCh1aW50OF90KSgodWludDE2X3QpKCgodWludDE2X3QpKChfX0FERFJFU1NfXykgJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNl90KSgweEZGMDBVKSkpID4+IDhVKSkpCiAjZGVmaW5lIEkyQ19NRU1fQUREX0xTQihfX0FERFJFU1NfXykgICAgICAgICAgICAgICgodWludDhfdCkoKHVpbnQxNl90KSgoX19BRERSRVNTX18pICYgKHVpbnQxNl90KSgweDAwRkZVKSkpKQogCiAjZGVmaW5lIEkyQ19HRU5FUkFURV9TVEFSVChfX0FERE1PREVfXyxfX0FERFJFU1NfXykgKCgoX19BRERNT0RFX18pID09IEkyQ19BRERSRVNTSU5HTU9ERV83QklUKSA/ICh1aW50MzJfdCkoKCgodWludDMyX3QpKF9fQUREUkVTU19fKSAmIChJMkNfQ1IyX1NBREQpKSB8IChJMkNfQ1IyX1NUQVJUKSB8IChJMkNfQ1IyX0FVVE9FTkQpKSAmICh+STJDX0NSMl9SRF9XUk4pKSA6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDMyX3QpKCgoKHVpbnQzMl90KShfX0FERFJFU1NfXykgJiAoSTJDX0NSMl9TQUREKSkgfCAoSTJDX0NSMl9BREQxMCkgfCAoSTJDX0NSMl9TVEFSVCkpICYgKH5JMkNfQ1IyX1JEX1dSTikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDMyX3QpKCgoKHVpbnQzMl90KShfX0FERFJFU1NfXykgJiAoSTJDX0NSMl9TQUREKSkgfCAoSTJDX0NSMl9BREQxMCkgfCAoSTJDX0NSMl9TVEFSVCkpICYgKH5JMkNfQ1IyX1JEX1dSTikpKQogCi0jZGVmaW5lIEkyQ19DSEVDS19GTEFHKF9fSVNSX18sIF9fRkxBR19fKSAgICAgICAgICgoKChfX0lTUl9fKSAmICgoX19GTEFHX18pICYgSTJDX0ZMQUdfTUFTSykpID09ICgoX19GTEFHX18pICYgSTJDX0ZMQUdfTUFTSykpID8gU0VUIDogUkVTRVQpCisjZGVmaW5lIEkyQ19DSEVDS19GTEFHKF9fSVNSX18sIF9fRkxBR19fKSAgICAgICAgICgoKChfX0lTUl9fKSAmICAoKF9fRkxBR19fKSAmIEkyQ19GTEFHX01BU0spKSA9PSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0ZMQUdfXykgJiBJMkNfRkxBR19NQVNLKSkgPyBTRVQgOiBSRVNFVCkKICNkZWZpbmUgSTJDX0NIRUNLX0lUX1NPVVJDRShfX0NSMV9fLCBfX0lUX18pICAgICAgKCgoKF9fQ1IxX18pICYgKF9fSVRfXykpID09IChfX0lUX18pKSA/IFNFVCA6IFJFU0VUKQogLyoqCiAgICogQH0KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2kyY19leC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfaTJjX2V4LmgKaW5kZXggZjQ1YmU2Ny4uNTgwZTY3ZiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfaTJjX2V4LmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfaTJjX2V4LmgKQEAgLTM4LDcgKzM4LDYgQEAKIAogLyogRXhwb3J0ZWQgdHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIEV4cG9ydGVkIGNvbnN0YW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KIC8qKiBAZGVmZ3JvdXAgSTJDRXhfRXhwb3J0ZWRfQ29uc3RhbnRzIEkyQyBFeHRlbmRlZCBFeHBvcnRlZCBDb25zdGFudHMKICAgKiBAewogICAqLwpAQCAtOTksMjQgKzk4LDUxIEBACiAgICovCiAKIC8qIEV4cG9ydGVkIG1hY3JvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiBFeHBvcnRlZCBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoqIEBkZWZncm91cCBJMkNFeF9FeHBvcnRlZF9NYWNyb3MgSTJDIEV4dGVuZGVkIEV4cG9ydGVkIE1hY3JvcworICAqIEB7CisgICovCiAKKy8qKgorICAqIEB9CisgICovCisKKy8qIEV4cG9ydGVkIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiogQGFkZHRvZ3JvdXAgSTJDRXhfRXhwb3J0ZWRfRnVuY3Rpb25zIEkyQyBFeHRlbmRlZCBFeHBvcnRlZCBGdW5jdGlvbnMKICAgKiBAewogICAqLwogCi0vKiogQGFkZHRvZ3JvdXAgSTJDRXhfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMSBFeHRlbmRlZCBmZWF0dXJlcyBmdW5jdGlvbnMKLSAgKiBAYnJpZWYgICAgRXh0ZW5kZWQgZmVhdHVyZXMgZnVuY3Rpb25zCisvKiogQGFkZHRvZ3JvdXAgSTJDRXhfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMSBJMkMgRXh0ZW5kZWQgRmlsdGVyIE1vZGUgRnVuY3Rpb25zCiAgICogQHsKICAgKi8KLQogLyogUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ0V4X0NvbmZpZ0FuYWxvZ0ZpbHRlcihJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDMyX3QgQW5hbG9nRmlsdGVyKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNFeF9Db25maWdEaWdpdGFsRmlsdGVyKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBEaWdpdGFsRmlsdGVyKTsKKy8qKgorICAqIEB9CisgICovCisKKy8qKiBAYWRkdG9ncm91cCBJMkNFeF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAyIEkyQyBFeHRlbmRlZCBXYWtlVXAgTW9kZSBGdW5jdGlvbnMKKyAgKiBAeworICAqLworLyoqCisgICogQH0KKyAgKi8KKworLyoqIEBhZGR0b2dyb3VwIEkyQ0V4X0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDMgSTJDIEV4dGVuZGVkIEZhc3RNb2RlUGx1cyBGdW5jdGlvbnMKKyAgKiBAeworICAqLwogI2lmICAoZGVmaW5lZChTWVNDRkdfUE1DX0kyQ19QQjZfRk1QKSB8fCBkZWZpbmVkKFNZU0NGR19QTUNfSTJDX1BCN19GTVApKSB8fCAoZGVmaW5lZChTWVNDRkdfUE1DX0kyQ19QQjhfRk1QKSB8fCBkZWZpbmVkKFNZU0NGR19QTUNfSTJDX1BCOV9GTVApKSB8fCAoZGVmaW5lZChTWVNDRkdfUE1DX0kyQzFfRk1QKSkgfHwgKGRlZmluZWQoU1lTQ0ZHX1BNQ19JMkMyX0ZNUCkpIHx8IGRlZmluZWQoU1lTQ0ZHX1BNQ19JMkMzX0ZNUCkgfHwgZGVmaW5lZChTWVNDRkdfUE1DX0kyQzRfRk1QKQogdm9pZCBIQUxfSTJDRXhfRW5hYmxlRmFzdE1vZGVQbHVzKHVpbnQzMl90IENvbmZpZ0Zhc3RNb2RlUGx1cyk7CiB2b2lkIEhBTF9JMkNFeF9EaXNhYmxlRmFzdE1vZGVQbHVzKHVpbnQzMl90IENvbmZpZ0Zhc3RNb2RlUGx1cyk7CiAjZW5kaWYKKy8qKgorICAqIEB9CisgICovCisKKworLyoqCisgICogQH0KKyAgKi8KIAogLyogUHJpdmF0ZSBjb25zdGFudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qKiBAZGVmZ3JvdXAgSTJDRXhfUHJpdmF0ZV9Db25zdGFudHMgSTJDIEV4dGVuZGVkIFByaXZhdGUgQ29uc3RhbnRzCkBAIC0xMzIsNyArMTU4LDcgQEAKICAgKiBAewogICAqLwogI2RlZmluZSBJU19JMkNfQU5BTE9HX0ZJTFRFUihGSUxURVIpICAgICgoKEZJTFRFUikgPT0gSTJDX0FOQUxPR0ZJTFRFUl9FTkFCTEUpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRklMVEVSKSA9PSBJMkNfQU5BTE9HRklMVEVSX0RJU0FCTEUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZJTFRFUikgPT0gSTJDX0FOQUxPR0ZJTFRFUl9ESVNBQkxFKSkKIAogI2RlZmluZSBJU19JMkNfRElHSVRBTF9GSUxURVIoRklMVEVSKSAgICgoRklMVEVSKSA8PSAweDAwMDAwMDBGVSkKIApAQCAtMTY3LDkgKzE5Myw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fQ09ORklHX18pICYgSTJDX0ZBU1RNT0RFUExVU19QQjkpICA9PSBJMkNfRkFTVE1PREVQTFVTX1BCOSkgIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoX19DT05GSUdfXykgJiBJMkNfRkFTVE1PREVQTFVTX0kyQzEpID09IEkyQ19GQVNUTU9ERVBMVVNfSTJDMSkpCiAjZW5kaWYgLyogU1lTQ0ZHX1BNQ19JMkMxX0ZNUCAmJiBTWVNDRkdfUE1DX0kyQzJfRk1QICYmIFNZU0NGR19QTUNfSTJDM19GTVAgJiYgU1lTQ0ZHX1BNQ19JMkM0X0ZNUCAqLwotCi0KLQogLyoqCiAgICogQH0KICAgKi8KQEAgLTE5MSwxNCArMjE0LDYgQEAKICAgKiBAfQogICAqLwogCi0vKioKLSAgKiBAfQotICAqLwotCi0vKioKLSAgKiBAfQotICAqLwotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfaTJzLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9pMnMuaAppbmRleCBkY2E5Y2EwLi4xMTYzMDZkIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9pMnMuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9pMnMuaApAQCAtODksNyArODksNyBAQAogdHlwZWRlZiBzdHJ1Y3QgX19JMlNfSGFuZGxlVHlwZURlZgogI2Vsc2UKIHR5cGVkZWYgc3RydWN0Ci0jZW5kaWYKKyNlbmRpZiAvKiBVU0VfSEFMX0kyU19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIHsKICAgU1BJX1R5cGVEZWYgICAgICAgICAgICAgICAgKkluc3RhbmNlOyAgICAvKiE8IEkyUyByZWdpc3RlcnMgYmFzZSBhZGRyZXNzICovCiAKQEAgLTE3Niw2ICsxNzYsNyBAQAogI2lmIChVU0VfSEFMX0kyU19SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMVUpCiAjZGVmaW5lIEhBTF9JMlNfRVJST1JfSU5WQUxJRF9DQUxMQkFDSyAgICgweDAwMDAwMDIwVSkgIC8qITwgSW52YWxpZCBDYWxsYmFjayBlcnJvciAgICAgICovCiAjZW5kaWYgLyogVVNFX0hBTF9JMlNfUkVHSVNURVJfQ0FMTEJBQ0tTICovCisjZGVmaW5lIEhBTF9JMlNfRVJST1JfQlVTWV9MSU5FX1JYICAgICAgICgweDAwMDAwMDQwVSkgIC8qITwgQnVzeSBSeCBMaW5lIGVycm9yICAgICAgICAgICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtMjcyLDcgKzI3Myw4IEBACiAjZGVmaW5lIEkyU19GTEFHX0NIU0lERSAgICAgICAgICAgICAgICAgIFNQSV9TUl9DSFNJREUKICNkZWZpbmUgSTJTX0ZMQUdfQlNZICAgICAgICAgICAgICAgICAgICAgU1BJX1NSX0JTWQogCi0jZGVmaW5lIEkyU19GTEFHX01BU0sgICAgICAgICAgICAgICAgICAgKFNQSV9TUl9SWE5FIHwgU1BJX1NSX1RYRSB8IFNQSV9TUl9VRFIgfCBTUElfU1JfT1ZSIHwgU1BJX1NSX0ZSRSB8IFNQSV9TUl9DSFNJREUgfCBTUElfU1JfQlNZKQorI2RlZmluZSBJMlNfRkxBR19NQVNLICAgICAgICAgICAgICAgICAgIChTUElfU1JfUlhORVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTUElfU1JfVFhFIHwgU1BJX1NSX1VEUiB8IFNQSV9TUl9PVlIgfCBTUElfU1JfRlJFIHwgU1BJX1NSX0NIU0lERSB8IFNQSV9TUl9CU1kpCiAvKioKICAgKiBAfQogICAqLwpAQCAtMzA2LDcgKzMwOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlKDApCiAjZWxzZQogI2RlZmluZSBfX0hBTF9JMlNfUkVTRVRfSEFORExFX1NUQVRFKF9fSEFORExFX18pICgoX19IQU5ETEVfXyktPlN0YXRlID0gSEFMX0kyU19TVEFURV9SRVNFVCkKLSNlbmRpZgorI2VuZGlmIC8qIFVTRV9IQUxfSTJTX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogCiAvKiogQGJyaWVmICBFbmFibGUgdGhlIHNwZWNpZmllZCBTUEkgcGVyaXBoZXJhbCAoaW4gSTJTIG1vZGUpLgogICAqIEBwYXJhbSAgX19IQU5ETEVfXyBzcGVjaWZpZXMgdGhlIEkyUyBIYW5kbGUuCkBAIC0zNTIsNyArMzU0LDggQEAKICAgKiAgICAgICAgICAgIEBhcmcgSTJTX0lUX0VSUjogRXJyb3IgaW50ZXJydXB0IGVuYWJsZQogICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiBfX0lUX18gKFRSVUUgb3IgRkFMU0UpLgogICAqLwotI2RlZmluZSBfX0hBTF9JMlNfR0VUX0lUX1NPVVJDRShfX0hBTkRMRV9fLCBfX0lOVEVSUlVQVF9fKSAoKCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjIgJiAoX19JTlRFUlJVUFRfXykpID09IChfX0lOVEVSUlVQVF9fKSkgPyBTRVQgOiBSRVNFVCkKKyNkZWZpbmUgX19IQUxfSTJTX0dFVF9JVF9TT1VSQ0UoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXykgKCgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IyXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIChfX0lOVEVSUlVQVF9fKSkgPT0gKF9fSU5URVJSVVBUX18pKSA/IFNFVCA6IFJFU0VUKQogCiAvKiogQGJyaWVmICBDaGVja3Mgd2hldGhlciB0aGUgc3BlY2lmaWVkIEkyUyBmbGFnIGlzIHNldCBvciBub3QuCiAgICogQHBhcmFtICBfX0hBTkRMRV9fIHNwZWNpZmllcyB0aGUgSTJTIEhhbmRsZS4KQEAgLTM3NCwxOSArMzc3LDI4IEBACiAgICogQHJldHZhbCBOb25lCiAgICovCiAjZGVmaW5lIF9fSEFMX0kyU19DTEVBUl9PVlJGTEFHKF9fSEFORExFX18pIGRveyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSU8gdWludDMyX3QgdG1wcmVnX292ciA9IDB4MDBVOyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcHJlZ19vdnIgPSAoX19IQU5ETEVfXyktPkluc3RhbmNlLT5EUjsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXByZWdfb3ZyID0gKF9fSEFORExFX18pLT5JbnN0YW5jZS0+U1I7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5VU0VEKHRtcHJlZ19vdnIpOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPIHVpbnQzMl90IHRtcHJlZ19vdnIgPSAweDAwVTsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wcmVnX292ciA9IChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkRSOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXByZWdfb3ZyID0gKF9fSEFORExFX18pLT5JbnN0YW5jZS0+U1I7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOVVNFRCh0bXByZWdfb3ZyKTsgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH13aGlsZSgwVSkKIC8qKiBAYnJpZWYgQ2xlYXJzIHRoZSBJMlMgVURSIHBlbmRpbmcgZmxhZy4KICAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBJMlMgSGFuZGxlLgogICAqIEByZXR2YWwgTm9uZQogICAqLwogI2RlZmluZSBfX0hBTF9JMlNfQ0xFQVJfVURSRkxBRyhfX0hBTkRMRV9fKSBkb3tcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSU8gdWludDMyX3QgdG1wcmVnX3VkciA9IDB4MDBVO1wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wcmVnX3VkciA9ICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5TUik7XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTlVTRUQodG1wcmVnX3Vkcik7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSU8gdWludDMyX3QgdG1wcmVnX3VkciA9IDB4MDBVO1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcHJlZ191ZHIgPSAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+U1IpO1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOVVNFRCh0bXByZWdfdWRyKTsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH13aGlsZSgwVSkKKy8qKiBAYnJpZWYgRmx1c2ggdGhlIEkyUyBEUiBSZWdpc3Rlci4KKyAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBJMlMgSGFuZGxlLgorICAqIEByZXR2YWwgTm9uZQorICAqLworI2RlZmluZSBfX0hBTF9JMlNfRkxVU0hfUlhfRFIoX19IQU5ETEVfXykgIGRve1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSU8gdWludDMyX3QgdG1wcmVnX2RyID0gMHgwMFU7XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wcmVnX2RyID0gKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkRSKTtcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTlVTRUQodG1wcmVnX2RyKTsgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH13aGlsZSgwVSkKIC8qKgogICAqIEB9CkBAIC00MDgsNyArNDIwLDggQEAKIAogLyogQ2FsbGJhY2tzIFJlZ2lzdGVyL1VuUmVnaXN0ZXIgZnVuY3Rpb25zICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICNpZiAoVVNFX0hBTF9JMlNfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDFVKQotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyU19SZWdpc3RlckNhbGxiYWNrKEkyU19IYW5kbGVUeXBlRGVmICpoaTJzLCBIQUxfSTJTX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsIHBJMlNfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJTX1JlZ2lzdGVyQ2FsbGJhY2soSTJTX0hhbmRsZVR5cGVEZWYgKmhpMnMsIEhBTF9JMlNfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwSTJTX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyU19VblJlZ2lzdGVyQ2FsbGJhY2soSTJTX0hhbmRsZVR5cGVEZWYgKmhpMnMsIEhBTF9JMlNfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCk7CiAjZW5kaWYgLyogVVNFX0hBTF9JMlNfUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAvKioKQEAgLTQ2MywyMSArNDc2LDEzIEBACiAvKiBQcml2YXRlIHR5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogUHJpdmF0ZSB2YXJpYWJsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIFByaXZhdGUgY29uc3RhbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiogQGRlZmdyb3VwIEkyU19Qcml2YXRlX0NvbnN0YW50cyBJMlMgUHJpdmF0ZSBDb25zdGFudHMKLSAgKiBAewotICAqLwotCi0vKioKLSAgKiBAfQotICAqLwotCiAvKiBQcml2YXRlIG1hY3JvcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoqIEBkZWZncm91cCBJMlNfUHJpdmF0ZV9NYWNyb3MgSTJTIFByaXZhdGUgTWFjcm9zCiAgICogQHsKICAgKi8KIAogLyoqIEBicmllZiAgQ2hlY2sgd2hldGhlciB0aGUgc3BlY2lmaWVkIFNQSSBmbGFnIGlzIHNldCBvciBub3QuCi0gICogQHBhcmFtICBfX1NSX18gIGNvcHkgb2YgSTJTIFNSIHJlZ3NpdGVyLgorICAqIEBwYXJhbSAgX19TUl9fICBjb3B5IG9mIEkyUyBTUiByZWdpc3Rlci4KICAgKiBAcGFyYW0gIF9fRkxBR19fIHNwZWNpZmllcyB0aGUgZmxhZyB0byBjaGVjay4KICAgKiAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAgICogICAgICAgICAgICBAYXJnIEkyU19GTEFHX1JYTkU6IFJlY2VpdmUgYnVmZmVyIG5vdCBlbXB0eSBmbGFnCkBAIC00ODgsMTAgKzQ5MywxMSBAQAogICAqICAgICAgICAgICAgQGFyZyBJMlNfRkxBR19CU1k6IEJ1c3kgZmxhZwogICAqIEByZXR2YWwgU0VUIG9yIFJFU0VULgogICAqLwotI2RlZmluZSBJMlNfQ0hFQ0tfRkxBRyhfX1NSX18sIF9fRkxBR19fKSAgICAgICAgICgoKChfX1NSX18pICYgKChfX0ZMQUdfXykgJiBJMlNfRkxBR19NQVNLKSkgPT0gKChfX0ZMQUdfXykgJiBJMlNfRkxBR19NQVNLKSkgPyBTRVQgOiBSRVNFVCkKKyNkZWZpbmUgSTJTX0NIRUNLX0ZMQUcoX19TUl9fLCBfX0ZMQUdfXykgICAgICAgICAoKCgoX19TUl9fKVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmICgoX19GTEFHX18pICYgSTJTX0ZMQUdfTUFTSykpID09ICgoX19GTEFHX18pICYgSTJTX0ZMQUdfTUFTSykpID8gU0VUIDogUkVTRVQpCiAKIC8qKiBAYnJpZWYgIENoZWNrIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBTUEkgSW50ZXJydXB0IGlzIHNldCBvciBub3QuCi0gICogQHBhcmFtICBfX0NSMl9fICBjb3B5IG9mIEkyUyBDUjIgcmVnc2l0ZXIuCisgICogQHBhcmFtICBfX0NSMl9fICBjb3B5IG9mIEkyUyBDUjIgcmVnaXN0ZXIuCiAgICogQHBhcmFtICBfX0lOVEVSUlVQVF9fIHNwZWNpZmllcyB0aGUgU1BJIGludGVycnVwdCBzb3VyY2UgdG8gY2hlY2suCiAgICogICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgogICAqICAgICAgICAgICAgQGFyZyBJMlNfSVRfVFhFOiBUeCBidWZmZXIgZW1wdHkgaW50ZXJydXB0IGVuYWJsZQpAQCAtNDk5LDcgKzUwNSw4IEBACiAgICogICAgICAgICAgICBAYXJnIEkyU19JVF9FUlI6IEVycm9yIGludGVycnVwdCBlbmFibGUKICAgKiBAcmV0dmFsIFNFVCBvciBSRVNFVC4KICAgKi8KLSNkZWZpbmUgSTJTX0NIRUNLX0lUX1NPVVJDRShfX0NSMl9fLCBfX0lOVEVSUlVQVF9fKSAgICAgICgoKChfX0NSMl9fKSAmIChfX0lOVEVSUlVQVF9fKSkgPT0gKF9fSU5URVJSVVBUX18pKSA/IFNFVCA6IFJFU0VUKQorI2RlZmluZSBJMlNfQ0hFQ0tfSVRfU09VUkNFKF9fQ1IyX18sIF9fSU5URVJSVVBUX18pICAgICAgKCgoKF9fQ1IyX18pXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiAoX19JTlRFUlJVUFRfXykpID09IChfX0lOVEVSUlVQVF9fKSkgPyBTRVQgOiBSRVNFVCkKIAogLyoqIEBicmllZiAgQ2hlY2tzIGlmIEkyUyBNb2RlIHBhcmFtZXRlciBpcyBpbiBhbGxvd2VkIHJhbmdlLgogICAqIEBwYXJhbSAgX19NT0RFX18gc3BlY2lmaWVzIHRoZSBJMlMgTW9kZS4KQEAgLTUyNyw3ICs1MzQsNyBAQAogCiAjZGVmaW5lIElTX0kyU19BVURJT19GUkVRKF9fRlJFUV9fKSAoKCgoX19GUkVRX18pID49IEkyU19BVURJT0ZSRVFfOEspICAgICYmIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0ZSRVFfXykgPD0gSTJTX0FVRElPRlJFUV8xOTJLKSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fRlJFUV9fKSA9PSBJMlNfQVVESU9GUkVRX0RFRkFVTFQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19GUkVRX18pID09IEkyU19BVURJT0ZSRVFfREVGQVVMVCkpCiAKIC8qKiBAYnJpZWYgIENoZWNrcyBpZiBJMlMgU2VyaWFsIGNsb2NrIHN0ZWFkeSBzdGF0ZSBwYXJhbWV0ZXIgaXMgaW4gYWxsb3dlZCByYW5nZS4KICAgKiBAcGFyYW0gIF9fQ1BPTF9fIHNwZWNpZmllcyB0aGUgSTJTIHNlcmlhbCBjbG9jayBzdGVhZHkgc3RhdGUuCkBAIC01MzUsNyArNTQyLDcgQEAKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KICNkZWZpbmUgSVNfSTJTX0NQT0woX19DUE9MX18pICgoKF9fQ1BPTF9fKSA9PSBJMlNfQ1BPTF9MT1cpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19DUE9MX18pID09IEkyU19DUE9MX0hJR0gpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19DUE9MX18pID09IEkyU19DUE9MX0hJR0gpKQogCiAjZGVmaW5lIElTX0kyU19DTE9DS1NPVVJDRShDTE9DSykgKCgoQ0xPQ0spID09IEkyU19DTE9DS19FWFRFUk5BTCkgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKENMT0NLKSA9PSBJMlNfQ0xPQ0tfUExMKSkKZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX2lyZGEuaCBiL0luYy9zdG0zMmY3eHhfaGFsX2lyZGEuaAppbmRleCAwOWJhZjIxLi4zNzEyYjY5IDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9pcmRhLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfaXJkYS5oCkBAIC03NSw3ICs3NSw4IEBACiAKIC8qKgogICAqIEBicmllZiBIQUwgSVJEQSBTdGF0ZSBkZWZpbml0aW9uCi0gICogQG5vdGUgIEhBTCBJUkRBIFN0YXRlIHZhbHVlIGlzIGEgY29tYmluYXRpb24gb2YgMiBkaWZmZXJlbnQgc3Vic3RhdGVzOiBnU3RhdGUgYW5kIFJ4U3RhdGUgKHNlZSBAcmVmIElSREFfU3RhdGVfRGVmaW5pdGlvbikuCisgICogQG5vdGUgIEhBTCBJUkRBIFN0YXRlIHZhbHVlIGlzIGEgY29tYmluYXRpb24gb2YgMiBkaWZmZXJlbnQgc3Vic3RhdGVzOgorICAqICAgICAgICBnU3RhdGUgYW5kIFJ4U3RhdGUgKHNlZSBAcmVmIElSREFfU3RhdGVfRGVmaW5pdGlvbikuCiAgICogICAgICAgIC0gZ1N0YXRlIGNvbnRhaW5zIElSREEgc3RhdGUgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBnbG9iYWwgSGFuZGxlIG1hbmFnZW1lbnQKICAgKiAgICAgICAgICBhbmQgYWxzbyBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIFR4IG9wZXJhdGlvbnMuCiAgICogICAgICAgICAgZ1N0YXRlIHZhbHVlIGNvZGluZyBmb2xsb3cgYmVsb3cgZGVzY3JpYmVkIGJpdG1hcCA6CkBAIC04Niw3ICs4Nyw3IEBACiAgICogICAgICAgICAgICAgMTEgOiBFcnJvcgogICAqICAgICAgICAgIGI1ICAgICBQZXJpcGhlcmFsIGluaXRpYWxpemF0aW9uIHN0YXR1cwogICAqICAgICAgICAgICAgIDAgIDogUmVzZXQgKFBlcmlwaGVyYWwgbm90IGluaXRpYWxpemVkKQotICAqICAgICAgICAgICAgIDEgIDogSW5pdCBkb25lIChQZXJpcGhlcmFsIG5vdCBpbml0aWFsaXplZC4gSEFMIElSREEgSW5pdCBmdW5jdGlvbiBhbHJlYWR5IGNhbGxlZCkKKyAgKiAgICAgICAgICAgICAxICA6IEluaXQgZG9uZSAoUGVyaXBoZXJhbCBpbml0aWFsaXplZC4gSEFMIElSREEgSW5pdCBmdW5jdGlvbiBhbHJlYWR5IGNhbGxlZCkKICAgKiAgICAgICAgICBiNC1iMyAgKG5vdCB1c2VkKQogICAqICAgICAgICAgICAgIHh4IDogU2hvdWxkIGJlIHNldCB0byAwMAogICAqICAgICAgICAgIGIyICAgICBJbnRyaW5zaWMgcHJvY2VzcyBzdGF0ZQpAQCAtMTAzLDcgKzEwNCw3IEBACiAgICogICAgICAgICAgICAgeHggOiBTaG91bGQgYmUgc2V0IHRvIDAwCiAgICogICAgICAgICAgYjUgICAgIFBlcmlwaGVyYWwgaW5pdGlhbGl6YXRpb24gc3RhdHVzCiAgICogICAgICAgICAgICAgMCAgOiBSZXNldCAoUGVyaXBoZXJhbCBub3QgaW5pdGlhbGl6ZWQpCi0gICogICAgICAgICAgICAgMSAgOiBJbml0IGRvbmUgKFBlcmlwaGVyYWwgbm90IGluaXRpYWxpemVkKQorICAqICAgICAgICAgICAgIDEgIDogSW5pdCBkb25lIChQZXJpcGhlcmFsIGluaXRpYWxpemVkKQogICAqICAgICAgICAgIGI0LWIyICAobm90IHVzZWQpCiAgICogICAgICAgICAgICB4eHggOiBTaG91bGQgYmUgc2V0IHRvIDAwMAogICAqICAgICAgICAgIGIxICAgICBSeCBzdGF0ZQpAQCAtMjQ1LDcgKzI0Niw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBpcyBhbGxvd2VkIGZvciBSeFN0YXRlIG9ubHkgKi8KICNkZWZpbmUgSEFMX0lSREFfU1RBVEVfQlVTWV9UWF9SWCAgICAgICAgICAgMHgwMDAwMDAyM1UgICAvKiE8IERhdGEgVHJhbnNtaXNzaW9uIGFuZCBSZWNlcHRpb24gcHJvY2VzcyBpcyBvbmdvaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3QgdG8gYmUgdXNlZCBmb3IgbmVpdGhlciBnU3RhdGUgbm9yIFJ4U3RhdGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBpcyByZXN1bHQgb2YgY29tYmluYXRpb24gKE9yKSBiZXR3ZWVuIGdTdGF0ZSBhbmQgUnhTdGF0ZSB2YWx1ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGlzIHJlc3VsdCBvZiBjb21iaW5hdGlvbiAoT3IpIGJldHdlZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdTdGF0ZSBhbmQgUnhTdGF0ZSB2YWx1ZXMgKi8KICNkZWZpbmUgSEFMX0lSREFfU1RBVEVfVElNRU9VVCAgICAgICAgICAgICAgMHgwMDAwMDBBMFUgICAvKiE8IFRpbWVvdXQgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGlzIGFsbG93ZWQgZm9yIGdTdGF0ZSBvbmx5ICovCiAjZGVmaW5lIEhBTF9JUkRBX1NUQVRFX0VSUk9SICAgICAgICAgICAgICAgIDB4MDAwMDAwRTBVICAgLyohPCBFcnJvcgpAQCAtMjU3LDE1ICsyNTksMTUgQEAKIC8qKiBAZGVmZ3JvdXAgSVJEQV9FcnJvcl9EZWZpbml0aW9uIElSREEgRXJyb3IgQ29kZSBEZWZpbml0aW9uCiAgICogQHsKICAgKi8KLSNkZWZpbmUgSEFMX0lSREFfRVJST1JfTk9ORSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwVSkgICAgICAgICAgLyohPCBObyBlcnJvciAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBIQUxfSVJEQV9FUlJPUl9QRSAgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDFVKSAgICAgICAgICAvKiE8IFBhcml0eSBlcnJvciAgICAgICAgICAgICovCi0jZGVmaW5lIEhBTF9JUkRBX0VSUk9SX05FICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMlUpICAgICAgICAgIC8qITwgTm9pc2UgZXJyb3IgICAgICAgICAgICAgKi8KLSNkZWZpbmUgSEFMX0lSREFfRVJST1JfRkUgICAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0VSkgICAgICAgICAgLyohPCBmcmFtZSBlcnJvciAgICAgICAgICAgICAqLwotI2RlZmluZSBIQUxfSVJEQV9FUlJPUl9PUkUgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDhVKSAgICAgICAgICAvKiE8IE92ZXJydW4gZXJyb3IgICAgICAgICAgICovCi0jZGVmaW5lIEhBTF9JUkRBX0VSUk9SX0RNQSAgICAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAxMFUpICAgICAgICAgIC8qITwgRE1BIHRyYW5zZmVyIGVycm9yICAgICAgKi8KLSNkZWZpbmUgSEFMX0lSREFfRVJST1JfQlVTWSAgICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDIwVSkgICAgICAgICAgLyohPCBCdXN5IEVycm9yICAgICAgICAgICAgICAqLworI2RlZmluZSBIQUxfSVJEQV9FUlJPUl9OT05FICAgICAgICAgICAgICAgICAoMHgwMDAwMDAwMFUpICAgICAgICAgIC8qITwgTm8gZXJyb3IgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSEFMX0lSREFfRVJST1JfUEUgICAgICAgICAgICAgICAgICAgKDB4MDAwMDAwMDFVKSAgICAgICAgICAvKiE8IFBhcml0eSBlcnJvciAgICAgICAgICAgICovCisjZGVmaW5lIEhBTF9JUkRBX0VSUk9SX05FICAgICAgICAgICAgICAgICAgICgweDAwMDAwMDAyVSkgICAgICAgICAgLyohPCBOb2lzZSBlcnJvciAgICAgICAgICAgICAqLworI2RlZmluZSBIQUxfSVJEQV9FUlJPUl9GRSAgICAgICAgICAgICAgICAgICAoMHgwMDAwMDAwNFUpICAgICAgICAgIC8qITwgZnJhbWUgZXJyb3IgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSEFMX0lSREFfRVJST1JfT1JFICAgICAgICAgICAgICAgICAgKDB4MDAwMDAwMDhVKSAgICAgICAgICAvKiE8IE92ZXJydW4gZXJyb3IgICAgICAgICAgICovCisjZGVmaW5lIEhBTF9JUkRBX0VSUk9SX0RNQSAgICAgICAgICAgICAgICAgICgweDAwMDAwMDEwVSkgICAgICAgICAgLyohPCBETUEgdHJhbnNmZXIgZXJyb3IgICAgICAqLworI2RlZmluZSBIQUxfSVJEQV9FUlJPUl9CVVNZICAgICAgICAgICAgICAgICAoMHgwMDAwMDAyMFUpICAgICAgICAgIC8qITwgQnVzeSBFcnJvciAgICAgICAgICAgICAgKi8KICNpZiAoVVNFX0hBTF9JUkRBX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotI2RlZmluZSBIQUxfSVJEQV9FUlJPUl9JTlZBTElEX0NBTExCQUNLICAgICAoKHVpbnQzMl90KTB4MDAwMDAwNDBVKSAgICAgICAgICAvKiE8IEludmFsaWQgQ2FsbGJhY2sgZXJyb3IgICovCisjZGVmaW5lIEhBTF9JUkRBX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0sgICAgICgweDAwMDAwMDQwVSkgICAgICAgICAgLyohPCBJbnZhbGlkIENhbGxiYWNrIGVycm9yICAqLwogI2VuZGlmIC8qIFVTRV9IQUxfSVJEQV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIC8qKgogICAqIEB9CkBAIC01NDcsOSArNTQ5LDE0IEBACiAgICogICAgICAgICAgICBAYXJnIEByZWYgSVJEQV9JVF9FUlIgIEVycm9yIGludGVycnVwdChGcmFtZSBlcnJvciwgbm9pc2UgZXJyb3IsIG92ZXJydW4gZXJyb3IpCiAgICogQHJldHZhbCBOb25lCiAgICovCi0jZGVmaW5lIF9fSEFMX0lSREFfRU5BQkxFX0lUKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICAgKCgoKChfX0lOVEVSUlVQVF9fKSAmIElSREFfQ1JfTUFTSykgPj4gSVJEQV9DUl9QT1MpID09IDFVKT8gKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMSB8PSAoKHVpbnQzMl90KTFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBJUkRBX0lUX01BU0spKSk6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoKF9fSU5URVJSVVBUX18pICYgSVJEQV9DUl9NQVNLKSA+PiBJUkRBX0NSX1BPUykgPT0gMlUpPyAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IyIHw9ICgodWludDMyX3QpMVUgPDwgKChfX0lOVEVSUlVQVF9fKSAmIElSREFfSVRfTUFTSykpKTogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IzIHw9ICgodWludDMyX3QpMVUgPDwgKChfX0lOVEVSUlVQVF9fKSAmIElSREFfSVRfTUFTSykpKSkKKyNkZWZpbmUgX19IQUxfSVJEQV9FTkFCTEVfSVQoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXykgICAoKCgoKF9fSU5URVJSVVBUX18pICYgSVJEQV9DUl9NQVNLKSA+PiBJUkRBX0NSX1BPUykgPT0gMVUpPyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjEgfD0gKDFVIDw8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19JTlRFUlJVUFRfXykgJiBJUkRBX0lUX01BU0spKSk6XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgoX19JTlRFUlJVUFRfXykgJiBJUkRBX0NSX01BU0spID4+IElSREFfQ1JfUE9TKSA9PSAyVSk/IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMiB8PSAoMVUgPDwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0lOVEVSUlVQVF9fKSAmIElSREFfSVRfTUFTSykpKTpcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjMgfD0gKDFVIDw8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19JTlRFUlJVUFRfXykgJiBJUkRBX0lUX01BU0spKSkpCiAKIC8qKiBAYnJpZWYgIERpc2FibGUgdGhlIHNwZWNpZmllZCBJUkRBIGludGVycnVwdC4KICAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBJUkRBIEhhbmRsZS4KQEAgLTU2MywxMCArNTcwLDE0IEBACiAgICogICAgICAgICAgICBAYXJnIEByZWYgSVJEQV9JVF9FUlIgIEVycm9yIGludGVycnVwdChGcmFtZSBlcnJvciwgbm9pc2UgZXJyb3IsIG92ZXJydW4gZXJyb3IpCiAgICogQHJldHZhbCBOb25lCiAgICovCi0jZGVmaW5lIF9fSEFMX0lSREFfRElTQUJMRV9JVChfX0hBTkRMRV9fLCBfX0lOVEVSUlVQVF9fKSAgKCgoKChfX0lOVEVSUlVQVF9fKSAmIElSREFfQ1JfTUFTSykgPj4gSVJEQV9DUl9QT1MpID09IDFVKT8gKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMSAmPSB+ICgodWludDMyX3QpMVUgPDwgKChfX0lOVEVSUlVQVF9fKSAmIElSREFfSVRfTUFTSykpKTogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgoX19JTlRFUlJVUFRfXykgJiBJUkRBX0NSX01BU0spID4+IElSREFfQ1JfUE9TKSA9PSAyVSk/ICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjIgJj0gfiAoKHVpbnQzMl90KTFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBJUkRBX0lUX01BU0spKSk6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMyAmPSB+ICgodWludDMyX3QpMVUgPDwgKChfX0lOVEVSUlVQVF9fKSAmIElSREFfSVRfTUFTSykpKSkKLQorI2RlZmluZSBfX0hBTF9JUkRBX0RJU0FCTEVfSVQoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXykgICgoKCgoX19JTlRFUlJVUFRfXykgJiBJUkRBX0NSX01BU0spID4+IElSREFfQ1JfUE9TKSA9PSAxVSk/IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMSAmPSB+ICgxVSA8PCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fSU5URVJSVVBUX18pICYgSVJEQV9JVF9NQVNLKSkpOiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKChfX0lOVEVSUlVQVF9fKSAmIElSREFfQ1JfTUFTSykgPj4gSVJEQV9DUl9QT1MpID09IDJVKT8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IyICY9IH4gKDFVIDw8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19JTlRFUlJVUFRfXykgJiBJUkRBX0lUX01BU0spKSk6IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMyAmPSB+ICgxVSA8PCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fSU5URVJSVVBUX18pICYgSVJEQV9JVF9NQVNLKSkpKQogCiAvKiogQGJyaWVmICBDaGVjayB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgSVJEQSBpbnRlcnJ1cHQgaGFzIG9jY3VycmVkIG9yIG5vdC4KICAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBJUkRBIEhhbmRsZS4KQEAgLTU4Miw4ICs1OTMsOCBAQAogICAqICAgICAgICAgICAgQGFyZyBAcmVmIElSREFfSVRfUEUgUGFyaXR5IEVycm9yIGludGVycnVwdAogICAqIEByZXR2YWwgVGhlIG5ldyBzdGF0ZSBvZiBfX0lUX18gKFNFVCBvciBSRVNFVCkuCiAgICovCi0jZGVmaW5lIF9fSEFMX0lSREFfR0VUX0lUKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICgoKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPklTUlwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiAoMHgwMVUgPDwgKCgoX19JTlRFUlJVUFRfXykgJiBJUkRBX0lTUl9NQVNLKT4+IElSREFfSVNSX1BPUykpKSAhPSAwVSkgPyBTRVQgOiBSRVNFVCkKKyNkZWZpbmUgX19IQUxfSVJEQV9HRVRfSVQoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXykgXAorICAoKCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5JU1ImICgweDAxVSA8PCAoKChfX0lOVEVSUlVQVF9fKSAmIElSREFfSVNSX01BU0spPj5JUkRBX0lTUl9QT1MpKSkgIT0gMFUpID8gU0VUIDogUkVTRVQpCiAKIC8qKiBAYnJpZWYgIENoZWNrIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBJUkRBIGludGVycnVwdCBzb3VyY2UgaXMgZW5hYmxlZCBvciBub3QuCiAgICogQHBhcmFtICBfX0hBTkRMRV9fIHNwZWNpZmllcyB0aGUgSVJEQSBIYW5kbGUuCkBAIC01OTcsOSArNjA4LDEwIEBACiAgICogICAgICAgICAgICBAYXJnIEByZWYgSVJEQV9JVF9QRSBQYXJpdHkgRXJyb3IgaW50ZXJydXB0CiAgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIF9fSVRfXyAoU0VUIG9yIFJFU0VUKS4KICAgKi8KLSNkZWZpbmUgX19IQUxfSVJEQV9HRVRfSVRfU09VUkNFKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICgoKCgoKCgoX19JTlRFUlJVUFRfXykgJiBJUkRBX0NSX01BU0spID4+IElSREFfQ1JfUE9TKSA9PSAweDAxVSk/IChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMSA6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgoKF9fSU5URVJSVVBUX18pICYgSVJEQV9DUl9NQVNLKSA+PiBJUkRBX0NSX1BPUykgPT0gMHgwMlUpPyAoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjIgOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMykpICYgKCh1aW50MzJfdCkweDAxVSA8PCAoKCh1aW50MTZfdCkoX19JTlRFUlJVUFRfXykpICYgSVJEQV9JVF9NQVNLKSkpICE9IDBVKSA/IFNFVCA6IFJFU0VUKQorI2RlZmluZSBfX0hBTF9JUkRBX0dFVF9JVF9TT1VSQ0UoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoKCgoKCgoKF9fSU5URVJSVVBUX18pICYgSVJEQV9DUl9NQVNLKSA+PklSREFfQ1JfUE9TKSA9PSAweDAxVSk/IChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMSA6KCgoKChfX0lOVEVSUlVQVF9fKSAgXAorICAgICAgJiBJUkRBX0NSX01BU0spID4+IElSREFfQ1JfUE9TKT09IDB4MDJVKT8gKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IyIDooX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjMpKSAgICAgICAgICAgXAorICAgICAmICgweDAxVSA8PCgoKHVpbnQxNl90KShfX0lOVEVSUlVQVF9fKSkgJiBJUkRBX0lUX01BU0spKSkgIT0gMFUpID8gU0VUIDogUkVTRVQpCiAKIC8qKiBAYnJpZWYgIENsZWFyIHRoZSBzcGVjaWZpZWQgSVJEQSBJU1IgZmxhZywgaW4gc2V0dGluZyB0aGUgcHJvcGVyIElDUiByZWdpc3RlciBmbGFnLgogICAqIEBwYXJhbSAgX19IQU5ETEVfXyBzcGVjaWZpZXMgdGhlIElSREEgSGFuZGxlLgpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfaXdkZy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfaXdkZy5oCmluZGV4IDdjZWIzOTUuLmY0NjA4NTAgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2l3ZGcuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9pd2RnLmgKQEAgLTg3LDcgKzg3LDYgQEAKICNkZWZpbmUgSVdER19QUkVTQ0FMRVJfNjQgICAgICAgICAgICAgICBJV0RHX1BSX1BSXzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IElXREcgcHJlc2NhbGVyIHNldCB0byA2NCAgKi8KICNkZWZpbmUgSVdER19QUkVTQ0FMRVJfMTI4ICAgICAgICAgICAgICAoSVdER19QUl9QUl8yIHwgSVdER19QUl9QUl8wKSAgICAgICAgICAgICAgICAgICAvKiE8IElXREcgcHJlc2NhbGVyIHNldCB0byAxMjggKi8KICNkZWZpbmUgSVdER19QUkVTQ0FMRVJfMjU2ICAgICAgICAgICAgICAoSVdER19QUl9QUl8yIHwgSVdER19QUl9QUl8xKSAgICAgICAgICAgICAgICAgICAvKiE8IElXREcgcHJlc2NhbGVyIHNldCB0byAyNTYgKi8KLQogLyoqCiAgICogQH0KICAgKi8KQEAgLTEwMCw3ICs5OSw2IEBACiAgICogQH0KICAgKi8KIAotCiAvKioKICAgKiBAfQogICAqLwpAQCAtMTM4LDcgKzEzNiw3IEBACiAgICogQHsKICAgKi8KIC8qIEluaXRpYWxpemF0aW9uL1N0YXJ0IGZ1bmN0aW9ucyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSVdER19Jbml0KElXREdfSGFuZGxlVHlwZURlZiAqaGl3ZGcpOworSEFMX1N0YXR1c1R5cGVEZWYgICAgIEhBTF9JV0RHX0luaXQoSVdER19IYW5kbGVUeXBlRGVmICpoaXdkZyk7CiAvKioKICAgKiBAfQogICAqLwpAQCAtMTQ3LDcgKzE0NSw3IEBACiAgICogQHsKICAgKi8KIC8qIEkvTyBvcGVyYXRpb24gZnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSVdER19SZWZyZXNoKElXREdfSGFuZGxlVHlwZURlZiAqaGl3ZGcpOworSEFMX1N0YXR1c1R5cGVEZWYgICAgIEhBTF9JV0RHX1JlZnJlc2goSVdER19IYW5kbGVUeXBlRGVmICpoaXdkZyk7CiAvKioKICAgKiBAfQogICAqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfanBlZy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfanBlZy5oCmluZGV4IDUyMDIyMTQuLjlhY2JhYmQgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX2pwZWcuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9qcGVnLmgKQEAgLTI0LDEwICsyNCwxMiBAQAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgotI2lmIGRlZmluZWQgKEpQRUcpCisKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAjaW5jbHVkZSAic3RtMzJmN3h4X2hhbF9kZWYuaCIKIAorI2lmIGRlZmluZWQgKEpQRUcpCisKIC8qKiBAYWRkdG9ncm91cCBTVE0zMkY3eHhfSEFMX0RyaXZlcgogICAqIEB7CiAgICovCkBAIC0zOTcsNyArMzk5LDcgQEAKICAgKiAgICAgICAgIEBhcmcgSlBFR19JVF9FT0MgICA6IEVuZCBvZiBDb252ZXJzaW9uIEludGVycnVwdAogICAqICAgICAgICAgQGFyZyBKUEVHX0lUX0hQRCAgIDogSGVhZGVyIFBhcnNpbmcgRG9uZSBJbnRlcnJ1cHQKICAgKgotICAqIEByZXR2YWwgTm8gcmV0cnVuCisgICogQHJldHZhbCBObyByZXR1cm4KICAgKi8KICNkZWZpbmUgX19IQUxfSlBFR19FTkFCTEVfSVQoX19IQU5ETEVfXyxfX0lOVEVSUlVQVF9fKSAgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSIHw9IChfX0lOVEVSUlVQVF9fKSApCiAKQEAgLTQxNSw3ICs0MTcsNyBAQAogICAqCiAgICogQG5vdGUgICAgVG8gZGlzYWJsZSBhbiBJVCB3ZSBtdXN0IHVzZSBNT0RJRllfUkVHIG1hY3JvIHRvIGF2b2lkIHdyaXRpbmcgIjEiIHRvIHRoZSBGSUZPIGZsdXNoIGJpdHMKICAgKiAgICAgICAgICBsb2NhdGVkIGluIHRoZSBzYW1lIElUIGVuYWJsZSByZWdpc3RlciAoQ1IgcmVnaXN0ZXIpLgotICAqIEByZXR2YWwgIE5vIHJldHJ1bgorICAqIEByZXR2YWwgIE5vIHJldHVybgogICAqLwogI2RlZmluZSBfX0hBTF9KUEVHX0RJU0FCTEVfSVQoX19IQU5ETEVfXyxfX0lOVEVSUlVQVF9fKSBNT0RJRllfUkVHKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSLCAoX19JTlRFUlJVUFRfXyksIDBVTCkKIApAQCAtNjQzLDYgKzY0NSw3IEBACiAgICovCiAKICNlbmRpZiAvKiBKUEVHICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9scHRpbS5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfbHB0aW0uaAppbmRleCA5MjQxYjg4Li4yNTk0ZjFjIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9scHRpbS5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX2xwdGltLmgKQEAgLTM0NSwxMCArMzQ1LDEwIEBACiAgICovCiAjaWYgKFVTRV9IQUxfTFBUSU1fUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCiAjZGVmaW5lIF9fSEFMX0xQVElNX1JFU0VUX0hBTkRMRV9TVEFURShfX0hBTkRMRV9fKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPlN0YXRlICAgICAgICAgICAgID0gSEFMX0xQVElNX1NUQVRFX1JFU0VUOyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPk1zcEluaXRDYWxsYmFjayAgID0gTlVMTDsgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPk1zcERlSW5pdENhbGxiYWNrID0gTlVMTDsgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUoMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5TdGF0ZSAgICAgICAgICAgICA9IEhBTF9MUFRJTV9TVEFURV9SRVNFVDsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPk1zcEluaXRDYWxsYmFjayAgID0gTlVMTDsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+TXNwRGVJbml0Q2FsbGJhY2sgPSBOVUxMOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUoMCkKICNlbHNlCiAjZGVmaW5lIF9fSEFMX0xQVElNX1JFU0VUX0hBTkRMRV9TVEFURShfX0hBTkRMRV9fKSAoKF9fSEFORExFX18pLT5TdGF0ZSA9IEhBTF9MUFRJTV9TVEFURV9SRVNFVCkKICNlbmRpZiAvKiBVU0VfSEFMX0xQVElNX1JFR0lTVEVSX0NBTExCQUNLUyAqLwpAQCAtNDg0LDU1ICs0ODQsNjQgQEAKICAgKiBAcmV0dmFsIEludGVycnVwdCBzdGF0dXMuCiAgICovCiAKLSNkZWZpbmUgX19IQUxfTFBUSU1fR0VUX0lUX1NPVVJDRShfX0hBTkRMRV9fLCBfX0lOVEVSUlVQVF9fKSAoKCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5JRVIgJiAoX19JTlRFUlJVUFRfXykpID09IChfX0lOVEVSUlVQVF9fKSkgPyBTRVQgOiBSRVNFVCkKKyNkZWZpbmUgX19IQUxfTFBUSU1fR0VUX0lUX1NPVVJDRShfX0hBTkRMRV9fLCBfX0lOVEVSUlVQVF9fKSAoKCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5JRVJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiAoX19JTlRFUlJVUFRfXykpID09IChfX0lOVEVSUlVQVF9fKSkgPyBTRVQgOiBSRVNFVCkKIAogLyoqCiAgICogQGJyaWVmICBFbmFibGUgaW50ZXJydXB0IG9uIHRoZSBMUFRJTSBXYWtlLXVwIFRpbWVyIGFzc29jaWF0ZWQgRXh0aSBsaW5lLgogICAqIEByZXR2YWwgTm9uZQogICAqLwotI2RlZmluZSBfX0hBTF9MUFRJTV9XQUtFVVBUSU1FUl9FWFRJX0VOQUJMRV9JVCgpICAgICAgIChFWFRJLT5JTVIgfD0gTFBUSU1fRVhUSV9MSU5FX1dBS0VVUFRJTUVSX0VWRU5UKQorI2RlZmluZSBfX0hBTF9MUFRJTV9XQUtFVVBUSU1FUl9FWFRJX0VOQUJMRV9JVCgpICAgICAgIChFWFRJLT5JTVJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHw9IExQVElNX0VYVElfTElORV9XQUtFVVBUSU1FUl9FVkVOVCkKIAogLyoqCiAgICogQGJyaWVmICBEaXNhYmxlIGludGVycnVwdCBvbiB0aGUgTFBUSU0gV2FrZS11cCBUaW1lciBhc3NvY2lhdGVkIEV4dGkgbGluZS4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLSNkZWZpbmUgX19IQUxfTFBUSU1fV0FLRVVQVElNRVJfRVhUSV9ESVNBQkxFX0lUKCkgICAgICAoRVhUSS0+SU1SICY9IH4oTFBUSU1fRVhUSV9MSU5FX1dBS0VVUFRJTUVSX0VWRU5UKSkKKyNkZWZpbmUgX19IQUxfTFBUSU1fV0FLRVVQVElNRVJfRVhUSV9ESVNBQkxFX0lUKCkgICAgICAoRVhUSS0+SU1SXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmPSB+KExQVElNX0VYVElfTElORV9XQUtFVVBUSU1FUl9FVkVOVCkpCiAKIC8qKgogICAqIEBicmllZiAgRW5hYmxlIGV2ZW50IG9uIHRoZSBMUFRJTSBXYWtlLXVwIFRpbWVyIGFzc29jaWF0ZWQgRXh0aSBsaW5lLgogICAqIEByZXR2YWwgTm9uZS4KICAgKi8KLSNkZWZpbmUgX19IQUxfTFBUSU1fV0FLRVVQVElNRVJfRVhUSV9FTkFCTEVfRVZFTlQoKSAgICAoRVhUSS0+RU1SIHw9IExQVElNX0VYVElfTElORV9XQUtFVVBUSU1FUl9FVkVOVCkKKyNkZWZpbmUgX19IQUxfTFBUSU1fV0FLRVVQVElNRVJfRVhUSV9FTkFCTEVfRVZFTlQoKSAgICAoRVhUSS0+RU1SXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8PSBMUFRJTV9FWFRJX0xJTkVfV0FLRVVQVElNRVJfRVZFTlQpCiAKIC8qKgogICAqIEBicmllZiAgRGlzYWJsZSBldmVudCBvbiB0aGUgTFBUSU0gV2FrZS11cCBUaW1lciBhc3NvY2lhdGVkIEV4dGkgbGluZS4KICAgKiBAcmV0dmFsIE5vbmUuCiAgICovCi0jZGVmaW5lIF9fSEFMX0xQVElNX1dBS0VVUFRJTUVSX0VYVElfRElTQUJMRV9FVkVOVCgpICAgKEVYVEktPkVNUiAmPSB+KExQVElNX0VYVElfTElORV9XQUtFVVBUSU1FUl9FVkVOVCkpCisjZGVmaW5lIF9fSEFMX0xQVElNX1dBS0VVUFRJTUVSX0VYVElfRElTQUJMRV9FVkVOVCgpICAgKEVYVEktPkVNUlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJj0gfihMUFRJTV9FWFRJX0xJTkVfV0FLRVVQVElNRVJfRVZFTlQpKQogCiAvKioKICAgKiBAYnJpZWYgIEVuYWJsZSBmYWxsaW5nIGVkZ2UgdHJpZ2dlciBvbiB0aGUgTFBUSU0gV2FrZS11cCBUaW1lciBhc3NvY2lhdGVkIEV4dGkgbGluZS4KICAgKiBAcmV0dmFsIE5vbmUuCiAgICovCi0jZGVmaW5lIF9fSEFMX0xQVElNX1dBS0VVUFRJTUVSX0VYVElfRU5BQkxFX0ZBTExJTkdfRURHRSgpICAgKEVYVEktPkZUU1IgfD0gTFBUSU1fRVhUSV9MSU5FX1dBS0VVUFRJTUVSX0VWRU5UKQorI2RlZmluZSBfX0hBTF9MUFRJTV9XQUtFVVBUSU1FUl9FWFRJX0VOQUJMRV9GQUxMSU5HX0VER0UoKSAgIChFWFRJLT5GVFNSXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8PSBMUFRJTV9FWFRJX0xJTkVfV0FLRVVQVElNRVJfRVZFTlQpCiAKIC8qKgogICAqIEBicmllZiAgRGlzYWJsZSBmYWxsaW5nIGVkZ2UgdHJpZ2dlciBvbiB0aGUgTFBUSU0gV2FrZS11cCBUaW1lciBhc3NvY2lhdGVkIEV4dGkgbGluZS4KICAgKiBAcmV0dmFsIE5vbmUuCiAgICovCi0jZGVmaW5lIF9fSEFMX0xQVElNX1dBS0VVUFRJTUVSX0VYVElfRElTQUJMRV9GQUxMSU5HX0VER0UoKSAgKEVYVEktPkZUU1IgJj0gfihMUFRJTV9FWFRJX0xJTkVfV0FLRVVQVElNRVJfRVZFTlQpKQorI2RlZmluZSBfX0hBTF9MUFRJTV9XQUtFVVBUSU1FUl9FWFRJX0RJU0FCTEVfRkFMTElOR19FREdFKCkgIChFWFRJLT5GVFNSXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmPSB+KExQVElNX0VYVElfTElORV9XQUtFVVBUSU1FUl9FVkVOVCkpCiAKIC8qKgogICAqIEBicmllZiAgRW5hYmxlIHJpc2luZyBlZGdlIHRyaWdnZXIgb24gdGhlIExQVElNIFdha2UtdXAgVGltZXIgYXNzb2NpYXRlZCBFeHRpIGxpbmUuCiAgICogQHJldHZhbCBOb25lLgogICAqLwotI2RlZmluZSBfX0hBTF9MUFRJTV9XQUtFVVBUSU1FUl9FWFRJX0VOQUJMRV9SSVNJTkdfRURHRSgpICAgIChFWFRJLT5SVFNSIHw9IExQVElNX0VYVElfTElORV9XQUtFVVBUSU1FUl9FVkVOVCkKKyNkZWZpbmUgX19IQUxfTFBUSU1fV0FLRVVQVElNRVJfRVhUSV9FTkFCTEVfUklTSU5HX0VER0UoKSAgICAoRVhUSS0+UlRTUlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfD0gTFBUSU1fRVhUSV9MSU5FX1dBS0VVUFRJTUVSX0VWRU5UKQogCiAvKioKICAgKiBAYnJpZWYgIERpc2FibGUgcmlzaW5nIGVkZ2UgdHJpZ2dlciBvbiB0aGUgTFBUSU0gV2FrZS11cCBUaW1lciBhc3NvY2lhdGVkIEV4dGkgbGluZS4KICAgKiBAcmV0dmFsIE5vbmUuCiAgICovCi0jZGVmaW5lIF9fSEFMX0xQVElNX1dBS0VVUFRJTUVSX0VYVElfRElTQUJMRV9SSVNJTkdfRURHRSgpICAgKEVYVEktPlJUU1IgJj0gfihMUFRJTV9FWFRJX0xJTkVfV0FLRVVQVElNRVJfRVZFTlQpKQorI2RlZmluZSBfX0hBTF9MUFRJTV9XQUtFVVBUSU1FUl9FWFRJX0RJU0FCTEVfUklTSU5HX0VER0UoKSAgIChFWFRJLT5SVFNSXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmPSB+KExQVElNX0VYVElfTElORV9XQUtFVVBUSU1FUl9FVkVOVCkpCiAKIC8qKgogICAqIEBicmllZiAgRW5hYmxlIHJpc2luZyAmIGZhbGxpbmcgZWRnZSB0cmlnZ2VyIG9uIHRoZSBMUFRJTSBXYWtlLXVwIFRpbWVyIGFzc29jaWF0ZWQgRXh0aSBsaW5lLgpAQCAtNTQ3LDI2ICs1NTYsMjkgQEAKICAgKiBAcmV0dmFsIE5vbmUuCiAgICovCiAjZGVmaW5lIF9fSEFMX0xQVElNX1dBS0VVUFRJTUVSX0VYVElfRElTQUJMRV9SSVNJTkdfRkFMTElOR19FREdFKCkgZG97X19IQUxfTFBUSU1fV0FLRVVQVElNRVJfRVhUSV9ESVNBQkxFX1JJU0lOR19FREdFKCk7XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSEFMX0xQVElNX1dBS0VVUFRJTUVSX0VYVElfRElTQUJMRV9GQUxMSU5HX0VER0UoKTtcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fSEFMX0xQVElNX1dBS0VVUFRJTUVSX0VYVElfRElTQUJMRV9GQUxMSU5HX0VER0UoKTtcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9d2hpbGUoMCkKIAogLyoqCiAgICogQGJyaWVmIENoZWNrIHdoZXRoZXIgdGhlIExQVElNIFdha2UtdXAgVGltZXIgYXNzb2NpYXRlZCBFeHRpIGxpbmUgaW50ZXJydXB0IGZsYWcgaXMgc2V0IG9yIG5vdC4KICAgKiBAcmV0dmFsIExpbmUgU3RhdHVzLgogICAqLwotI2RlZmluZSBfX0hBTF9MUFRJTV9XQUtFVVBUSU1FUl9FWFRJX0dFVF9GTEFHKCkgICAgICAgICAgICAgIChFWFRJLT5QUiAmIExQVElNX0VYVElfTElORV9XQUtFVVBUSU1FUl9FVkVOVCkKKyNkZWZpbmUgX19IQUxfTFBUSU1fV0FLRVVQVElNRVJfRVhUSV9HRVRfRkxBRygpICAgICAgICAgICAgICAoRVhUSS0+UFJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgTFBUSU1fRVhUSV9MSU5FX1dBS0VVUFRJTUVSX0VWRU5UKQogCiAvKioKICAgKiBAYnJpZWYgQ2xlYXIgdGhlIExQVElNIFdha2UtdXAgVGltZXIgYXNzb2NpYXRlZCBFeHRpIGxpbmUgZmxhZy4KICAgKiBAcmV0dmFsIE5vbmUuCiAgICovCi0jZGVmaW5lIF9fSEFMX0xQVElNX1dBS0VVUFRJTUVSX0VYVElfQ0xFQVJfRkxBRygpICAgICAgICAgICAgKEVYVEktPlBSID0gTFBUSU1fRVhUSV9MSU5FX1dBS0VVUFRJTUVSX0VWRU5UKQorI2RlZmluZSBfX0hBTF9MUFRJTV9XQUtFVVBUSU1FUl9FWFRJX0NMRUFSX0ZMQUcoKSAgICAgICAgICAgIChFWFRJLT5QUlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBMUFRJTV9FWFRJX0xJTkVfV0FLRVVQVElNRVJfRVZFTlQpCiAKIC8qKgogICAqIEBicmllZiBHZW5lcmF0ZSBhIFNvZnR3YXJlIGludGVycnVwdCBvbiB0aGUgTFBUSU0gV2FrZS11cCBUaW1lciBhc3NvY2lhdGVkIEV4dGkgbGluZS4KICAgKiBAcmV0dmFsIE5vbmUuCiAgICovCi0jZGVmaW5lIF9fSEFMX0xQVElNX1dBS0VVUFRJTUVSX0VYVElfR0VORVJBVEVfU1dJVCgpICAgICAgICAgKEVYVEktPlNXSUVSIHw9IExQVElNX0VYVElfTElORV9XQUtFVVBUSU1FUl9FVkVOVCkKKyNkZWZpbmUgX19IQUxfTFBUSU1fV0FLRVVQVElNRVJfRVhUSV9HRU5FUkFURV9TV0lUKCkgICAgICAgICAoRVhUSS0+U1dJRVJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHw9IExQVElNX0VYVElfTElORV9XQUtFVVBUSU1FUl9FVkVOVCkKIAogLyoqCiAgICogQH0KQEAgLTU3OCw5ICs1OTAsOSBAQAogICAqLwogCiAvKiogQGFkZHRvZ3JvdXAgTFBUSU1fRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMQotICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMuCi0gKiBAewotICovCisgICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMuCisgICogQHsKKyAgKi8KIC8qIEluaXRpYWxpemF0aW9uL2RlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfTFBUSU1fSW5pdChMUFRJTV9IYW5kbGVUeXBlRGVmICpobHB0aW0pOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0xQVElNX0RlSW5pdChMUFRJTV9IYW5kbGVUeXBlRGVmICpobHB0aW0pOwpAQCAtNTkzLDkgKzYwNSw5IEBACiAgICovCiAKIC8qKiBAYWRkdG9ncm91cCBMUFRJTV9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAyCi0gKiAgQGJyaWVmICAgU3RhcnQtU3RvcCBvcGVyYXRpb24gZnVuY3Rpb25zLgotICogQHsKLSAqLworICAqICBAYnJpZWYgICBTdGFydC1TdG9wIG9wZXJhdGlvbiBmdW5jdGlvbnMuCisgICogQHsKKyAgKi8KIC8qIFN0YXJ0L1N0b3Agb3BlcmF0aW9uIGZ1bmN0aW9ucyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFBXTSBNb2RlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjKi8KIC8qIEJsb2NraW5nIG1vZGU6IFBvbGxpbmcgKi8KQEAgLTY0OSw5ICs2NjEsOSBAQAogICAqLwogCiAvKiogQGFkZHRvZ3JvdXAgTFBUSU1fRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMwotICogIEBicmllZiAgUmVhZCBvcGVyYXRpb24gZnVuY3Rpb25zLgotICogQHsKLSAqLworICAqICBAYnJpZWYgIFJlYWQgb3BlcmF0aW9uIGZ1bmN0aW9ucy4KKyAgKiBAeworICAqLwogLyogUmVhZGluZyBvcGVyYXRpb24gZnVuY3Rpb25zICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIHVpbnQzMl90IEhBTF9MUFRJTV9SZWFkQ291bnRlcihMUFRJTV9IYW5kbGVUeXBlRGVmICpobHB0aW0pOwogdWludDMyX3QgSEFMX0xQVElNX1JlYWRBdXRvUmVsb2FkKExQVElNX0hhbmRsZVR5cGVEZWYgKmhscHRpbSk7CkBAIC02NjEsOSArNjczLDkgQEAKICAgKi8KIAogLyoqIEBhZGR0b2dyb3VwIExQVElNX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDQKLSAqICBAYnJpZWYgIExQVElNIElSUSBoYW5kbGVyIGFuZCBjYWxsYmFjayBmdW5jdGlvbnMuCi0gKiBAewotICovCisgICogIEBicmllZiAgTFBUSU0gSVJRIGhhbmRsZXIgYW5kIGNhbGxiYWNrIGZ1bmN0aW9ucy4KKyAgKiBAeworICAqLwogLyogTFBUSU0gSVJRIGZ1bmN0aW9ucyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIHZvaWQgSEFMX0xQVElNX0lSUUhhbmRsZXIoTFBUSU1fSGFuZGxlVHlwZURlZiAqaGxwdGltKTsKIApAQCAtNjc4LDcgKzY5MCw4IEBACiAKIC8qIENhbGxiYWNrcyBSZWdpc3Rlci9VblJlZ2lzdGVyIGZ1bmN0aW9ucyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaWYgKFVTRV9IQUxfTFBUSU1fUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfTFBUSU1fUmVnaXN0ZXJDYWxsYmFjayhMUFRJTV9IYW5kbGVUeXBlRGVmICpscGh0aW0sIEhBTF9MUFRJTV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELCBwTFBUSU1fQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfTFBUSU1fUmVnaXN0ZXJDYWxsYmFjayhMUFRJTV9IYW5kbGVUeXBlRGVmICpscGh0aW0sIEhBTF9MUFRJTV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcExQVElNX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0xQVElNX1VuUmVnaXN0ZXJDYWxsYmFjayhMUFRJTV9IYW5kbGVUeXBlRGVmICpscGh0aW0sIEhBTF9MUFRJTV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lEKTsKICNlbmRpZiAvKiBVU0VfSEFMX0xQVElNX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogLyoqCkBAIC02ODYsOSArNjk5LDkgQEAKICAgKi8KIAogLyoqIEBhZGR0b2dyb3VwIExQVElNX0dyb3VwNQotICogIEBicmllZiAgIFBlcmlwaGVyYWwgU3RhdGUgZnVuY3Rpb25zLgotICogQHsKLSAqLworICAqICBAYnJpZWYgICBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucy4KKyAgKiBAeworICAqLwogLyogUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIEhBTF9MUFRJTV9TdGF0ZVR5cGVEZWYgSEFMX0xQVElNX0dldFN0YXRlKExQVElNX0hhbmRsZVR5cGVEZWYgKmhscHRpbSk7CiAvKioKZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX21tYy5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfbW1jLmgKaW5kZXggMmQzODc4Zi4uMDYzNWZmZiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfbW1jLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfbW1jLmgKQEAgLTU0LDcgKzU0LDcgQEAKICAgSEFMX01NQ19TVEFURV9CVVNZICAgICAgICAgICAgICAgICAgID0gMHgwMDAwMDAwM1UsICAvKiE8IE1NQyBwcm9jZXNzIG9uZ29pbmcgICAgICAgICAgICAgICAgICAqLwogICBIQUxfTU1DX1NUQVRFX1BST0dSQU1NSU5HICAgICAgICAgICAgPSAweDAwMDAwMDA0VSwgIC8qITwgTU1DIFByb2dyYW1taW5nIFN0YXRlICAgICAgICAgICAgICAgICovCiAgIEhBTF9NTUNfU1RBVEVfUkVDRUlWSU5HICAgICAgICAgICAgICA9IDB4MDAwMDAwMDVVLCAgLyohPCBNTUMgUmVjZWludmluZyBTdGF0ZSAgICAgICAgICAgICAgICAgKi8KLSAgSEFMX01NQ19TVEFURV9UUkFOU0ZFUiAgICAgICAgICAgICAgID0gMHgwMDAwMDAwNlUsICAvKiE8IE1NQyBUcmFuc2ZlcnQgU3RhdGUgICAgICAgICAgICAgICAgICAqLworICBIQUxfTU1DX1NUQVRFX1RSQU5TRkVSICAgICAgICAgICAgICAgPSAweDAwMDAwMDA2VSwgIC8qITwgTU1DIFRyYW5zZmVyIFN0YXRlICAgICAgICAgICAgICAgICAgKi8KICAgSEFMX01NQ19TVEFURV9FUlJPUiAgICAgICAgICAgICAgICAgID0gMHgwMDAwMDAwRlUgICAvKiE8IE1NQyBpcyBpbiBlcnJvciBzdGF0ZSAgICAgICAgICAgICAgICAqLwogfUhBTF9NTUNfU3RhdGVUeXBlRGVmOwogLyoqIApkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfbmFuZC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfbmFuZC5oCmluZGV4IGM0NGRkMzUuLjFkMjI1Y2YgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX25hbmQuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9uYW5kLmgKQEAgLTg4LDEwICs4OCwxMCBAQAogdHlwZWRlZiBzdHJ1Y3QKIHsKICAgdWludDMyX3QgICAgICAgIFBhZ2VTaXplOyAgICAgICAgICAgICAgLyohPCBOQU5EIG1lbW9yeSBwYWdlICh3aXRob3V0IHNwYXJlIGFyZWEpIHNpemUgbWVhc3VyZWQgaW4gYnl0ZXMgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIDggYml0cyBhZHJlc3Npbmcgb3Igd29yZHMgZm9yIDE2IGJpdHMgYWRkcmVzc2luZyAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciA4IGJpdHMgYWRkcmVzc2luZyBvciB3b3JkcyBmb3IgMTYgYml0cyBhZGRyZXNzaW5nICAgICAgICAgICAgKi8KIAogICB1aW50MzJfdCAgICAgICAgU3BhcmVBcmVhU2l6ZTsgICAgICAgICAvKiE8IE5BTkQgbWVtb3J5IHNwYXJlIGFyZWEgc2l6ZSBtZWFzdXJlZCBpbiBieXRlcyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgOCBiaXRzIGFkcmVzc2luZyBvciB3b3JkcyBmb3IgMTYgYml0cyBhZGRyZXNzaW5nICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIDggYml0cyBhZGRyZXNzaW5nIG9yIHdvcmRzIGZvciAxNiBiaXRzIGFkZHJlc3NpbmcgICAgICAgICAgICAqLwogICAKICAgdWludDMyX3QgICAgICAgIEJsb2NrU2l6ZTsgICAgICAgICAgICAgLyohPCBOQU5EIG1lbW9yeSBibG9jayBzaXplIG1lYXN1cmVkIGluIG51bWJlciBvZiBwYWdlcyAgICAgICAgICAgICAgICovCiAKZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX3BjZC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfcGNkLmgKaW5kZXggNjUwZGZkNS4uODdkMDJmZCAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfcGNkLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfcGNkLmgKQEAgLTE4Myw5ICsxODMsOSBAQAogCiAvKiBFeHBvcnRlZCBtYWNyb3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoqIEBkZWZncm91cCBQQ0RfRXhwb3J0ZWRfTWFjcm9zIFBDRCBFeHBvcnRlZCBNYWNyb3MKLSAqICBAYnJpZWYgbWFjcm9zIHRvIGhhbmRsZSBpbnRlcnJ1cHRzIGFuZCBzcGVjaWZpYyBjbG9jayBjb25maWd1cmF0aW9ucwotICogQHsKLSAqLworICAqICBAYnJpZWYgbWFjcm9zIHRvIGhhbmRsZSBpbnRlcnJ1cHRzIGFuZCBzcGVjaWZpYyBjbG9jayBjb25maWd1cmF0aW9ucworICAqIEB7CisgICovCiAjaWYgZGVmaW5lZCAoVVNCX09UR19GUykgfHwgZGVmaW5lZCAoVVNCX09UR19IUykKICNkZWZpbmUgX19IQUxfUENEX0VOQUJMRShfX0hBTkRMRV9fKSAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpVVNCX0VuYWJsZUdsb2JhbEludCAoKF9fSEFORExFX18pLT5JbnN0YW5jZSkKICNkZWZpbmUgX19IQUxfUENEX0RJU0FCTEUoX19IQU5ETEVfXykgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpVVNCX0Rpc2FibGVHbG9iYWxJbnQgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UpCkBAIC0xOTUsMTIgKzE5NSwxMSBAQAogI2RlZmluZSBfX0hBTF9QQ0RfSVNfSU5WQUxJRF9JTlRFUlJVUFQoX19IQU5ETEVfXykgICAgICAgICAoVVNCX1JlYWRJbnRlcnJ1cHRzKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UpID09IDBVKQogCiAKLSNkZWZpbmUgX19IQUxfUENEX1VOR0FURV9QSFlDTE9DSyhfX0hBTkRMRV9fKSAgICAgICAgICAgICAqKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgoX19IQU5ETEVfXyktPkluc3RhbmNlKSArIFVTQl9PVEdfUENHQ0NUTF9CQVNFKSAmPSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfihVU0JfT1RHX1BDR0NDVExfU1RPUENMSykKKyNkZWZpbmUgX19IQUxfUENEX1VOR0FURV9QSFlDTE9DSyhfX0hBTkRMRV9fKSAgICAgICAqKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgoX19IQU5ETEVfXyktPkluc3RhbmNlKSArIFVTQl9PVEdfUENHQ0NUTF9CQVNFKSAmPSB+KFVTQl9PVEdfUENHQ0NUTF9TVE9QQ0xLKQogCi0jZGVmaW5lIF9fSEFMX1BDRF9HQVRFX1BIWUNMT0NLKF9fSEFORExFX18pICAgICAgICAgICAgICAgKihfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdCkoKF9fSEFORExFX18pLT5JbnN0YW5jZSkgKyBVU0JfT1RHX1BDR0NDVExfQkFTRSkgfD0gVVNCX09UR19QQ0dDQ1RMX1NUT1BDTEsKKyNkZWZpbmUgX19IQUxfUENEX0dBVEVfUEhZQ0xPQ0soX19IQU5ETEVfXykgICAgICAgICAqKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgoX19IQU5ETEVfXyktPkluc3RhbmNlKSArIFVTQl9PVEdfUENHQ0NUTF9CQVNFKSB8PSBVU0JfT1RHX1BDR0NDVExfU1RPUENMSwogCi0jZGVmaW5lIF9fSEFMX1BDRF9JU19QSFlfU1VTUEVOREVEKF9fSEFORExFX18pICAgICAgICAgICAgKCgqKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgoX19IQU5ETEVfXyktPkluc3RhbmNlKSArIFVTQl9PVEdfUENHQ0NUTF9CQVNFKSkgJiAweDEwVSkKKyNkZWZpbmUgX19IQUxfUENEX0lTX1BIWV9TVVNQRU5ERUQoX19IQU5ETEVfXykgICAgICAoKCooX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UpICsgVVNCX09UR19QQ0dDQ1RMX0JBU0UpKSAmIDB4MTBVKQogCiAjZGVmaW5lIF9fSEFMX1VTQl9PVEdfSFNfV0FLRVVQX0VYVElfRU5BQkxFX0lUKCkgICAgRVhUSS0+SU1SIHw9IChVU0JfT1RHX0hTX1dBS0VVUF9FWFRJX0xJTkUpCiAjZGVmaW5lIF9fSEFMX1VTQl9PVEdfSFNfV0FLRVVQX0VYVElfRElTQUJMRV9JVCgpICAgRVhUSS0+SU1SICY9IH4oVVNCX09UR19IU19XQUtFVVBfRVhUSV9MSU5FKQpAQCAtMjA4LDIwICsyMDcsMjAgQEAKICNkZWZpbmUgX19IQUxfVVNCX09UR19IU19XQUtFVVBfRVhUSV9DTEVBUl9GTEFHKCkgICBFWFRJLT5QUiA9IChVU0JfT1RHX0hTX1dBS0VVUF9FWFRJX0xJTkUpCiAKICNkZWZpbmUgX19IQUxfVVNCX09UR19IU19XQUtFVVBfRVhUSV9FTkFCTEVfUklTSU5HX0VER0UoKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICBkbyB7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhUSS0+RlRTUiAmPSB+KFVTQl9PVEdfSFNfV0FLRVVQX0VYVElfTElORSk7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhUSS0+UlRTUiB8PSBVU0JfT1RHX0hTX1dBS0VVUF9FWFRJX0xJTkU7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUoMFUpCisgIGRvIHsgXAorICAgIEVYVEktPkZUU1IgJj0gfihVU0JfT1RHX0hTX1dBS0VVUF9FWFRJX0xJTkUpOyBcCisgICAgRVhUSS0+UlRTUiB8PSBVU0JfT1RHX0hTX1dBS0VVUF9FWFRJX0xJTkU7IFwKKyAgfSB3aGlsZSgwVSkKICNkZWZpbmUgX19IQUxfVVNCX09UR19GU19XQUtFVVBfRVhUSV9FTkFCTEVfSVQoKSAgICBFWFRJLT5JTVIgfD0gVVNCX09UR19GU19XQUtFVVBfRVhUSV9MSU5FCiAjZGVmaW5lIF9fSEFMX1VTQl9PVEdfRlNfV0FLRVVQX0VYVElfRElTQUJMRV9JVCgpICAgRVhUSS0+SU1SICY9IH4oVVNCX09UR19GU19XQUtFVVBfRVhUSV9MSU5FKQogI2RlZmluZSBfX0hBTF9VU0JfT1RHX0ZTX1dBS0VVUF9FWFRJX0dFVF9GTEFHKCkgICAgIEVYVEktPlBSICYgKFVTQl9PVEdfRlNfV0FLRVVQX0VYVElfTElORSkKICNkZWZpbmUgX19IQUxfVVNCX09UR19GU19XQUtFVVBfRVhUSV9DTEVBUl9GTEFHKCkgICBFWFRJLT5QUiA9IFVTQl9PVEdfRlNfV0FLRVVQX0VYVElfTElORQogCiAjZGVmaW5lIF9fSEFMX1VTQl9PVEdfRlNfV0FLRVVQX0VYVElfRU5BQkxFX1JJU0lOR19FREdFKCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgZG8geyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYVEktPkZUU1IgJj0gfihVU0JfT1RHX0ZTX1dBS0VVUF9FWFRJX0xJTkUpOyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYVEktPlJUU1IgfD0gVVNCX09UR19GU19XQUtFVVBfRVhUSV9MSU5FOyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlKDBVKQorICBkbyB7IFwKKyAgICBFWFRJLT5GVFNSICY9IH4oVVNCX09UR19GU19XQUtFVVBfRVhUSV9MSU5FKTsgXAorICAgIEVYVEktPlJUU1IgfD0gVVNCX09UR19GU19XQUtFVVBfRVhUSV9MSU5FOyBcCisgIH0gd2hpbGUoMFUpCiAjZW5kaWYgLyogZGVmaW5lZCAoVVNCX09UR19GUykgfHwgZGVmaW5lZCAoVVNCX09UR19IUykgKi8KIAogCkBAIC0yODIsMjIgKzI4MSwzNiBAQAogICAqIEB9CiAgICovCiAKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfUmVnaXN0ZXJDYWxsYmFjayhQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCwgSEFMX1BDRF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELCBwUENEX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9VblJlZ2lzdGVyQ2FsbGJhY2soUENEX0hhbmRsZVR5cGVEZWYgKmhwY2QsIEhBTF9QQ0RfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfUENEX1JlZ2lzdGVyQ2FsbGJhY2soUENEX0hhbmRsZVR5cGVEZWYgKmhwY2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1BDRF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBQQ0RfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CiAKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfUmVnaXN0ZXJEYXRhT3V0U3RhZ2VDYWxsYmFjayhQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCwgcFBDRF9EYXRhT3V0U3RhZ2VDYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfVW5SZWdpc3RlckNhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1BDRF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lEKTsKKworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9SZWdpc3RlckRhdGFPdXRTdGFnZUNhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBQQ0RfRGF0YU91dFN0YWdlQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CisKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfVW5SZWdpc3RlckRhdGFPdXRTdGFnZUNhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkKTsKIAotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9SZWdpc3RlckRhdGFJblN0YWdlQ2FsbGJhY2soUENEX0hhbmRsZVR5cGVEZWYgKmhwY2QsIHBQQ0RfRGF0YUluU3RhZ2VDYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfUmVnaXN0ZXJEYXRhSW5TdGFnZUNhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFBDRF9EYXRhSW5TdGFnZUNhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOworCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfUENEX1VuUmVnaXN0ZXJEYXRhSW5TdGFnZUNhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkKTsKIAotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9SZWdpc3Rlcklzb091dEluY3BsdENhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLCBwUENEX0lzb091dEluY3BsdENhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9SZWdpc3Rlcklzb091dEluY3BsdENhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBQQ0RfSXNvT3V0SW5jcGx0Q2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CisKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfVW5SZWdpc3Rlcklzb091dEluY3BsdENhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkKTsKIAotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9SZWdpc3Rlcklzb0luSW5jcGx0Q2FsbGJhY2soUENEX0hhbmRsZVR5cGVEZWYgKmhwY2QsIHBQQ0RfSXNvSW5JbmNwbHRDYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfUmVnaXN0ZXJJc29JbkluY3BsdENhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFBDRF9Jc29JbkluY3BsdENhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOworCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfUENEX1VuUmVnaXN0ZXJJc29JbkluY3BsdENhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkKTsKIAotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9SZWdpc3RlckxwbUNhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLCBwUENEX0xwbUNhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9SZWdpc3RlckxwbUNhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBQQ0RfTHBtQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CisKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfVW5SZWdpc3RlckxwbUNhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkKTsKICNlbmRpZiAvKiBVU0VfSEFMX1BDRF9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIC8qKgpAQCAtMzEyLDYgKzMyNSw3IEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfUENEX1N0YXJ0KFBDRF9IYW5kbGVUeXBlRGVmICpocGNkKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfU3RvcChQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCk7CiB2b2lkIEhBTF9QQ0RfSVJRSGFuZGxlcihQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCk7Cit2b2lkIEhBTF9QQ0RfV0tVUF9JUlFIYW5kbGVyKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkKTsKIAogdm9pZCBIQUxfUENEX1NPRkNhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkKTsKIHZvaWQgSEFMX1BDRF9TZXR1cFN0YWdlQ2FsbGJhY2soUENEX0hhbmRsZVR5cGVEZWYgKmhwY2QpOwpAQCAtMzM2LDE2ICszNTAsMjQgQEAKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfRGV2Q29ubmVjdChQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfUENEX0RldkRpc2Nvbm5lY3QoUENEX0hhbmRsZVR5cGVEZWYgKmhwY2QpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9TZXRBZGRyZXNzKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLCB1aW50OF90IGFkZHJlc3MpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9FUF9PcGVuKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLCB1aW50OF90IGVwX2FkZHIsIHVpbnQxNl90IGVwX21wcywgdWludDhfdCBlcF90eXBlKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfRVBfT3BlbihQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCwgdWludDhfdCBlcF9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGVwX21wcywgdWludDhfdCBlcF90eXBlKTsKKwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9FUF9DbG9zZShQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCwgdWludDhfdCBlcF9hZGRyKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfRVBfUmVjZWl2ZShQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCwgdWludDhfdCBlcF9hZGRyLCB1aW50OF90ICpwQnVmLCB1aW50MzJfdCBsZW4pOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9FUF9UcmFuc21pdChQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCwgdWludDhfdCBlcF9hZGRyLCB1aW50OF90ICpwQnVmLCB1aW50MzJfdCBsZW4pOwotdWludDMyX3QgICAgICAgICAgSEFMX1BDRF9FUF9HZXRSeENvdW50KFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLCB1aW50OF90IGVwX2FkZHIpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9FUF9SZWNlaXZlKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLCB1aW50OF90IGVwX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcEJ1ZiwgdWludDMyX3QgbGVuKTsKKworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9FUF9UcmFuc21pdChQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCwgdWludDhfdCBlcF9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwQnVmLCB1aW50MzJfdCBsZW4pOworCisKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfRVBfU2V0U3RhbGwoUENEX0hhbmRsZVR5cGVEZWYgKmhwY2QsIHVpbnQ4X3QgZXBfYWRkcik7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfUENEX0VQX0NsclN0YWxsKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLCB1aW50OF90IGVwX2FkZHIpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9FUF9GbHVzaChQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCwgdWludDhfdCBlcF9hZGRyKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfQWN0aXZhdGVSZW1vdGVXYWtldXAoUENEX0hhbmRsZVR5cGVEZWYgKmhwY2QpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9EZUFjdGl2YXRlUmVtb3RlV2FrZXVwKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkKTsKKwordWludDMyX3QgICAgICAgICAgSEFMX1BDRF9FUF9HZXRSeENvdW50KFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLCB1aW50OF90IGVwX2FkZHIpOwogLyoqCiAgICogQH0KICAgKi8KQEAgLTQxMSw4ICs0MzMsOCBAQAogCiAvKiBQcml2YXRlIG1hY3JvcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoqIEBkZWZncm91cCBQQ0RfUHJpdmF0ZV9NYWNyb3MgUENEIFByaXZhdGUgTWFjcm9zCi0gKiBAewotICovCisgICogQHsKKyAgKi8KIAogLyoqCiAgICogQH0KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX3B3cl9leC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfcHdyX2V4LmgKaW5kZXggNjk4YmRlNi4uMGMzM2JkZiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfcHdyX2V4LmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfcHdyX2V4LmgKQEAgLTE0NSw3ICsxNDUsNyBAQAogCiAvKiogQGJyaWVmIENsZWFyIHRoZSBVbmRlci1Ecml2ZSBSZWFkeSBmbGFnLgogICAqLwotI2RlZmluZSBfX0hBTF9QV1JfQ0xFQVJfT0RSVURSX0ZMQUcoKSAoUFdSLT5DU1IxIHw9IFBXUl9GTEFHX1VEUkRZKQorI2RlZmluZSBfX0hBTF9QV1JfQ0xFQVJfT0RSVURSX0ZMQUcoKSAoUFdSLT5DU1IxIHw9IChQV1JfRkxBR19VRFJEWSB8IFBXUl9DU1IxX0VJV1VQKSkKIAogLyoqIEBicmllZiAgQ2hlY2sgV2FrZSBVcCBmbGFnIGlzIHNldCBvciBub3QuCiAgICogQHBhcmFtICBfX1dVRkxBR19fIHNwZWNpZmllcyB0aGUgV2FrZSBVcCBmbGFnIHRvIGNoZWNrLgpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfcmNjLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9yY2MuaAppbmRleCAxNjgxZDc5Li40ZGI4MjIyIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9yY2MuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9yY2MuaApAQCAtNzQsNyArNzQsNyBAQAogfVJDQ19Pc2NJbml0VHlwZURlZjsKIAogLyoqCi0gICogQGJyaWVmICBSQ0MgU3lzdGVtLCBBSEIgYW5kIEFQQiBidXNzZXMgY2xvY2sgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiAgCisgICogQGJyaWVmICBSQ0MgU3lzdGVtLCBBSEIgYW5kIEFQQiBidXNlcyBjbG9jayBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSBkZWZpbml0aW9uICAKICAgKi8KIHR5cGVkZWYgc3RydWN0CiB7CmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9ydGMuaCBiL0luYy9zdG0zMmY3eHhfaGFsX3J0Yy5oCmluZGV4IDg3ZmVhZmEuLjk2NTJiZWYgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX3J0Yy5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX3J0Yy5oCkBAIC0xMDYsMTIgKzEwNiwxMSBAQAogICB1aW50OF90IFRpbWVGb3JtYXQ7ICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBSVEMgQU0vUE0gVGltZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgUlRDX0FNX1BNX0RlZmluaXRpb25zICovCiAKLSAgdWludDMyX3QgRGF5TGlnaHRTYXZpbmc7ICAvKiE8IFNwZWNpZmllcyBSVENfRGF5TGlnaHRTYXZlT3BlcmF0aW9uOiB0aGUgdmFsdWUgb2YgaG91ciBhZGp1c3RtZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBSVENfRGF5TGlnaHRTYXZpbmdfRGVmaW5pdGlvbnMgKi8KKyAgdWludDMyX3QgRGF5TGlnaHRTYXZpbmc7ICAvKiE8IFRoaXMgaW50ZXJmYWNlIGlzIGRlcHJlY2F0ZWQuIFRvIG1hbmFnZSBEYXlsaWdodCBTYXZpbmcgVGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsZWFzZSB1c2UgSEFMX1JUQ19EU1RfeHh4IGZ1bmN0aW9ucyAqLwogCi0gIHVpbnQzMl90IFN0b3JlT3BlcmF0aW9uOyAgLyohPCBTcGVjaWZpZXMgUlRDX1N0b3JlT3BlcmF0aW9uIHZhbHVlIHRvIGJlIHdyaXR0ZW4gaW4gdGhlIEJLUCBiaXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIENSIHJlZ2lzdGVyIHRvIHN0b3JlIHRoZSBvcGVyYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFJUQ19TdG9yZU9wZXJhdGlvbl9EZWZpbml0aW9ucyAqLworICB1aW50MzJfdCBTdG9yZU9wZXJhdGlvbjsgIC8qITwgVGhpcyBpbnRlcmZhY2UgaXMgZGVwcmVjYXRlZC4gVG8gbWFuYWdlIERheWxpZ2h0IFNhdmluZyBUaW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxlYXNlIHVzZSBIQUxfUlRDX0RTVF94eHggZnVuY3Rpb25zICovCiB9UlRDX1RpbWVUeXBlRGVmOwogCiAvKioKQEAgLTY5Myw2ICs2OTIsMTEgQEAKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9SVENfR2V0VGltZShSVENfSGFuZGxlVHlwZURlZiAqaHJ0YywgUlRDX1RpbWVUeXBlRGVmICpzVGltZSwgdWludDMyX3QgRm9ybWF0KTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9SVENfU2V0RGF0ZShSVENfSGFuZGxlVHlwZURlZiAqaHJ0YywgUlRDX0RhdGVUeXBlRGVmICpzRGF0ZSwgdWludDMyX3QgRm9ybWF0KTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9SVENfR2V0RGF0ZShSVENfSGFuZGxlVHlwZURlZiAqaHJ0YywgUlRDX0RhdGVUeXBlRGVmICpzRGF0ZSwgdWludDMyX3QgRm9ybWF0KTsKK3ZvaWQgICAgICAgICAgICAgIEhBTF9SVENfRFNUX0FkZDFIb3VyKFJUQ19IYW5kbGVUeXBlRGVmICpocnRjKTsKK3ZvaWQgICAgICAgICAgICAgIEhBTF9SVENfRFNUX1N1YjFIb3VyKFJUQ19IYW5kbGVUeXBlRGVmICpocnRjKTsKK3ZvaWQgICAgICAgICAgICAgIEhBTF9SVENfRFNUX1NldFN0b3JlT3BlcmF0aW9uKFJUQ19IYW5kbGVUeXBlRGVmICpocnRjKTsKK3ZvaWQgICAgICAgICAgICAgIEhBTF9SVENfRFNUX0NsZWFyU3RvcmVPcGVyYXRpb24oUlRDX0hhbmRsZVR5cGVEZWYgKmhydGMpOwordWludDMyX3QgICAgICAgICAgSEFMX1JUQ19EU1RfUmVhZFN0b3JlT3BlcmF0aW9uKFJUQ19IYW5kbGVUeXBlRGVmICpocnRjKTsKIC8qKgogICAqIEB9CiAgICovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9zYWkuaCBiL0luYy9zdG0zMmY3eHhfaGFsX3NhaS5oCmluZGV4IDNhMzIwOTYuLmQ3ODIyNjkgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX3NhaS5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX3NhaS5oCkBAIC0yMiw3ICsyMiw3IEBACiAjZGVmaW5lIF9fU1RNMzJGN3h4X0hBTF9TQUlfSAogCiAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKK2V4dGVybiAiQyIgewogI2VuZGlmCiAKIApAQCAtNTIsNyArNTIsNyBAQAogICBIQUxfU0FJX1NUQVRFX0JVU1kgICAgID0gMHgwMlUsICAvKiE8IFNBSSBpbnRlcm5hbCBwcm9jZXNzIGlzIG9uZ29pbmcgICAgICAgICAgICAgICAgICAgICovCiAgIEhBTF9TQUlfU1RBVEVfQlVTWV9UWCAgPSAweDEyVSwgIC8qITwgRGF0YSB0cmFuc21pc3Npb24gcHJvY2VzcyBpcyBvbmdvaW5nICAgICAgICAgICAgICAgKi8KICAgSEFMX1NBSV9TVEFURV9CVVNZX1JYICA9IDB4MjJVLCAgLyohPCBEYXRhIHJlY2VwdGlvbiBwcm9jZXNzIGlzIG9uZ29pbmcgICAgICAgICAgICAgICAgICAqLwotfUhBTF9TQUlfU3RhdGVUeXBlRGVmOworfSBIQUxfU0FJX1N0YXRlVHlwZURlZjsKIAogLyoqCiAgICogQGJyaWVmICBTQUkgQ2FsbGJhY2sgcHJvdG90eXBlCkBAIC0xMjUsMTMgKzEyNSwxNCBAQAogCiAgIHVpbnQzMl90IENsb2NrU3Ryb2Jpbmc7ICAgLyohPCBTcGVjaWZpZXMgdGhlIFNBSSBCbG9jayBjbG9jayBzdHJvYmluZyBlZGdlIHNlbnNpdGl2aXR5LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBTQUlfQmxvY2tfQ2xvY2tfU3Ryb2JpbmcgKi8KLX1TQUlfSW5pdFR5cGVEZWY7Cit9IFNBSV9Jbml0VHlwZURlZjsKIC8qKgogICAqIEB9CiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgU0FJX0ZyYW1lX1N0cnVjdHVyZV9kZWZpbml0aW9uIFNBSSBGcmFtZSBTdHJ1Y3R1cmUgZGVmaW5pdGlvbgogICAqIEBicmllZiAgU0FJIEZyYW1lIEluaXQgc3RydWN0dXJlIGRlZmluaXRpb24KKyAgKiBAbm90ZSAgIEZvciBTUERJRiBhbmQgQUM5NyBwcm90b2NvbCwgdGhlc2UgcGFyYW1ldGVycyBhcmUgbm90IHVzZWQgKHNldCBieSBoYXJkd2FyZSkuCiAgICogQHsKICAgKi8KIHR5cGVkZWYgc3RydWN0CkBAIC0xNTcsMTMgKzE1OCwxNSBAQAogICB1aW50MzJfdCBGU09mZnNldDsgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBGcmFtZSBzeW5jaHJvbml6YXRpb24gT2Zmc2V0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBTQUlfQmxvY2tfRlNfT2Zmc2V0ICovCiAKLX1TQUlfRnJhbWVJbml0VHlwZURlZjsKK30gU0FJX0ZyYW1lSW5pdFR5cGVEZWY7CiAvKioKICAgKiBAfQogICAqLwogCiAvKiogQGRlZmdyb3VwIFNBSV9TbG90X1N0cnVjdHVyZV9kZWZpbml0aW9uIFNBSSBTbG90IFN0cnVjdHVyZSBkZWZpbml0aW9uCiAgICogQGJyaWVmICAgU0FJIEJsb2NrIFNsb3QgSW5pdCBTdHJ1Y3R1cmUgZGVmaW5pdGlvbgorICAqIEBub3RlICAgIEZvciBTUERJRiBwcm90b2NvbCwgdGhlc2UgcGFyYW1ldGVycyBhcmUgbm90IHVzZWQgKHNldCBieSBoYXJkd2FyZSkuCisgICogQG5vdGUgICAgRm9yIEFDOTcgcHJvdG9jb2wsIG9ubHkgU2xvdEFjdGl2ZSBwYXJhbWV0ZXIgaXMgdXNlZCAodGhlIG90aGVycyBhcmUgc2V0IGJ5IGhhcmR3YXJlKS4KICAgKiBAewogICAqLwogdHlwZWRlZiBzdHJ1Y3QKQEAgLTE3OSw3ICsxODIsNyBAQAogCiAgIHVpbnQzMl90IFNsb3RBY3RpdmU7ICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIHNsb3RzIGluIGF1ZGlvIGZyYW1lIHRoYXQgd2lsbCBiZSBhY3RpdmF0ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNBSV9CbG9ja19TbG90X0FjdGl2ZSAqLwotfVNBSV9TbG90SW5pdFR5cGVEZWY7Cit9IFNBSV9TbG90SW5pdFR5cGVEZWY7CiAvKioKICAgKiBAfQogICAqLwpAQCAtMjI3LDcgKzIzMCw3IEBACiAgIHZvaWQgKCpNc3BJbml0Q2FsbGJhY2spKHN0cnVjdCBfX1NBSV9IYW5kbGVUeXBlRGVmICpoc2FpKTsgICAgIC8qITwgU0FJIE1TUCBpbml0IGNhbGxiYWNrICovCiAgIHZvaWQgKCpNc3BEZUluaXRDYWxsYmFjaykoc3RydWN0IF9fU0FJX0hhbmRsZVR5cGVEZWYgKmhzYWkpOyAgIC8qITwgU0FJIE1TUCBkZS1pbml0IGNhbGxiYWNrICovCiAjZW5kaWYKLX1TQUlfSGFuZGxlVHlwZURlZjsKK30gU0FJX0hhbmRsZVR5cGVEZWY7CiAvKioKICAgKiBAfQogICAqLwpAQCAtNjU3LDkgKzY2MCw5IEBACiAjZGVmaW5lIF9fSEFMX1NBSV9FTkFCTEUoX19IQU5ETEVfXykgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMSB8PSAgU0FJX3hDUjFfU0FJRU4pCiAjZGVmaW5lIF9fSEFMX1NBSV9ESVNBQkxFKF9fSEFORExFX18pICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjEgJj0gIH5TQUlfeENSMV9TQUlFTikKIAotIC8qKgotICAqIEB9Ci0gICovCisvKioKKyAqIEB9CisgKi8KIAogLyogRXhwb3J0ZWQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qKiBAYWRkdG9ncm91cCBTQUlfRXhwb3J0ZWRfRnVuY3Rpb25zCkBAIC02NzIsNyArNjc1LDcgQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TQUlfSW5pdFByb3RvY29sKFNBSV9IYW5kbGVUeXBlRGVmICpoc2FpLCB1aW50MzJfdCBwcm90b2NvbCwgdWludDMyX3QgZGF0YXNpemUsIHVpbnQzMl90IG5ic2xvdCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfU0FJX0luaXQoU0FJX0hhbmRsZVR5cGVEZWYgKmhzYWkpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NBSV9EZUluaXQgKFNBSV9IYW5kbGVUeXBlRGVmICpoc2FpKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TQUlfRGVJbml0KFNBSV9IYW5kbGVUeXBlRGVmICpoc2FpKTsKIHZvaWQgSEFMX1NBSV9Nc3BJbml0KFNBSV9IYW5kbGVUeXBlRGVmICpoc2FpKTsKIHZvaWQgSEFMX1NBSV9Nc3BEZUluaXQoU0FJX0hhbmRsZVR5cGVEZWYgKmhzYWkpOwogCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF9zYWlfZXguaCBiL0luYy9zdG0zMmY3eHhfaGFsX3NhaV9leC5oCmluZGV4IDUxODMyMDEuLjFhNTIxY2IgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX3NhaV9leC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX3NhaV9leC5oCkBAIC0yNCw3ICsyNCw3IEBACiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBFeHBvcnRlZCB0eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyogRXhwb3J0ZWQgY29uc3RhbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gICAgCisvKiBFeHBvcnRlZCBjb25zdGFudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogRXhwb3J0ZWQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIEV4dGVuZGVkIGZlYXR1cmVzIGZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiBQcml2YXRlIHR5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfc2QuaCBiL0luYy9zdG0zMmY3eHhfaGFsX3NkLmgKaW5kZXggMzA1ZjgzYS4uMTc2ZGMxMiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfc2QuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9zZC5oCkBAIC01NSw3ICs1NSw3IEBACiAgIEhBTF9TRF9TVEFURV9CVVNZICAgICAgICAgICAgICAgICAgID0gMHgwMDAwMDAwM1UsICAvKiE8IFNEIHByb2Nlc3Mgb25nb2luZyAgICAgICAgICAgICAgICAgICovCiAgIEhBTF9TRF9TVEFURV9QUk9HUkFNTUlORyAgICAgICAgICAgID0gMHgwMDAwMDAwNFUsICAvKiE8IFNEIFByb2dyYW1taW5nIFN0YXRlICAgICAgICAgICAgICAgICovCiAgIEhBTF9TRF9TVEFURV9SRUNFSVZJTkcgICAgICAgICAgICAgID0gMHgwMDAwMDAwNVUsICAvKiE8IFNEIFJlY2VpdmluZyBTdGF0ZSAgICAgICAgICAgICAgICAgICovCi0gIEhBTF9TRF9TVEFURV9UUkFOU0ZFUiAgICAgICAgICAgICAgID0gMHgwMDAwMDAwNlUsICAvKiE8IFNEIFRyYW5zZmVydCBTdGF0ZSAgICAgICAgICAgICAgICAgICovCisgIEhBTF9TRF9TVEFURV9UUkFOU0ZFUiAgICAgICAgICAgICAgID0gMHgwMDAwMDAwNlUsICAvKiE8IFNEIFRyYW5zZmVyIFN0YXRlICAgICAgICAgICAgICAgICAgKi8KICAgSEFMX1NEX1NUQVRFX0VSUk9SICAgICAgICAgICAgICAgICAgPSAweDAwMDAwMDBGVSAgIC8qITwgU0QgaXMgaW4gZXJyb3Igc3RhdGUgICAgICAgICAgICAgICAgKi8KIH1IQUxfU0RfU3RhdGVUeXBlRGVmOwogLyoqIApkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfc21hcnRjYXJkLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9zbWFydGNhcmQuaAppbmRleCBjMTRjNTg0Li5iNWUxOWI1IDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF9zbWFydGNhcmQuaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF9zbWFydGNhcmQuaApAQCAtNTIsNyArNTIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIHVzYXJ0X2tlcl9ja3ByZXMgaXMgdGhlIFVTQVJUIGlucHV0IGNsb2NrIGRpdmlkZWQgYnkgYSBwcmVzY2FsZXIgKi8KIAogICB1aW50MzJfdCBXb3JkTGVuZ3RoOyAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRhdGEgYml0cyB0cmFuc21pdHRlZCBvciByZWNlaXZlZCBpbiBhIGZyYW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIEByZWYgU01BUlRDQVJEX1dvcmRfTGVuZ3RoIGNhbiBvbmx5IGJlIHNldCB0byA5ICg4IGRhdGEgKyAxIHBhcml0eSBiaXRzKS4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBAcmVmIFNNQVJUQ0FSRF9Xb3JkX0xlbmd0aCBjYW4gb25seSBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldCB0byA5ICg4IGRhdGEgKyAxIHBhcml0eSBiaXRzKS4gKi8KIAogICB1aW50MzJfdCBTdG9wQml0czsgICAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHN0b3AgYml0cy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNNQVJUQ0FSRF9TdG9wX0JpdHMuICovCkBAIC03NiwxMyArNzcsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhIGJpdCAoTVNCKSBoYXMgdG8gYmUgb3V0cHV0IG9uIHRoZSBTQ0xLIHBpbiBpbiBzeW5jaHJvbm91cyBtb2RlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU01BUlRDQVJEX0xhc3RfQml0ICovCiAKLSAgdWludDE2X3QgT25lQml0U2FtcGxpbmc7ICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciBhIHNpbmdsZSBzYW1wbGUgb3IgdGhyZWUgc2FtcGxlcycgbWFqb3JpdHkgdm90ZSBpcyBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RpbmcgdGhlIHNpbmdsZSBzYW1wbGUgbWV0aG9kIGluY3JlYXNlcyB0aGUgcmVjZWl2ZXIgdG9sZXJhbmNlIHRvIGNsb2NrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWF0aW9ucy4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBTTUFSVENBUkRfT25lQml0X1NhbXBsaW5nLiAqLworICB1aW50MTZfdCBPbmVCaXRTYW1wbGluZzsgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIGEgc2luZ2xlIHNhbXBsZSBvciB0aHJlZSBzYW1wbGVzJyBtYWpvcml0eSB2b3RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgc2VsZWN0ZWQuIFNlbGVjdGluZyB0aGUgc2luZ2xlIHNhbXBsZSBtZXRob2QgaW5jcmVhc2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlY2VpdmVyIHRvbGVyYW5jZSB0byBjbG9jayBkZXZpYXRpb25zLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIEByZWYgU01BUlRDQVJEX09uZUJpdF9TYW1wbGluZy4gKi8KIAogICB1aW50OF90ICBQcmVzY2FsZXI7ICAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgU21hcnRDYXJkIFByZXNjYWxlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIGZyb20gMHgwMSB0byAweDFGLiBQcmVzY2FsZXIgdmFsdWUgaXMgbXVsdGlwbGllZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IDIgdG8gZ2l2ZSB0aGUgZGl2aXNpb24gZmFjdG9yIG9mIHRoZSBzb3VyY2UgY2xvY2sgZnJlcXVlbmN5ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBmcm9tIDB4MDEgdG8gMHgxRi4gUHJlc2NhbGVyIHZhbHVlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllZCBieSAyIHRvIGdpdmUgdGhlIGRpdmlzaW9uIGZhY3RvciBvZiB0aGUgc291cmNlIGNsb2NrIGZyZXF1ZW5jeSAqLwogCiAgIHVpbnQ4X3QgIEd1YXJkVGltZTsgICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBTbWFydENhcmQgR3VhcmQgVGltZSBhcHBsaWVkIGFmdGVyIHN0b3AgYml0cy4gKi8KIApAQCAtMTA4LDcgKzExMCw3IEBACiB9IFNNQVJUQ0FSRF9Jbml0VHlwZURlZjsKIAogLyoqCi0gICogQGJyaWVmICBTTUFSVENBUkQgYWR2YW5jZWQgZmVhdHVyZXMgaW5pdGFsaXphdGlvbiBzdHJ1Y3R1cmUgZGVmaW5pdGlvbgorICAqIEBicmllZiAgU01BUlRDQVJEIGFkdmFuY2VkIGZlYXR1cmVzIGluaXRpYWxpemF0aW9uIHN0cnVjdHVyZSBkZWZpbml0aW9uCiAgICovCiB0eXBlZGVmIHN0cnVjdAogewpAQCAtMTM4LDE0ICsxNDAsMTYgQEAKICAgdWludDMyX3QgTVNCRmlyc3Q7ICAgICAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciBNU0IgaXMgc2VudCBmaXJzdCBvbiBVQVJUIGxpbmUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBTTUFSVENBUkRfTVNCX0ZpcnN0ICovCiAKLSAgdWludDE2X3QgVHhDb21wbGV0aW9uSW5kaWNhdGlvbjsgICAgIC8qITwgU3BlY2lmaWVzIHdoaWNoIHRyYW5zbWlzc2lvbiBjb21wbGV0aW9uIGluZGljYXRpb24gaXMgdXNlZDogYmVmb3JlICh3aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGV2YW50IGZsYWcgaXMgYXZhaWxhYmxlKSBvciBvbmNlIGd1YXJkIHRpbWUgcGVyaW9kIGhhcyBlbGFwc2VkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU01BUlRDQVJERXhfVHJhbnNtaXNzaW9uX0NvbXBsZXRpb25fSW5kaWNhdGlvbi4gKi8KKyAgdWludDE2X3QgVHhDb21wbGV0aW9uSW5kaWNhdGlvbjsgICAgLyohPCBTcGVjaWZpZXMgd2hpY2ggdHJhbnNtaXNzaW9uIGNvbXBsZXRpb24gaW5kaWNhdGlvbiBpcyB1c2VkOiBiZWZvcmUgKHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxldmFudCBmbGFnIGlzIGF2YWlsYWJsZSkgb3Igb25jZSBndWFyZCB0aW1lIHBlcmlvZCBoYXMgZWxhcHNlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIEByZWYgU01BUlRDQVJERXhfVHJhbnNtaXNzaW9uX0NvbXBsZXRpb25fSW5kaWNhdGlvbi4gKi8KIH0gU01BUlRDQVJEX0FkdkZlYXR1cmVJbml0VHlwZURlZjsKIAogLyoqCiAgICogQGJyaWVmIEhBTCBTTUFSVENBUkQgU3RhdGUgZGVmaW5pdGlvbgotICAqIEBub3RlICBIQUwgU01BUlRDQVJEIFN0YXRlIHZhbHVlIGlzIGEgY29tYmluYXRpb24gb2YgMiBkaWZmZXJlbnQgc3Vic3RhdGVzOiBnU3RhdGUgYW5kIFJ4U3RhdGUgKHNlZSBAcmVmIFNNQVJUQ0FSRF9TdGF0ZV9EZWZpbml0aW9uKS4KKyAgKiBAbm90ZSAgSEFMIFNNQVJUQ0FSRCBTdGF0ZSB2YWx1ZSBpcyBhIGNvbWJpbmF0aW9uIG9mIDIgZGlmZmVyZW50IHN1YnN0YXRlczoKKyAgKiAgICAgICAgZ1N0YXRlIGFuZCBSeFN0YXRlIChzZWUgQHJlZiBTTUFSVENBUkRfU3RhdGVfRGVmaW5pdGlvbikuCiAgICogICAgICAgIC0gZ1N0YXRlIGNvbnRhaW5zIFNNQVJUQ0FSRCBzdGF0ZSBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIGdsb2JhbCBIYW5kbGUgbWFuYWdlbWVudAogICAqICAgICAgICAgIGFuZCBhbHNvIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gVHggb3BlcmF0aW9ucy4KICAgKiAgICAgICAgICBnU3RhdGUgdmFsdWUgY29kaW5nIGZvbGxvdyBiZWxvdyBkZXNjcmliZWQgYml0bWFwIDoKQEAgLTE1Niw3ICsxNjAsNyBAQAogICAqICAgICAgICAgICAgIDExIDogRXJyb3IKICAgKiAgICAgICAgICBiNSAgICAgUGVyaXBoZXJhbCBpbml0aWFsaXphdGlvbiBzdGF0dXMKICAgKiAgICAgICAgICAgICAwICA6IFJlc2V0IChQZXJpcGhlcmFsIG5vdCBpbml0aWFsaXplZCkKLSAgKiAgICAgICAgICAgICAxICA6IEluaXQgZG9uZSAoUGVyaXBoZXJhbCBub3QgaW5pdGlhbGl6ZWQuIEhBTCBTTUFSVENBUkQgSW5pdCBmdW5jdGlvbiBhbHJlYWR5IGNhbGxlZCkKKyAgKiAgICAgICAgICAgICAxICA6IEluaXQgZG9uZSAoUGVyaXBoZXJhbCBpbml0aWFsaXplZC4gSEFMIFNNQVJUQ0FSRCBJbml0IGZ1bmN0aW9uIGFscmVhZHkgY2FsbGVkKQogICAqICAgICAgICAgIGI0LWIzICAobm90IHVzZWQpCiAgICogICAgICAgICAgICAgeHggOiBTaG91bGQgYmUgc2V0IHRvIDAwCiAgICogICAgICAgICAgYjIgICAgIEludHJpbnNpYyBwcm9jZXNzIHN0YXRlCkBAIC0xNzMsNyArMTc3LDcgQEAKICAgKiAgICAgICAgICAgICB4eCA6IFNob3VsZCBiZSBzZXQgdG8gMDAKICAgKiAgICAgICAgICBiNSAgICAgUGVyaXBoZXJhbCBpbml0aWFsaXphdGlvbiBzdGF0dXMKICAgKiAgICAgICAgICAgICAwICA6IFJlc2V0IChQZXJpcGhlcmFsIG5vdCBpbml0aWFsaXplZCkKLSAgKiAgICAgICAgICAgICAxICA6IEluaXQgZG9uZSAoUGVyaXBoZXJhbCBub3QgaW5pdGlhbGl6ZWQpCisgICogICAgICAgICAgICAgMSAgOiBJbml0IGRvbmUgKFBlcmlwaGVyYWwgaW5pdGlhbGl6ZWQpCiAgICogICAgICAgICAgYjQtYjIgIChub3QgdXNlZCkKICAgKiAgICAgICAgICAgIHh4eCA6IFNob3VsZCBiZSBzZXQgdG8gMDAwCiAgICogICAgICAgICAgYjEgICAgIFJ4IHN0YXRlCkBAIC0yMTgsMTIgKzIyMiwxNCBAQAogCiAgIEhBTF9Mb2NrVHlwZURlZiAgICAgICAgICAgICAgICAgICBMb2NrOyAgICAgICAgICAgICAgICAgIC8qITwgTG9ja2luZyBvYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAotICBfX0lPIEhBTF9TTUFSVENBUkRfU3RhdGVUeXBlRGVmICAgZ1N0YXRlOyAgICAgICAgICAgICAgICAvKiE8IFNtYXJ0Q2FyZCBzdGF0ZSBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIGdsb2JhbCBIYW5kbGUgbWFuYWdlbWVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhbHNvIHJlbGF0ZWQgdG8gVHggb3BlcmF0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEhBTF9TTUFSVENBUkRfU3RhdGVUeXBlRGVmICovCisgIF9fSU8gSEFMX1NNQVJUQ0FSRF9TdGF0ZVR5cGVEZWYgICBnU3RhdGU7ICAgICAgICAgICAgICAgIC8qITwgU21hcnRDYXJkIHN0YXRlIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gZ2xvYmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFuZGxlIG1hbmFnZW1lbnQgYW5kIGFsc28gcmVsYXRlZCB0byBUeCBvcGVyYXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgQHJlZiBIQUxfU01BUlRDQVJEX1N0YXRlVHlwZURlZiAgICAgICAgICAgICAgICAgICAgKi8KIAogICBfX0lPIEhBTF9TTUFSVENBUkRfU3RhdGVUeXBlRGVmICAgUnhTdGF0ZTsgICAgICAgICAgICAgICAvKiE8IFNtYXJ0Q2FyZCBzdGF0ZSBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIFJ4IG9wZXJhdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBIQUxfU01BUlRDQVJEX1N0YXRlVHlwZURlZiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgQHJlZiBIQUxfU01BUlRDQVJEX1N0YXRlVHlwZURlZiAgICAgICAgICAgICAgICAgICAgKi8KIAogICBfX0lPIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlOyAgICAgICAgICAgICAvKiE8IFNtYXJ0Q2FyZCBFcnJvciBjb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAKQEAgLTI5NywyMyArMzAzLDI2IEBACiAvKiogQGRlZmdyb3VwIFNNQVJUQ0FSRF9TdGF0ZV9EZWZpbml0aW9uIFNNQVJUQ0FSRCBTdGF0ZSBDb2RlIERlZmluaXRpb24KICAgKiBAewogICAqLwotI2RlZmluZSBIQUxfU01BUlRDQVJEX1NUQVRFX1JFU0VUICAgICAgICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgICAgICAgICAgICAvKiE8IFBlcmlwaGVyYWwgaXMgbm90IGluaXRpYWxpemVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgaXMgYWxsb3dlZCBmb3IgZ1N0YXRlIGFuZCBSeFN0YXRlICovCi0jZGVmaW5lIEhBTF9TTUFSVENBUkRfU1RBVEVfUkVBRFkgICAgICAgICAgICAweDAwMDAwMDIwVSAgICAgICAgICAgICAgICAgICAgIC8qITwgUGVyaXBoZXJhbCBJbml0aWFsaXplZCBhbmQgcmVhZHkgZm9yIHVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGlzIGFsbG93ZWQgZm9yIGdTdGF0ZSBhbmQgUnhTdGF0ZSAqLworI2RlZmluZSBIQUxfU01BUlRDQVJEX1NUQVRFX1JFU0VUICAgICAgICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgICAgICAgICAgICAvKiE8IFBlcmlwaGVyYWwgaXMgbm90IGluaXRpYWxpemVkLiBWYWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIGFsbG93ZWQgZm9yIGdTdGF0ZSBhbmQgUnhTdGF0ZSAqLworI2RlZmluZSBIQUxfU01BUlRDQVJEX1NUQVRFX1JFQURZICAgICAgICAgICAgMHgwMDAwMDAyMFUgICAgICAgICAgICAgICAgICAgICAvKiE8IFBlcmlwaGVyYWwgSW5pdGlhbGl6ZWQgYW5kIHJlYWR5IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZS4gVmFsdWUgaXMgYWxsb3dlZCBmb3IgZ1N0YXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFJ4U3RhdGUgICAgICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIEhBTF9TTUFSVENBUkRfU1RBVEVfQlVTWSAgICAgICAgICAgICAweDAwMDAwMDI0VSAgICAgICAgICAgICAgICAgICAgIC8qITwgYW4gaW50ZXJuYWwgcHJvY2VzcyBpcyBvbmdvaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgaXMgYWxsb3dlZCBmb3IgZ1N0YXRlIG9ubHkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBpcyBhbGxvd2VkIGZvciBnU3RhdGUgb25seSAgKi8KICNkZWZpbmUgSEFMX1NNQVJUQ0FSRF9TVEFURV9CVVNZX1RYICAgICAgICAgIDB4MDAwMDAwMjFVICAgICAgICAgICAgICAgICAgICAgLyohPCBEYXRhIFRyYW5zbWlzc2lvbiBwcm9jZXNzIGlzIG9uZ29pbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBpcyBhbGxvd2VkIGZvciBnU3RhdGUgb25seSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGlzIGFsbG93ZWQgZm9yIGdTdGF0ZSBvbmx5ICAqLwogI2RlZmluZSBIQUxfU01BUlRDQVJEX1NUQVRFX0JVU1lfUlggICAgICAgICAgMHgwMDAwMDAyMlUgICAgICAgICAgICAgICAgICAgICAvKiE8IERhdGEgUmVjZXB0aW9uIHByb2Nlc3MgaXMgb25nb2luZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGlzIGFsbG93ZWQgZm9yIFJ4U3RhdGUgb25seSAqLwotI2RlZmluZSBIQUxfU01BUlRDQVJEX1NUQVRFX0JVU1lfVFhfUlggICAgICAgMHgwMDAwMDAyM1UgICAgICAgICAgICAgICAgICAgICAvKiE8IERhdGEgVHJhbnNtaXNzaW9uIGFuZCBSZWNlcHRpb24gcHJvY2VzcyBpcyBvbmdvaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IHRvIGJlIHVzZWQgZm9yIG5laXRoZXIgZ1N0YXRlIG5vciBSeFN0YXRlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGlzIHJlc3VsdCBvZiBjb21iaW5hdGlvbiAoT3IpIGJldHdlZW4gZ1N0YXRlIGFuZCBSeFN0YXRlIHZhbHVlcyAqLworI2RlZmluZSBIQUxfU01BUlRDQVJEX1NUQVRFX0JVU1lfVFhfUlggICAgICAgMHgwMDAwMDAyM1UgICAgICAgICAgICAgICAgICAgICAvKiE8IERhdGEgVHJhbnNtaXNzaW9uIGFuZCBSZWNlcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzIGlzIG9uZ29pbmcgTm90IHRvIGJlIHVzZWQgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVpdGhlciBnU3RhdGUgbm9yIFJ4U3RhdGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgaXMgcmVzdWx0IG9mIGNvbWJpbmF0aW9uIChPcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXR3ZWVuIGdTdGF0ZSBhbmQgUnhTdGF0ZSB2YWx1ZXMgKi8KICNkZWZpbmUgSEFMX1NNQVJUQ0FSRF9TVEFURV9USU1FT1VUICAgICAgICAgIDB4MDAwMDAwQTBVICAgICAgICAgICAgICAgICAgICAgLyohPCBUaW1lb3V0IHN0YXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgaXMgYWxsb3dlZCBmb3IgZ1N0YXRlIG9ubHkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSBpcyBhbGxvd2VkIGZvciBnU3RhdGUgb25seSAgKi8KICNkZWZpbmUgSEFMX1NNQVJUQ0FSRF9TVEFURV9FUlJPUiAgICAgICAgICAgIDB4MDAwMDAwRTBVICAgICAgICAgICAgICAgICAgICAgLyohPCBFcnJvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGlzIGFsbG93ZWQgZm9yIGdTdGF0ZSBvbmx5ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgaXMgYWxsb3dlZCBmb3IgZ1N0YXRlIG9ubHkgICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtMzIxLDE1ICszMzAsMTUgQEAKIC8qKiBAZGVmZ3JvdXAgU01BUlRDQVJEX0Vycm9yX0RlZmluaXRpb24gU01BUlRDQVJEIEVycm9yIENvZGUgRGVmaW5pdGlvbgogICAqIEB7CiAgICovCi0jZGVmaW5lIEhBTF9TTUFSVENBUkRfRVJST1JfTk9ORSAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDBVKSAgICAgICAgIC8qITwgTm8gZXJyb3IgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgSEFMX1NNQVJUQ0FSRF9FUlJPUl9QRSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMVUpICAgICAgICAgLyohPCBQYXJpdHkgZXJyb3IgICAgICAgICAgICAqLwotI2RlZmluZSBIQUxfU01BUlRDQVJEX0VSUk9SX05FICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAyVSkgICAgICAgICAvKiE8IE5vaXNlIGVycm9yICAgICAgICAgICAgICovCi0jZGVmaW5lIEhBTF9TTUFSVENBUkRfRVJST1JfRkUgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDRVKSAgICAgICAgIC8qITwgZnJhbWUgZXJyb3IgICAgICAgICAgICAgKi8KLSNkZWZpbmUgSEFMX1NNQVJUQ0FSRF9FUlJPUl9PUkUgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOFUpICAgICAgICAgLyohPCBPdmVycnVuIGVycm9yICAgICAgICAgICAqLwotI2RlZmluZSBIQUxfU01BUlRDQVJEX0VSUk9SX0RNQSAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDEwVSkgICAgICAgICAvKiE8IERNQSB0cmFuc2ZlciBlcnJvciAgICAgICovCi0jZGVmaW5lIEhBTF9TTUFSVENBUkRfRVJST1JfUlRPICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMjBVKSAgICAgICAgIC8qITwgUmVjZWl2ZXIgVGltZU91dCBlcnJvciAgKi8KKyNkZWZpbmUgSEFMX1NNQVJUQ0FSRF9FUlJPUl9OT05FICAgICAgICAgICAgICgweDAwMDAwMDAwVSkgICAgICAgICAvKiE8IE5vIGVycm9yICAgICAgICAgICAgICAgICovCisjZGVmaW5lIEhBTF9TTUFSVENBUkRfRVJST1JfUEUgICAgICAgICAgICAgICAoMHgwMDAwMDAwMVUpICAgICAgICAgLyohPCBQYXJpdHkgZXJyb3IgICAgICAgICAgICAqLworI2RlZmluZSBIQUxfU01BUlRDQVJEX0VSUk9SX05FICAgICAgICAgICAgICAgKDB4MDAwMDAwMDJVKSAgICAgICAgIC8qITwgTm9pc2UgZXJyb3IgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSEFMX1NNQVJUQ0FSRF9FUlJPUl9GRSAgICAgICAgICAgICAgICgweDAwMDAwMDA0VSkgICAgICAgICAvKiE8IGZyYW1lIGVycm9yICAgICAgICAgICAgICovCisjZGVmaW5lIEhBTF9TTUFSVENBUkRfRVJST1JfT1JFICAgICAgICAgICAgICAoMHgwMDAwMDAwOFUpICAgICAgICAgLyohPCBPdmVycnVuIGVycm9yICAgICAgICAgICAqLworI2RlZmluZSBIQUxfU01BUlRDQVJEX0VSUk9SX0RNQSAgICAgICAgICAgICAgKDB4MDAwMDAwMTBVKSAgICAgICAgIC8qITwgRE1BIHRyYW5zZmVyIGVycm9yICAgICAgKi8KKyNkZWZpbmUgSEFMX1NNQVJUQ0FSRF9FUlJPUl9SVE8gICAgICAgICAgICAgICgweDAwMDAwMDIwVSkgICAgICAgICAvKiE8IFJlY2VpdmVyIFRpbWVPdXQgZXJyb3IgICovCiAjaWYgKFVTRV9IQUxfU01BUlRDQVJEX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotI2RlZmluZSBIQUxfU01BUlRDQVJEX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0sgKCh1aW50MzJfdCkweDAwMDAwMDQwVSkgICAgICAgICAvKiE8IEludmFsaWQgQ2FsbGJhY2sgZXJyb3IgICovCisjZGVmaW5lIEhBTF9TTUFSVENBUkRfRVJST1JfSU5WQUxJRF9DQUxMQkFDSyAoMHgwMDAwMDA0MFUpICAgICAgICAgLyohPCBJbnZhbGlkIENhbGxiYWNrIGVycm9yICAqLwogI2VuZGlmIC8qIFVTRV9IQUxfU01BUlRDQVJEX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogLyoqCiAgICogQH0KQEAgLTYyMiwxNiArNjMxLDI0IEBACiAgICogICAgICAgICAgICBAYXJnIEByZWYgU01BUlRDQVJEX0lUX1JUTyAgICBSZWNlaXZlIHRpbWVvdXQgaW50ZXJydXB0CiAgICogICAgICAgICAgICBAYXJnIEByZWYgU01BUlRDQVJEX0lUX1RYRSAgICBUcmFuc21pdCBkYXRhIHJlZ2lzdGVyIGVtcHR5IGludGVycnVwdAogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFNNQVJUQ0FSRF9JVF9UQyAgICAgVHJhbnNtaXNzaW9uIGNvbXBsZXRlIGludGVycnVwdAotICAqICAgICAgICAgICAgQGFyZyBAcmVmIFNNQVJUQ0FSRF9JVF9UQ0JHVCAgVHJhbnNtaXNzaW9uIGNvbXBsZXRlIGJlZm9yZSBndWFyZCB0aW1lIGludGVycnVwdCAod2hlbiBpbnRlcnJ1cHRpb24gYXZhaWxhYmxlKQorICAqICAgICAgICAgICAgQGFyZyBAcmVmIFNNQVJUQ0FSRF9JVF9UQ0JHVCAgVHJhbnNtaXNzaW9uIGNvbXBsZXRlIGJlZm9yZQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VhcmQgdGltZSBpbnRlcnJ1cHQgKHdoZW4gaW50ZXJydXB0aW9uIGF2YWlsYWJsZSkKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBTTUFSVENBUkRfSVRfUlhORSAgIFJlY2VpdmUgZGF0YSByZWdpc3RlciBub3QgZW1wdHkgaW50ZXJydXB0CiAgICogICAgICAgICAgICBAYXJnIEByZWYgU01BUlRDQVJEX0lUX0lETEUgICBJZGxlIGxpbmUgZGV0ZWN0aW9uIGludGVycnVwdAogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFNNQVJUQ0FSRF9JVF9QRSAgICAgUGFyaXR5IGVycm9yIGludGVycnVwdAogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFNNQVJUQ0FSRF9JVF9FUlIgICAgRXJyb3IgaW50ZXJydXB0KGZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLSNkZWZpbmUgX19IQUxfU01BUlRDQVJEX0VOQUJMRV9JVChfX0hBTkRMRV9fLCBfX0lOVEVSUlVQVF9fKSAgICgoKCgoX19JTlRFUlJVUFRfXykgJiBTTUFSVENBUkRfQ1JfTUFTSykgPj4gU01BUlRDQVJEX0NSX1BPUykgPT0gMVUpPyAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IxIHw9ICgodWludDMyX3QpMVUgPDwgKChfX0lOVEVSUlVQVF9fKSAmIFNNQVJUQ0FSRF9JVF9NQVNLKSkpOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoKF9fSU5URVJSVVBUX18pICYgU01BUlRDQVJEX0NSX01BU0spID4+IFNNQVJUQ0FSRF9DUl9QT1MpID09IDJVKT8gKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMiB8PSAoKHVpbnQzMl90KTFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBTTUFSVENBUkRfSVRfTUFTSykpKTogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjMgfD0gKCh1aW50MzJfdCkxVSA8PCAoKF9fSU5URVJSVVBUX18pICYgU01BUlRDQVJEX0lUX01BU0spKSkpCisjZGVmaW5lIF9fSEFMX1NNQVJUQ0FSRF9FTkFCTEVfSVQoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXykgICAoKCgoKF9fSU5URVJSVVBUX18pICYgU01BUlRDQVJEX0NSX01BU0spID4+XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01BUlRDQVJEX0NSX1BPUykgPT0gMVUpP1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IxIHw9ICgxVUwgPDxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19JTlRFUlJVUFRfXykgJiBTTUFSVENBUkRfSVRfTUFTSykpKTpcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoKF9fSU5URVJSVVBUX18pICYgU01BUlRDQVJEX0NSX01BU0spID4+XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01BUlRDQVJEX0NSX1BPUykgPT0gMlUpP1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IyIHw9ICgxVUwgPDxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19JTlRFUlJVUFRfXykgJiBTTUFSVENBUkRfSVRfTUFTSykpKTogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjMgfD0gKDFVTCA8PFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0lOVEVSUlVQVF9fKSAmIFNNQVJUQ0FSRF9JVF9NQVNLKSkpKQogCiAvKiogQGJyaWVmICBEaXNhYmxlIHRoZSBzcGVjaWZpZWQgU21hcnRDYXJkIGludGVycnVwdC4KICAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBTTUFSVENBUkQgSGFuZGxlLgpAQCAtNjQxLDE2ICs2NTgsMjQgQEAKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBTTUFSVENBUkRfSVRfUlRPICAgIFJlY2VpdmUgdGltZW91dCBpbnRlcnJ1cHQKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBTTUFSVENBUkRfSVRfVFhFICAgIFRyYW5zbWl0IGRhdGEgcmVnaXN0ZXIgZW1wdHkgaW50ZXJydXB0CiAgICogICAgICAgICAgICBAYXJnIEByZWYgU01BUlRDQVJEX0lUX1RDICAgICBUcmFuc21pc3Npb24gY29tcGxldGUgaW50ZXJydXB0Ci0gICogICAgICAgICAgICBAYXJnIEByZWYgU01BUlRDQVJEX0lUX1RDQkdUICBUcmFuc21pc3Npb24gY29tcGxldGUgYmVmb3JlIGd1YXJkIHRpbWUgaW50ZXJydXB0ICh3aGVuIGludGVycnVwdGlvbiBhdmFpbGFibGUpCisgICogICAgICAgICAgICBAYXJnIEByZWYgU01BUlRDQVJEX0lUX1RDQkdUICBUcmFuc21pc3Npb24gY29tcGxldGUgYmVmb3JlIGd1YXJkCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lIGludGVycnVwdCAod2hlbiBpbnRlcnJ1cHRpb24gYXZhaWxhYmxlKQogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFNNQVJUQ0FSRF9JVF9SWE5FICAgUmVjZWl2ZSBkYXRhIHJlZ2lzdGVyIG5vdCBlbXB0eSBpbnRlcnJ1cHQKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBTTUFSVENBUkRfSVRfSURMRSAgIElkbGUgbGluZSBkZXRlY3Rpb24gaW50ZXJydXB0CiAgICogICAgICAgICAgICBAYXJnIEByZWYgU01BUlRDQVJEX0lUX1BFICAgICBQYXJpdHkgZXJyb3IgaW50ZXJydXB0CiAgICogICAgICAgICAgICBAYXJnIEByZWYgU01BUlRDQVJEX0lUX0VSUiAgICBFcnJvciBpbnRlcnJ1cHQoZnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKQogICAqIEByZXR2YWwgTm9uZQogICAqLwotI2RlZmluZSBfX0hBTF9TTUFSVENBUkRfRElTQUJMRV9JVChfX0hBTkRMRV9fLCBfX0lOVEVSUlVQVF9fKSAgKCgoKChfX0lOVEVSUlVQVF9fKSAmIFNNQVJUQ0FSRF9DUl9NQVNLKSA+PiBTTUFSVENBUkRfQ1JfUE9TKSA9PSAxVSk/ICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjEgJj0gfiAoKHVpbnQzMl90KTFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBTTUFSVENBUkRfSVRfTUFTSykpKTogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKChfX0lOVEVSUlVQVF9fKSAmIFNNQVJUQ0FSRF9DUl9NQVNLKSA+PiBTTUFSVENBUkRfQ1JfUE9TKSA9PSAyVSk/ICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjIgJj0gfiAoKHVpbnQzMl90KTFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBTTUFSVENBUkRfSVRfTUFTSykpKTogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjMgJj0gfiAoKHVpbnQzMl90KTFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBTTUFSVENBUkRfSVRfTUFTSykpKSkKKyNkZWZpbmUgX19IQUxfU01BUlRDQVJEX0RJU0FCTEVfSVQoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXykgICgoKCgoX19JTlRFUlJVUFRfXykgJiBTTUFSVENBUkRfQ1JfTUFTSykgPj5cCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfQ1JfUE9TKSA9PSAxVSk/XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjEgJj0gfiAoMVUgPDxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19JTlRFUlJVUFRfXykgJiBTTUFSVENBUkRfSVRfTUFTSykpKTogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKChfX0lOVEVSUlVQVF9fKSAmIFNNQVJUQ0FSRF9DUl9NQVNLKSA+PlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQVJUQ0FSRF9DUl9QT1MpID09IDJVKT9cCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMiAmPSB+ICgxVSA8PFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0lOVEVSUlVQVF9fKSAmIFNNQVJUQ0FSRF9JVF9NQVNLKSkpOiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMyAmPSB+ICgxVSA8PFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0lOVEVSUlVQVF9fKSAmIFNNQVJUQ0FSRF9JVF9NQVNLKSkpKQogCiAvKiogQGJyaWVmICBDaGVjayB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgU21hcnRDYXJkIGludGVycnVwdCBoYXMgb2NjdXJyZWQgb3Igbm90LgogICAqIEBwYXJhbSAgX19IQU5ETEVfXyBzcGVjaWZpZXMgdGhlIFNNQVJUQ0FSRCBIYW5kbGUuCkBAIC02NjAsMTUgKzY4NSwxOCBAQAogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFNNQVJUQ0FSRF9JVF9SVE8gICAgUmVjZWl2ZSB0aW1lb3V0IGludGVycnVwdAogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFNNQVJUQ0FSRF9JVF9UWEUgICAgVHJhbnNtaXQgZGF0YSByZWdpc3RlciBlbXB0eSBpbnRlcnJ1cHQKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBTTUFSVENBUkRfSVRfVEMgICAgIFRyYW5zbWlzc2lvbiBjb21wbGV0ZSBpbnRlcnJ1cHQKLSAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBTTUFSVENBUkRfSVRfVENCR1QgIFRyYW5zbWlzc2lvbiBjb21wbGV0ZSBiZWZvcmUgZ3VhcmQgdGltZSBpbnRlcnJ1cHQgKHdoZW4gaW50ZXJydXB0aW9uIGF2YWlsYWJsZSkKKyAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBTTUFSVENBUkRfSVRfVENCR1QgIFRyYW5zbWlzc2lvbiBjb21wbGV0ZSBiZWZvcmUgZ3VhcmQgdGltZQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0ICh3aGVuIGludGVycnVwdGlvbiBhdmFpbGFibGUpCiAgICogICAgICAgICAgICBAYXJnIEByZWYgU01BUlRDQVJEX0lUX1JYTkUgICBSZWNlaXZlIGRhdGEgcmVnaXN0ZXIgbm90IGVtcHR5IGludGVycnVwdAogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFNNQVJUQ0FSRF9JVF9JRExFICAgSWRsZSBsaW5lIGRldGVjdGlvbiBpbnRlcnJ1cHQKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBTTUFSVENBUkRfSVRfUEUgICAgIFBhcml0eSBlcnJvciBpbnRlcnJ1cHQKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBTTUFSVENBUkRfSVRfRVJSICAgIEVycm9yIGludGVycnVwdChmcmFtZSBlcnJvciwgbm9pc2UgZXJyb3IsIG92ZXJydW4gZXJyb3IpCiAgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIF9fSU5URVJSVVBUX18gKFNFVCBvciBSRVNFVCkuCiAgICovCi0jZGVmaW5lIF9fSEFMX1NNQVJUQ0FSRF9HRVRfSVQoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXykgKCgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+SVNSXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgKCh1aW50MzJfdCkweDAxVSA8PCAoKChfX0lOVEVSUlVQVF9fKSAmIFNNQVJUQ0FSRF9JU1JfTUFTSyk+PiBTTUFSVENBUkRfSVNSX1BPUykpKSAhPSAwVSkgPyBTRVQgOiBSRVNFVCkKKyNkZWZpbmUgX19IQUxfU01BUlRDQVJEX0dFVF9JVChfX0hBTkRMRV9fLCBfX0lOVEVSUlVQVF9fKSAoXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPklTUiAmICgweDAxVUwgPDwgKCgoX19JTlRFUlJVUFRfXylcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIFNNQVJUQ0FSRF9JU1JfTUFTSyk+PiBTTUFSVENBUkRfSVNSX1BPUykpKSE9IDBVKVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBTRVQgOiBSRVNFVCkKIAogLyoqIEBicmllZiAgQ2hlY2sgd2hldGhlciB0aGUgc3BlY2lmaWVkIFNtYXJ0Q2FyZCBpbnRlcnJ1cHQgc291cmNlIGlzIGVuYWJsZWQgb3Igbm90LgogICAqIEBwYXJhbSAgX19IQU5ETEVfXyBzcGVjaWZpZXMgdGhlIFNNQVJUQ0FSRCBIYW5kbGUuCkBAIC02NzgsMTYgKzcwNiwyNCBAQAogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFNNQVJUQ0FSRF9JVF9SVE8gICAgUmVjZWl2ZSB0aW1lb3V0IGludGVycnVwdAogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFNNQVJUQ0FSRF9JVF9UWEUgICAgVHJhbnNtaXQgZGF0YSByZWdpc3RlciBlbXB0eSBpbnRlcnJ1cHQKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBTTUFSVENBUkRfSVRfVEMgICAgIFRyYW5zbWlzc2lvbiBjb21wbGV0ZSBpbnRlcnJ1cHQKLSAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBTTUFSVENBUkRfSVRfVENCR1QgIFRyYW5zbWlzc2lvbiBjb21wbGV0ZSBiZWZvcmUgZ3VhcmQgdGltZSBpbnRlcnJ1cHQgKHdoZW4gaW50ZXJydXB0aW9uIGF2YWlsYWJsZSkKKyAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBTTUFSVENBUkRfSVRfVENCR1QgIFRyYW5zbWlzc2lvbiBjb21wbGV0ZSBiZWZvcmUgZ3VhcmQgdGltZQorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0ICh3aGVuIGludGVycnVwdGlvbiBhdmFpbGFibGUpCiAgICogICAgICAgICAgICBAYXJnIEByZWYgU01BUlRDQVJEX0lUX1JYTkUgICBSZWNlaXZlIGRhdGEgcmVnaXN0ZXIgbm90IGVtcHR5IGludGVycnVwdAogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFNNQVJUQ0FSRF9JVF9JRExFICAgSWRsZSBsaW5lIGRldGVjdGlvbiBpbnRlcnJ1cHQKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBTTUFSVENBUkRfSVRfUEUgICAgIFBhcml0eSBlcnJvciBpbnRlcnJ1cHQKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBTTUFSVENBUkRfSVRfRVJSICAgIEVycm9yIGludGVycnVwdChmcmFtZSBlcnJvciwgbm9pc2UgZXJyb3IsIG92ZXJydW4gZXJyb3IpCiAgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIF9fSU5URVJSVVBUX18gKFNFVCBvciBSRVNFVCkuCiAgICovCi0jZGVmaW5lIF9fSEFMX1NNQVJUQ0FSRF9HRVRfSVRfU09VUkNFKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICgoKCgoKCgoX19JTlRFUlJVUFRfXykgJiBTTUFSVENBUkRfQ1JfTUFTSykgPj4gU01BUlRDQVJEX0NSX1BPUykgPT0gMHgwMVUpPyAoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjEgOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgoKF9fSU5URVJSVVBUX18pICYgU01BUlRDQVJEX0NSX01BU0spID4+IFNNQVJUQ0FSRF9DUl9QT1MpID09IDB4MDJVKT8gKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IyIDogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMykpICYgKCh1aW50MzJfdCkweDAxVSA8PCAoKCh1aW50MTZfdCkoX19JTlRFUlJVUFRfXykpICYgU01BUlRDQVJEX0lUX01BU0spKSkgICE9IDBVKSA/IFNFVCA6IFJFU0VUKQorI2RlZmluZSBfX0hBTF9TTUFSVENBUkRfR0VUX0lUX1NPVVJDRShfX0hBTkRMRV9fLCBfX0lOVEVSUlVQVF9fKSAoKCgoKCgoKF9fSU5URVJSVVBUX18pICYgU01BUlRDQVJEX0NSX01BU0spID4+XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfQ1JfUE9TKSA9PSAweDAxVSk/XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IxIDogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoKChfX0lOVEVSUlVQVF9fKSAmIFNNQVJUQ0FSRF9DUl9NQVNLKSA+PlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQVJUQ0FSRF9DUl9QT1MpID09IDB4MDJVKT9cCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IyIDogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMykpICZcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgweDAxVUwgPDwgKCgodWludDE2X3QpKF9fSU5URVJSVVBUX18pKVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBTTUFSVENBUkRfSVRfTUFTSykpKSAgIT0gMFUpXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBTRVQgOiBSRVNFVCkKIAogLyoqIEBicmllZiAgQ2xlYXIgdGhlIHNwZWNpZmllZCBTTUFSVENBUkQgSVNSIGZsYWcsIGluIHNldHRpbmcgdGhlIHByb3BlciBJQ1IgcmVnaXN0ZXIgZmxhZy4KICAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBTTUFSVENBUkQgSGFuZGxlLgpAQCAtMTAzOCw3ICsxMDc0LDggQEAKICNpZiAoVVNFX0hBTF9TTUFSVENBUkRfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCiAvKiBDYWxsYmFja3MgUmVnaXN0ZXIvVW5SZWdpc3RlciBmdW5jdGlvbnMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQVJUQ0FSRF9SZWdpc3RlckNhbGxiYWNrKFNNQVJUQ0FSRF9IYW5kbGVUeXBlRGVmICpoc21hcnRjYXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9TTUFSVENBUkRfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCwgcFNNQVJUQ0FSRF9DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfU01BUlRDQVJEX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFNNQVJUQ0FSRF9DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUFSVENBUkRfVW5SZWdpc3RlckNhbGxiYWNrKFNNQVJUQ0FSRF9IYW5kbGVUeXBlRGVmICpoc21hcnRjYXJkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX1NNQVJUQ0FSRF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lEKTsKICNlbmRpZiAvKiBVU0VfSEFMX1NNQVJUQ0FSRF9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX3NtYnVzLmggYi9JbmMvc3RtMzJmN3h4X2hhbF9zbWJ1cy5oCmluZGV4IGUwYjY3ZGEuLjcwNDczNWUgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX3NtYnVzLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfc21idXMuaApAQCAtNjUsNyArNjUsNyBAQAogICB1aW50MzJfdCBPd25BZGRyZXNzMjsgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgc2Vjb25kIGRldmljZSBvd24gYWRkcmVzcyBpZiBkdWFsIGFkZHJlc3NpbmcgbW9kZSBpcyBzZWxlY3RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIDctYml0IGFkZHJlc3MuICovCiAKLSAgdWludDMyX3QgT3duQWRkcmVzczJNYXNrczsgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGFja25vbGVkZ2UgbWFzayBhZGRyZXNzIHNlY29uZCBkZXZpY2Ugb3duIGFkZHJlc3MgaWYgZHVhbCBhZGRyZXNzaW5nIG1vZGUgaXMgc2VsZWN0ZWQKKyAgdWludDMyX3QgT3duQWRkcmVzczJNYXNrczsgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGFja25vd2xlZGdlIG1hc2sgYWRkcmVzcyBzZWNvbmQgZGV2aWNlIG93biBhZGRyZXNzIGlmIGR1YWwgYWRkcmVzc2luZyBtb2RlIGlzIHNlbGVjdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBTTUJVU19vd25fYWRkcmVzczJfbWFza3MuICovCiAKICAgdWludDMyX3QgR2VuZXJhbENhbGxNb2RlOyAgICAgICAgLyohPCBTcGVjaWZpZXMgaWYgZ2VuZXJhbCBjYWxsIG1vZGUgaXMgc2VsZWN0ZWQuCkBAIC0xMzIsNyArMTMyLDExIEBACiAgICogQGJyaWVmICBTTUJVUyBoYW5kbGUgU3RydWN0dXJlIGRlZmluaXRpb24KICAgKiBAewogICAqLworI2lmIChVU0VfSEFMX1NNQlVTX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogdHlwZWRlZiBzdHJ1Y3QgX19TTUJVU19IYW5kbGVUeXBlRGVmCisjZWxzZQordHlwZWRlZiBzdHJ1Y3QKKyNlbmRpZiAgLyogVVNFX0hBTF9TTUJVU19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIHsKICAgSTJDX1R5cGVEZWYgICAgICAgICAgICAgICAgICAqSW5zdGFuY2U7ICAgICAgIC8qITwgU01CVVMgcmVnaXN0ZXJzIGJhc2UgYWRkcmVzcyAgICAgICAqLwogCkBAIC0zMjYsNiArMzMwLDcgQEAKICNkZWZpbmUgIFNNQlVTX05FWFRfRlJBTUUgICAgICAgICAgICAgICAgICAgICAgICgodWludDMyX3QpKFNNQlVTX1JFTE9BRF9NT0RFIHwgU01CVVNfU09GVEVORF9NT0RFKSkKICNkZWZpbmUgIFNNQlVTX0ZJUlNUX0FORF9MQVNUX0ZSQU1FX05PX1BFQyAgICAgIFNNQlVTX0FVVE9FTkRfTU9ERQogI2RlZmluZSAgU01CVVNfTEFTVF9GUkFNRV9OT19QRUMgICAgICAgICAgICAgICAgU01CVVNfQVVUT0VORF9NT0RFCisjZGVmaW5lICBTTUJVU19GSVJTVF9GUkFNRV9XSVRIX1BFQyAgICAgICAgICAgICAoKHVpbnQzMl90KShTTUJVU19TT0ZURU5EX01PREUgfCBTTUJVU19TRU5EUEVDX01PREUpKQogI2RlZmluZSAgU01CVVNfRklSU1RfQU5EX0xBU1RfRlJBTUVfV0lUSF9QRUMgICAgKCh1aW50MzJfdCkoU01CVVNfQVVUT0VORF9NT0RFIHwgU01CVVNfU0VORFBFQ19NT0RFKSkKICNkZWZpbmUgIFNNQlVTX0xBU1RfRlJBTUVfV0lUSF9QRUMgICAgICAgICAgICAgICgodWludDMyX3QpKFNNQlVTX0FVVE9FTkRfTU9ERSB8IFNNQlVTX1NFTkRQRUNfTU9ERSkpCiAKQEAgLTM1Myw3ICszNTgsOCBAQAogI2RlZmluZSBTTUJVU19JVF9BRERSSSAgICAgICAgICAgICAgICAgICAgICAgICAgSTJDX0NSMV9BRERSSUUKICNkZWZpbmUgU01CVVNfSVRfUlhJICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkyQ19DUjFfUlhJRQogI2RlZmluZSBTTUJVU19JVF9UWEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTJDX0NSMV9UWElFCi0jZGVmaW5lIFNNQlVTX0lUX1RYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU01CVVNfSVRfRVJSSSB8IFNNQlVTX0lUX1RDSSB8IFNNQlVTX0lUX1NUT1BJIHwgU01CVVNfSVRfTkFDS0kgfCBTTUJVU19JVF9UWEkpCisjZGVmaW5lIFNNQlVTX0lUX1RYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU01CVVNfSVRfRVJSSSB8IFNNQlVTX0lUX1RDSSB8IFNNQlVTX0lUX1NUT1BJIHwgU01CVVNfSVRfTkFDS0kgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01CVVNfSVRfVFhJKQogI2RlZmluZSBTTUJVU19JVF9SWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNNQlVTX0lUX0VSUkkgfCBTTUJVU19JVF9UQ0kgfCBTTUJVU19JVF9OQUNLSSB8IFNNQlVTX0lUX1JYSSkKICNkZWZpbmUgU01CVVNfSVRfQUxFUlQgICAgICAgICAgICAgICAgICAgICAgICAgIChTTUJVU19JVF9FUlJJKQogI2RlZmluZSBTTUJVU19JVF9BRERSICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNNQlVTX0lUX0FERFJJIHwgU01CVVNfSVRfU1RPUEkgfCBTTUJVU19JVF9OQUNLSSkKQEAgLTQwMywxMCArNDA5LDEwIEBACiAgICovCiAjaWYgKFVTRV9IQUxfU01CVVNfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCiAjZGVmaW5lIF9fSEFMX1NNQlVTX1JFU0VUX0hBTkRMRV9TVEFURShfX0hBTkRMRV9fKSAgICAgICAgICAgZG97ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+U3RhdGUgPSBIQUxfU01CVVNfU1RBVEVfUkVTRVQ7ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPk1zcEluaXRDYWxsYmFjayA9IE5VTEw7ICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+TXNwRGVJbml0Q2FsbGJhY2sgPSBOVUxMOyAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSgwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPlN0YXRlID0gSEFMX1NNQlVTX1NUQVRFX1JFU0VUOyAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+TXNwSW5pdENhbGxiYWNrID0gTlVMTDsgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+TXNwRGVJbml0Q2FsbGJhY2sgPSBOVUxMOyAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlKDApCiAjZWxzZQogI2RlZmluZSBfX0hBTF9TTUJVU19SRVNFVF9IQU5ETEVfU1RBVEUoX19IQU5ETEVfXykgICAgICAgICAoKF9fSEFORExFX18pLT5TdGF0ZSA9IEhBTF9TTUJVU19TVEFURV9SRVNFVCkKICNlbmRpZgpAQCAtNDU3LDcgKzQ2Myw4IEBACiAgICoKICAgKiBAcmV0dmFsIFRoZSBuZXcgc3RhdGUgb2YgX19JVF9fIChTRVQgb3IgUkVTRVQpLgogICAqLwotI2RlZmluZSBfX0hBTF9TTUJVU19HRVRfSVRfU09VUkNFKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICgoKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMSAmIChfX0lOVEVSUlVQVF9fKSkgPT0gKF9fSU5URVJSVVBUX18pKSA/IFNFVCA6IFJFU0VUKQorI2RlZmluZSBfX0hBTF9TTUJVU19HRVRfSVRfU09VUkNFKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pIFwKKyAgKCgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IxICYgKF9fSU5URVJSVVBUX18pKSA9PSAoX19JTlRFUlJVUFRfXykpID8gU0VUIDogUkVTRVQpCiAKIC8qKiBAYnJpZWYgIENoZWNrIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBTTUJVUyBmbGFnIGlzIHNldCBvciBub3QuCiAgICogQHBhcmFtICBfX0hBTkRMRV9fIHNwZWNpZmllcyB0aGUgU01CVVMgSGFuZGxlLgpAQCAtNDgzLDcgKzQ5MCw4IEBACiAgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIF9fRkxBR19fIChTRVQgb3IgUkVTRVQpLgogICAqLwogI2RlZmluZSBTTUJVU19GTEFHX01BU0sgICgweDAwMDFGRkZGVSkKLSNkZWZpbmUgX19IQUxfU01CVVNfR0VUX0ZMQUcoX19IQU5ETEVfXywgX19GTEFHX18pICgoKCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5JU1IpICYgKChfX0ZMQUdfXykgJiBTTUJVU19GTEFHX01BU0spKSA9PSAoKF9fRkxBR19fKSAmIFNNQlVTX0ZMQUdfTUFTSykpID8gU0VUIDogUkVTRVQpCisjZGVmaW5lIF9fSEFMX1NNQlVTX0dFVF9GTEFHKF9fSEFORExFX18sIF9fRkxBR19fKSBcCisgICgoKCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5JU1IpICYgKChfX0ZMQUdfXykgJiBTTUJVU19GTEFHX01BU0spKSA9PSAoKF9fRkxBR19fKSAmIFNNQlVTX0ZMQUdfTUFTSykpID8gU0VUIDogUkVTRVQpCiAKIC8qKiBAYnJpZWYgIENsZWFyIHRoZSBTTUJVUyBwZW5kaW5nIGZsYWdzIHdoaWNoIGFyZSBjbGVhcmVkIGJ5IHdyaXRpbmcgMSBpbiBhIHNwZWNpZmljIGJpdC4KICAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBTTUJVUyBIYW5kbGUuCkBAIC01MzQsMTUgKzU0MiwxNSBAQAogICAqLwogCiAjZGVmaW5lIElTX1NNQlVTX0FOQUxPR19GSUxURVIoRklMVEVSKSAgICAgICAgICAgICAgICAgICgoKEZJTFRFUikgPT0gU01CVVNfQU5BTE9HRklMVEVSX0VOQUJMRSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoRklMVEVSKSA9PSBTTUJVU19BTkFMT0dGSUxURVJfRElTQUJMRSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEZJTFRFUikgPT0gU01CVVNfQU5BTE9HRklMVEVSX0RJU0FCTEUpKQogCiAjZGVmaW5lIElTX1NNQlVTX0RJR0lUQUxfRklMVEVSKEZJTFRFUikgICAgICAgICAgICAgICAgICgoRklMVEVSKSA8PSAweDAwMDAwMDBGVSkKIAogI2RlZmluZSBJU19TTUJVU19BRERSRVNTSU5HX01PREUoTU9ERSkgICAgICAgICAgICAgICAgICAoKChNT0RFKSA9PSBTTUJVU19BRERSRVNTSU5HTU9ERV83QklUKSAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gU01CVVNfQUREUkVTU0lOR01PREVfMTBCSVQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBTTUJVU19BRERSRVNTSU5HTU9ERV8xMEJJVCkpCiAKICNkZWZpbmUgSVNfU01CVVNfRFVBTF9BRERSRVNTKEFERFJFU1MpICAgICAgICAgICAgICAgICAgKCgoQUREUkVTUykgPT0gU01CVVNfRFVBTEFERFJFU1NfRElTQUJMRSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQUREUkVTUykgPT0gU01CVVNfRFVBTEFERFJFU1NfRU5BQkxFKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQUREUkVTUykgPT0gU01CVVNfRFVBTEFERFJFU1NfRU5BQkxFKSkKIAogI2RlZmluZSBJU19TTUJVU19PV05fQUREUkVTUzJfTUFTSyhNQVNLKSAgICAgICAgICAgICAgICAoKChNQVNLKSA9PSBTTUJVU19PQTJfTk9NQVNLKSAgICB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1BU0spID09IFNNQlVTX09BMl9NQVNLMDEpICAgIHx8IFwKQEAgLTU2MCw0NiArNTY4LDQ5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFNUUkVUQ0gpID09IFNNQlVTX05PU1RSRVRDSF9FTkFCTEUpKQogCiAjZGVmaW5lIElTX1NNQlVTX1BFQyhQRUMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKFBFQykgPT0gU01CVVNfUEVDX0RJU0FCTEUpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFQykgPT0gU01CVVNfUEVDX0VOQUJMRSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFBFQykgPT0gU01CVVNfUEVDX0VOQUJMRSkpCiAKLSNkZWZpbmUgSVNfU01CVVNfUEVSSVBIRVJBTF9NT0RFKE1PREUpICAgICAgICAgICAgICAgICAgKCgoTU9ERSkgPT0gU01CVVNfUEVSSVBIRVJBTF9NT0RFX1NNQlVTX0hPU1QpICAgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFNNQlVTX1BFUklQSEVSQUxfTU9ERV9TTUJVU19TTEFWRSkgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFNNQlVTX1BFUklQSEVSQUxfTU9ERV9TTUJVU19TTEFWRV9BUlApKQorI2RlZmluZSBJU19TTUJVU19QRVJJUEhFUkFMX01PREUoTU9ERSkgICAgICAgICAgICAgICAgICAoKChNT0RFKSA9PSBTTUJVU19QRVJJUEhFUkFMX01PREVfU01CVVNfSE9TVCkgICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFNNQlVTX1BFUklQSEVSQUxfTU9ERV9TTUJVU19TTEFWRSkgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gU01CVVNfUEVSSVBIRVJBTF9NT0RFX1NNQlVTX1NMQVZFX0FSUCkpCiAKLSNkZWZpbmUgSVNfU01CVVNfVFJBTlNGRVJfTU9ERShNT0RFKSAgICAgICAgICAgICAgICAgICAgKCgoTU9ERSkgPT0gU01CVVNfUkVMT0FEX01PREUpICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gU01CVVNfQVVUT0VORF9NT0RFKSAgICAgICAgICAgICAgICAgICAgICAgICB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBTTUJVU19TT0ZURU5EX01PREUpICAgICAgICAgICAgICAgICAgICAgICAgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFNNQlVTX1NFTkRQRUNfTU9ERSkgICAgICAgICAgICAgICAgICAgICAgICAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gKFNNQlVTX1JFTE9BRF9NT0RFIHwgU01CVVNfU0VORFBFQ19NT0RFKSkgICB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSAoU01CVVNfQVVUT0VORF9NT0RFIHwgU01CVVNfU0VORFBFQ19NT0RFKSkgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IChTTUJVU19BVVRPRU5EX01PREUgfCBTTUJVU19SRUxPQURfTU9ERSkpICAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gKFNNQlVTX0FVVE9FTkRfTU9ERSB8IFNNQlVTX1NFTkRQRUNfTU9ERSB8IFNNQlVTX1JFTE9BRF9NT0RFICkpKQorI2RlZmluZSBJU19TTUJVU19UUkFOU0ZFUl9NT0RFKE1PREUpICAgICAgICAgICAgICAgICAgICAoKChNT0RFKSA9PSBTTUJVU19SRUxPQURfTU9ERSkgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gU01CVVNfQVVUT0VORF9NT0RFKSAgICAgICAgICAgICAgICAgICAgICAgICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IFNNQlVTX1NPRlRFTkRfTU9ERSkgICAgICAgICAgICAgICAgICAgICAgICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSBTTUJVU19TRU5EUEVDX01PREUpICAgICAgICAgICAgICAgICAgICAgICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gKFNNQlVTX1JFTE9BRF9NT0RFIHwgU01CVVNfU0VORFBFQ19NT0RFKSkgICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKE1PREUpID09IChTTUJVU19BVVRPRU5EX01PREUgfCBTTUJVU19TRU5EUEVDX01PREUpKSAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChNT0RFKSA9PSAoU01CVVNfQVVUT0VORF9NT0RFIHwgU01CVVNfUkVMT0FEX01PREUpKSAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoTU9ERSkgPT0gKFNNQlVTX0FVVE9FTkRfTU9ERSB8IFNNQlVTX1NFTkRQRUNfTU9ERSB8IFNNQlVTX1JFTE9BRF9NT0RFICkpKQogCiAKICNkZWZpbmUgSVNfU01CVVNfVFJBTlNGRVJfUkVRVUVTVChSRVFVRVNUKSAgICAgICAgICAgICAgKCgoUkVRVUVTVCkgPT0gU01CVVNfR0VORVJBVEVfU1RPUCkgICAgICAgICAgICAgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX0dFTkVSQVRFX1NUQVJUX1JFQUQpICAgICAgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX0dFTkVSQVRFX1NUQVJUX1dSSVRFKSAgICAgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX05PX1NUQVJUU1RPUCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX0dFTkVSQVRFX1NUQVJUX1JFQUQpICAgICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVRVUVTVCkgPT0gU01CVVNfR0VORVJBVEVfU1RBUlRfV1JJVEUpICAgICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRVFVRVNUKSA9PSBTTUJVU19OT19TVEFSVFNUT1ApKQogCiAKICNkZWZpbmUgSVNfU01CVVNfVFJBTlNGRVJfT1BUSU9OU19SRVFVRVNUKFJFUVVFU1QpICAgICAgKElTX1NNQlVTX1RSQU5TRkVSX09USEVSX09QVElPTlNfUkVRVUVTVChSRVFVRVNUKSAgICAgICB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRVFVRVNUKSA9PSBTTUJVU19GSVJTVF9GUkFNRSkgICAgICAgICAgICAgICAgICAgICAgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX05FWFRfRlJBTUUpICAgICAgICAgICAgICAgICAgICAgICAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVRVUVTVCkgPT0gU01CVVNfRklSU1RfQU5EX0xBU1RfRlJBTUVfTk9fUEVDKSAgICAgICB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRVFVRVNUKSA9PSBTTUJVU19MQVNUX0ZSQU1FX05PX1BFQykgICAgICAgICAgICAgICAgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX0ZJUlNUX0FORF9MQVNUX0ZSQU1FX1dJVEhfUEVDKSAgICAgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVRVUVTVCkgPT0gU01CVVNfTEFTVF9GUkFNRV9XSVRIX1BFQykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX0ZJUlNUX0ZSQU1FKSAgICAgICAgICAgICAgICAgICAgICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRVFVRVNUKSA9PSBTTUJVU19ORVhUX0ZSQU1FKSAgICAgICAgICAgICAgICAgICAgICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVRVUVTVCkgPT0gU01CVVNfRklSU1RfQU5EX0xBU1RfRlJBTUVfTk9fUEVDKSAgICAgICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX0xBU1RfRlJBTUVfTk9fUEVDKSAgICAgICAgICAgICAgICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRVFVRVNUKSA9PSBTTUJVU19GSVJTVF9GUkFNRV9XSVRIX1BFQykgICAgICAgICAgICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVRVUVTVCkgPT0gU01CVVNfRklSU1RfQU5EX0xBU1RfRlJBTUVfV0lUSF9QRUMpICAgICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX0xBU1RfRlJBTUVfV0lUSF9QRUMpKQogCiAjZGVmaW5lIElTX1NNQlVTX1RSQU5TRkVSX09USEVSX09QVElPTlNfUkVRVUVTVChSRVFVRVNUKSAoKChSRVFVRVNUKSA9PSBTTUJVU19PVEhFUl9GUkFNRV9OT19QRUMpICAgICAgICAgICAgICAgIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJFUVVFU1QpID09IFNNQlVTX09USEVSX0FORF9MQVNUX0ZSQU1FX05PX1BFQykgICAgICAgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUkVRVUVTVCkgPT0gU01CVVNfT1RIRVJfRlJBTUVfV0lUSF9QRUMpICAgICAgICAgICAgICB8fCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChSRVFVRVNUKSA9PSBTTUJVU19PVEhFUl9BTkRfTEFTVF9GUkFNRV9XSVRIX1BFQykpCiAKLSNkZWZpbmUgU01CVVNfUkVTRVRfQ1IxKF9fSEFORExFX18pICAgICAgICAgICAgICAgICAgICAgICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IxICY9ICh1aW50MzJfdCl+KCh1aW50MzJfdCkoSTJDX0NSMV9TTUJIRU4gfCBJMkNfQ1IxX1NNQkRFTiB8IEkyQ19DUjFfUEVDRU4pKSkKLSNkZWZpbmUgU01CVVNfUkVTRVRfQ1IyKF9fSEFORExFX18pICAgICAgICAgICAgICAgICAgICAgICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IyICY9ICh1aW50MzJfdCl+KCh1aW50MzJfdCkoSTJDX0NSMl9TQUREIHwgSTJDX0NSMl9IRUFEMTBSIHwgSTJDX0NSMl9OQllURVMgfCBJMkNfQ1IyX1JFTE9BRCB8IEkyQ19DUjJfUkRfV1JOKSkpCisjZGVmaW5lIFNNQlVTX1JFU0VUX0NSMShfX0hBTkRMRV9fKSAgICAgICAgICAgICAgICAgICAgICAgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMSAmPSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCl+KCh1aW50MzJfdCkoSTJDX0NSMV9TTUJIRU4gfCBJMkNfQ1IxX1NNQkRFTiB8IEkyQ19DUjFfUEVDRU4pKSkKKyNkZWZpbmUgU01CVVNfUkVTRVRfQ1IyKF9fSEFORExFX18pICAgICAgICAgICAgICAgICAgICAgICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IyICY9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KX4oKHVpbnQzMl90KShJMkNfQ1IyX1NBREQgfCBJMkNfQ1IyX0hFQUQxMFIgfCBJMkNfQ1IyX05CWVRFUyB8IEkyQ19DUjJfUkVMT0FEIHwgSTJDX0NSMl9SRF9XUk4pKSkKIAogI2RlZmluZSBTTUJVU19HRU5FUkFURV9TVEFSVChfX0FERE1PREVfXyxfX0FERFJFU1NfXykgICAgICgoKF9fQURETU9ERV9fKSA9PSBTTUJVU19BRERSRVNTSU5HTU9ERV83QklUKSA/ICh1aW50MzJfdCkoKCgodWludDMyX3QpKF9fQUREUkVTU19fKSAmIChJMkNfQ1IyX1NBREQpKSB8IChJMkNfQ1IyX1NUQVJUKSB8IChJMkNfQ1IyX0FVVE9FTkQpKSAmICh+STJDX0NSMl9SRF9XUk4pKSA6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKCgodWludDMyX3QpKF9fQUREUkVTU19fKSAmIChJMkNfQ1IyX1NBREQpKSB8IChJMkNfQ1IyX0FERDEwKSB8IChJMkNfQ1IyX1NUQVJUKSkgJiAofkkyQ19DUjJfUkRfV1JOKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKCgodWludDMyX3QpKF9fQUREUkVTU19fKSAmIChJMkNfQ1IyX1NBREQpKSB8IChJMkNfQ1IyX0FERDEwKSB8IChJMkNfQ1IyX1NUQVJUKSkgJiAofkkyQ19DUjJfUkRfV1JOKSkpCiAKICNkZWZpbmUgU01CVVNfR0VUX0FERFJfTUFUQ0goX19IQU5ETEVfXykgICAgICAgICAgICAgICAgICAoKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPklTUiAmIEkyQ19JU1JfQUREQ09ERSkgPj4gMTdVKQogI2RlZmluZSBTTUJVU19HRVRfRElSKF9fSEFORExFX18pICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+SVNSICYgSTJDX0lTUl9ESVIpID4+IDE2VSkKQEAgLTYwNyw3ICs2MTgsOCBAQAogI2RlZmluZSBTTUJVU19HRVRfUEVDX01PREUoX19IQU5ETEVfXykgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjIgJiBJMkNfQ1IyX1BFQ0JZVEUpCiAjZGVmaW5lIFNNQlVTX0dFVF9BTEVSVF9FTkFCTEVEKF9fSEFORExFX18pICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjEgJiBJMkNfQ1IxX0FMRVJURU4pCiAKLSNkZWZpbmUgU01CVVNfQ0hFQ0tfRkxBRyhfX0lTUl9fLCBfX0ZMQUdfXykgICAgICAgICAgICAgKCgoKF9fSVNSX18pICYgKChfX0ZMQUdfXykgJiBTTUJVU19GTEFHX01BU0spKSA9PSAoKF9fRkxBR19fKSAmIFNNQlVTX0ZMQUdfTUFTSykpID8gU0VUIDogUkVTRVQpCisjZGVmaW5lIFNNQlVTX0NIRUNLX0ZMQUcoX19JU1JfXywgX19GTEFHX18pICAgICAgICAgICAgICgoKChfX0lTUl9fKSAmICgoX19GTEFHX18pICYgU01CVVNfRkxBR19NQVNLKSkgPT0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19GTEFHX18pICYgU01CVVNfRkxBR19NQVNLKSkgPyBTRVQgOiBSRVNFVCkKICNkZWZpbmUgU01CVVNfQ0hFQ0tfSVRfU09VUkNFKF9fQ1IxX18sIF9fSVRfXykgICAgICAgICAgKCgoKF9fQ1IxX18pICYgKF9fSVRfXykpID09IChfX0lUX18pKSA/IFNFVCA6IFJFU0VUKQogCiAjZGVmaW5lIElTX1NNQlVTX09XTl9BRERSRVNTMShBRERSRVNTMSkgICAgICAgICAgICAgICAgICAgICAgICAgKChBRERSRVNTMSkgPD0gMHgwMDAwMDNGRlUpCkBAIC02MjMsOCArNjM1LDggQEAKICAgKi8KIAogLyoqIEBhZGR0b2dyb3VwIFNNQlVTX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucwotICogQHsKLSAqLworICAqIEB7CisgICovCiAKIC8qIEluaXRpYWxpemF0aW9uIGFuZCBkZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfU01CVVNfSW5pdChTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMpOwpAQCAtNjM2LDcgKzY0OCw4IEBACiAKIC8qIENhbGxiYWNrcyBSZWdpc3Rlci9VblJlZ2lzdGVyIGZ1bmN0aW9ucyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaWYgKFVTRV9IQUxfU01CVVNfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU01CVVNfUmVnaXN0ZXJDYWxsYmFjayhTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIEhBTF9TTUJVU19DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELCBwU01CVVNfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU01CVVNfUmVnaXN0ZXJDYWxsYmFjayhTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIEhBTF9TTUJVU19DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFNNQlVTX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX1VuUmVnaXN0ZXJDYWxsYmFjayhTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIEhBTF9TTUJVU19DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lEKTsKIAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX1JlZ2lzdGVyQWRkckNhbGxiYWNrKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgcFNNQlVTX0FkZHJDYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKQEAgLTY0NywyOCArNjYwLDMzIEBACiAgICovCiAKIC8qKiBAYWRkdG9ncm91cCBTTUJVU19FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAyIElucHV0IGFuZCBPdXRwdXQgb3BlcmF0aW9uIGZ1bmN0aW9ucwotICogQHsKLSAqLworICAqIEB7CisgICovCiAKIC8qIElPIG9wZXJhdGlvbiBmdW5jdGlvbnMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyoqIEBhZGR0b2dyb3VwIEJsb2NraW5nX21vZGVfUG9sbGluZyBCbG9ja2luZyBtb2RlIFBvbGxpbmcKLSAqIEB7Ci0gKi8KKyAgKiBAeworICAqLwogLyoqKioqKiogQmxvY2tpbmcgbW9kZTogUG9sbGluZyAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX0lzRGV2aWNlUmVhZHkoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MzJfdCBUcmlhbHMsIHVpbnQzMl90IFRpbWVvdXQpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX0lzRGV2aWNlUmVhZHkoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MzJfdCBUcmlhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KTsKIC8qKgogICAqIEB9CiAgICovCiAKIC8qKiBAYWRkdG9ncm91cCBOb24tQmxvY2tpbmdfbW9kZV9JbnRlcnJ1cHQgTm9uLUJsb2NraW5nIG1vZGUgSW50ZXJydXB0Ci0gKiBAewotICovCisgICogQHsKKyAgKi8KIC8qKioqKioqIE5vbi1CbG9ja2luZyBtb2RlOiBJbnRlcnJ1cHQgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUJVU19NYXN0ZXJfVHJhbnNtaXRfSVQoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX01hc3Rlcl9SZWNlaXZlX0lUKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFhmZXJPcHRpb25zKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUJVU19NYXN0ZXJfVHJhbnNtaXRfSVQoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX01hc3Rlcl9SZWNlaXZlX0lUKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCAqcERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX01hc3Rlcl9BYm9ydF9JVChTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQxNl90IERldkFkZHJlc3MpOwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX1NsYXZlX1RyYW5zbWl0X0lUKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFhmZXJPcHRpb25zKTsKLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUJVU19TbGF2ZV9SZWNlaXZlX0lUKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFhmZXJPcHRpb25zKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUJVU19TbGF2ZV9UcmFuc21pdF9JVChTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFhmZXJPcHRpb25zKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUJVU19TbGF2ZV9SZWNlaXZlX0lUKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBYZmVyT3B0aW9ucyk7CiAKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUJVU19FbmFibGVBbGVydF9JVChTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX0Rpc2FibGVBbGVydF9JVChTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMpOwpAQCAtNjc5LDggKzY5Nyw4IEBACiAgICovCiAKIC8qKiBAYWRkdG9ncm91cCBTTUJVU19JUlFfSGFuZGxlcl9hbmRfQ2FsbGJhY2tzIElSUSBIYW5kbGVyIGFuZCBDYWxsYmFja3MKLSAqIEB7Ci0gKi8KKyAgKiBAeworICAqLwogLyoqKioqKiogU01CVVMgSVJRSGFuZGxlciBhbmQgQ2FsbGJhY2tzIHVzZWQgaW4gbm9uIGJsb2NraW5nIG1vZGVzIChJbnRlcnJ1cHQpICovCiB2b2lkIEhBTF9TTUJVU19FVl9JUlFIYW5kbGVyKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cyk7CiB2b2lkIEhBTF9TTUJVU19FUl9JUlFIYW5kbGVyKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cyk7CkBAIC02OTcsOCArNzE1LDggQEAKICAgKi8KIAogLyoqIEBhZGR0b2dyb3VwIFNNQlVTX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDMgUGVyaXBoZXJhbCBTdGF0ZSBhbmQgRXJyb3JzIGZ1bmN0aW9ucwotICogIEB7Ci0gKi8KKyAgKiAgQHsKKyAgKi8KIAogLyogUGVyaXBoZXJhbCBTdGF0ZSBhbmQgRXJyb3JzIGZ1bmN0aW9ucyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiB1aW50MzJfdCBIQUxfU01CVVNfR2V0U3RhdGUoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzKTsKZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX3NwaS5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfc3BpLmgKaW5kZXggNGQ1YmU3NS4uMjk2NDgxYSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfc3BpLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfc3BpLmgKQEAgLTM4Myw3ICszODMsOCBAQAogI2RlZmluZSBTUElfRkxBR19GUkUgICAgICAgICAgICAgICAgICAgIFNQSV9TUl9GUkUgICAgLyogU1BJIEVycm9yIGZsYWc6IFRJIG1vZGUgZnJhbWUgZm9ybWF0IGVycm9yIGZsYWcgKi8KICNkZWZpbmUgU1BJX0ZMQUdfRlRMVkwgICAgICAgICAgICAgICAgICBTUElfU1JfRlRMVkwgIC8qIFNQSSBmaWZvIHRyYW5zbWlzc2lvbiBsZXZlbCAgICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIFNQSV9GTEFHX0ZSTFZMICAgICAgICAgICAgICAgICAgU1BJX1NSX0ZSTFZMICAvKiBTUEkgZmlmbyByZWNlcHRpb24gbGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBTUElfRkxBR19NQVNLICAgICAgICAgICAgICAgICAgIChTUElfU1JfUlhORSB8IFNQSV9TUl9UWEUgfCBTUElfU1JfQlNZIHwgU1BJX1NSX0NSQ0VSUiB8IFNQSV9TUl9NT0RGIHwgU1BJX1NSX09WUiB8IFNQSV9TUl9GUkUgfCBTUElfU1JfRlRMVkwgfCBTUElfU1JfRlJMVkwpCisjZGVmaW5lIFNQSV9GTEFHX01BU0sgICAgICAgICAgICAgICAgICAgKFNQSV9TUl9SWE5FIHwgU1BJX1NSX1RYRSB8IFNQSV9TUl9CU1kgfCBTUElfU1JfQ1JDRVJSXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNQSV9TUl9NT0RGIHwgU1BJX1NSX09WUiB8IFNQSV9TUl9GUkUgfCBTUElfU1JfRlRMVkwgfCBTUElfU1JfRlJMVkwpCiAvKioKICAgKiBAfQogICAqLwpAQCAtNDMzLDcgKzQzNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlKDApCiAjZWxzZQogI2RlZmluZSBfX0hBTF9TUElfUkVTRVRfSEFORExFX1NUQVRFKF9fSEFORExFX18pICgoX19IQU5ETEVfXyktPlN0YXRlID0gSEFMX1NQSV9TVEFURV9SRVNFVCkKLSNlbmRpZgorI2VuZGlmIC8qIFVTRV9IQUxfU1BJX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogCiAvKiogQGJyaWVmICBFbmFibGUgdGhlIHNwZWNpZmllZCBTUEkgaW50ZXJydXB0cy4KICAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBTUEkgSGFuZGxlLgpAQCAtNDY5LDcgKzQ3MCw4IEBACiAgICogICAgICAgICAgICBAYXJnIFNQSV9JVF9FUlI6IEVycm9yIGludGVycnVwdCBlbmFibGUKICAgKiBAcmV0dmFsIFRoZSBuZXcgc3RhdGUgb2YgX19JVF9fIChUUlVFIG9yIEZBTFNFKS4KICAgKi8KLSNkZWZpbmUgX19IQUxfU1BJX0dFVF9JVF9TT1VSQ0UoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXykgKCgoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IyICYgKF9fSU5URVJSVVBUX18pKSA9PSAoX19JTlRFUlJVUFRfXykpID8gU0VUIDogUkVTRVQpCisjZGVmaW5lIF9fSEFMX1NQSV9HRVRfSVRfU09VUkNFKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICgoKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiAoX19JTlRFUlJVUFRfXykpID09IChfX0lOVEVSUlVQVF9fKSkgPyBTRVQgOiBSRVNFVCkKIAogLyoqIEBicmllZiAgQ2hlY2sgd2hldGhlciB0aGUgc3BlY2lmaWVkIFNQSSBmbGFnIGlzIHNldCBvciBub3QuCiAgICogQHBhcmFtICBfX0hBTkRMRV9fIHNwZWNpZmllcyB0aGUgU1BJIEhhbmRsZS4KQEAgLTUyOSw5ICs1MzEsOSBAQAogICAqLwogI2RlZmluZSBfX0hBTF9TUElfQ0xFQVJfRlJFRkxBRyhfX0hBTkRMRV9fKSAgICAgICAgXAogICBkb3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBfX0lPIHVpbnQzMl90IHRtcHJlZ19mcmUgPSAweDAwVTsgICAgICAgICAgICAgICAgXAotICB0bXByZWdfZnJlID0gKF9fSEFORExFX18pLT5JbnN0YW5jZS0+U1I7ICAgICAgICAgXAotICBVTlVTRUQodG1wcmVnX2ZyZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9fSU8gdWludDMyX3QgdG1wcmVnX2ZyZSA9IDB4MDBVOyAgICAgICAgICAgICAgXAorICAgIHRtcHJlZ19mcmUgPSAoX19IQU5ETEVfXyktPkluc3RhbmNlLT5TUjsgICAgICAgXAorICAgIFVOVVNFRCh0bXByZWdfZnJlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICB9d2hpbGUoMFUpCiAKIC8qKiBAYnJpZWYgIEVuYWJsZSB0aGUgU1BJIHBlcmlwaGVyYWwuCkBAIC01ODAsNyArNTgyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFVF9CSVQoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IxLCBTUElfQ1IxX0NSQ0VOKTt9d2hpbGUoMFUpCiAKIC8qKiBAYnJpZWYgIENoZWNrIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBTUEkgZmxhZyBpcyBzZXQgb3Igbm90LgotICAqIEBwYXJhbSAgX19TUl9fICBjb3B5IG9mIFNQSSBTUiByZWdzaXRlci4KKyAgKiBAcGFyYW0gIF9fU1JfXyAgY29weSBvZiBTUEkgU1IgcmVnaXN0ZXIuCiAgICogQHBhcmFtICBfX0ZMQUdfXyBzcGVjaWZpZXMgdGhlIGZsYWcgdG8gY2hlY2suCiAgICogICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgogICAqICAgICAgICAgICAgQGFyZyBTUElfRkxBR19SWE5FOiBSZWNlaXZlIGJ1ZmZlciBub3QgZW1wdHkgZmxhZwpAQCAtNTk0LDEwICs1OTYsMTEgQEAKICAgKiAgICAgICAgICAgIEBhcmcgU1BJX0ZMQUdfRlJMVkw6IFNQSSBmaWZvIHJlY2VwdGlvbiBsZXZlbAogICAqIEByZXR2YWwgU0VUIG9yIFJFU0VULgogICAqLwotI2RlZmluZSBTUElfQ0hFQ0tfRkxBRyhfX1NSX18sIF9fRkxBR19fKSAgICAgICAgICgoKChfX1NSX18pICYgKChfX0ZMQUdfXykgJiBTUElfRkxBR19NQVNLKSkgPT0gKChfX0ZMQUdfXykgJiBTUElfRkxBR19NQVNLKSkgPyBTRVQgOiBSRVNFVCkKKyNkZWZpbmUgU1BJX0NIRUNLX0ZMQUcoX19TUl9fLCBfX0ZMQUdfXykgKCgoKF9fU1JfXykgJiAoKF9fRkxBR19fKSAmIFNQSV9GTEFHX01BU0spKSA9PSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fRkxBR19fKSAmIFNQSV9GTEFHX01BU0spKSA/IFNFVCA6IFJFU0VUKQogCiAvKiogQGJyaWVmICBDaGVjayB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgU1BJIEludGVycnVwdCBpcyBzZXQgb3Igbm90LgotICAqIEBwYXJhbSAgX19DUjJfXyAgY29weSBvZiBTUEkgQ1IyIHJlZ3NpdGVyLgorICAqIEBwYXJhbSAgX19DUjJfXyAgY29weSBvZiBTUEkgQ1IyIHJlZ2lzdGVyLgogICAqIEBwYXJhbSAgX19JTlRFUlJVUFRfXyBzcGVjaWZpZXMgdGhlIFNQSSBpbnRlcnJ1cHQgc291cmNlIHRvIGNoZWNrLgogICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKICAgKiAgICAgICAgICAgIEBhcmcgU1BJX0lUX1RYRTogVHggYnVmZmVyIGVtcHR5IGludGVycnVwdCBlbmFibGUKQEAgLTYwNSwxNSArNjA4LDE2IEBACiAgICogICAgICAgICAgICBAYXJnIFNQSV9JVF9FUlI6IEVycm9yIGludGVycnVwdCBlbmFibGUKICAgKiBAcmV0dmFsIFNFVCBvciBSRVNFVC4KICAgKi8KLSNkZWZpbmUgU1BJX0NIRUNLX0lUX1NPVVJDRShfX0NSMl9fLCBfX0lOVEVSUlVQVF9fKSAgICAgICgoKChfX0NSMl9fKSAmIChfX0lOVEVSUlVQVF9fKSkgPT0gKF9fSU5URVJSVVBUX18pKSA/IFNFVCA6IFJFU0VUKQorI2RlZmluZSBTUElfQ0hFQ0tfSVRfU09VUkNFKF9fQ1IyX18sIF9fSU5URVJSVVBUX18pICgoKChfX0NSMl9fKSAmIChfX0lOVEVSUlVQVF9fKSkgPT0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19JTlRFUlJVUFRfXykpID8gU0VUIDogUkVTRVQpCiAKIC8qKiBAYnJpZWYgIENoZWNrcyBpZiBTUEkgTW9kZSBwYXJhbWV0ZXIgaXMgaW4gYWxsb3dlZCByYW5nZS4KICAgKiBAcGFyYW0gIF9fTU9ERV9fIHNwZWNpZmllcyB0aGUgU1BJIE1vZGUuCiAgICogICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNQSV9Nb2RlCiAgICogQHJldHZhbCBOb25lCiAgICovCi0jZGVmaW5lIElTX1NQSV9NT0RFKF9fTU9ERV9fKSAoKChfX01PREVfXykgPT0gU1BJX01PREVfU0xBVkUpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTU9ERV9fKSA9PSBTUElfTU9ERV9NQVNURVIpKQorI2RlZmluZSBJU19TUElfTU9ERShfX01PREVfXykgICAgICAoKChfX01PREVfXykgPT0gU1BJX01PREVfU0xBVkUpICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX01PREVfXykgPT0gU1BJX01PREVfTUFTVEVSKSkKIAogLyoqIEBicmllZiAgQ2hlY2tzIGlmIFNQSSBEaXJlY3Rpb24gTW9kZSBwYXJhbWV0ZXIgaXMgaW4gYWxsb3dlZCByYW5nZS4KICAgKiBAcGFyYW0gIF9fTU9ERV9fIHNwZWNpZmllcyB0aGUgU1BJIERpcmVjdGlvbiBNb2RlLgpAQCAtNjYxLDMzICs2NjUsMzMgQEAKICAgKiAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU1BJX0Nsb2NrX1BvbGFyaXR5CiAgICogQHJldHZhbCBOb25lCiAgICovCi0jZGVmaW5lIElTX1NQSV9DUE9MKF9fQ1BPTF9fKSAoKChfX0NQT0xfXykgPT0gU1BJX1BPTEFSSVRZX0xPVykgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19DUE9MX18pID09IFNQSV9QT0xBUklUWV9ISUdIKSkKKyNkZWZpbmUgSVNfU1BJX0NQT0woX19DUE9MX18pICAgICAgKCgoX19DUE9MX18pID09IFNQSV9QT0xBUklUWV9MT1cpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19DUE9MX18pID09IFNQSV9QT0xBUklUWV9ISUdIKSkKIAogLyoqIEBicmllZiAgQ2hlY2tzIGlmIFNQSSBDbG9jayBQaGFzZSBwYXJhbWV0ZXIgaXMgaW4gYWxsb3dlZCByYW5nZS4KICAgKiBAcGFyYW0gIF9fQ1BIQV9fIHNwZWNpZmllcyB0aGUgU1BJIENsb2NrIFBoYXNlLgogICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBTUElfQ2xvY2tfUGhhc2UKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLSNkZWZpbmUgSVNfU1BJX0NQSEEoX19DUEhBX18pICgoKF9fQ1BIQV9fKSA9PSBTUElfUEhBU0VfMUVER0UpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fQ1BIQV9fKSA9PSBTUElfUEhBU0VfMkVER0UpKQorI2RlZmluZSBJU19TUElfQ1BIQShfX0NQSEFfXykgICAgICAoKChfX0NQSEFfXykgPT0gU1BJX1BIQVNFXzFFREdFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fQ1BIQV9fKSA9PSBTUElfUEhBU0VfMkVER0UpKQogCiAvKiogQGJyaWVmICBDaGVja3MgaWYgU1BJIFNsYXZlIFNlbGVjdCBwYXJhbWV0ZXIgaXMgaW4gYWxsb3dlZCByYW5nZS4KICAgKiBAcGFyYW0gIF9fTlNTX18gc3BlY2lmaWVzIHRoZSBTUEkgU2xhdmUgU2VsZWN0IG1hbmFnZW1lbnQgcGFyYW1ldGVyLgogICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBTUElfU2xhdmVfU2VsZWN0X21hbmFnZW1lbnQKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLSNkZWZpbmUgSVNfU1BJX05TUyhfX05TU19fKSAoKChfX05TU19fKSA9PSBTUElfTlNTX1NPRlQpICAgICAgIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX05TU19fKSA9PSBTUElfTlNTX0hBUkRfSU5QVVQpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX05TU19fKSA9PSBTUElfTlNTX0hBUkRfT1VUUFVUKSkKKyNkZWZpbmUgSVNfU1BJX05TUyhfX05TU19fKSAgICAgICAgKCgoX19OU1NfXykgPT0gU1BJX05TU19TT0ZUKSAgICAgICB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTlNTX18pID09IFNQSV9OU1NfSEFSRF9JTlBVVCkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX05TU19fKSA9PSBTUElfTlNTX0hBUkRfT1VUUFVUKSkKIAogLyoqIEBicmllZiAgQ2hlY2tzIGlmIFNQSSBOU1MgUHVsc2UgcGFyYW1ldGVyIGlzIGluIGFsbG93ZWQgcmFuZ2UuCiAgICogQHBhcmFtICBfX05TU1BfXyBzcGVjaWZpZXMgdGhlIFNQSSBOU1MgUHVsc2UgTW9kZSBwYXJhbWV0ZXIuCiAgICogICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNQSV9OU1NQX01vZGUKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLSNkZWZpbmUgSVNfU1BJX05TU1AoX19OU1NQX18pICgoKF9fTlNTUF9fKSA9PSBTUElfTlNTX1BVTFNFX0VOQUJMRSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19OU1NQX18pID09IFNQSV9OU1NfUFVMU0VfRElTQUJMRSkpCisjZGVmaW5lIElTX1NQSV9OU1NQKF9fTlNTUF9fKSAgICAgICgoKF9fTlNTUF9fKSA9PSBTUElfTlNTX1BVTFNFX0VOQUJMRSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX05TU1BfXykgPT0gU1BJX05TU19QVUxTRV9ESVNBQkxFKSkKIAogLyoqIEBicmllZiAgQ2hlY2tzIGlmIFNQSSBCYXVkcmF0ZSBwcmVzY2FsZXIgcGFyYW1ldGVyIGlzIGluIGFsbG93ZWQgcmFuZ2UuCiAgICogQHBhcmFtICBfX1BSRVNDQUxFUl9fIHNwZWNpZmllcyB0aGUgU1BJIEJhdWRyYXRlIHByZXNjYWxlci4KQEAgLTcwOCwxNiArNzEyLDE2IEBACiAgICogICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNQSV9NU0JfTFNCX3RyYW5zbWlzc2lvbgogICAqIEByZXR2YWwgTm9uZQogICAqLwotI2RlZmluZSBJU19TUElfRklSU1RfQklUKF9fQklUX18pICgoKF9fQklUX18pID09IFNQSV9GSVJTVEJJVF9NU0IpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0JJVF9fKSA9PSBTUElfRklSU1RCSVRfTFNCKSkKKyNkZWZpbmUgSVNfU1BJX0ZJUlNUX0JJVChfX0JJVF9fKSAgKCgoX19CSVRfXykgPT0gU1BJX0ZJUlNUQklUX01TQikgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0JJVF9fKSA9PSBTUElfRklSU1RCSVRfTFNCKSkKIAogLyoqIEBicmllZiAgQ2hlY2tzIGlmIFNQSSBUSSBtb2RlIHBhcmFtZXRlciBpcyBpbiBhbGxvd2VkIHJhbmdlLgogICAqIEBwYXJhbSAgX19NT0RFX18gc3BlY2lmaWVzIHRoZSBTUEkgVEkgbW9kZS4KICAgKiAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgU1BJX1RJX21vZGUKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLSNkZWZpbmUgSVNfU1BJX1RJTU9ERShfX01PREVfXykgKCgoX19NT0RFX18pID09IFNQSV9USU1PREVfRElTQUJMRSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX01PREVfXykgPT0gU1BJX1RJTU9ERV9FTkFCTEUpKQorI2RlZmluZSBJU19TUElfVElNT0RFKF9fTU9ERV9fKSAgICAoKChfX01PREVfXykgPT0gU1BJX1RJTU9ERV9ESVNBQkxFKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTU9ERV9fKSA9PSBTUElfVElNT0RFX0VOQUJMRSkpCiAKIC8qKiBAYnJpZWYgIENoZWNrcyBpZiBTUEkgQ1JDIGNhbGN1bGF0aW9uIGVuYWJsZWQgc3RhdGUgaXMgaW4gYWxsb3dlZCByYW5nZS4KICAgKiBAcGFyYW0gIF9fQ0FMQ1VMQVRJT05fXyBzcGVjaWZpZXMgdGhlIFNQSSBDUkMgY2FsY3VsYXRpb24gZW5hYmxlIHN0YXRlLgpAQCAtNzMyLDggKzczNiw4IEBACiAgICogICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFNQSV9DUkNfbGVuZ3RoCiAgICogQHJldHZhbCBOb25lCiAgICovCi0jZGVmaW5lIElTX1NQSV9DUkNfTEVOR1RIKF9fTEVOR1RIX18pICgoKF9fTEVOR1RIX18pID09IFNQSV9DUkNfTEVOR1RIX0RBVEFTSVpFKSB8fFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19MRU5HVEhfXykgPT0gU1BJX0NSQ19MRU5HVEhfOEJJVCkgIHx8ICAgXAorI2RlZmluZSBJU19TUElfQ1JDX0xFTkdUSChfX0xFTkdUSF9fKSAoKChfX0xFTkdUSF9fKSA9PSBTUElfQ1JDX0xFTkdUSF9EQVRBU0laRSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0xFTkdUSF9fKSA9PSBTUElfQ1JDX0xFTkdUSF84QklUKSAgICAgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0xFTkdUSF9fKSA9PSBTUElfQ1JDX0xFTkdUSF8xNkJJVCkpCiAKIC8qKiBAYnJpZWYgIENoZWNrcyBpZiBTUEkgcG9seW5vbWlhbCB2YWx1ZSB0byBiZSB1c2VkIGZvciB0aGUgQ1JDIGNhbGN1bGF0aW9uLCBpcyBpbiBhbGxvd2VkIHJhbmdlLgpAQCAtNzQxLDcgKzc0NSw5IEBACiAgICogICAgICAgICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAwIGFuZCBNYXhfRGF0YSA9IDY1NTM1CiAgICogQHJldHZhbCBOb25lCiAgICovCi0jZGVmaW5lIElTX1NQSV9DUkNfUE9MWU5PTUlBTChfX1BPTFlOT01JQUxfXykgKCgoX19QT0xZTk9NSUFMX18pID49IDB4MVUpICYmICgoX19QT0xZTk9NSUFMX18pIDw9IDB4RkZGRlUpICYmICgoKF9fUE9MWU5PTUlBTF9fKSYweDFVKSAhPSAwVSkpCisjZGVmaW5lIElTX1NQSV9DUkNfUE9MWU5PTUlBTChfX1BPTFlOT01JQUxfXykgKCgoX19QT0xZTk9NSUFMX18pID49IDB4MVUpICAgICYmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1BPTFlOT01JQUxfXykgPD0gMHhGRkZGVSkgJiYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKF9fUE9MWU5PTUlBTF9fKSYweDFVKSAhPSAwVSkpCiAKIC8qKiBAYnJpZWYgIENoZWNrcyBpZiBETUEgaGFuZGxlIGlzIHZhbGlkLgogICAqIEBwYXJhbSAgX19IQU5ETEVfXyBzcGVjaWZpZXMgYSBETUEgSGFuZGxlLgpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfdGltLmggYi9JbmMvc3RtMzJmN3h4X2hhbF90aW0uaAppbmRleCBjNzdlOTljLi40OTM0ZTYyIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2hhbF90aW0uaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF90aW0uaApAQCAtMzA1LDYgKzMwNSwyNiBAQAogfSBIQUxfVElNX1N0YXRlVHlwZURlZjsKIAogLyoqCisgICogQGJyaWVmICBUSU0gQ2hhbm5lbCBTdGF0ZXMgZGVmaW5pdGlvbgorICAqLwordHlwZWRlZiBlbnVtCit7CisgIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRVNFVCAgICAgICAgICAgICA9IDB4MDBVLCAgICAvKiE8IFRJTSBDaGFubmVsIGluaXRpYWwgc3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZICAgICAgICAgICAgID0gMHgwMVUsICAgIC8qITwgVElNIENoYW5uZWwgcmVhZHkgZm9yIHVzZSAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSAgICAgICAgICAgICAgPSAweDAyVSwgICAgLyohPCBBbiBpbnRlcm5hbCBwcm9jZXNzIGlzIG9uZ29pbmcgb24gdGhlIFRJTSBjaGFubmVsICovCit9IEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZjsKKworLyoqCisgICogQGJyaWVmICBETUEgQnVyc3QgU3RhdGVzIGRlZmluaXRpb24KKyAgKi8KK3R5cGVkZWYgZW51bQoreworICBIQUxfRE1BX0JVUlNUX1NUQVRFX1JFU0VUICAgICAgICAgICAgID0gMHgwMFUsICAgIC8qITwgRE1BIEJ1cnN0IGluaXRpYWwgc3RhdGUgKi8KKyAgSEFMX0RNQV9CVVJTVF9TVEFURV9SRUFEWSAgICAgICAgICAgICA9IDB4MDFVLCAgICAvKiE8IERNQSBCdXJzdCByZWFkeSBmb3IgdXNlICovCisgIEhBTF9ETUFfQlVSU1RfU1RBVEVfQlVTWSAgICAgICAgICAgICAgPSAweDAyVSwgICAgLyohPCBPbmdvaW5nIERNQSBCdXJzdCAgICAgICAqLworfSBIQUxfVElNX0RNQUJ1cnN0U3RhdGVUeXBlRGVmOworCisvKioKICAgKiBAYnJpZWYgIEhBTCBBY3RpdmUgY2hhbm5lbCBzdHJ1Y3R1cmVzIGRlZmluaXRpb24KICAgKi8KIHR5cGVkZWYgZW51bQpAQCAtMzI3LDEzICszNDcsMTYgQEAKIHR5cGVkZWYgc3RydWN0CiAjZW5kaWYgLyogVVNFX0hBTF9USU1fUkVHSVNURVJfQ0FMTEJBQ0tTICovCiB7Ci0gIFRJTV9UeXBlRGVmICAgICAgICAgICAgICAgICAqSW5zdGFuY2U7ICAgICAvKiE8IFJlZ2lzdGVyIGJhc2UgYWRkcmVzcyAgICAgICAgICAgICAqLwotICBUSU1fQmFzZV9Jbml0VHlwZURlZiAgICAgICAgSW5pdDsgICAgICAgICAgLyohPCBUSU0gVGltZSBCYXNlIHJlcXVpcmVkIHBhcmFtZXRlcnMgKi8KLSAgSEFMX1RJTV9BY3RpdmVDaGFubmVsICAgICAgIENoYW5uZWw7ICAgICAgIC8qITwgQWN0aXZlIGNoYW5uZWwgICAgICAgICAgICAgICAgICAgICovCi0gIERNQV9IYW5kbGVUeXBlRGVmICAgICAgICAgICAqaGRtYVs3XTsgICAgICAvKiE8IERNQSBIYW5kbGVycyBhcnJheQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGFycmF5IGlzIGFjY2Vzc2VkIGJ5IGEgQHJlZiBETUFfSGFuZGxlX2luZGV4ICovCi0gIEhBTF9Mb2NrVHlwZURlZiAgICAgICAgICAgICBMb2NrOyAgICAgICAgICAvKiE8IExvY2tpbmcgb2JqZWN0ICAgICAgICAgICAgICAgICAgICAqLwotICBfX0lPIEhBTF9USU1fU3RhdGVUeXBlRGVmICAgU3RhdGU7ICAgICAgICAgLyohPCBUSU0gb3BlcmF0aW9uIHN0YXRlICAgICAgICAgICAgICAgKi8KKyAgVElNX1R5cGVEZWYgICAgICAgICAgICAgICAgICAgICAgICAqSW5zdGFuY2U7ICAgICAgICAgLyohPCBSZWdpc3RlciBiYXNlIGFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIFRJTV9CYXNlX0luaXRUeXBlRGVmICAgICAgICAgICAgICAgSW5pdDsgICAgICAgICAgICAgIC8qITwgVElNIFRpbWUgQmFzZSByZXF1aXJlZCBwYXJhbWV0ZXJzICAgICAgICAgICAgICAgICAqLworICBIQUxfVElNX0FjdGl2ZUNoYW5uZWwgICAgICAgICAgICAgIENoYW5uZWw7ICAgICAgICAgICAvKiE8IEFjdGl2ZSBjaGFubmVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgRE1BX0hhbmRsZVR5cGVEZWYgICAgICAgICAgICAgICAgICAqaGRtYVs3XTsgICAgICAgICAgLyohPCBETUEgSGFuZGxlcnMgYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGFycmF5IGlzIGFjY2Vzc2VkIGJ5IGEgQHJlZiBETUFfSGFuZGxlX2luZGV4ICovCisgIEhBTF9Mb2NrVHlwZURlZiAgICAgICAgICAgICAgICAgICAgTG9jazsgICAgICAgICAgICAgIC8qITwgTG9ja2luZyBvYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBfX0lPIEhBTF9USU1fU3RhdGVUeXBlRGVmICAgICAgICAgIFN0YXRlOyAgICAgICAgICAgICAvKiE8IFRJTSBvcGVyYXRpb24gc3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgX19JTyBIQUxfVElNX0NoYW5uZWxTdGF0ZVR5cGVEZWYgICBDaGFubmVsU3RhdGVbNl07ICAgLyohPCBUSU0gY2hhbm5lbCBvcGVyYXRpb24gc3RhdGUgICAgICAgICAgICAgICAgICAgICAgICovCisgIF9fSU8gSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmICAgQ2hhbm5lbE5TdGF0ZVs0XTsgIC8qITwgVElNIGNvbXBsZW1lbnRhcnkgY2hhbm5lbCBvcGVyYXRpb24gc3RhdGUgICAgICAgICAqLworICBfX0lPIEhBTF9USU1fRE1BQnVyc3RTdGF0ZVR5cGVEZWYgIERNQUJ1cnN0U3RhdGU7ICAgICAvKiE8IERNQSBidXJzdCBvcGVyYXRpb24gc3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAogI2lmIChVU0VfSEFMX1RJTV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKICAgdm9pZCAoKiBCYXNlX01zcEluaXRDYWxsYmFjaykoc3RydWN0IF9fVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0pOyAgICAgICAgICAgICAgLyohPCBUSU0gQmFzZSBNc3AgSW5pdCBDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCkBAIC0zNzMsMzUgKzM5NiwzNSBAQAogICAqLwogdHlwZWRlZiBlbnVtCiB7Ci0gICBIQUxfVElNX0JBU0VfTVNQSU5JVF9DQl9JRCAgICAgICAgICAgID0gMHgwMFUgICAgLyohPCBUSU0gQmFzZSBNc3BJbml0IENhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgLEhBTF9USU1fQkFTRV9NU1BERUlOSVRfQ0JfSUQgICAgICAgICAgPSAweDAxVSAgICAvKiE8IFRJTSBCYXNlIE1zcERlSW5pdCBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAsSEFMX1RJTV9JQ19NU1BJTklUX0NCX0lEICAgICAgICAgICAgICA9IDB4MDJVICAgIC8qITwgVElNIElDIE1zcEluaXQgQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICxIQUxfVElNX0lDX01TUERFSU5JVF9DQl9JRCAgICAgICAgICAgID0gMHgwM1UgICAgLyohPCBUSU0gSUMgTXNwRGVJbml0IENhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgLEhBTF9USU1fT0NfTVNQSU5JVF9DQl9JRCAgICAgICAgICAgICAgPSAweDA0VSAgICAvKiE8IFRJTSBPQyBNc3BJbml0IENhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAsSEFMX1RJTV9PQ19NU1BERUlOSVRfQ0JfSUQgICAgICAgICAgICA9IDB4MDVVICAgIC8qITwgVElNIE9DIE1zcERlSW5pdCBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICxIQUxfVElNX1BXTV9NU1BJTklUX0NCX0lEICAgICAgICAgICAgID0gMHgwNlUgICAgLyohPCBUSU0gUFdNIE1zcEluaXQgQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgLEhBTF9USU1fUFdNX01TUERFSU5JVF9DQl9JRCAgICAgICAgICAgPSAweDA3VSAgICAvKiE8IFRJTSBQV00gTXNwRGVJbml0IENhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAsSEFMX1RJTV9PTkVfUFVMU0VfTVNQSU5JVF9DQl9JRCAgICAgICA9IDB4MDhVICAgIC8qITwgVElNIE9uZSBQdWxzZSBNc3BJbml0IENhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICxIQUxfVElNX09ORV9QVUxTRV9NU1BERUlOSVRfQ0JfSUQgICAgID0gMHgwOVUgICAgLyohPCBUSU0gT25lIFB1bHNlIE1zcERlSW5pdCBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgLEhBTF9USU1fRU5DT0RFUl9NU1BJTklUX0NCX0lEICAgICAgICAgPSAweDBBVSAgICAvKiE8IFRJTSBFbmNvZGVyIE1zcEluaXQgQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAsSEFMX1RJTV9FTkNPREVSX01TUERFSU5JVF9DQl9JRCAgICAgICA9IDB4MEJVICAgIC8qITwgVElNIEVuY29kZXIgTXNwRGVJbml0IENhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICxIQUxfVElNX0hBTExfU0VOU09SX01TUElOSVRfQ0JfSUQgICAgID0gMHgwQ1UgICAgLyohPCBUSU0gSGFsbCBTZW5zb3IgTXNwRGVJbml0IENhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgICAgKi8KLSAgLEhBTF9USU1fSEFMTF9TRU5TT1JfTVNQREVJTklUX0NCX0lEICAgPSAweDBEVSAgICAvKiE8IFRJTSBIYWxsIFNlbnNvciBNc3BEZUluaXQgQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgICAgICAqLwotICAsSEFMX1RJTV9QRVJJT0RfRUxBUFNFRF9DQl9JRCAgICAgICAgICA9IDB4MEVVICAgIC8qITwgVElNIFBlcmlvZCBFbGFwc2VkIENhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAsSEFMX1RJTV9QRVJJT0RfRUxBUFNFRF9IQUxGX0NCX0lEICAgICA9IDB4MEZVICAgIC8qITwgVElNIFBlcmlvZCBFbGFwc2VkIGhhbGYgY29tcGxldGUgQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAqLwotICAsSEFMX1RJTV9UUklHR0VSX0NCX0lEICAgICAgICAgICAgICAgICA9IDB4MTBVICAgIC8qITwgVElNIFRyaWdnZXIgQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAsSEFMX1RJTV9UUklHR0VSX0hBTEZfQ0JfSUQgICAgICAgICAgICA9IDB4MTFVICAgIC8qITwgVElNIFRyaWdnZXIgaGFsZiBjb21wbGV0ZSBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAgICAgICAqLworICBIQUxfVElNX0JBU0VfTVNQSU5JVF9DQl9JRCAgICAgICAgICAgICAgPSAweDAwVSAgIC8qITwgVElNIEJhc2UgTXNwSW5pdCBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICwgSEFMX1RJTV9CQVNFX01TUERFSU5JVF9DQl9JRCAgICAgICAgICA9IDB4MDFVICAgLyohPCBUSU0gQmFzZSBNc3BEZUluaXQgQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLCBIQUxfVElNX0lDX01TUElOSVRfQ0JfSUQgICAgICAgICAgICAgID0gMHgwMlUgICAvKiE8IFRJTSBJQyBNc3BJbml0IENhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAsIEhBTF9USU1fSUNfTVNQREVJTklUX0NCX0lEICAgICAgICAgICAgPSAweDAzVSAgIC8qITwgVElNIElDIE1zcERlSW5pdCBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICwgSEFMX1RJTV9PQ19NU1BJTklUX0NCX0lEICAgICAgICAgICAgICA9IDB4MDRVICAgLyohPCBUSU0gT0MgTXNwSW5pdCBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLCBIQUxfVElNX09DX01TUERFSU5JVF9DQl9JRCAgICAgICAgICAgID0gMHgwNVUgICAvKiE8IFRJTSBPQyBNc3BEZUluaXQgQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAsIEhBTF9USU1fUFdNX01TUElOSVRfQ0JfSUQgICAgICAgICAgICAgPSAweDA2VSAgIC8qITwgVElNIFBXTSBNc3BJbml0IENhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICwgSEFMX1RJTV9QV01fTVNQREVJTklUX0NCX0lEICAgICAgICAgICA9IDB4MDdVICAgLyohPCBUSU0gUFdNIE1zcERlSW5pdCBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLCBIQUxfVElNX09ORV9QVUxTRV9NU1BJTklUX0NCX0lEICAgICAgID0gMHgwOFUgICAvKiE8IFRJTSBPbmUgUHVsc2UgTXNwSW5pdCBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAsIEhBTF9USU1fT05FX1BVTFNFX01TUERFSU5JVF9DQl9JRCAgICAgPSAweDA5VSAgIC8qITwgVElNIE9uZSBQdWxzZSBNc3BEZUluaXQgQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgICAgICAgICovCisgICwgSEFMX1RJTV9FTkNPREVSX01TUElOSVRfQ0JfSUQgICAgICAgICA9IDB4MEFVICAgLyohPCBUSU0gRW5jb2RlciBNc3BJbml0IENhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLCBIQUxfVElNX0VOQ09ERVJfTVNQREVJTklUX0NCX0lEICAgICAgID0gMHgwQlUgICAvKiE8IFRJTSBFbmNvZGVyIE1zcERlSW5pdCBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAsIEhBTF9USU1fSEFMTF9TRU5TT1JfTVNQSU5JVF9DQl9JRCAgICAgPSAweDBDVSAgIC8qITwgVElNIEhhbGwgU2Vuc29yIE1zcERlSW5pdCBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAgICAgICovCisgICwgSEFMX1RJTV9IQUxMX1NFTlNPUl9NU1BERUlOSVRfQ0JfSUQgICA9IDB4MERVICAgLyohPCBUSU0gSGFsbCBTZW5zb3IgTXNwRGVJbml0IENhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLCBIQUxfVElNX1BFUklPRF9FTEFQU0VEX0NCX0lEICAgICAgICAgID0gMHgwRVUgICAvKiE8IFRJTSBQZXJpb2QgRWxhcHNlZCBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLCBIQUxfVElNX1BFUklPRF9FTEFQU0VEX0hBTEZfQ0JfSUQgICAgID0gMHgwRlUgICAvKiE8IFRJTSBQZXJpb2QgRWxhcHNlZCBoYWxmIGNvbXBsZXRlIENhbGxiYWNrIElEICAgICAgICAgICAgICAgKi8KKyAgLCBIQUxfVElNX1RSSUdHRVJfQ0JfSUQgICAgICAgICAgICAgICAgID0gMHgxMFUgICAvKiE8IFRJTSBUcmlnZ2VyIENhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLCBIQUxfVElNX1RSSUdHRVJfSEFMRl9DQl9JRCAgICAgICAgICAgID0gMHgxMVUgICAvKiE8IFRJTSBUcmlnZ2VyIGhhbGYgY29tcGxldGUgQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgICAgICAgKi8KIAotICAsSEFMX1RJTV9JQ19DQVBUVVJFX0NCX0lEICAgICAgICAgICAgICA9IDB4MTJVICAgIC8qITwgVElNIElucHV0IENhcHR1cmUgQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAsSEFMX1RJTV9JQ19DQVBUVVJFX0hBTEZfQ0JfSUQgICAgICAgICA9IDB4MTNVICAgIC8qITwgVElNIElucHV0IENhcHR1cmUgaGFsZiBjb21wbGV0ZSBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAqLwotICAsSEFMX1RJTV9PQ19ERUxBWV9FTEFQU0VEX0NCX0lEICAgICAgICA9IDB4MTRVICAgIC8qITwgVElNIE91dHB1dCBDb21wYXJlIERlbGF5IEVsYXBzZWQgQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAqLwotICAsSEFMX1RJTV9QV01fUFVMU0VfRklOSVNIRURfQ0JfSUQgICAgICA9IDB4MTVVICAgIC8qITwgVElNIFBXTSBQdWxzZSBGaW5pc2hlZCBDYWxsYmFjayBJRCAgICAgICAgICAgKi8KLSAgLEhBTF9USU1fUFdNX1BVTFNFX0ZJTklTSEVEX0hBTEZfQ0JfSUQgPSAweDE2VSAgICAvKiE8IFRJTSBQV00gUHVsc2UgRmluaXNoZWQgaGFsZiBjb21wbGV0ZSBDYWxsYmFjayBJRCAgICAgICAgICAgKi8KLSAgLEhBTF9USU1fRVJST1JfQ0JfSUQgICAgICAgICAgICAgICAgICAgPSAweDE3VSAgICAvKiE8IFRJTSBFcnJvciBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgLEhBTF9USU1fQ09NTVVUQVRJT05fQ0JfSUQgICAgICAgICAgICAgPSAweDE4VSAgICAvKiE8IFRJTSBDb21tdXRhdGlvbiBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgLEhBTF9USU1fQ09NTVVUQVRJT05fSEFMRl9DQl9JRCAgICAgICAgPSAweDE5VSAgICAvKiE8IFRJTSBDb21tdXRhdGlvbiBoYWxmIGNvbXBsZXRlIENhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgKi8KLSAgLEhBTF9USU1fQlJFQUtfQ0JfSUQgICAgICAgICAgICAgICAgICAgPSAweDFBVSAgICAvKiE8IFRJTSBCcmVhayBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgLEhBTF9USU1fQlJFQUsyX0NCX0lEICAgICAgICAgICAgICAgICAgPSAweDFCVSAgICAvKiE8IFRJTSBCcmVhazIgQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLCBIQUxfVElNX0lDX0NBUFRVUkVfQ0JfSUQgICAgICAgICAgICAgID0gMHgxMlUgICAvKiE8IFRJTSBJbnB1dCBDYXB0dXJlIENhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgLCBIQUxfVElNX0lDX0NBUFRVUkVfSEFMRl9DQl9JRCAgICAgICAgID0gMHgxM1UgICAvKiE8IFRJTSBJbnB1dCBDYXB0dXJlIGhhbGYgY29tcGxldGUgQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgKi8KKyAgLCBIQUxfVElNX09DX0RFTEFZX0VMQVBTRURfQ0JfSUQgICAgICAgID0gMHgxNFUgICAvKiE8IFRJTSBPdXRwdXQgQ29tcGFyZSBEZWxheSBFbGFwc2VkIENhbGxiYWNrIElEICAgICAgICAgICAgICAgKi8KKyAgLCBIQUxfVElNX1BXTV9QVUxTRV9GSU5JU0hFRF9DQl9JRCAgICAgID0gMHgxNVUgICAvKiE8IFRJTSBQV00gUHVsc2UgRmluaXNoZWQgQ2FsbGJhY2sgSUQgICAgICAgICAgICovCisgICwgSEFMX1RJTV9QV01fUFVMU0VfRklOSVNIRURfSEFMRl9DQl9JRCA9IDB4MTZVICAgLyohPCBUSU0gUFdNIFB1bHNlIEZpbmlzaGVkIGhhbGYgY29tcGxldGUgQ2FsbGJhY2sgSUQgICAgICAgICAgICovCisgICwgSEFMX1RJTV9FUlJPUl9DQl9JRCAgICAgICAgICAgICAgICAgICA9IDB4MTdVICAgLyohPCBUSU0gRXJyb3IgQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICwgSEFMX1RJTV9DT01NVVRBVElPTl9DQl9JRCAgICAgICAgICAgICA9IDB4MThVICAgLyohPCBUSU0gQ29tbXV0YXRpb24gQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICwgSEFMX1RJTV9DT01NVVRBVElPTl9IQUxGX0NCX0lEICAgICAgICA9IDB4MTlVICAgLyohPCBUSU0gQ29tbXV0YXRpb24gaGFsZiBjb21wbGV0ZSBDYWxsYmFjayBJRCAgICAgICAgICAgICAgICAgICovCisgICwgSEFMX1RJTV9CUkVBS19DQl9JRCAgICAgICAgICAgICAgICAgICA9IDB4MUFVICAgLyohPCBUSU0gQnJlYWsgQ2FsbGJhY2sgSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICwgSEFMX1RJTV9CUkVBSzJfQ0JfSUQgICAgICAgICAgICAgICAgICA9IDB4MUJVICAgLyohPCBUSU0gQnJlYWsyIENhbGxiYWNrIElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiB9IEhBTF9USU1fQ2FsbGJhY2tJRFR5cGVEZWY7CiAKIC8qKgpAQCAtODc5LDcgKzkwMiw3IEBACiAgICogQHsKICAgKi8KICNkZWZpbmUgVElNX0FVVE9NQVRJQ09VVFBVVF9ESVNBQkxFICAgICAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBNT0UgY2FuIGJlIHNldCBvbmx5IGJ5IHNvZnR3YXJlICovCi0jZGVmaW5lIFRJTV9BVVRPTUFUSUNPVVRQVVRfRU5BQkxFICAgICAgICAgVElNX0JEVFJfQU9FICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTU9FIGNhbiBiZSBzZXQgYnkgc29mdHdhcmUgb3IgYXV0b21hdGljYWxseSBhdCB0aGUgbmV4dCB1cGRhdGUgZXZlbnQgCisjZGVmaW5lIFRJTV9BVVRPTUFUSUNPVVRQVVRfRU5BQkxFICAgICAgICAgVElNX0JEVFJfQU9FICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgTU9FIGNhbiBiZSBzZXQgYnkgc29mdHdhcmUgb3IgYXV0b21hdGljYWxseSBhdCB0aGUgbmV4dCB1cGRhdGUgZXZlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBub25lIG9mIHRoZSBicmVhayBpbnB1dHMgQlJLIGFuZCBCUksyIGlzIGFjdGl2ZSkgKi8KIC8qKgogICAqIEB9CkBAIC0xMDI4LDI0ICsxMDUxLDI0IEBACiAvKiogQGRlZmdyb3VwIFRJTV9ETUFfQnVyc3RfTGVuZ3RoIFRJTSBETUEgQnVyc3QgTGVuZ3RoCiAgICogQHsKICAgKi8KLSNkZWZpbmUgVElNX0RNQUJVUlNUTEVOR1RIXzFUUkFOU0ZFUiAgICAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBUaGUgdHJhbnNmZXIgaXMgZG9uZSB0byAxIHJlZ2lzdGVyIHN0YXJ0aW5nIHRyb20gVElNeF9DUjEgKyBUSU14X0RDUi5EQkEgICAqLwotI2RlZmluZSBUSU1fRE1BQlVSU1RMRU5HVEhfMlRSQU5TRkVSUyAgICAgIDB4MDAwMDAxMDBVICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFRoZSB0cmFuc2ZlciBpcyBkb25lIHRvIDIgcmVnaXN0ZXJzIHN0YXJ0aW5nIHRyb20gVElNeF9DUjEgKyBUSU14X0RDUi5EQkEgICovCi0jZGVmaW5lIFRJTV9ETUFCVVJTVExFTkdUSF8zVFJBTlNGRVJTICAgICAgMHgwMDAwMDIwMFUgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgVGhlIHRyYW5zZmVyIGlzIGRvbmUgdG8gMyByZWdpc3RlcnMgc3RhcnRpbmcgdHJvbSBUSU14X0NSMSArIFRJTXhfRENSLkRCQSAgKi8KLSNkZWZpbmUgVElNX0RNQUJVUlNUTEVOR1RIXzRUUkFOU0ZFUlMgICAgICAweDAwMDAwMzAwVSAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBUaGUgdHJhbnNmZXIgaXMgZG9uZSB0byA0IHJlZ2lzdGVycyBzdGFydGluZyB0cm9tIFRJTXhfQ1IxICsgVElNeF9EQ1IuREJBICAqLwotI2RlZmluZSBUSU1fRE1BQlVSU1RMRU5HVEhfNVRSQU5TRkVSUyAgICAgIDB4MDAwMDA0MDBVICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFRoZSB0cmFuc2ZlciBpcyBkb25lIHRvIDUgcmVnaXN0ZXJzIHN0YXJ0aW5nIHRyb20gVElNeF9DUjEgKyBUSU14X0RDUi5EQkEgICovCi0jZGVmaW5lIFRJTV9ETUFCVVJTVExFTkdUSF82VFJBTlNGRVJTICAgICAgMHgwMDAwMDUwMFUgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgVGhlIHRyYW5zZmVyIGlzIGRvbmUgdG8gNiByZWdpc3RlcnMgc3RhcnRpbmcgdHJvbSBUSU14X0NSMSArIFRJTXhfRENSLkRCQSAgKi8KLSNkZWZpbmUgVElNX0RNQUJVUlNUTEVOR1RIXzdUUkFOU0ZFUlMgICAgICAweDAwMDAwNjAwVSAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBUaGUgdHJhbnNmZXIgaXMgZG9uZSB0byA3IHJlZ2lzdGVycyBzdGFydGluZyB0cm9tIFRJTXhfQ1IxICsgVElNeF9EQ1IuREJBICAqLwotI2RlZmluZSBUSU1fRE1BQlVSU1RMRU5HVEhfOFRSQU5TRkVSUyAgICAgIDB4MDAwMDA3MDBVICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFRoZSB0cmFuc2ZlciBpcyBkb25lIHRvIDggcmVnaXN0ZXJzIHN0YXJ0aW5nIHRyb20gVElNeF9DUjEgKyBUSU14X0RDUi5EQkEgICovCi0jZGVmaW5lIFRJTV9ETUFCVVJTVExFTkdUSF85VFJBTlNGRVJTICAgICAgMHgwMDAwMDgwMFUgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgVGhlIHRyYW5zZmVyIGlzIGRvbmUgdG8gOSByZWdpc3RlcnMgc3RhcnRpbmcgdHJvbSBUSU14X0NSMSArIFRJTXhfRENSLkRCQSAgKi8KLSNkZWZpbmUgVElNX0RNQUJVUlNUTEVOR1RIXzEwVFJBTlNGRVJTICAgICAweDAwMDAwOTAwVSAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBUaGUgdHJhbnNmZXIgaXMgZG9uZSB0byAxMCByZWdpc3RlcnMgc3RhcnRpbmcgdHJvbSBUSU14X0NSMSArIFRJTXhfRENSLkRCQSAqLwotI2RlZmluZSBUSU1fRE1BQlVSU1RMRU5HVEhfMTFUUkFOU0ZFUlMgICAgIDB4MDAwMDBBMDBVICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFRoZSB0cmFuc2ZlciBpcyBkb25lIHRvIDExIHJlZ2lzdGVycyBzdGFydGluZyB0cm9tIFRJTXhfQ1IxICsgVElNeF9EQ1IuREJBICovCi0jZGVmaW5lIFRJTV9ETUFCVVJTVExFTkdUSF8xMlRSQU5TRkVSUyAgICAgMHgwMDAwMEIwMFUgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgVGhlIHRyYW5zZmVyIGlzIGRvbmUgdG8gMTIgcmVnaXN0ZXJzIHN0YXJ0aW5nIHRyb20gVElNeF9DUjEgKyBUSU14X0RDUi5EQkEgKi8KLSNkZWZpbmUgVElNX0RNQUJVUlNUTEVOR1RIXzEzVFJBTlNGRVJTICAgICAweDAwMDAwQzAwVSAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBUaGUgdHJhbnNmZXIgaXMgZG9uZSB0byAxMyByZWdpc3RlcnMgc3RhcnRpbmcgdHJvbSBUSU14X0NSMSArIFRJTXhfRENSLkRCQSAqLwotI2RlZmluZSBUSU1fRE1BQlVSU1RMRU5HVEhfMTRUUkFOU0ZFUlMgICAgIDB4MDAwMDBEMDBVICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFRoZSB0cmFuc2ZlciBpcyBkb25lIHRvIDE0IHJlZ2lzdGVycyBzdGFydGluZyB0cm9tIFRJTXhfQ1IxICsgVElNeF9EQ1IuREJBICovCi0jZGVmaW5lIFRJTV9ETUFCVVJTVExFTkdUSF8xNVRSQU5TRkVSUyAgICAgMHgwMDAwMEUwMFUgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgVGhlIHRyYW5zZmVyIGlzIGRvbmUgdG8gMTUgcmVnaXN0ZXJzIHN0YXJ0aW5nIHRyb20gVElNeF9DUjEgKyBUSU14X0RDUi5EQkEgKi8KLSNkZWZpbmUgVElNX0RNQUJVUlNUTEVOR1RIXzE2VFJBTlNGRVJTICAgICAweDAwMDAwRjAwVSAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBUaGUgdHJhbnNmZXIgaXMgZG9uZSB0byAxNiByZWdpc3RlcnMgc3RhcnRpbmcgdHJvbSBUSU14X0NSMSArIFRJTXhfRENSLkRCQSAqLwotI2RlZmluZSBUSU1fRE1BQlVSU1RMRU5HVEhfMTdUUkFOU0ZFUlMgICAgIDB4MDAwMDEwMDBVICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFRoZSB0cmFuc2ZlciBpcyBkb25lIHRvIDE3IHJlZ2lzdGVycyBzdGFydGluZyB0cm9tIFRJTXhfQ1IxICsgVElNeF9EQ1IuREJBICovCi0jZGVmaW5lIFRJTV9ETUFCVVJTVExFTkdUSF8xOFRSQU5TRkVSUyAgICAgMHgwMDAwMTEwMFUgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgVGhlIHRyYW5zZmVyIGlzIGRvbmUgdG8gMTggcmVnaXN0ZXJzIHN0YXJ0aW5nIHRyb20gVElNeF9DUjEgKyBUSU14X0RDUi5EQkEgKi8KKyNkZWZpbmUgVElNX0RNQUJVUlNUTEVOR1RIXzFUUkFOU0ZFUiAgICAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBUaGUgdHJhbnNmZXIgaXMgZG9uZSB0byAxIHJlZ2lzdGVyIHN0YXJ0aW5nIGZyb20gVElNeF9DUjEgKyBUSU14X0RDUi5EQkEgICAqLworI2RlZmluZSBUSU1fRE1BQlVSU1RMRU5HVEhfMlRSQU5TRkVSUyAgICAgIDB4MDAwMDAxMDBVICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFRoZSB0cmFuc2ZlciBpcyBkb25lIHRvIDIgcmVnaXN0ZXJzIHN0YXJ0aW5nIGZyb20gVElNeF9DUjEgKyBUSU14X0RDUi5EQkEgICovCisjZGVmaW5lIFRJTV9ETUFCVVJTVExFTkdUSF8zVFJBTlNGRVJTICAgICAgMHgwMDAwMDIwMFUgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgVGhlIHRyYW5zZmVyIGlzIGRvbmUgdG8gMyByZWdpc3RlcnMgc3RhcnRpbmcgZnJvbSBUSU14X0NSMSArIFRJTXhfRENSLkRCQSAgKi8KKyNkZWZpbmUgVElNX0RNQUJVUlNUTEVOR1RIXzRUUkFOU0ZFUlMgICAgICAweDAwMDAwMzAwVSAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBUaGUgdHJhbnNmZXIgaXMgZG9uZSB0byA0IHJlZ2lzdGVycyBzdGFydGluZyBmcm9tIFRJTXhfQ1IxICsgVElNeF9EQ1IuREJBICAqLworI2RlZmluZSBUSU1fRE1BQlVSU1RMRU5HVEhfNVRSQU5TRkVSUyAgICAgIDB4MDAwMDA0MDBVICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFRoZSB0cmFuc2ZlciBpcyBkb25lIHRvIDUgcmVnaXN0ZXJzIHN0YXJ0aW5nIGZyb20gVElNeF9DUjEgKyBUSU14X0RDUi5EQkEgICovCisjZGVmaW5lIFRJTV9ETUFCVVJTVExFTkdUSF82VFJBTlNGRVJTICAgICAgMHgwMDAwMDUwMFUgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgVGhlIHRyYW5zZmVyIGlzIGRvbmUgdG8gNiByZWdpc3RlcnMgc3RhcnRpbmcgZnJvbSBUSU14X0NSMSArIFRJTXhfRENSLkRCQSAgKi8KKyNkZWZpbmUgVElNX0RNQUJVUlNUTEVOR1RIXzdUUkFOU0ZFUlMgICAgICAweDAwMDAwNjAwVSAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBUaGUgdHJhbnNmZXIgaXMgZG9uZSB0byA3IHJlZ2lzdGVycyBzdGFydGluZyBmcm9tIFRJTXhfQ1IxICsgVElNeF9EQ1IuREJBICAqLworI2RlZmluZSBUSU1fRE1BQlVSU1RMRU5HVEhfOFRSQU5TRkVSUyAgICAgIDB4MDAwMDA3MDBVICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFRoZSB0cmFuc2ZlciBpcyBkb25lIHRvIDggcmVnaXN0ZXJzIHN0YXJ0aW5nIGZyb20gVElNeF9DUjEgKyBUSU14X0RDUi5EQkEgICovCisjZGVmaW5lIFRJTV9ETUFCVVJTVExFTkdUSF85VFJBTlNGRVJTICAgICAgMHgwMDAwMDgwMFUgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgVGhlIHRyYW5zZmVyIGlzIGRvbmUgdG8gOSByZWdpc3RlcnMgc3RhcnRpbmcgZnJvbSBUSU14X0NSMSArIFRJTXhfRENSLkRCQSAgKi8KKyNkZWZpbmUgVElNX0RNQUJVUlNUTEVOR1RIXzEwVFJBTlNGRVJTICAgICAweDAwMDAwOTAwVSAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBUaGUgdHJhbnNmZXIgaXMgZG9uZSB0byAxMCByZWdpc3RlcnMgc3RhcnRpbmcgZnJvbSBUSU14X0NSMSArIFRJTXhfRENSLkRCQSAqLworI2RlZmluZSBUSU1fRE1BQlVSU1RMRU5HVEhfMTFUUkFOU0ZFUlMgICAgIDB4MDAwMDBBMDBVICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFRoZSB0cmFuc2ZlciBpcyBkb25lIHRvIDExIHJlZ2lzdGVycyBzdGFydGluZyBmcm9tIFRJTXhfQ1IxICsgVElNeF9EQ1IuREJBICovCisjZGVmaW5lIFRJTV9ETUFCVVJTVExFTkdUSF8xMlRSQU5TRkVSUyAgICAgMHgwMDAwMEIwMFUgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgVGhlIHRyYW5zZmVyIGlzIGRvbmUgdG8gMTIgcmVnaXN0ZXJzIHN0YXJ0aW5nIGZyb20gVElNeF9DUjEgKyBUSU14X0RDUi5EQkEgKi8KKyNkZWZpbmUgVElNX0RNQUJVUlNUTEVOR1RIXzEzVFJBTlNGRVJTICAgICAweDAwMDAwQzAwVSAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBUaGUgdHJhbnNmZXIgaXMgZG9uZSB0byAxMyByZWdpc3RlcnMgc3RhcnRpbmcgZnJvbSBUSU14X0NSMSArIFRJTXhfRENSLkRCQSAqLworI2RlZmluZSBUSU1fRE1BQlVSU1RMRU5HVEhfMTRUUkFOU0ZFUlMgICAgIDB4MDAwMDBEMDBVICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFRoZSB0cmFuc2ZlciBpcyBkb25lIHRvIDE0IHJlZ2lzdGVycyBzdGFydGluZyBmcm9tIFRJTXhfQ1IxICsgVElNeF9EQ1IuREJBICovCisjZGVmaW5lIFRJTV9ETUFCVVJTVExFTkdUSF8xNVRSQU5TRkVSUyAgICAgMHgwMDAwMEUwMFUgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgVGhlIHRyYW5zZmVyIGlzIGRvbmUgdG8gMTUgcmVnaXN0ZXJzIHN0YXJ0aW5nIGZyb20gVElNeF9DUjEgKyBUSU14X0RDUi5EQkEgKi8KKyNkZWZpbmUgVElNX0RNQUJVUlNUTEVOR1RIXzE2VFJBTlNGRVJTICAgICAweDAwMDAwRjAwVSAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBUaGUgdHJhbnNmZXIgaXMgZG9uZSB0byAxNiByZWdpc3RlcnMgc3RhcnRpbmcgZnJvbSBUSU14X0NSMSArIFRJTXhfRENSLkRCQSAqLworI2RlZmluZSBUSU1fRE1BQlVSU1RMRU5HVEhfMTdUUkFOU0ZFUlMgICAgIDB4MDAwMDEwMDBVICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFRoZSB0cmFuc2ZlciBpcyBkb25lIHRvIDE3IHJlZ2lzdGVycyBzdGFydGluZyBmcm9tIFRJTXhfQ1IxICsgVElNeF9EQ1IuREJBICovCisjZGVmaW5lIFRJTV9ETUFCVVJTVExFTkdUSF8xOFRSQU5TRkVSUyAgICAgMHgwMDAwMTEwMFUgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgVGhlIHRyYW5zZmVyIGlzIGRvbmUgdG8gMTggcmVnaXN0ZXJzIHN0YXJ0aW5nIGZyb20gVElNeF9DUjEgKyBUSU14X0RDUi5EQkEgKi8KIC8qKgogICAqIEB9CiAgICovCkBAIC0xMTAxLDI1ICsxMTI0LDQ5IEBACiAgICogQHJldHZhbCBOb25lCiAgICovCiAjaWYgKFVTRV9IQUxfVElNX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotI2RlZmluZSBfX0hBTF9USU1fUkVTRVRfSEFORExFX1NUQVRFKF9fSEFORExFX18pIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+U3RhdGUgICAgICAgICAgICAgPSBIQUxfVElNX1NUQVRFX1JFU0VUOyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkJhc2VfTXNwSW5pdENhbGxiYWNrICAgICAgICAgPSBOVUxMOyAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5CYXNlX01zcERlSW5pdENhbGxiYWNrICAgICAgID0gTlVMTDsgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+SUNfTXNwSW5pdENhbGxiYWNrICAgICAgICAgICA9IE5VTEw7ICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPklDX01zcERlSW5pdENhbGxiYWNrICAgICAgICAgPSBOVUxMOyAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5PQ19Nc3BJbml0Q2FsbGJhY2sgICAgICAgICAgID0gTlVMTDsgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+T0NfTXNwRGVJbml0Q2FsbGJhY2sgICAgICAgICA9IE5VTEw7ICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPlBXTV9Nc3BJbml0Q2FsbGJhY2sgICAgICAgICAgPSBOVUxMOyAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5QV01fTXNwRGVJbml0Q2FsbGJhY2sgICAgICAgID0gTlVMTDsgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+T25lUHVsc2VfTXNwSW5pdENhbGxiYWNrICAgICA9IE5VTEw7ICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPk9uZVB1bHNlX01zcERlSW5pdENhbGxiYWNrICAgPSBOVUxMOyAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5FbmNvZGVyX01zcEluaXRDYWxsYmFjayAgICAgID0gTlVMTDsgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+RW5jb2Rlcl9Nc3BEZUluaXRDYWxsYmFjayAgICA9IE5VTEw7ICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkhhbGxTZW5zb3JfTXNwSW5pdENhbGxiYWNrICAgPSBOVUxMOyAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5IYWxsU2Vuc29yX01zcERlSW5pdENhbGxiYWNrID0gTlVMTDsgICAgIFwKKyNkZWZpbmUgX19IQUxfVElNX1JFU0VUX0hBTkRMRV9TVEFURShfX0hBTkRMRV9fKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5TdGF0ZSAgICAgICAgICAgID0gSEFMX1RJTV9TVEFURV9SRVNFVDsgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVswXSAgPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVTRVQ7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+Q2hhbm5lbFN0YXRlWzFdICA9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRVNFVDsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbMl0gID0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVszXSAgPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVTRVQ7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+Q2hhbm5lbFN0YXRlWzRdICA9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRVNFVDsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbNV0gID0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkNoYW5uZWxOU3RhdGVbMF0gPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVTRVQ7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+Q2hhbm5lbE5TdGF0ZVsxXSA9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRVNFVDsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5DaGFubmVsTlN0YXRlWzJdID0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkNoYW5uZWxOU3RhdGVbM10gPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVTRVQ7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+RE1BQnVyc3RTdGF0ZSAgICA9IEhBTF9ETUFfQlVSU1RfU1RBVEVfUkVTRVQ7ICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5CYXNlX01zcEluaXRDYWxsYmFjayAgICAgICAgID0gTlVMTDsgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkJhc2VfTXNwRGVJbml0Q2FsbGJhY2sgICAgICAgPSBOVUxMOyAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+SUNfTXNwSW5pdENhbGxiYWNrICAgICAgICAgICA9IE5VTEw7ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5JQ19Nc3BEZUluaXRDYWxsYmFjayAgICAgICAgID0gTlVMTDsgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPk9DX01zcEluaXRDYWxsYmFjayAgICAgICAgICAgPSBOVUxMOyAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+T0NfTXNwRGVJbml0Q2FsbGJhY2sgICAgICAgICA9IE5VTEw7ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5QV01fTXNwSW5pdENhbGxiYWNrICAgICAgICAgID0gTlVMTDsgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPlBXTV9Nc3BEZUluaXRDYWxsYmFjayAgICAgICAgPSBOVUxMOyAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+T25lUHVsc2VfTXNwSW5pdENhbGxiYWNrICAgICA9IE5VTEw7ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5PbmVQdWxzZV9Nc3BEZUluaXRDYWxsYmFjayAgID0gTlVMTDsgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkVuY29kZXJfTXNwSW5pdENhbGxiYWNrICAgICAgPSBOVUxMOyAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+RW5jb2Rlcl9Nc3BEZUluaXRDYWxsYmFjayAgICA9IE5VTEw7ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5IYWxsU2Vuc29yX01zcEluaXRDYWxsYmFjayAgID0gTlVMTDsgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkhhbGxTZW5zb3JfTXNwRGVJbml0Q2FsbGJhY2sgPSBOVUxMOyAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSgwKQogI2Vsc2UKLSNkZWZpbmUgX19IQUxfVElNX1JFU0VUX0hBTkRMRV9TVEFURShfX0hBTkRMRV9fKSAoKF9fSEFORExFX18pLT5TdGF0ZSA9IEhBTF9USU1fU1RBVEVfUkVTRVQpCisjZGVmaW5lIF9fSEFMX1RJTV9SRVNFVF9IQU5ETEVfU1RBVEUoX19IQU5ETEVfXykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+U3RhdGUgICAgICAgICAgICA9IEhBTF9USU1fU1RBVEVfUkVTRVQ7ICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbMF0gID0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVsxXSAgPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVTRVQ7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+Q2hhbm5lbFN0YXRlWzJdICA9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRVNFVDsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbM10gID0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVs0XSAgPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVTRVQ7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+Q2hhbm5lbFN0YXRlWzVdICA9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRVNFVDsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5DaGFubmVsTlN0YXRlWzBdID0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkNoYW5uZWxOU3RhdGVbMV0gPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVTRVQ7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+Q2hhbm5lbE5TdGF0ZVsyXSA9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRVNFVDsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5DaGFubmVsTlN0YXRlWzNdID0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUOyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkRNQUJ1cnN0U3RhdGUgICAgPSBIQUxfRE1BX0JVUlNUX1NUQVRFX1JFU0VUOyAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSgwKQogI2VuZGlmIC8qIFVTRV9IQUxfVElNX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogCiAvKioKQEAgLTE5NDYsMTUgKzE5OTMsMTUgQEAKICNkZWZpbmUgSVNfVElNX1RJMVNFTEVDVElPTihfX1RJMVNFTEVDVElPTl9fKSAgKCgoX19USTFTRUxFQ1RJT05fXykgPT0gVElNX1RJMVNFTEVDVElPTl9DSDEpIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19USTFTRUxFQ1RJT05fXykgPT0gVElNX1RJMVNFTEVDVElPTl9YT1JDT01CSU5BVElPTikpCiAKLSNkZWZpbmUgSVNfVElNX0RNQV9MRU5HVEgoX19MRU5HVEhfXykgICAgICAoKChfX0xFTkdUSF9fKSA9PSBUSU1fRE1BQlVSU1RMRU5HVEhfMVRSQU5TRkVSKSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19MRU5HVEhfXykgPT0gVElNX0RNQUJVUlNUTEVOR1RIXzJUUkFOU0ZFUlMpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0xFTkdUSF9fKSA9PSBUSU1fRE1BQlVSU1RMRU5HVEhfM1RSQU5TRkVSUykgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTEVOR1RIX18pID09IFRJTV9ETUFCVVJTVExFTkdUSF80VFJBTlNGRVJTKSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19MRU5HVEhfXykgPT0gVElNX0RNQUJVUlNUTEVOR1RIXzVUUkFOU0ZFUlMpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0xFTkdUSF9fKSA9PSBUSU1fRE1BQlVSU1RMRU5HVEhfNlRSQU5TRkVSUykgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTEVOR1RIX18pID09IFRJTV9ETUFCVVJTVExFTkdUSF83VFJBTlNGRVJTKSB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19MRU5HVEhfXykgPT0gVElNX0RNQUJVUlNUTEVOR1RIXzhUUkFOU0ZFUlMpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0xFTkdUSF9fKSA9PSBUSU1fRE1BQlVSU1RMRU5HVEhfOVRSQU5TRkVSUykgfHwgXAorI2RlZmluZSBJU19USU1fRE1BX0xFTkdUSChfX0xFTkdUSF9fKSAgICAgICgoKF9fTEVOR1RIX18pID09IFRJTV9ETUFCVVJTVExFTkdUSF8xVFJBTlNGRVIpICAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTEVOR1RIX18pID09IFRJTV9ETUFCVVJTVExFTkdUSF8yVFJBTlNGRVJTKSAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTEVOR1RIX18pID09IFRJTV9ETUFCVVJTVExFTkdUSF8zVFJBTlNGRVJTKSAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTEVOR1RIX18pID09IFRJTV9ETUFCVVJTVExFTkdUSF80VFJBTlNGRVJTKSAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTEVOR1RIX18pID09IFRJTV9ETUFCVVJTVExFTkdUSF81VFJBTlNGRVJTKSAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTEVOR1RIX18pID09IFRJTV9ETUFCVVJTVExFTkdUSF82VFJBTlNGRVJTKSAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTEVOR1RIX18pID09IFRJTV9ETUFCVVJTVExFTkdUSF83VFJBTlNGRVJTKSAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTEVOR1RIX18pID09IFRJTV9ETUFCVVJTVExFTkdUSF84VFJBTlNGRVJTKSAgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTEVOR1RIX18pID09IFRJTV9ETUFCVVJTVExFTkdUSF85VFJBTlNGRVJTKSAgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTEVOR1RIX18pID09IFRJTV9ETUFCVVJTVExFTkdUSF8xMFRSQU5TRkVSUykgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTEVOR1RIX18pID09IFRJTV9ETUFCVVJTVExFTkdUSF8xMVRSQU5TRkVSUykgfHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fTEVOR1RIX18pID09IFRJTV9ETUFCVVJTVExFTkdUSF8xMlRSQU5TRkVSUykgfHwgXApAQCAtMTk2NSw2ICsyMDEyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0xFTkdUSF9fKSA9PSBUSU1fRE1BQlVSU1RMRU5HVEhfMTdUUkFOU0ZFUlMpIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0xFTkdUSF9fKSA9PSBUSU1fRE1BQlVSU1RMRU5HVEhfMThUUkFOU0ZFUlMpKQogCisjZGVmaW5lIElTX1RJTV9ETUFfREFUQV9MRU5HVEgoTEVOR1RIKSAoKChMRU5HVEgpID49IDB4MVUpICYmICgoTEVOR1RIKSA8IDB4MTAwMDBVKSkKKwogI2RlZmluZSBJU19USU1fSUNfRklMVEVSKF9fSUNGSUxURVJfXykgICAoKF9fSUNGSUxURVJfXykgPD0gMHhGVSkKIAogI2RlZmluZSBJU19USU1fREVBRFRJTUUoX19ERUFEVElNRV9fKSAgICAoKF9fREVBRFRJTUVfXykgPD0gMHhGRlUpCkBAIC0yMDAxLDYgKzIwNTAsNTAgQEAKICAgICgoX19DSEFOTkVMX18pID09IFRJTV9DSEFOTkVMXzMpID8gKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNDRVIgJj0gfihUSU1fQ0NFUl9DQzNQIHwgVElNX0NDRVJfQ0MzTlApKSA6XAogICAgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNDRVIgJj0gfihUSU1fQ0NFUl9DQzRQIHwgVElNX0NDRVJfQ0M0TlApKSkKIAorI2RlZmluZSBUSU1fQ0hBTk5FTF9TVEFURV9HRVQoX19IQU5ETEVfXywgX19DSEFOTkVMX18pXAorICAoKChfX0NIQU5ORUxfXykgPT0gVElNX0NIQU5ORUxfMSkgPyAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVswXSA6XAorICAgKChfX0NIQU5ORUxfXykgPT0gVElNX0NIQU5ORUxfMikgPyAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVsxXSA6XAorICAgKChfX0NIQU5ORUxfXykgPT0gVElNX0NIQU5ORUxfMykgPyAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVsyXSA6XAorICAgKChfX0NIQU5ORUxfXykgPT0gVElNX0NIQU5ORUxfNCkgPyAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVszXSA6XAorICAgKChfX0NIQU5ORUxfXykgPT0gVElNX0NIQU5ORUxfNSkgPyAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVs0XSA6XAorICAgKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbNV0pCisKKyNkZWZpbmUgVElNX0NIQU5ORUxfU1RBVEVfU0VUKF9fSEFORExFX18sIF9fQ0hBTk5FTF9fLCBfX0NIQU5ORUxfU1RBVEVfXykgXAorICAoKChfX0NIQU5ORUxfXykgPT0gVElNX0NIQU5ORUxfMSkgPyAoKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbMF0gPSAoX19DSEFOTkVMX1NUQVRFX18pKSA6XAorICAgKChfX0NIQU5ORUxfXykgPT0gVElNX0NIQU5ORUxfMikgPyAoKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbMV0gPSAoX19DSEFOTkVMX1NUQVRFX18pKSA6XAorICAgKChfX0NIQU5ORUxfXykgPT0gVElNX0NIQU5ORUxfMykgPyAoKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbMl0gPSAoX19DSEFOTkVMX1NUQVRFX18pKSA6XAorICAgKChfX0NIQU5ORUxfXykgPT0gVElNX0NIQU5ORUxfNCkgPyAoKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbM10gPSAoX19DSEFOTkVMX1NUQVRFX18pKSA6XAorICAgKChfX0NIQU5ORUxfXykgPT0gVElNX0NIQU5ORUxfNSkgPyAoKF9fSEFORExFX18pLT5DaGFubmVsU3RhdGVbNF0gPSAoX19DSEFOTkVMX1NUQVRFX18pKSA6XAorICAgKChfX0hBTkRMRV9fKS0+Q2hhbm5lbFN0YXRlWzVdID0gKF9fQ0hBTk5FTF9TVEFURV9fKSkpCisKKyNkZWZpbmUgVElNX0NIQU5ORUxfU1RBVEVfU0VUX0FMTChfX0hBTkRMRV9fLCAgX19DSEFOTkVMX1NUQVRFX18pIGRvIHsgXAorICAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVswXSAgPSAoX19DSEFOTkVMX1NUQVRFX18pOyAgXAorICAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVsxXSAgPSAoX19DSEFOTkVMX1NUQVRFX18pOyAgXAorICAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVsyXSAgPSAoX19DSEFOTkVMX1NUQVRFX18pOyAgXAorICAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVszXSAgPSAoX19DSEFOTkVMX1NUQVRFX18pOyAgXAorICAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVs0XSAgPSAoX19DSEFOTkVMX1NUQVRFX18pOyAgXAorICAoX19IQU5ETEVfXyktPkNoYW5uZWxTdGF0ZVs1XSAgPSAoX19DSEFOTkVMX1NUQVRFX18pOyAgXAorIH0gd2hpbGUoMCkKKworI2RlZmluZSBUSU1fQ0hBTk5FTF9OX1NUQVRFX0dFVChfX0hBTkRMRV9fLCBfX0NIQU5ORUxfXylcCisgICgoKF9fQ0hBTk5FTF9fKSA9PSBUSU1fQ0hBTk5FTF8xKSA/IChfX0hBTkRMRV9fKS0+Q2hhbm5lbE5TdGF0ZVswXSA6XAorICAgKChfX0NIQU5ORUxfXykgPT0gVElNX0NIQU5ORUxfMikgPyAoX19IQU5ETEVfXyktPkNoYW5uZWxOU3RhdGVbMV0gOlwKKyAgICgoX19DSEFOTkVMX18pID09IFRJTV9DSEFOTkVMXzMpID8gKF9fSEFORExFX18pLT5DaGFubmVsTlN0YXRlWzJdIDpcCisgICAoX19IQU5ETEVfXyktPkNoYW5uZWxOU3RhdGVbM10pCisKKyNkZWZpbmUgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoX19IQU5ETEVfXywgX19DSEFOTkVMX18sIF9fQ0hBTk5FTF9TVEFURV9fKSBcCisgICgoKF9fQ0hBTk5FTF9fKSA9PSBUSU1fQ0hBTk5FTF8xKSA/ICgoX19IQU5ETEVfXyktPkNoYW5uZWxOU3RhdGVbMF0gPSAoX19DSEFOTkVMX1NUQVRFX18pKSA6XAorICAgKChfX0NIQU5ORUxfXykgPT0gVElNX0NIQU5ORUxfMikgPyAoKF9fSEFORExFX18pLT5DaGFubmVsTlN0YXRlWzFdID0gKF9fQ0hBTk5FTF9TVEFURV9fKSkgOlwKKyAgICgoX19DSEFOTkVMX18pID09IFRJTV9DSEFOTkVMXzMpID8gKChfX0hBTkRMRV9fKS0+Q2hhbm5lbE5TdGF0ZVsyXSA9IChfX0NIQU5ORUxfU1RBVEVfXykpIDpcCisgICAoKF9fSEFORExFX18pLT5DaGFubmVsTlN0YXRlWzNdID0gKF9fQ0hBTk5FTF9TVEFURV9fKSkpCisKKyNkZWZpbmUgVElNX0NIQU5ORUxfTl9TVEFURV9TRVRfQUxMKF9fSEFORExFX18sICBfX0NIQU5ORUxfU1RBVEVfXykgZG8geyBcCisgIChfX0hBTkRMRV9fKS0+Q2hhbm5lbE5TdGF0ZVswXSA9IChfX0NIQU5ORUxfU1RBVEVfXyk7ICBcCisgIChfX0hBTkRMRV9fKS0+Q2hhbm5lbE5TdGF0ZVsxXSA9IChfX0NIQU5ORUxfU1RBVEVfXyk7ICBcCisgIChfX0hBTkRMRV9fKS0+Q2hhbm5lbE5TdGF0ZVsyXSA9IChfX0NIQU5ORUxfU1RBVEVfXyk7ICBcCisgIChfX0hBTkRMRV9fKS0+Q2hhbm5lbE5TdGF0ZVszXSA9IChfX0NIQU5ORUxfU1RBVEVfXyk7ICBcCisgfSB3aGlsZSgwKQorCiAvKioKICAgKiBAfQogICAqLwpAQCAtMjE3Miw5ICsyMjY1LDE1IEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX1NsYXZlQ29uZmlnU3luY2hyb19JVChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgVElNX1NsYXZlQ29uZmlnVHlwZURlZiAqc1NsYXZlQ29uZmlnKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fRE1BQnVyc3RfV3JpdGVTdGFydChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQnVyc3RCYXNlQWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBCdXJzdFJlcXVlc3RTcmMsIHVpbnQzMl90ICAqQnVyc3RCdWZmZXIsIHVpbnQzMl90ICBCdXJzdExlbmd0aCk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX0RNQUJ1cnN0X011bHRpV3JpdGVTdGFydChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQnVyc3RCYXNlQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1cnN0UmVxdWVzdFNyYywgdWludDMyX3QgKkJ1cnN0QnVmZmVyLCB1aW50MzJfdCBCdXJzdExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IERhdGFMZW5ndGgpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTV9ETUFCdXJzdF9Xcml0ZVN0b3AoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IEJ1cnN0UmVxdWVzdFNyYyk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX0RNQUJ1cnN0X1JlYWRTdGFydChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQnVyc3RCYXNlQWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1cnN0UmVxdWVzdFNyYywgdWludDMyX3QgICpCdXJzdEJ1ZmZlciwgdWludDMyX3QgIEJ1cnN0TGVuZ3RoKTsKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fRE1BQnVyc3RfTXVsdGlSZWFkU3RhcnQoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IEJ1cnN0QmFzZUFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1cnN0UmVxdWVzdFNyYywgdWludDMyX3QgICpCdXJzdEJ1ZmZlciwgdWludDMyX3QgIEJ1cnN0TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAgRGF0YUxlbmd0aCk7CiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX0RNQUJ1cnN0X1JlYWRTdG9wKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBCdXJzdFJlcXVlc3RTcmMpOwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTV9HZW5lcmF0ZUV2ZW50KFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBFdmVudFNvdXJjZSk7CiB1aW50MzJfdCBIQUxfVElNX1JlYWRDYXB0dXJlZFZhbHVlKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBDaGFubmVsKTsKQEAgLTIyMjAsNiArMjMxOSwxMSBAQAogSEFMX1RJTV9TdGF0ZVR5cGVEZWYgSEFMX1RJTV9JQ19HZXRTdGF0ZShUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSk7CiBIQUxfVElNX1N0YXRlVHlwZURlZiBIQUxfVElNX09uZVB1bHNlX0dldFN0YXRlKFRJTV9IYW5kbGVUeXBlRGVmICpodGltKTsKIEhBTF9USU1fU3RhdGVUeXBlRGVmIEhBTF9USU1fRW5jb2Rlcl9HZXRTdGF0ZShUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSk7CisKKy8qIFBlcmlwaGVyYWwgQ2hhbm5lbCBzdGF0ZSBmdW5jdGlvbnMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK0hBTF9USU1fQWN0aXZlQ2hhbm5lbCBIQUxfVElNX0dldEFjdGl2ZUNoYW5uZWwoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0pOworSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIEhBTF9USU1fR2V0Q2hhbm5lbFN0YXRlKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCAgdWludDMyX3QgQ2hhbm5lbCk7CitIQUxfVElNX0RNQUJ1cnN0U3RhdGVUeXBlRGVmIEhBTF9USU1fRE1BQnVyc3RTdGF0ZShUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSk7CiAvKioKICAgKiBAfQogICAqLwpAQCAtMjIzOSw3ICsyMzQzLDYgQEAKIHZvaWQgVElNX0VUUl9TZXRDb25maWcoVElNX1R5cGVEZWYgKlRJTXgsIHVpbnQzMl90IFRJTV9FeHRUUkdQcmVzY2FsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRJTV9FeHRUUkdQb2xhcml0eSwgdWludDMyX3QgRXh0VFJHRmlsdGVyKTsKIAotdm9pZCBUSU1fRE1BRGVsYXlQdWxzZUNwbHQoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpOwogdm9pZCBUSU1fRE1BRGVsYXlQdWxzZUhhbGZDcGx0KERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKTsKIHZvaWQgVElNX0RNQUVycm9yKERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKTsKIHZvaWQgVElNX0RNQUNhcHR1cmVDcGx0KERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKTsKZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX3RpbV9leC5oIGIvSW5jL3N0bTMyZjd4eF9oYWxfdGltX2V4LmgKaW5kZXggMjg5N2FjYS4uZjA5NDRhYiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfdGltX2V4LmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfdGltX2V4LmgKQEAgLTExOSw4ICsxMTksOCBAQAogLyoqIEBkZWZncm91cCBUSU1FeF9CcmVha19JbnB1dF9Tb3VyY2UgVElNIEV4dGVuZGVkIEJyZWFrIGlucHV0IHNvdXJjZQogICAqIEB7CiAgICovCi0jZGVmaW5lIFRJTV9CUkVBS0lOUFVUU09VUkNFX0JLSU4gICAgICgodWludDMyX3QpMHgwMDAwMDAwMVUpICAgICAgICAgICAgICAgICAgLyogITwgQW4gZXh0ZXJuYWwgc291cmNlIChHUElPKSBpcyBjb25uZWN0ZWQgdG8gdGhlIEJLSU4gcGluICAqLwotI2RlZmluZSBUSU1fQlJFQUtJTlBVVFNPVVJDRV9ERlNETTEgICAoKHVpbnQzMl90KTB4MDAwMDAwMDhVKSAgICAgICAgICAgICAgICAgIC8qICE8IFRoZSBhbmFsb2cgd2F0Y2hkb2cgb3V0cHV0IG9mIHRoZSBERlNETTEgcGVyaXBoZXJhbCBpcyBjb25uZWN0ZWQgdG8gdGhlIGJyZWFrIGlucHV0ICovCisjZGVmaW5lIFRJTV9CUkVBS0lOUFVUU09VUkNFX0JLSU4gICAgICgweDAwMDAwMDAxVSkgICAgICAgICAgICAgICAgICAvKiAhPCBBbiBleHRlcm5hbCBzb3VyY2UgKEdQSU8pIGlzIGNvbm5lY3RlZCB0byB0aGUgQktJTiBwaW4gICovCisjZGVmaW5lIFRJTV9CUkVBS0lOUFVUU09VUkNFX0RGU0RNMSAgICgweDAwMDAwMDA4VSkgICAgICAgICAgICAgICAgICAvKiAhPCBUaGUgYW5hbG9nIHdhdGNoZG9nIG91dHB1dCBvZiB0aGUgREZTRE0xIHBlcmlwaGVyYWwgaXMgY29ubmVjdGVkIHRvIHRoZSBicmVhayBpbnB1dCAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTMyMyw2ICszMjMsNyBAQAogICAqLwogLyogRXh0ZW5kZWQgUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIEhBTF9USU1fU3RhdGVUeXBlRGVmIEhBTF9USU1FeF9IYWxsU2Vuc29yX0dldFN0YXRlKFRJTV9IYW5kbGVUeXBlRGVmICpodGltKTsKK0hBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBIQUxfVElNRXhfR2V0Q2hhbm5lbE5TdGF0ZShUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgIHVpbnQzMl90IENoYW5uZWxOKTsKIC8qKgogICAqIEB9CiAgICovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF91YXJ0LmggYi9JbmMvc3RtMzJmN3h4X2hhbF91YXJ0LmgKaW5kZXggZWIxODZkNi4uNjM0MWQzMiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfdWFydC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX3VhcnQuaApAQCAtNDYsNDIgKzQ2LDQ1IEBACiAgICovCiB0eXBlZGVmIHN0cnVjdAogewotICB1aW50MzJfdCBCYXVkUmF0ZTsgICAgICAgICAgICAgICAgICAvKiE8IFRoaXMgbWVtYmVyIGNvbmZpZ3VyZXMgdGhlIFVBUlQgY29tbXVuaWNhdGlvbiBiYXVkIHJhdGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJhdWQgcmF0ZSByZWdpc3RlciBpcyBjb21wdXRlZCB1c2luZyB0aGUgZm9sbG93aW5nIGZvcm11bGE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiBvdmVyc2FtcGxpbmcgaXMgMTYgb3IgaW4gTElOIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmF1ZCBSYXRlIFJlZ2lzdGVyID0gKCh1YXJ0X2tlcl9jaykgLyAoKGh1YXJ0LT5Jbml0LkJhdWRSYXRlKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiBvdmVyc2FtcGxpbmcgaXMgOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXVkIFJhdGUgUmVnaXN0ZXJbMTU6NF0gPSAoKDIgKiB1YXJ0X2tlcl9jaykgLyAoKGh1YXJ0LT5Jbml0LkJhdWRSYXRlKSkpWzE1OjRdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmF1ZCBSYXRlIFJlZ2lzdGVyWzNdID0gIDAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXVkIFJhdGUgUmVnaXN0ZXJbMjowXSA9ICAoKCgyICogdWFydF9rZXJfY2spIC8gKChodWFydC0+SW5pdC5CYXVkUmF0ZSkpKVszOjBdKSA+PiAxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgdWFydF9rZXJfY2sgaXMgdGhlIFVBUlQgaW5wdXQgY2xvY2sgKi8KKyAgdWludDMyX3QgQmF1ZFJhdGU7ICAgICAgICAgICAgICAgIC8qITwgVGhpcyBtZW1iZXIgY29uZmlndXJlcyB0aGUgVUFSVCBjb21tdW5pY2F0aW9uIGJhdWQgcmF0ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJhdWQgcmF0ZSByZWdpc3RlciBpcyBjb21wdXRlZCB1c2luZyB0aGUgZm9sbG93aW5nIGZvcm11bGE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgb3ZlcnNhbXBsaW5nIGlzIDE2IG9yIGluIExJTiBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXVkIFJhdGUgUmVnaXN0ZXIgPSAoKHVhcnRfa2VyX2NrKSAvICgoaHVhcnQtPkluaXQuQmF1ZFJhdGUpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiBvdmVyc2FtcGxpbmcgaXMgOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmF1ZCBSYXRlIFJlZ2lzdGVyWzE1OjRdID0gKCgyICogdWFydF9rZXJfY2spIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoaHVhcnQtPkluaXQuQmF1ZFJhdGUpKSlbMTU6NF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmF1ZCBSYXRlIFJlZ2lzdGVyWzNdID0gIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmF1ZCBSYXRlIFJlZ2lzdGVyWzI6MF0gPSAgKCgoMiAqIHVhcnRfa2VyX2NrKSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGh1YXJ0LT5Jbml0LkJhdWRSYXRlKSkpWzM6MF0pID4+IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgdWFydF9rZXJfY2sgaXMgdGhlIFVBUlQgaW5wdXQgY2xvY2sgKi8KIAotICB1aW50MzJfdCBXb3JkTGVuZ3RoOyAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRhdGEgYml0cyB0cmFuc21pdHRlZCBvciByZWNlaXZlZCBpbiBhIGZyYW1lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVUFSVEV4X1dvcmRfTGVuZ3RoLiAqLworICB1aW50MzJfdCBXb3JkTGVuZ3RoOyAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXRhIGJpdHMgdHJhbnNtaXR0ZWQgb3IgcmVjZWl2ZWQgaW4gYSBmcmFtZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBVQVJURXhfV29yZF9MZW5ndGguICovCiAKLSAgdWludDMyX3QgU3RvcEJpdHM7ICAgICAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzdG9wIGJpdHMgdHJhbnNtaXR0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBVQVJUX1N0b3BfQml0cy4gKi8KKyAgdWludDMyX3QgU3RvcEJpdHM7ICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBudW1iZXIgb2Ygc3RvcCBiaXRzIHRyYW5zbWl0dGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVBUlRfU3RvcF9CaXRzLiAqLwogCi0gIHVpbnQzMl90IFBhcml0eTsgICAgICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBwYXJpdHkgbW9kZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVBUlRfUGFyaXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGUgV2hlbiBwYXJpdHkgaXMgZW5hYmxlZCwgdGhlIGNvbXB1dGVkIHBhcml0eSBpcyBpbnNlcnRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0IHRoZSBNU0IgcG9zaXRpb24gb2YgdGhlIHRyYW5zbWl0dGVkIGRhdGEgKDl0aCBiaXQgd2hlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB3b3JkIGxlbmd0aCBpcyBzZXQgdG8gOSBkYXRhIGJpdHM7IDh0aCBiaXQgd2hlbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkIGxlbmd0aCBpcyBzZXQgdG8gOCBkYXRhIGJpdHMpLiAqLworICB1aW50MzJfdCBQYXJpdHk7ICAgICAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIHBhcml0eSBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVBUlRfUGFyaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIFdoZW4gcGFyaXR5IGlzIGVuYWJsZWQsIHRoZSBjb21wdXRlZCBwYXJpdHkgaXMgaW5zZXJ0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgdGhlIE1TQiBwb3NpdGlvbiBvZiB0aGUgdHJhbnNtaXR0ZWQgZGF0YSAoOXRoIGJpdCB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB3b3JkIGxlbmd0aCBpcyBzZXQgdG8gOSBkYXRhIGJpdHM7IDh0aCBiaXQgd2hlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZCBsZW5ndGggaXMgc2V0IHRvIDggZGF0YSBiaXRzKS4gKi8KIAotICB1aW50MzJfdCBNb2RlOyAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBSZWNlaXZlIG9yIFRyYW5zbWl0IG1vZGUgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVBUlRfTW9kZS4gKi8KKyAgdWludDMyX3QgTW9kZTsgICAgICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIFJlY2VpdmUgb3IgVHJhbnNtaXQgbW9kZSBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVBUlRfTW9kZS4gKi8KIAotICB1aW50MzJfdCBId0Zsb3dDdGw7ICAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBoYXJkd2FyZSBmbG93IGNvbnRyb2wgbW9kZSBpcyBlbmFibGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZGlzYWJsZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBVQVJUX0hhcmR3YXJlX0Zsb3dfQ29udHJvbC4gKi8KKyAgdWludDMyX3QgSHdGbG93Q3RsOyAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGhhcmR3YXJlIGZsb3cgY29udHJvbCBtb2RlIGlzIGVuYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZGlzYWJsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVUFSVF9IYXJkd2FyZV9GbG93X0NvbnRyb2wuICovCiAKLSAgdWludDMyX3QgT3ZlclNhbXBsaW5nOyAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciB0aGUgT3ZlciBzYW1wbGluZyA4IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQsIHRvIGFjaGlldmUgaGlnaGVyIHNwZWVkICh1cCB0byBmX1BDTEsvOCkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBVQVJUX092ZXJfU2FtcGxpbmcuICovCisgIHVpbnQzMl90IE92ZXJTYW1wbGluZzsgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBPdmVyIHNhbXBsaW5nIDggaXMgZW5hYmxlZCBvciBkaXNhYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWNoaWV2ZSBoaWdoZXIgc3BlZWQgKHVwIHRvIGZfUENMSy84KS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBVQVJUX092ZXJfU2FtcGxpbmcuICovCiAKLSAgdWludDMyX3QgT25lQml0U2FtcGxpbmc7ICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciBhIHNpbmdsZSBzYW1wbGUgb3IgdGhyZWUgc2FtcGxlcycgbWFqb3JpdHkgdm90ZSBpcyBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RpbmcgdGhlIHNpbmdsZSBzYW1wbGUgbWV0aG9kIGluY3JlYXNlcyB0aGUgcmVjZWl2ZXIgdG9sZXJhbmNlIHRvIGNsb2NrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWF0aW9ucy4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBVQVJUX09uZUJpdF9TYW1wbGluZy4gKi8KKyAgdWludDMyX3QgT25lQml0U2FtcGxpbmc7ICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHdoZXRoZXIgYSBzaW5nbGUgc2FtcGxlIG9yIHRocmVlIHNhbXBsZXMnIG1ham9yaXR5IHZvdGUgaXMgc2VsZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGluZyB0aGUgc2luZ2xlIHNhbXBsZSBtZXRob2QgaW5jcmVhc2VzIHRoZSByZWNlaXZlciB0b2xlcmFuY2UgdG8gY2xvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWF0aW9ucy4gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBVQVJUX09uZUJpdF9TYW1wbGluZy4gKi8KIAogCiB9IFVBUlRfSW5pdFR5cGVEZWY7CkBAIC05Myw3ICs5Niw4IEBACiB7CiAgIHVpbnQzMl90IEFkdkZlYXR1cmVJbml0OyAgICAgICAgLyohPCBTcGVjaWZpZXMgd2hpY2ggYWR2YW5jZWQgVUFSVCBmZWF0dXJlcyBpcyBpbml0aWFsaXplZC4gU2V2ZXJhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWR2YW5jZWQgRmVhdHVyZXMgbWF5IGJlIGluaXRpYWxpemVkIGF0IHRoZSBzYW1lIHRpbWUgLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBVQVJUX0FkdmFuY2VkX0ZlYXR1cmVzX0luaXRpYWxpemF0aW9uX1R5cGUuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJlZiBVQVJUX0FkdmFuY2VkX0ZlYXR1cmVzX0luaXRpYWxpemF0aW9uX1R5cGUuICovCiAKICAgdWludDMyX3QgVHhQaW5MZXZlbEludmVydDsgICAgICAvKiE8IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBUWCBwaW4gYWN0aXZlIGxldmVsIGlzIGludmVydGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBVQVJUX1R4X0ludi4gKi8KQEAgLTEyNyw3ICsxMzEsOCBAQAogCiAvKioKICAgKiBAYnJpZWYgSEFMIFVBUlQgU3RhdGUgZGVmaW5pdGlvbgotICAqIEBub3RlICBIQUwgVUFSVCBTdGF0ZSB2YWx1ZSBpcyBhIGNvbWJpbmF0aW9uIG9mIDIgZGlmZmVyZW50IHN1YnN0YXRlczogZ1N0YXRlIGFuZCBSeFN0YXRlIChzZWUgQHJlZiBVQVJUX1N0YXRlX0RlZmluaXRpb24pLgorICAqIEBub3RlICBIQUwgVUFSVCBTdGF0ZSB2YWx1ZSBpcyBhIGNvbWJpbmF0aW9uIG9mIDIgZGlmZmVyZW50IHN1YnN0YXRlczoKKyAgKiAgICAgICAgZ1N0YXRlIGFuZCBSeFN0YXRlIChzZWUgQHJlZiBVQVJUX1N0YXRlX0RlZmluaXRpb24pLgogICAqICAgICAgICAtIGdTdGF0ZSBjb250YWlucyBVQVJUIHN0YXRlIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gZ2xvYmFsIEhhbmRsZSBtYW5hZ2VtZW50CiAgICogICAgICAgICAgYW5kIGFsc28gaW5mb3JtYXRpb24gcmVsYXRlZCB0byBUeCBvcGVyYXRpb25zLgogICAqICAgICAgICAgIGdTdGF0ZSB2YWx1ZSBjb2RpbmcgZm9sbG93IGJlbG93IGRlc2NyaWJlZCBiaXRtYXAgOgpAQCAtMTM4LDcgKzE0Myw3IEBACiAgICogICAgICAgICAgICAgMTEgOiBFcnJvcgogICAqICAgICAgICAgIGI1ICAgICBQZXJpcGhlcmFsIGluaXRpYWxpemF0aW9uIHN0YXR1cwogICAqICAgICAgICAgICAgIDAgIDogUmVzZXQgKFBlcmlwaGVyYWwgbm90IGluaXRpYWxpemVkKQotICAqICAgICAgICAgICAgIDEgIDogSW5pdCBkb25lIChQZXJpcGhlcmFsIG5vdCBpbml0aWFsaXplZC4gSEFMIFVBUlQgSW5pdCBmdW5jdGlvbiBhbHJlYWR5IGNhbGxlZCkKKyAgKiAgICAgICAgICAgICAxICA6IEluaXQgZG9uZSAoUGVyaXBoZXJhbCBpbml0aWFsaXplZC4gSEFMIFVBUlQgSW5pdCBmdW5jdGlvbiBhbHJlYWR5IGNhbGxlZCkKICAgKiAgICAgICAgICBiNC1iMyAgKG5vdCB1c2VkKQogICAqICAgICAgICAgICAgIHh4IDogU2hvdWxkIGJlIHNldCB0byAwMAogICAqICAgICAgICAgIGIyICAgICBJbnRyaW5zaWMgcHJvY2VzcyBzdGF0ZQpAQCAtMTU1LDcgKzE2MCw3IEBACiAgICogICAgICAgICAgICAgeHggOiBTaG91bGQgYmUgc2V0IHRvIDAwCiAgICogICAgICAgICAgYjUgICAgIFBlcmlwaGVyYWwgaW5pdGlhbGl6YXRpb24gc3RhdHVzCiAgICogICAgICAgICAgICAgMCAgOiBSZXNldCAoUGVyaXBoZXJhbCBub3QgaW5pdGlhbGl6ZWQpCi0gICogICAgICAgICAgICAgMSAgOiBJbml0IGRvbmUgKFBlcmlwaGVyYWwgbm90IGluaXRpYWxpemVkKQorICAqICAgICAgICAgICAgIDEgIDogSW5pdCBkb25lIChQZXJpcGhlcmFsIGluaXRpYWxpemVkKQogICAqICAgICAgICAgIGI0LWIyICAobm90IHVzZWQpCiAgICogICAgICAgICAgICB4eHggOiBTaG91bGQgYmUgc2V0IHRvIDAwMAogICAqICAgICAgICAgIGIxICAgICBSeCBzdGF0ZQpAQCAtMTgwLDYgKzE4NSwxNyBAQAogfSBVQVJUX0Nsb2NrU291cmNlVHlwZURlZjsKIAogLyoqCisgICogQGJyaWVmIEhBTCBVQVJUIFJlY2VwdGlvbiB0eXBlIGRlZmluaXRpb24KKyAgKiBAbm90ZSAgSEFMIFVBUlQgUmVjZXB0aW9uIHR5cGUgdmFsdWUgYWltcyB0byBpZGVudGlmeSB3aGljaCB0eXBlIG9mIFJlY2VwdGlvbiBpcyBvbmdvaW5nLgorICAqICAgICAgICBJdCBpcyBleHBlY3RlZCB0byBhZG1pdCBmb2xsb3dpbmcgdmFsdWVzIDoKKyAgKiAgICAgICAgICAgSEFMX1VBUlRfUkVDRVBUSU9OX1NUQU5EQVJEICAgICAgICAgPSAweDAwVSwKKyAgKiAgICAgICAgICAgSEFMX1VBUlRfUkVDRVBUSU9OX1RPSURMRSAgICAgICAgICAgPSAweDAxVSwKKyAgKiAgICAgICAgICAgSEFMX1VBUlRfUkVDRVBUSU9OX1RPUlRPICAgICAgICAgICAgPSAweDAyVSwKKyAgKiAgICAgICAgICAgSEFMX1VBUlRfUkVDRVBUSU9OX1RPQ0hBUk1BVENIICAgICAgPSAweDAzVSwKKyAgKi8KK3R5cGVkZWYgdWludDMyX3QgSEFMX1VBUlRfUnhUeXBlVHlwZURlZjsKKworLyoqCiAgICogQGJyaWVmICBVQVJUIGhhbmRsZSBTdHJ1Y3R1cmUgZGVmaW5pdGlvbgogICAqLwogdHlwZWRlZiBzdHJ1Y3QgX19VQVJUX0hhbmRsZVR5cGVEZWYKQEAgLTIwNCw2ICsyMjAsOCBAQAogCiAgIHVpbnQxNl90ICAgICAgICAgICAgICAgICBNYXNrOyAgICAgICAgICAgICAgICAgICAgIC8qITwgVUFSVCBSeCBSRFIgcmVnaXN0ZXIgbWFzayAgICAgICAgICAqLwogCisgIF9fSU8gSEFMX1VBUlRfUnhUeXBlVHlwZURlZiBSZWNlcHRpb25UeXBlOyAgICAgICAgIC8qITwgVHlwZSBvZiBvbmdvaW5nIHJlY2VwdGlvbiAgICAgICAgICAqLworCiAgIHZvaWQgKCpSeElTUikoc3RydWN0IF9fVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCk7IC8qITwgRnVuY3Rpb24gcG9pbnRlciBvbiBSeCBJUlEgaGFuZGxlciAqLwogCiAgIHZvaWQgKCpUeElTUikoc3RydWN0IF9fVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCk7IC8qITwgRnVuY3Rpb24gcG9pbnRlciBvbiBUeCBJUlEgaGFuZGxlciAqLwpAQCAtMjE1LDExICsyMzMsMTEgQEAKICAgSEFMX0xvY2tUeXBlRGVmICAgICAgICAgICBMb2NrOyAgICAgICAgICAgICAgICAgICAgLyohPCBMb2NraW5nIG9iamVjdCAgICAgICAgICAgICAgICAgICAgICovCiAKICAgX19JTyBIQUxfVUFSVF9TdGF0ZVR5cGVEZWYgICAgZ1N0YXRlOyAgICAgICAgICAgICAgLyohPCBVQVJUIHN0YXRlIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gZ2xvYmFsIEhhbmRsZSBtYW5hZ2VtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFsc28gcmVsYXRlZCB0byBUeCBvcGVyYXRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgSEFMX1VBUlRfU3RhdGVUeXBlRGVmICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFsc28gcmVsYXRlZCB0byBUeCBvcGVyYXRpb25zLiBUaGlzIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgSEFMX1VBUlRfU3RhdGVUeXBlRGVmICovCiAKLSAgX19JTyBIQUxfVUFSVF9TdGF0ZVR5cGVEZWYgICAgUnhTdGF0ZTsgICAgICAgICAgICAgLyohPCBVQVJUIHN0YXRlIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gUnggb3BlcmF0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEhBTF9VQVJUX1N0YXRlVHlwZURlZiAqLworICBfX0lPIEhBTF9VQVJUX1N0YXRlVHlwZURlZiAgICBSeFN0YXRlOyAgICAgICAgICAgICAvKiE8IFVBUlQgc3RhdGUgaW5mb3JtYXRpb24gcmVsYXRlZCB0byBSeCBvcGVyYXRpb25zLiBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgSEFMX1VBUlRfU3RhdGVUeXBlRGVmICovCiAKICAgX19JTyB1aW50MzJfdCAgICAgICAgICAgICAgICAgRXJyb3JDb2RlOyAgICAgICAgICAgLyohPCBVQVJUIEVycm9yIGNvZGUgICAgICAgICAgICAgICAgICAgICovCiAKQEAgLTIzMiw3ICsyNTAsMTIgQEAKICAgdm9pZCAoKiBBYm9ydENwbHRDYWxsYmFjaykoc3RydWN0IF9fVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCk7ICAgICAgICAgLyohPCBVQVJUIEFib3J0IENvbXBsZXRlIENhbGxiYWNrICAgICAgICAgICovCiAgIHZvaWQgKCogQWJvcnRUcmFuc21pdENwbHRDYWxsYmFjaykoc3RydWN0IF9fVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCk7IC8qITwgVUFSVCBBYm9ydCBUcmFuc21pdCBDb21wbGV0ZSBDYWxsYmFjayAqLwogICB2b2lkICgqIEFib3J0UmVjZWl2ZUNwbHRDYWxsYmFjaykoc3RydWN0IF9fVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCk7ICAvKiE8IFVBUlQgQWJvcnQgUmVjZWl2ZSBDb21wbGV0ZSBDYWxsYmFjayAgKi8KKyNpZiBkZWZpbmVkKFVTQVJUX0NSMV9VRVNNKQorI2lmIGRlZmluZWQoVVNBUlRfQ1IzX1dVRklFKQogICB2b2lkICgqIFdha2V1cENhbGxiYWNrKShzdHJ1Y3QgX19VQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0KTsgICAgICAgICAgICAvKiE8IFVBUlQgV2FrZXVwIENhbGxiYWNrICAgICAgICAgICAgICAgICAgKi8KKyNlbmRpZiAvKiBVU0FSVF9DUjNfV1VGSUUgKi8KKyNlbmRpZiAvKiBVU0FSVF9DUjFfVUVTTSAqLworICB2b2lkICgqIFJ4RXZlbnRDYWxsYmFjaykoc3RydWN0IF9fVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCwgdWludDE2X3QgUG9zKTsgLyohPCBVQVJUIFJlY2VwdGlvbiBFdmVudCBDYWxsYmFjayAgICAgKi8KIAogICB2b2lkICgqIE1zcEluaXRDYWxsYmFjaykoc3RydWN0IF9fVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCk7ICAgICAgICAgICAvKiE8IFVBUlQgTXNwIEluaXQgY2FsbGJhY2sgICAgICAgICAgICAgICAgKi8KICAgdm9pZCAoKiBNc3BEZUluaXRDYWxsYmFjaykoc3RydWN0IF9fVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCk7ICAgICAgICAgLyohPCBVQVJUIE1zcCBEZUluaXQgY2FsbGJhY2sgICAgICAgICAgICAgICovCkBAIC0yNjQsNyArMjg3LDkgQEAKIC8qKgogICAqIEBicmllZiAgSEFMIFVBUlQgQ2FsbGJhY2sgcG9pbnRlciBkZWZpbml0aW9uCiAgICovCi10eXBlZGVmICB2b2lkICgqcFVBUlRfQ2FsbGJhY2tUeXBlRGVmKShVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0KTsgIC8qITwgcG9pbnRlciB0byBhbiBVQVJUIGNhbGxiYWNrIGZ1bmN0aW9uICovCit0eXBlZGVmICB2b2lkICgqcFVBUlRfQ2FsbGJhY2tUeXBlRGVmKShVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0KTsgLyohPCBwb2ludGVyIHRvIGFuIFVBUlQgY2FsbGJhY2sgZnVuY3Rpb24gKi8KK3R5cGVkZWYgIHZvaWQgKCpwVUFSVF9SeEV2ZW50Q2FsbGJhY2tUeXBlRGVmKQorKHN0cnVjdCBfX1VBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQsIHVpbnQxNl90IFBvcyk7IC8qITwgcG9pbnRlciB0byBhIFVBUlQgUnggRXZlbnQgc3BlY2lmaWMgY2FsbGJhY2sgZnVuY3Rpb24gKi8KIAogI2VuZGlmIC8qIFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIApAQCAtMjkxLDggKzMxNiw4IEBACiAjZGVmaW5lICBIQUxfVUFSVF9TVEFURV9CVVNZX1JYICAgICAgIDB4MDAwMDAwMjJVICAgIC8qITwgRGF0YSBSZWNlcHRpb24gcHJvY2VzcyBpcyBvbmdvaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgaXMgYWxsb3dlZCBmb3IgUnhTdGF0ZSBvbmx5ICovCiAjZGVmaW5lICBIQUxfVUFSVF9TVEFURV9CVVNZX1RYX1JYICAgIDB4MDAwMDAwMjNVICAgIC8qITwgRGF0YSBUcmFuc21pc3Npb24gYW5kIFJlY2VwdGlvbiBwcm9jZXNzIGlzIG9uZ29pbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3QgdG8gYmUgdXNlZCBmb3IgbmVpdGhlciBnU3RhdGUgbm9yIFJ4U3RhdGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgaXMgcmVzdWx0IG9mIGNvbWJpbmF0aW9uIChPcikgYmV0d2VlbiBnU3RhdGUgYW5kIFJ4U3RhdGUgdmFsdWVzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90IHRvIGJlIHVzZWQgZm9yIG5laXRoZXIgZ1N0YXRlIG5vciBSeFN0YXRlLlZhbHVlIGlzIHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGNvbWJpbmF0aW9uIChPcikgYmV0d2VlbiBnU3RhdGUgYW5kIFJ4U3RhdGUgdmFsdWVzICovCiAjZGVmaW5lICBIQUxfVUFSVF9TVEFURV9USU1FT1VUICAgICAgIDB4MDAwMDAwQTBVICAgIC8qITwgVGltZW91dCBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlIGlzIGFsbG93ZWQgZm9yIGdTdGF0ZSBvbmx5ICovCiAjZGVmaW5lICBIQUxfVUFSVF9TVEFURV9FUlJPUiAgICAgICAgIDB4MDAwMDAwRTBVICAgIC8qITwgRXJyb3IKQEAgLTMwNCwxNiArMzI5LDE2IEBACiAvKiogQGRlZmdyb3VwIFVBUlRfRXJyb3JfRGVmaW5pdGlvbiAgIFVBUlQgRXJyb3IgRGVmaW5pdGlvbgogICAqIEB7CiAgICovCi0jZGVmaW5lICBIQUxfVUFSVF9FUlJPUl9OT05FICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMFUpICAgIC8qITwgTm8gZXJyb3IgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgIEhBTF9VQVJUX0VSUk9SX1BFICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAxVSkgICAgLyohPCBQYXJpdHkgZXJyb3IgICAgICAgICAgICAqLwotI2RlZmluZSAgSEFMX1VBUlRfRVJST1JfTkUgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDJVKSAgICAvKiE8IE5vaXNlIGVycm9yICAgICAgICAgICAgICovCi0jZGVmaW5lICBIQUxfVUFSVF9FUlJPUl9GRSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwNFUpICAgIC8qITwgRnJhbWUgZXJyb3IgICAgICAgICAgICAgKi8KLSNkZWZpbmUgIEhBTF9VQVJUX0VSUk9SX09SRSAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4VSkgICAgLyohPCBPdmVycnVuIGVycm9yICAgICAgICAgICAqLwotI2RlZmluZSAgSEFMX1VBUlRfRVJST1JfRE1BICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTBVKSAgICAvKiE8IERNQSB0cmFuc2ZlciBlcnJvciAgICAgICovCi0jZGVmaW5lICBIQUxfVUFSVF9FUlJPUl9SVE8gICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAyMFUpICAgIC8qITwgUmVjZWl2ZXIgVGltZW91dCBlcnJvciAgKi8KKyNkZWZpbmUgIEhBTF9VQVJUX0VSUk9SX05PTkUgICAgICAgICAgICAgKDB4MDAwMDAwMDBVKSAgICAvKiE8IE5vIGVycm9yICAgICAgICAgICAgICAgICovCisjZGVmaW5lICBIQUxfVUFSVF9FUlJPUl9QRSAgICAgICAgICAgICAgICgweDAwMDAwMDAxVSkgICAgLyohPCBQYXJpdHkgZXJyb3IgICAgICAgICAgICAqLworI2RlZmluZSAgSEFMX1VBUlRfRVJST1JfTkUgICAgICAgICAgICAgICAoMHgwMDAwMDAwMlUpICAgIC8qITwgTm9pc2UgZXJyb3IgICAgICAgICAgICAgKi8KKyNkZWZpbmUgIEhBTF9VQVJUX0VSUk9SX0ZFICAgICAgICAgICAgICAgKDB4MDAwMDAwMDRVKSAgICAvKiE8IEZyYW1lIGVycm9yICAgICAgICAgICAgICovCisjZGVmaW5lICBIQUxfVUFSVF9FUlJPUl9PUkUgICAgICAgICAgICAgICgweDAwMDAwMDA4VSkgICAgLyohPCBPdmVycnVuIGVycm9yICAgICAgICAgICAqLworI2RlZmluZSAgSEFMX1VBUlRfRVJST1JfRE1BICAgICAgICAgICAgICAoMHgwMDAwMDAxMFUpICAgIC8qITwgRE1BIHRyYW5zZmVyIGVycm9yICAgICAgKi8KKyNkZWZpbmUgIEhBTF9VQVJUX0VSUk9SX1JUTyAgICAgICAgICAgICAgKDB4MDAwMDAwMjBVKSAgICAvKiE8IFJlY2VpdmVyIFRpbWVvdXQgZXJyb3IgICovCiAKICNpZiAoVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotI2RlZmluZSAgSEFMX1VBUlRfRVJST1JfSU5WQUxJRF9DQUxMQkFDSyAoKHVpbnQzMl90KTB4MDAwMDAwNDBVKSAgICAvKiE8IEludmFsaWQgQ2FsbGJhY2sgZXJyb3IgICovCisjZGVmaW5lICBIQUxfVUFSVF9FUlJPUl9JTlZBTElEX0NBTExCQUNLICgweDAwMDAwMDQwVSkgICAgLyohPCBJbnZhbGlkIENhbGxiYWNrIGVycm9yICAqLwogI2VuZGlmIC8qIFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIC8qKgogICAqIEB9CkBAIC0zOTEsMTAgKzQxNiwxNCBAQAogLyoqIEBkZWZncm91cCBVQVJUX0F1dG9CYXVkX1JhdGVfTW9kZSAgICBVQVJUIEFkdmFuY2VkIEZlYXR1cmUgQXV0b0JhdWQgUmF0ZSBNb2RlCiAgICogQHsKICAgKi8KLSNkZWZpbmUgVUFSVF9BRFZGRUFUVVJFX0FVVE9CQVVEUkFURV9PTlNUQVJUQklUICAgIDB4MDAwMDAwMDBVICAgICAgICAgICAvKiE8IEF1dG8gQmF1ZCByYXRlIGRldGVjdGlvbiBvbiBzdGFydCBiaXQgICAgICAgICAgICAqLwotI2RlZmluZSBVQVJUX0FEVkZFQVRVUkVfQVVUT0JBVURSQVRFX09ORkFMTElOR0VER0UgVVNBUlRfQ1IyX0FCUk1PREVfMCAgIC8qITwgQXV0byBCYXVkIHJhdGUgZGV0ZWN0aW9uIG9uIGZhbGxpbmcgZWRnZSAgICAgICAgICovCi0jZGVmaW5lIFVBUlRfQURWRkVBVFVSRV9BVVRPQkFVRFJBVEVfT04wWDdGRlJBTUUgICBVU0FSVF9DUjJfQUJSTU9ERV8xICAgLyohPCBBdXRvIEJhdWQgcmF0ZSBkZXRlY3Rpb24gb24gMHg3RiBmcmFtZSBkZXRlY3Rpb24gKi8KLSNkZWZpbmUgVUFSVF9BRFZGRUFUVVJFX0FVVE9CQVVEUkFURV9PTjBYNTVGUkFNRSAgIFVTQVJUX0NSMl9BQlJNT0RFICAgICAvKiE8IEF1dG8gQmF1ZCByYXRlIGRldGVjdGlvbiBvbiAweDU1IGZyYW1lIGRldGVjdGlvbiAqLworI2RlZmluZSBVQVJUX0FEVkZFQVRVUkVfQVVUT0JBVURSQVRFX09OU1RBUlRCSVQgICAgMHgwMDAwMDAwMFUgICAgICAgICAgIC8qITwgQXV0byBCYXVkIHJhdGUgZGV0ZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiBzdGFydCBiaXQgICAgICAgICAgICAgICovCisjZGVmaW5lIFVBUlRfQURWRkVBVFVSRV9BVVRPQkFVRFJBVEVfT05GQUxMSU5HRURHRSBVU0FSVF9DUjJfQUJSTU9ERV8wICAgLyohPCBBdXRvIEJhdWQgcmF0ZSBkZXRlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIGZhbGxpbmcgZWRnZSAgICAgICAgICAgKi8KKyNkZWZpbmUgVUFSVF9BRFZGRUFUVVJFX0FVVE9CQVVEUkFURV9PTjBYN0ZGUkFNRSAgIFVTQVJUX0NSMl9BQlJNT0RFXzEgICAvKiE8IEF1dG8gQmF1ZCByYXRlIGRldGVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gMHg3RiBmcmFtZSBkZXRlY3Rpb24gICAqLworI2RlZmluZSBVQVJUX0FEVkZFQVRVUkVfQVVUT0JBVURSQVRFX09OMFg1NUZSQU1FICAgVVNBUlRfQ1IyX0FCUk1PREUgICAgIC8qITwgQXV0byBCYXVkIHJhdGUgZGV0ZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiAweDU1IGZyYW1lIGRldGVjdGlvbiAgICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtNTU2LDggKzU4NSwxMCBAQAogLyoqIEBkZWZncm91cCBVQVJUX01TQl9GaXJzdCAgIFVBUlQgQWR2YW5jZWQgRmVhdHVyZSBNU0IgRmlyc3QKICAgKiBAewogICAqLwotI2RlZmluZSBVQVJUX0FEVkZFQVRVUkVfTVNCRklSU1RfRElTQUJMRSAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAvKiE8IE1vc3Qgc2lnbmlmaWNhbnQgYml0IHNlbnQvcmVjZWl2ZWQgZmlyc3QgZGlzYWJsZSAqLwotI2RlZmluZSBVQVJUX0FEVkZFQVRVUkVfTVNCRklSU1RfRU5BQkxFICAgICBVU0FSVF9DUjJfTVNCRklSU1QgICAgICAvKiE8IE1vc3Qgc2lnbmlmaWNhbnQgYml0IHNlbnQvcmVjZWl2ZWQgZmlyc3QgZW5hYmxlICAqLworI2RlZmluZSBVQVJUX0FEVkZFQVRVUkVfTVNCRklSU1RfRElTQUJMRSAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAvKiE8IE1vc3Qgc2lnbmlmaWNhbnQgYml0IHNlbnQvcmVjZWl2ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCBkaXNhYmxlICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFVBUlRfQURWRkVBVFVSRV9NU0JGSVJTVF9FTkFCTEUgICAgIFVTQVJUX0NSMl9NU0JGSVJTVCAgICAgIC8qITwgTW9zdCBzaWduaWZpY2FudCBiaXQgc2VudC9yZWNlaXZlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0IGVuYWJsZSAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qKgogICAqIEB9CiAgICovCkBAIC01ODUsNyArNjE2LDcgQEAKIC8qKiBAZGVmZ3JvdXAgVUFSVF9DUjJfQUREUkVTU19MU0JfUE9TICAgIFVBUlQgQWRkcmVzcy1tYXRjaGluZyBMU0IgUG9zaXRpb24gSW4gQ1IyIFJlZ2lzdGVyCiAgICogQHsKICAgKi8KLSNkZWZpbmUgVUFSVF9DUjJfQUREUkVTU19MU0JfUE9TICAgICAgICAgICAgIDI0VSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBVQVJUIGFkZHJlc3MtbWF0Y2hpbmcgTFNCIHBvc2l0aW9uIGluIENSMiByZWdpc3RlciAqLworI2RlZmluZSBVQVJUX0NSMl9BRERSRVNTX0xTQl9QT1MgICAgICAgICAgICAgMjRVICAgICAgICAgICAgIC8qITwgVUFSVCBhZGRyZXNzLW1hdGNoaW5nIExTQiBwb3NpdGlvbiBpbiBDUjIgcmVnaXN0ZXIgKi8KIC8qKgogICAqIEB9CiAgICovCkBAIC01OTQsOSArNjI1LDE2IEBACiAvKiogQGRlZmdyb3VwIFVBUlRfV2FrZVVwX2Zyb21fU3RvcF9TZWxlY3Rpb24gICBVQVJUIFdha2VVcCBGcm9tIFN0b3AgU2VsZWN0aW9uCiAgICogQHsKICAgKi8KLSNkZWZpbmUgVUFSVF9XQUtFVVBfT05fQUREUkVTUyAgICAgICAgICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgICAgLyohPCBVQVJUIHdha2UtdXAgb24gYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBVQVJUX1dBS0VVUF9PTl9TVEFSVEJJVCAgICAgICAgICAgICBVU0FSVF9DUjNfV1VTXzEgICAgICAgICAvKiE8IFVBUlQgd2FrZS11cCBvbiBzdGFydCBiaXQgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIFVBUlRfV0FLRVVQX09OX1JFQUREQVRBX05PTkVNUFRZICAgIFVTQVJUX0NSM19XVVMgICAgICAgICAgIC8qITwgVUFSVCB3YWtlLXVwIG9uIHJlY2VpdmUgZGF0YSByZWdpc3RlciBub3QgZW1wdHkgb3IgUlhGSUZPIGlzIG5vdCBlbXB0eSAqLworI2lmIGRlZmluZWQoVVNBUlRfQ1IzX1dVUykKKyNkZWZpbmUgVUFSVF9XQUtFVVBfT05fQUREUkVTUyAgICAgICAgICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgICAgLyohPCBVQVJUIHdha2UtdXAgb24gYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFVBUlRfV0FLRVVQX09OX1NUQVJUQklUICAgICAgICAgICAgIFVTQVJUX0NSM19XVVNfMSAgICAgICAgIC8qITwgVUFSVCB3YWtlLXVwIG9uIHN0YXJ0IGJpdCAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBVQVJUX1dBS0VVUF9PTl9SRUFEREFUQV9OT05FTVBUWSAgICBVU0FSVF9DUjNfV1VTICAgICAgICAgICAvKiE8IFVBUlQgd2FrZS11cCBvbiByZWNlaXZlIGRhdGEgcmVnaXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgZW1wdHkgb3IgUlhGSUZPIGlzIG5vdCBlbXB0eSAgICAgICAgICAgICovCisjZWxzZQorI2RlZmluZSBVQVJUX1dBS0VVUF9PTl9BRERSRVNTICAgICAgICAgICAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAvKiE8IFVBUlQgd2FrZS11cCBvbiBhZGRyZXNzICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVUFSVF9XQUtFVVBfT05fUkVBRERBVEFfTk9ORU1QVFkgICAgMHgwMDAwMDAwMVUgICAgICAgICAgICAgLyohPCBVQVJUIHdha2UtdXAgb24gcmVjZWl2ZSBkYXRhIHJlZ2lzdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGVtcHR5IG9yIFJYRklGTyBpcyBub3QgZW1wdHkgICAgICAgICAgICAqLworI2VuZGlmIC8qIFVTQVJUX0NSM19XVVMgKi8KIC8qKgogICAqIEB9CiAgICovCkBAIC02MTQsNyArNjUyLDggQEAKIC8qKiBAZGVmZ3JvdXAgVUFSVF9DUjFfREVBVF9BRERSRVNTX0xTQl9QT1MgICAgVUFSVCBEcml2ZXIgRW5hYmxlIEFzc2VydGlvbiBUaW1lIExTQiBQb3NpdGlvbiBJbiBDUjEgUmVnaXN0ZXIKICAgKiBAewogICAqLwotI2RlZmluZSBVQVJUX0NSMV9ERUFUX0FERFJFU1NfTFNCX1BPUyAgICAgICAyMVUgICAgICAvKiE8IFVBUlQgRHJpdmVyIEVuYWJsZSBhc3NlcnRpb24gdGltZSBMU0IgcG9zaXRpb24gaW4gQ1IxIHJlZ2lzdGVyICovCisjZGVmaW5lIFVBUlRfQ1IxX0RFQVRfQUREUkVTU19MU0JfUE9TICAgICAgIDIxVSAgICAgIC8qITwgVUFSVCBEcml2ZXIgRW5hYmxlIGFzc2VydGlvbiB0aW1lIExTQgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uIGluIENSMSByZWdpc3RlciAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTYyMiw3ICs2NjEsOCBAQAogLyoqIEBkZWZncm91cCBVQVJUX0NSMV9ERURUX0FERFJFU1NfTFNCX1BPUyAgICBVQVJUIERyaXZlciBFbmFibGUgRGVBc3NlcnRpb24gVGltZSBMU0IgUG9zaXRpb24gSW4gQ1IxIFJlZ2lzdGVyCiAgICogQHsKICAgKi8KLSNkZWZpbmUgVUFSVF9DUjFfREVEVF9BRERSRVNTX0xTQl9QT1MgICAgICAgMTZVICAgICAgLyohPCBVQVJUIERyaXZlciBFbmFibGUgZGUtYXNzZXJ0aW9uIHRpbWUgTFNCIHBvc2l0aW9uIGluIENSMSByZWdpc3RlciAqLworI2RlZmluZSBVQVJUX0NSMV9ERURUX0FERFJFU1NfTFNCX1BPUyAgICAgICAxNlUgICAgICAvKiE8IFVBUlQgRHJpdmVyIEVuYWJsZSBkZS1hc3NlcnRpb24gdGltZSBMU0IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiBpbiBDUjEgcmVnaXN0ZXIgKi8KIC8qKgogICAqIEB9CiAgICovCkBAIC02NTMsNyArNjkzLDkgQEAKICNlbmRpZiAvKiBVU0FSVF9JU1JfUkVBQ0sgKi8KICNkZWZpbmUgVUFSVF9GTEFHX1RFQUNLICAgICAgICAgICAgICAgICAgICAgVVNBUlRfSVNSX1RFQUNLICAgICAgICAgLyohPCBVQVJUIHRyYW5zbWl0IGVuYWJsZSBhY2tub3dsZWRnZSBmbGFnICAgICAqLwogI2lmIGRlZmluZWQoVVNBUlRfQ1IxX1VFU00pCisjaWYgZGVmaW5lZChVU0FSVF9DUjNfV1VGSUUpCiAjZGVmaW5lIFVBUlRfRkxBR19XVUYgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0lTUl9XVUYgICAgICAgICAgIC8qITwgVUFSVCB3YWtlLXVwIGZyb20gc3RvcCBtb2RlIGZsYWcgICAgICAgICAgKi8KKyNlbmRpZiAvKiBVU0FSVF9DUjNfV1VGSUUgKi8KICNlbmRpZiAvKiBVU0FSVF9DUjFfVUVTTSAqLwogI2RlZmluZSBVQVJUX0ZMQUdfUldVICAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9JU1JfUldVICAgICAgICAgICAvKiE8IFVBUlQgcmVjZWl2ZXIgd2FrZS11cCBmcm9tIG11dGUgbW9kZSBmbGFnICovCiAjZGVmaW5lIFVBUlRfRkxBR19TQktGICAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0lTUl9TQktGICAgICAgICAgIC8qITwgVUFSVCBzZW5kIGJyZWFrIGZsYWcgICAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTY5NSwyNCArNzM3LDI2IEBACiAgICogICAgICAgICAgIC0gWlpaWiAgOiBGbGFnIHBvc2l0aW9uIGluIHRoZSBJU1IgcmVnaXN0ZXIoNGJpdHMpCiAgICogQHsKICAgKi8KLSNkZWZpbmUgVUFSVF9JVF9QRSAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDI4VSAgICAgICAgICAgICAgICAgIC8qITwgVUFSVCBwYXJpdHkgZXJyb3IgaW50ZXJydXB0aW9uICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBVQVJUX0lUX1RYRSAgICAgICAgICAgICAgICAgICAgICAgICAweDA3MjdVICAgICAgICAgICAgICAgICAgLyohPCBVQVJUIHRyYW5zbWl0IGRhdGEgcmVnaXN0ZXIgZW1wdHkgaW50ZXJydXB0aW9uICovCi0jZGVmaW5lIFVBUlRfSVRfVEMgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDYyNlUgICAgICAgICAgICAgICAgICAvKiE8IFVBUlQgdHJhbnNtaXNzaW9uIGNvbXBsZXRlIGludGVycnVwdGlvbiAgICAgICAgKi8KLSNkZWZpbmUgVUFSVF9JVF9SWE5FICAgICAgICAgICAgICAgICAgICAgICAgMHgwNTI1VSAgICAgICAgICAgICAgICAgIC8qITwgVUFSVCByZWFkIGRhdGEgcmVnaXN0ZXIgbm90IGVtcHR5IGludGVycnVwdGlvbiAqLwotI2RlZmluZSBVQVJUX0lUX0lETEUgICAgICAgICAgICAgICAgICAgICAgICAweDA0MjRVICAgICAgICAgICAgICAgICAgLyohPCBVQVJUIGlkbGUgaW50ZXJydXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIFVBUlRfSVRfTEJEICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDg0NlUgICAgICAgICAgICAgICAgICAvKiE8IFVBUlQgTElOIGJyZWFrIGRldGVjdGlvbiBpbnRlcnJ1cHRpb24gICAgICAgICAgKi8KLSNkZWZpbmUgVUFSVF9JVF9DVFMgICAgICAgICAgICAgICAgICAgICAgICAgMHgwOTZBVSAgICAgICAgICAgICAgICAgIC8qITwgVUFSVCBDVFMgaW50ZXJydXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBVQVJUX0lUX0NNICAgICAgICAgICAgICAgICAgICAgICAgICAweDExMkVVICAgICAgICAgICAgICAgICAgLyohPCBVQVJUIGNoYXJhY3RlciBtYXRjaCBpbnRlcnJ1cHRpb24gICAgICAgICAgICAgICovCisjZGVmaW5lIFVBUlRfSVRfUEUgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAyOFUgICAgICAgICAgICAgIC8qITwgVUFSVCBwYXJpdHkgZXJyb3IgaW50ZXJydXB0aW9uICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBVQVJUX0lUX1RYRSAgICAgICAgICAgICAgICAgICAgICAgICAweDA3MjdVICAgICAgICAgICAgICAvKiE8IFVBUlQgdHJhbnNtaXQgZGF0YSByZWdpc3RlciBlbXB0eSBpbnRlcnJ1cHRpb24gKi8KKyNkZWZpbmUgVUFSVF9JVF9UQyAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwNjI2VSAgICAgICAgICAgICAgLyohPCBVQVJUIHRyYW5zbWlzc2lvbiBjb21wbGV0ZSBpbnRlcnJ1cHRpb24gICAgICAgICovCisjZGVmaW5lIFVBUlRfSVRfUlhORSAgICAgICAgICAgICAgICAgICAgICAgIDB4MDUyNVUgICAgICAgICAgICAgIC8qITwgVUFSVCByZWFkIGRhdGEgcmVnaXN0ZXIgbm90IGVtcHR5IGludGVycnVwdGlvbiAqLworI2RlZmluZSBVQVJUX0lUX0lETEUgICAgICAgICAgICAgICAgICAgICAgICAweDA0MjRVICAgICAgICAgICAgICAvKiE8IFVBUlQgaWRsZSBpbnRlcnJ1cHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVUFSVF9JVF9MQkQgICAgICAgICAgICAgICAgICAgICAgICAgMHgwODQ2VSAgICAgICAgICAgICAgLyohPCBVQVJUIExJTiBicmVhayBkZXRlY3Rpb24gaW50ZXJydXB0aW9uICAgICAgICAgICovCisjZGVmaW5lIFVBUlRfSVRfQ1RTICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDk2QVUgICAgICAgICAgICAgIC8qITwgVUFSVCBDVFMgaW50ZXJydXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBVQVJUX0lUX0NNICAgICAgICAgICAgICAgICAgICAgICAgICAweDExMkVVICAgICAgICAgICAgICAvKiE8IFVBUlQgY2hhcmFjdGVyIG1hdGNoIGludGVycnVwdGlvbiAgICAgICAgICAgICAgKi8KICNpZiBkZWZpbmVkKFVTQVJUX0NSMV9VRVNNKQotI2RlZmluZSBVQVJUX0lUX1dVRiAgICAgICAgICAgICAgICAgICAgICAgICAweDE0NzZVICAgICAgICAgICAgICAgICAgLyohPCBVQVJUIHdha2UtdXAgZnJvbSBzdG9wIG1vZGUgaW50ZXJydXB0aW9uICAgICAgICovCisjaWYgZGVmaW5lZChVU0FSVF9DUjNfV1VGSUUpCisjZGVmaW5lIFVBUlRfSVRfV1VGICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQ3NlUgICAgICAgICAgICAgIC8qITwgVUFSVCB3YWtlLXVwIGZyb20gc3RvcCBtb2RlIGludGVycnVwdGlvbiAgICAgICAqLworI2VuZGlmIC8qIFVTQVJUX0NSM19XVUZJRSAqLwogI2VuZGlmIC8qIFVTQVJUX0NSMV9VRVNNICovCi0jZGVmaW5lIFVBUlRfSVRfUlRPICAgICAgICAgICAgICAgICAgICAgICAgIDB4MEIzQVUgICAgICAgICAgICAgICAgICAvKiE8IFVBUlQgcmVjZWl2ZXIgdGltZW91dCBpbnRlcnJ1cHRpb24gICAgICAgICAgICAgKi8KKyNkZWZpbmUgVUFSVF9JVF9SVE8gICAgICAgICAgICAgICAgICAgICAgICAgMHgwQjNBVSAgICAgICAgICAgICAgLyohPCBVQVJUIHJlY2VpdmVyIHRpbWVvdXQgaW50ZXJydXB0aW9uICAgICAgICAgICAgICovCiAKLSNkZWZpbmUgVUFSVF9JVF9FUlIgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDYwVSAgICAgICAgICAgICAgICAgIC8qITwgVUFSVCBlcnJvciBpbnRlcnJ1cHRpb24gICAgICAgICAqLworI2RlZmluZSBVQVJUX0lUX0VSUiAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNjBVICAgICAgICAgICAgICAvKiE8IFVBUlQgZXJyb3IgaW50ZXJydXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAotI2RlZmluZSBVQVJUX0lUX09SRSAgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDBVICAgICAgICAgICAgICAgICAgLyohPCBVQVJUIG92ZXJydW4gZXJyb3IgaW50ZXJydXB0aW9uICovCi0jZGVmaW5lIFVBUlRfSVRfTkUgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwMFUgICAgICAgICAgICAgICAgICAvKiE8IFVBUlQgbm9pc2UgZXJyb3IgaW50ZXJydXB0aW9uICAgKi8KLSNkZWZpbmUgVUFSVF9JVF9GRSAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMTAwVSAgICAgICAgICAgICAgICAgIC8qITwgVUFSVCBmcmFtZSBlcnJvciBpbnRlcnJ1cHRpb24gICAqLworI2RlZmluZSBVQVJUX0lUX09SRSAgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDBVICAgICAgICAgICAgICAvKiE8IFVBUlQgb3ZlcnJ1biBlcnJvciBpbnRlcnJ1cHRpb24gICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVUFSVF9JVF9ORSAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMjAwVSAgICAgICAgICAgICAgLyohPCBVQVJUIG5vaXNlIGVycm9yIGludGVycnVwdGlvbiAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFVBUlRfSVRfRkUgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEwMFUgICAgICAgICAgICAgIC8qITwgVUFSVCBmcmFtZSBlcnJvciBpbnRlcnJ1cHRpb24gICAgICAgICAgICAgICAgICAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTczMCwxMyArNzc0LDI1IEBACiAjZGVmaW5lIFVBUlRfQ0xFQVJfQ1RTRiAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9JQ1JfQ1RTQ0YgICAgICAgICAgIC8qITwgQ1RTIEludGVycnVwdCBDbGVhciBGbGFnICAgICAgICAgICovCiAjZGVmaW5lIFVBUlRfQ0xFQVJfQ01GICAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9JQ1JfQ01DRiAgICAgICAgICAgIC8qITwgQ2hhcmFjdGVyIE1hdGNoIENsZWFyIEZsYWcgICAgICAgICovCiAjaWYgZGVmaW5lZChVU0FSVF9DUjFfVUVTTSkKKyNpZiBkZWZpbmVkKFVTQVJUX0NSM19XVUZJRSkKICNkZWZpbmUgVUFSVF9DTEVBUl9XVUYgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0lDUl9XVUNGICAgICAgICAgICAgLyohPCBXYWtlIFVwIGZyb20gc3RvcCBtb2RlIENsZWFyIEZsYWcgKi8KKyNlbmRpZiAvKiBVU0FSVF9DUjNfV1VGSUUgKi8KICNlbmRpZiAvKiBVU0FSVF9DUjFfVUVTTSAqLwogI2RlZmluZSBVQVJUX0NMRUFSX1JUT0YgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfSUNSX1JUT0NGICAgICAgICAgICAvKiE8IFVBUlQgcmVjZWl2ZXIgdGltZW91dCBjbGVhciBmbGFnICAqLwogLyoqCiAgICogQH0KICAgKi8KIAorLyoqIEBkZWZncm91cCBVQVJUX1JFQ0VQVElPTl9UWVBFX1ZhbHVlcyAgVUFSVCBSZWNlcHRpb24gdHlwZSB2YWx1ZXMKKyAgKiBAeworICAqLworI2RlZmluZSBIQUxfVUFSVF9SRUNFUFRJT05fU1RBTkRBUkQgICAgICAgICAgKDB4MDAwMDAwMDBVKSAgICAgICAgICAgICAvKiE8IFN0YW5kYXJkIHJlY2VwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSEFMX1VBUlRfUkVDRVBUSU9OX1RPSURMRSAgICAgICAgICAgICgweDAwMDAwMDAxVSkgICAgICAgICAgICAgLyohPCBSZWNlcHRpb24gdGlsbCBjb21wbGV0aW9uIG9yIElETEUgZXZlbnQgICovCisjZGVmaW5lIEhBTF9VQVJUX1JFQ0VQVElPTl9UT1JUTyAgICAgICAgICAgICAoMHgwMDAwMDAwMlUpICAgICAgICAgICAgIC8qITwgUmVjZXB0aW9uIHRpbGwgY29tcGxldGlvbiBvciBSVE8gZXZlbnQgICAqLworI2RlZmluZSBIQUxfVUFSVF9SRUNFUFRJT05fVE9DSEFSTUFUQ0ggICAgICAgKDB4MDAwMDAwMDNVKSAgICAgICAgICAgICAvKiE8IFJlY2VwdGlvbiB0aWxsIGNvbXBsZXRpb24gb3IgQ00gZXZlbnQgICAgKi8KKy8qKgorICAqIEB9CisgICovCiAKIC8qKgogICAqIEB9CkBAIC03OTAsOCArODQ2LDEwIEBACiAgICogICAgICAgICAgICBAYXJnIEByZWYgVUFSVF9DTEVBUl9DVFNGICAgICBDVFMgSW50ZXJydXB0IENsZWFyIEZsYWcKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBVQVJUX0NMRUFSX0NNRiAgICAgIENoYXJhY3RlciBNYXRjaCBDbGVhciBGbGFnCiAjaWYgZGVmaW5lZChVU0FSVF9DUjFfVUVTTSkKKyNpZiBkZWZpbmVkKFVTQVJUX0NSM19XVUZJRSkKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBVQVJUX0NMRUFSX1dVRiAgICAgIFdha2UgVXAgZnJvbSBzdG9wIG1vZGUgQ2xlYXIgRmxhZwogI2VuZGlmCisjZW5kaWYKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KICNkZWZpbmUgX19IQUxfVUFSVF9DTEVBUl9GTEFHKF9fSEFORExFX18sIF9fRkxBR19fKSAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+SUNSID0gKF9fRkxBR19fKSkKQEAgLTgzNSw5ICs4OTMsMTEgQEAKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBVQVJUX0ZMQUdfUkVBQ0sgUmVjZWl2ZSBlbmFibGUgYWNrbm93bGVkZ2UgZmxhZwogI2VuZGlmCiAgICogICAgICAgICAgICBAYXJnIEByZWYgVUFSVF9GTEFHX1RFQUNLIFRyYW5zbWl0IGVuYWJsZSBhY2tub3dsZWRnZSBmbGFnCi0gICNpZiBkZWZpbmVkKFVTQVJUX0NSMV9VRVNNKQorI2lmIGRlZmluZWQoVVNBUlRfQ1IxX1VFU00pCisjaWYgZGVmaW5lZChVU0FSVF9DUjNfV1VGSUUpCiAgICogICAgICAgICAgICBAYXJnIEByZWYgVUFSVF9GTEFHX1dVRiAgIFdha2UgdXAgZnJvbSBzdG9wIG1vZGUgZmxhZwotICNlbmRpZgorI2VuZGlmCisjZW5kaWYKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBVQVJUX0ZMQUdfUldVICAgUmVjZWl2ZXIgd2FrZSB1cCBmbGFnIChpZiB0aGUgVUFSVCBpbiBtdXRlIG1vZGUpCiAgICogICAgICAgICAgICBAYXJnIEByZWYgVUFSVF9GTEFHX1NCS0YgIFNlbmQgQnJlYWsgZmxhZwogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFVBUlRfRkxBR19DTUYgICBDaGFyYWN0ZXIgbWF0Y2ggZmxhZwpAQCAtODY0LDggKzkyNCwxMCBAQAogICAqIEBwYXJhbSAgX19JTlRFUlJVUFRfXyBzcGVjaWZpZXMgdGhlIFVBUlQgaW50ZXJydXB0IHNvdXJjZSB0byBlbmFibGUuCiAgICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKICNpZiBkZWZpbmVkKFVTQVJUX0NSMV9VRVNNKQorI2lmIGRlZmluZWQoVVNBUlRfQ1IzX1dVRklFKQogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFVBUlRfSVRfV1VGICAgV2FrZXVwIGZyb20gc3RvcCBtb2RlIGludGVycnVwdAogI2VuZGlmCisjZW5kaWYKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBVQVJUX0lUX0NNICAgIENoYXJhY3RlciBtYXRjaCBpbnRlcnJ1cHQKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBVQVJUX0lUX0NUUyAgIENUUyBjaGFuZ2UgaW50ZXJydXB0CiAgICogICAgICAgICAgICBAYXJnIEByZWYgVUFSVF9JVF9MQkQgICBMSU4gQnJlYWsgZGV0ZWN0aW9uIGludGVycnVwdApAQCAtODc4LDE4ICs5NDAsMjUgQEAKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBVQVJUX0lUX0VSUiAgIEVycm9yIGludGVycnVwdCAoZnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKQogICAqIEByZXR2YWwgTm9uZQogICAqLwotI2RlZmluZSBfX0hBTF9VQVJUX0VOQUJMRV9JVChfX0hBTkRMRV9fLCBfX0lOVEVSUlVQVF9fKSAgICgoKCgodWludDhfdCkoX19JTlRFUlJVUFRfXykpID4+IDVVKSA9PSAxVSk/ICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjEgfD0gKDFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBVQVJUX0lUX01BU0spKSk6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoKHVpbnQ4X3QpKF9fSU5URVJSVVBUX18pKSA+PiA1VSkgPT0gMlUpPyAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IyIHw9ICgxVSA8PCAoKF9fSU5URVJSVVBUX18pICYgVUFSVF9JVF9NQVNLKSkpOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjMgfD0gKDFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBVQVJUX0lUX01BU0spKSkpCi0KKyNkZWZpbmUgX19IQUxfVUFSVF9FTkFCTEVfSVQoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXykgICAoXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgodWludDhfdCkoX19JTlRFUlJVUFRfXykpID4+IDVVKSA9PSAxVSk/XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IxIHw9ICgxVSA8PFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19JTlRFUlJVUFRfXykgJiBVQVJUX0lUX01BU0spKSk6IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoKHVpbnQ4X3QpKF9fSU5URVJSVVBUX18pKSA+PiA1VSkgPT0gMlUpP1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMiB8PSAoMVUgPDxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fSU5URVJSVVBUX18pICYgVUFSVF9JVF9NQVNLKSkpOiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjMgfD0gKDFVIDw8XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0lOVEVSUlVQVF9fKSAmIFVBUlRfSVRfTUFTSykpKSkKIAogLyoqIEBicmllZiAgRGlzYWJsZSB0aGUgc3BlY2lmaWVkIFVBUlQgaW50ZXJydXB0LgogICAqIEBwYXJhbSAgX19IQU5ETEVfXyBzcGVjaWZpZXMgdGhlIFVBUlQgSGFuZGxlLgogICAqIEBwYXJhbSAgX19JTlRFUlJVUFRfXyBzcGVjaWZpZXMgdGhlIFVBUlQgaW50ZXJydXB0IHNvdXJjZSB0byBkaXNhYmxlLgogICAqICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAjaWYgZGVmaW5lZChVU0FSVF9DUjFfVUVTTSkKKyNpZiBkZWZpbmVkKFVTQVJUX0NSM19XVUZJRSkKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBVQVJUX0lUX1dVRiAgIFdha2V1cCBmcm9tIHN0b3AgbW9kZSBpbnRlcnJ1cHQKICNlbmRpZgorI2VuZGlmCiAgICogICAgICAgICAgICBAYXJnIEByZWYgVUFSVF9JVF9DTSAgICBDaGFyYWN0ZXIgbWF0Y2ggaW50ZXJydXB0CiAgICogICAgICAgICAgICBAYXJnIEByZWYgVUFSVF9JVF9DVFMgICBDVFMgY2hhbmdlIGludGVycnVwdAogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFVBUlRfSVRfTEJEICAgTElOIEJyZWFrIGRldGVjdGlvbiBpbnRlcnJ1cHQKQEAgLTkwMiwxNyArOTcxLDI1IEBACiAgICogICAgICAgICAgICBAYXJnIEByZWYgVUFSVF9JVF9FUlIgICBFcnJvciBpbnRlcnJ1cHQgKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLSNkZWZpbmUgX19IQUxfVUFSVF9ESVNBQkxFX0lUKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICAoKCgoKHVpbnQ4X3QpKF9fSU5URVJSVVBUX18pKSA+PiA1VSkgPT0gMVUpPyAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IxICY9IH4gKDFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBVQVJUX0lUX01BU0spKSk6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoKHVpbnQ4X3QpKF9fSU5URVJSVVBUX18pKSA+PiA1VSkgPT0gMlUpPyAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IyICY9IH4gKDFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBVQVJUX0lUX01BU0spKSk6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMyAmPSB+ICgxVSA8PCAoKF9fSU5URVJSVVBUX18pICYgVUFSVF9JVF9NQVNLKSkpKQorI2RlZmluZSBfX0hBTF9VQVJUX0RJU0FCTEVfSVQoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXykgIChcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKCh1aW50OF90KShfX0lOVEVSUlVQVF9fKSkgPj4gNVUpID09IDFVKT9cCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjEgJj0gfiAoMVUgPDxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fSU5URVJSVVBUX18pICYgVUFSVF9JVF9NQVNLKSkpOiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKCh1aW50OF90KShfX0lOVEVSUlVQVF9fKSkgPj4gNVUpID09IDJVKT9cCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjIgJj0gfiAoMVUgPDxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fSU5URVJSVVBUX18pICYgVUFSVF9JVF9NQVNLKSkpOiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjMgJj0gfiAoMVUgPDxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fSU5URVJSVVBUX18pICYgVUFSVF9JVF9NQVNLKSkpKQogCiAvKiogQGJyaWVmICBDaGVjayB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgVUFSVCBpbnRlcnJ1cHQgaGFzIG9jY3VycmVkIG9yIG5vdC4KICAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBVQVJUIEhhbmRsZS4KICAgKiBAcGFyYW0gIF9fSU5URVJSVVBUX18gc3BlY2lmaWVzIHRoZSBVQVJUIGludGVycnVwdCB0byBjaGVjay4KICAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgogI2lmIGRlZmluZWQoVVNBUlRfQ1IxX1VFU00pCisjaWYgZGVmaW5lZChVU0FSVF9DUjNfV1VGSUUpCiAgICogICAgICAgICAgICBAYXJnIEByZWYgVUFSVF9JVF9XVUYgICBXYWtldXAgZnJvbSBzdG9wIG1vZGUgaW50ZXJydXB0CiAjZW5kaWYKKyNlbmRpZgogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFVBUlRfSVRfQ00gICAgQ2hhcmFjdGVyIG1hdGNoIGludGVycnVwdAogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFVBUlRfSVRfQ1RTICAgQ1RTIGNoYW5nZSBpbnRlcnJ1cHQKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBVQVJUX0lUX0xCRCAgIExJTiBCcmVhayBkZXRlY3Rpb24gaW50ZXJydXB0CkBAIC05MzMsOCArMTAxMCwxMCBAQAogICAqIEBwYXJhbSAgX19JTlRFUlJVUFRfXyBzcGVjaWZpZXMgdGhlIFVBUlQgaW50ZXJydXB0IHNvdXJjZSB0byBjaGVjay4KICAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgogI2lmIGRlZmluZWQoVVNBUlRfQ1IxX1VFU00pCisjaWYgZGVmaW5lZChVU0FSVF9DUjNfV1VGSUUpCiAgICogICAgICAgICAgICBAYXJnIEByZWYgVUFSVF9JVF9XVUYgICBXYWtldXAgZnJvbSBzdG9wIG1vZGUgaW50ZXJydXB0CiAjZW5kaWYKKyNlbmRpZgogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFVBUlRfSVRfQ00gICAgQ2hhcmFjdGVyIG1hdGNoIGludGVycnVwdAogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFVBUlRfSVRfQ1RTICAgQ1RTIGNoYW5nZSBpbnRlcnJ1cHQKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBVQVJUX0lUX0xCRCAgIExJTiBCcmVhayBkZXRlY3Rpb24gaW50ZXJydXB0CkBAIC05NDcsOSArMTAyNiwxMyBAQAogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFVBUlRfSVRfRVJSICAgRXJyb3IgaW50ZXJydXB0IChGcmFtZSBlcnJvciwgbm9pc2UgZXJyb3IsIG92ZXJydW4gZXJyb3IpCiAgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIF9fSU5URVJSVVBUX18gKFNFVCBvciBSRVNFVCkuCiAgICovCi0jZGVmaW5lIF9fSEFMX1VBUlRfR0VUX0lUX1NPVVJDRShfX0hBTkRMRV9fLCBfX0lOVEVSUlVQVF9fKSAoKCgoKCgoKHVpbnQ4X3QpKF9fSU5URVJSVVBUX18pKSA+PiA1VSkgPT0gMVUpID8gKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IxIDogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKCgodWludDhfdCkoX19JTlRFUlJVUFRfXykpID4+IDVVKSA9PSAyVSkgPyAoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjIgOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMykpICYgKDFVIDw8ICgoKHVpbnQxNl90KShfX0lOVEVSUlVQVF9fKSkgJiBVQVJUX0lUX01BU0spKSkgICE9IFJFU0VUKSA/IFNFVCA6IFJFU0VUKQorI2RlZmluZSBfX0hBTF9VQVJUX0dFVF9JVF9TT1VSQ0UoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXykgKCgoKCgoKCh1aW50OF90KShfX0lOVEVSUlVQVF9fKSkgPj4gNVUpID09IDFVKSA/XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMSA6IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgoKHVpbnQ4X3QpKF9fSU5URVJSVVBUX18pKSA+PiA1VSkgPT0gMlUpID9cCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMiA6IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IzKSkgJiAoMVUgPDxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50MTZfdCkoX19JTlRFUlJVUFRfXykpICZcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUFSVF9JVF9NQVNLKSkpICAhPSBSRVNFVCkgPyBTRVQgOiBSRVNFVCkKIAogLyoqIEBicmllZiAgQ2xlYXIgdGhlIHNwZWNpZmllZCBVQVJUIElTUiBmbGFnLCBpbiBzZXR0aW5nIHRoZSBwcm9wZXIgSUNSIHJlZ2lzdGVyIGZsYWcuCiAgICogQHBhcmFtICBfX0hBTkRMRV9fIHNwZWNpZmllcyB0aGUgVUFSVCBIYW5kbGUuCkBAIC05NjYsOSArMTA0OSwxMSBAQAogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFVBUlRfQ0xFQVJfTEJERiAgIExJTiBCcmVhayBEZXRlY3Rpb24gQ2xlYXIgRmxhZwogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFVBUlRfQ0xFQVJfQ1RTRiAgIENUUyBJbnRlcnJ1cHQgQ2xlYXIgRmxhZwogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFVBUlRfQ0xFQVJfQ01GICAgIENoYXJhY3RlciBNYXRjaCBDbGVhciBGbGFnCi0gICNpZiBkZWZpbmVkKFVTQVJUX0NSMV9VRVNNKQorI2lmIGRlZmluZWQoVVNBUlRfQ1IxX1VFU00pCisjaWYgZGVmaW5lZChVU0FSVF9DUjNfV1VGSUUpCiAgICogICAgICAgICAgICBAYXJnIEByZWYgVUFSVF9DTEVBUl9XVUYgICAgV2FrZSBVcCBmcm9tIHN0b3AgbW9kZSBDbGVhciBGbGFnCiAjZW5kaWYKKyNlbmRpZgogICAqIEByZXR2YWwgTm9uZQogICAqLwogI2RlZmluZSBfX0hBTF9VQVJUX0NMRUFSX0lUKF9fSEFORExFX18sIF9fSVRfQ0xFQVJfXykgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPklDUiA9ICh1aW50MzJfdCkoX19JVF9DTEVBUl9fKSkKQEAgLTEwMTcsOCArMTEwMiw5IEBACiAgICogQG5vdGUgICBBcyBtYWNybyBpcyBleHBlY3RlZCB0byBiZSB1c2VkIGZvciBtb2RpZnlpbmcgQ1RTIEh3IGZsb3cgY29udHJvbCBmZWF0dXJlIGFjdGl2YXRpb24sIHdpdGhvdXQgbmVlZAogICAqICAgICAgICAgZm9yIFVTQVJUIGluc3RhbmNlIERlaW5pdC9Jbml0LCBmb2xsb3dpbmcgY29uZGl0aW9ucyBmb3IgbWFjcm8gY2FsbCBzaG91bGQgYmUgZnVsZmlsbGVkIDoKICAgKiAgICAgICAgICAgLSBVQVJUIGluc3RhbmNlIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBpbml0aWFsaXNlZCAodGhyb3VnaCBjYWxsIG9mIEhBTF9VQVJUX0luaXQoKSApCi0gICogICAgICAgICAgIC0gbWFjcm8gY291bGQgb25seSBiZSBjYWxsZWQgd2hlbiBjb3JyZXNwb25kaW5nIFVBUlQgaW5zdGFuY2UgaXMgZGlzYWJsZWQgKGkuZS4gX19IQUxfVUFSVF9ESVNBQkxFKF9fSEFORExFX18pKQotICAqICAgICAgICAgICAgIGFuZCBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYW4gRW5hYmxlIG1hY3JvIChpLmUuIF9fSEFMX1VBUlRfRU5BQkxFKF9fSEFORExFX18pKS4KKyAgKiAgICAgICAgICAgLSBtYWNybyBjb3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGNvcnJlc3BvbmRpbmcgVUFSVCBpbnN0YW5jZSBpcyBkaXNhYmxlZAorICAqICAgICAgICAgICAgIChpLmUuIF9fSEFMX1VBUlRfRElTQUJMRShfX0hBTkRMRV9fKSkgYW5kIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhbiBFbmFibGUKKyAgKiAgICAgICAgICAgICAgbWFjcm8gKGkuZS4gX19IQUxfVUFSVF9FTkFCTEUoX19IQU5ETEVfXykpLgogICAqIEBwYXJhbSAgX19IQU5ETEVfXyBzcGVjaWZpZXMgdGhlIFVBUlQgSGFuZGxlLgogICAqIEByZXR2YWwgTm9uZQogICAqLwpAQCAtMTAzNSw4ICsxMTIxLDkgQEAKICAgKiBAbm90ZSAgIEFzIG1hY3JvIGlzIGV4cGVjdGVkIHRvIGJlIHVzZWQgZm9yIG1vZGlmeWluZyBDVFMgSHcgZmxvdyBjb250cm9sIGZlYXR1cmUgYWN0aXZhdGlvbiwgd2l0aG91dCBuZWVkCiAgICogICAgICAgICBmb3IgVVNBUlQgaW5zdGFuY2UgRGVpbml0L0luaXQsIGZvbGxvd2luZyBjb25kaXRpb25zIGZvciBtYWNybyBjYWxsIHNob3VsZCBiZSBmdWxmaWxsZWQgOgogICAqICAgICAgICAgICAtIFVBUlQgaW5zdGFuY2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGluaXRpYWxpc2VkICh0aHJvdWdoIGNhbGwgb2YgSEFMX1VBUlRfSW5pdCgpICkKLSAgKiAgICAgICAgICAgLSBtYWNybyBjb3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGNvcnJlc3BvbmRpbmcgVUFSVCBpbnN0YW5jZSBpcyBkaXNhYmxlZCAoaS5lLiBfX0hBTF9VQVJUX0RJU0FCTEUoX19IQU5ETEVfXykpCi0gICogICAgICAgICAgICAgYW5kIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhbiBFbmFibGUgbWFjcm8gKGkuZS4gX19IQUxfVUFSVF9FTkFCTEUoX19IQU5ETEVfXykpLgorICAqICAgICAgICAgICAtIG1hY3JvIGNvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gY29ycmVzcG9uZGluZyBVQVJUIGluc3RhbmNlIGlzIGRpc2FibGVkCisgICogICAgICAgICAgICAgKGkuZS4gX19IQUxfVUFSVF9ESVNBQkxFKF9fSEFORExFX18pKSBhbmQgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGFuIEVuYWJsZQorICAqICAgICAgICAgICAgICBtYWNybyAoaS5lLiBfX0hBTF9VQVJUX0VOQUJMRShfX0hBTkRMRV9fKSkuCiAgICogQHBhcmFtICBfX0hBTkRMRV9fIHNwZWNpZmllcyB0aGUgVUFSVCBIYW5kbGUuCiAgICogQHJldHZhbCBOb25lCiAgICovCkBAIC0xMDUzLDggKzExNDAsOSBAQAogICAqIEBub3RlICAgQXMgbWFjcm8gaXMgZXhwZWN0ZWQgdG8gYmUgdXNlZCBmb3IgbW9kaWZ5aW5nIFJUUyBIdyBmbG93IGNvbnRyb2wgZmVhdHVyZSBhY3RpdmF0aW9uLCB3aXRob3V0IG5lZWQKICAgKiAgICAgICAgIGZvciBVU0FSVCBpbnN0YW5jZSBEZWluaXQvSW5pdCwgZm9sbG93aW5nIGNvbmRpdGlvbnMgZm9yIG1hY3JvIGNhbGwgc2hvdWxkIGJlIGZ1bGZpbGxlZCA6CiAgICogICAgICAgICAgIC0gVUFSVCBpbnN0YW5jZSBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQgKHRocm91Z2ggY2FsbCBvZiBIQUxfVUFSVF9Jbml0KCkgKQotICAqICAgICAgICAgICAtIG1hY3JvIGNvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gY29ycmVzcG9uZGluZyBVQVJUIGluc3RhbmNlIGlzIGRpc2FibGVkIChpLmUuIF9fSEFMX1VBUlRfRElTQUJMRShfX0hBTkRMRV9fKSkKLSAgKiAgICAgICAgICAgICBhbmQgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGFuIEVuYWJsZSBtYWNybyAoaS5lLiBfX0hBTF9VQVJUX0VOQUJMRShfX0hBTkRMRV9fKSkuCisgICogICAgICAgICAgIC0gbWFjcm8gY291bGQgb25seSBiZSBjYWxsZWQgd2hlbiBjb3JyZXNwb25kaW5nIFVBUlQgaW5zdGFuY2UgaXMgZGlzYWJsZWQKKyAgKiAgICAgICAgICAgICAoaS5lLiBfX0hBTF9VQVJUX0RJU0FCTEUoX19IQU5ETEVfXykpIGFuZCBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYW4gRW5hYmxlCisgICogICAgICAgICAgICAgIG1hY3JvIChpLmUuIF9fSEFMX1VBUlRfRU5BQkxFKF9fSEFORExFX18pKS4KICAgKiBAcGFyYW0gIF9fSEFORExFX18gc3BlY2lmaWVzIHRoZSBVQVJUIEhhbmRsZS4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KQEAgLTEwNzEsOCArMTE1OSw5IEBACiAgICogQG5vdGUgICBBcyBtYWNybyBpcyBleHBlY3RlZCB0byBiZSB1c2VkIGZvciBtb2RpZnlpbmcgUlRTIEh3IGZsb3cgY29udHJvbCBmZWF0dXJlIGFjdGl2YXRpb24sIHdpdGhvdXQgbmVlZAogICAqICAgICAgICAgZm9yIFVTQVJUIGluc3RhbmNlIERlaW5pdC9Jbml0LCBmb2xsb3dpbmcgY29uZGl0aW9ucyBmb3IgbWFjcm8gY2FsbCBzaG91bGQgYmUgZnVsZmlsbGVkIDoKICAgKiAgICAgICAgICAgLSBVQVJUIGluc3RhbmNlIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBpbml0aWFsaXNlZCAodGhyb3VnaCBjYWxsIG9mIEhBTF9VQVJUX0luaXQoKSApCi0gICogICAgICAgICAgIC0gbWFjcm8gY291bGQgb25seSBiZSBjYWxsZWQgd2hlbiBjb3JyZXNwb25kaW5nIFVBUlQgaW5zdGFuY2UgaXMgZGlzYWJsZWQgKGkuZS4gX19IQUxfVUFSVF9ESVNBQkxFKF9fSEFORExFX18pKQotICAqICAgICAgICAgICAgIGFuZCBzaG91bGQgYmUgZm9sbG93ZWQgYnkgYW4gRW5hYmxlIG1hY3JvIChpLmUuIF9fSEFMX1VBUlRfRU5BQkxFKF9fSEFORExFX18pKS4KKyAgKiAgICAgICAgICAgLSBtYWNybyBjb3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGNvcnJlc3BvbmRpbmcgVUFSVCBpbnN0YW5jZSBpcyBkaXNhYmxlZAorICAqICAgICAgICAgICAgIChpLmUuIF9fSEFMX1VBUlRfRElTQUJMRShfX0hBTkRMRV9fKSkgYW5kIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhbiBFbmFibGUKKyAgKiAgICAgICAgICAgICAgbWFjcm8gKGkuZS4gX19IQUxfVUFSVF9FTkFCTEUoX19IQU5ETEVfXykpLgogICAqIEBwYXJhbSAgX19IQU5ETEVfXyBzcGVjaWZpZXMgdGhlIFVBUlQgSGFuZGxlLgogICAqIEByZXR2YWwgTm9uZQogICAqLwpAQCAtMTMzMiw4ICsxNDIxLDkgQEAKICAgKiBAcGFyYW0gX19BVVRPQkFVRFJBVEVfXyBVQVJUIGF1dG8gQmF1ZCByYXRlIHN0YXRlLgogICAqIEByZXR2YWwgU0VUIChfX0FVVE9CQVVEUkFURV9fIGlzIHZhbGlkKSBvciBSRVNFVCAoX19BVVRPQkFVRFJBVEVfXyBpcyBpbnZhbGlkKQogICAqLwotI2RlZmluZSBJU19VQVJUX0FEVkZFQVRVUkVfQVVUT0JBVURSQVRFKF9fQVVUT0JBVURSQVRFX18pICAoKChfX0FVVE9CQVVEUkFURV9fKSA9PSBVQVJUX0FEVkZFQVRVUkVfQVVUT0JBVURSQVRFX0RJU0FCTEUpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19BVVRPQkFVRFJBVEVfXykgPT0gVUFSVF9BRFZGRUFUVVJFX0FVVE9CQVVEUkFURV9FTkFCTEUpKQorI2RlZmluZSBJU19VQVJUX0FEVkZFQVRVUkVfQVVUT0JBVURSQVRFKF9fQVVUT0JBVURSQVRFX18pICgoKF9fQVVUT0JBVURSQVRFX18pID09IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVBUlRfQURWRkVBVFVSRV9BVVRPQkFVRFJBVEVfRElTQUJMRSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fQVVUT0JBVURSQVRFX18pID09IFVBUlRfQURWRkVBVFVSRV9BVVRPQkFVRFJBVEVfRU5BQkxFKSkKIAogLyoqCiAgICogQGJyaWVmIEVuc3VyZSB0aGF0IFVBUlQgRE1BIGVuYWJsaW5nIG9yIGRpc2FibGluZyBvbiBlcnJvciBzZXR0aW5nIGlzIHZhbGlkLgpAQCAtMTM3NSw5ICsxNDY1LDE0IEBACiAgICogQHBhcmFtIF9fV0FLRV9fIFVBUlQgd2FrZS11cCBzZWxlY3Rpb24uCiAgICogQHJldHZhbCBTRVQgKF9fV0FLRV9fIGlzIHZhbGlkKSBvciBSRVNFVCAoX19XQUtFX18gaXMgaW52YWxpZCkKICAgKi8KKyNpZiBkZWZpbmVkKFVTQVJUX0NSM19XVUZJRSkKICNkZWZpbmUgSVNfVUFSVF9XQUtFVVBfU0VMRUNUSU9OKF9fV0FLRV9fKSAoKChfX1dBS0VfXykgPT0gVUFSVF9XQUtFVVBfT05fQUREUkVTUykgICAgICAgICAgIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1dBS0VfXykgPT0gVUFSVF9XQUtFVVBfT05fU1RBUlRCSVQpICAgICAgICAgIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1dBS0VfXykgPT0gVUFSVF9XQUtFVVBfT05fUkVBRERBVEFfTk9ORU1QVFkpKQorI2Vsc2UKKyNkZWZpbmUgSVNfVUFSVF9XQUtFVVBfU0VMRUNUSU9OKF9fV0FLRV9fKSAoKChfX1dBS0VfXykgPT0gVUFSVF9XQUtFVVBfT05fQUREUkVTUykgICAgICAgICAgIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1dBS0VfXykgPT0gVUFSVF9XQUtFVVBfT05fUkVBRERBVEFfTk9ORU1QVFkpKQorI2VuZGlmIC8qIFVTQVJUX0NSM19XVUZJRSAqLwogI2VuZGlmIC8qIFVTQVJUX0NSMV9VRVNNICovCiAKIC8qKgpAQCAtMTM5Niw3ICsxNDkxLDYgQEAKIC8qIEluY2x1ZGUgVUFSVCBIQUwgRXh0ZW5kZWQgbW9kdWxlICovCiAjaW5jbHVkZSAic3RtMzJmN3h4X2hhbF91YXJ0X2V4LmgiCiAKLQogLyogRXhwb3J0ZWQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qKiBAYWRkdG9ncm91cCBVQVJUX0V4cG9ydGVkX0Z1bmN0aW9ucyBVQVJUIEV4cG9ydGVkIEZ1bmN0aW9ucwogICAqIEB7CkBAIC0xNDIwLDYgKzE1MTQsOSBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VBUlRfUmVnaXN0ZXJDYWxsYmFjayhVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0LCBIQUxfVUFSVF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwVUFSVF9DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKTsKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9VQVJUX1VuUmVnaXN0ZXJDYWxsYmFjayhVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0LCBIQUxfVUFSVF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lEKTsKKworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VBUlRfUmVnaXN0ZXJSeEV2ZW50Q2FsbGJhY2soVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCwgcFVBUlRfUnhFdmVudENhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VBUlRfVW5SZWdpc3RlclJ4RXZlbnRDYWxsYmFjayhVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0KTsKICNlbmRpZiAvKiBVU0VfSEFMX1VBUlRfUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAKIC8qKgpAQCAtMTQ1OCw2ICsxNTU1LDggQEAKIHZvaWQgSEFMX1VBUlRfQWJvcnRUcmFuc21pdENwbHRDYWxsYmFjayhVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0KTsKIHZvaWQgSEFMX1VBUlRfQWJvcnRSZWNlaXZlQ3BsdENhbGxiYWNrKFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQpOwogCit2b2lkIEhBTF9VQVJURXhfUnhFdmVudENhbGxiYWNrKFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQsIHVpbnQxNl90IFNpemUpOworCiAvKioKICAgKiBAfQogICAqLwpAQCAtMTUwMywxMyArMTYwMiwxNSBAQAogICAqIEB7CiAgICovCiAjaWYgKFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLXZvaWQgVUFSVF9Jbml0Q2FsbGJhY2tzVG9EZWZhdWx0KFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQpOwordm9pZCAgICAgICAgICAgICAgVUFSVF9Jbml0Q2FsbGJhY2tzVG9EZWZhdWx0KFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQpOwogI2VuZGlmIC8qIFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIFVBUlRfU2V0Q29uZmlnKFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQpOwogSEFMX1N0YXR1c1R5cGVEZWYgVUFSVF9DaGVja0lkbGVTdGF0ZShVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0KTsKIEhBTF9TdGF0dXNUeXBlRGVmIFVBUlRfV2FpdE9uRmxhZ1VudGlsVGltZW91dChVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0LCB1aW50MzJfdCBGbGFnLCBGbGFnU3RhdHVzIFN0YXR1cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaWNrc3RhcnQsIHVpbnQzMl90IFRpbWVvdXQpOwotdm9pZCBVQVJUX0FkdkZlYXR1cmVDb25maWcoVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCk7Cit2b2lkICAgICAgICAgICAgICBVQVJUX0FkdkZlYXR1cmVDb25maWcoVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCk7CitIQUxfU3RhdHVzVHlwZURlZiBVQVJUX1N0YXJ0X1JlY2VpdmVfSVQoVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpOworSEFMX1N0YXR1c1R5cGVEZWYgVUFSVF9TdGFydF9SZWNlaXZlX0RNQShVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0LCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSk7CiAKIC8qKgogICAqIEB9CmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF91YXJ0X2V4LmggYi9JbmMvc3RtMzJmN3h4X2hhbF91YXJ0X2V4LmgKaW5kZXggZTk5ZDhkNi4uNmU2YjA5MCAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfdWFydF9leC5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX3VhcnRfZXguaApAQCAtMTE3LDcgKzExNyw2IEBACiB2b2lkIEhBTF9VQVJURXhfV2FrZXVwQ2FsbGJhY2soVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCk7CiAKICNlbmRpZiAvKiBVU0FSVF9DUjFfVUVTTSAqLwotCiAvKioKICAgKiBAfQogICAqLwpAQCAtMTQxLDYgKzE0MCwxMiBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX011bHRpUHJvY2Vzc29yRXhfQWRkcmVzc0xlbmd0aF9TZXQoVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCwgdWludDMyX3QgQWRkcmVzc0xlbmd0aCk7CiAKIAorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VBUlRFeF9SZWNlaXZlVG9JZGxlKFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MTZfdCAqUnhMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgVGltZW91dCk7CitIQUxfU3RhdHVzVHlwZURlZiBIQUxfVUFSVEV4X1JlY2VpdmVUb0lkbGVfSVQoVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpOworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VBUlRFeF9SZWNlaXZlVG9JZGxlX0RNQShVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0LCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSk7CisKKwogLyoqCiAgICogQH0KICAgKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfaGFsX3VzYXJ0LmggYi9JbmMvc3RtMzJmN3h4X2hhbF91c2FydC5oCmluZGV4IDQ3MDdkZmQuLjllOTBmZWUgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfaGFsX3VzYXJ0LmgKKysrIGIvSW5jL3N0bTMyZjd4eF9oYWxfdXNhcnQuaApAQCAtNDgsMTEgKzQ4LDE0IEBACiB7CiAgIHVpbnQzMl90IEJhdWRSYXRlOyAgICAgICAgICAgICAgICAgIC8qITwgVGhpcyBtZW1iZXIgY29uZmlndXJlcyB0aGUgVXNhcnQgY29tbXVuaWNhdGlvbiBiYXVkIHJhdGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGJhdWQgcmF0ZSBpcyBjb21wdXRlZCB1c2luZyB0aGUgZm9sbG93aW5nIGZvcm11bGE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmF1ZCBSYXRlIFJlZ2lzdGVyWzE1OjRdID0gKCgyICogZmNsa19wcmVzKSAvICgoaHVhcnQtPkluaXQuQmF1ZFJhdGUpKSlbMTU6NF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXVkIFJhdGUgUmVnaXN0ZXJbMTU6NF0gPSAoKDIgKiBmY2xrX3ByZXMpIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGh1YXJ0LT5Jbml0LkJhdWRSYXRlKSkpWzE1OjRdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmF1ZCBSYXRlIFJlZ2lzdGVyWzNdICAgID0gMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhdWQgUmF0ZSBSZWdpc3RlclsyOjBdICA9ICAoKCgyICogZmNsa19wcmVzKSAvICgoaHVhcnQtPkluaXQuQmF1ZFJhdGUpKSlbMzowXSkgPj4gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhdWQgUmF0ZSBSZWdpc3RlclsyOjBdICA9ICAoKCgyICogZmNsa19wcmVzKSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChodWFydC0+SW5pdC5CYXVkUmF0ZSkpKVszOjBdKSA+PiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgZmNsa19wcmVzIGlzIHRoZSBVU0FSVCBpbnB1dCBjbG9jayBmcmVxdWVuY3kKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbm90ZSAgT3ZlcnNhbXBsaW5nIGJ5IDggaXMgc3lzdGVtYXRpY2FsbHkgYXBwbGllZCB0byBhY2hpZXZlIGhpZ2ggYmF1ZCByYXRlcy4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbm90ZSAgT3ZlcnNhbXBsaW5nIGJ5IDggaXMgc3lzdGVtYXRpY2FsbHkgYXBwbGllZCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2hpZXZlIGhpZ2ggYmF1ZCByYXRlcy4gKi8KIAogICB1aW50MzJfdCBXb3JkTGVuZ3RoOyAgICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGRhdGEgYml0cyB0cmFuc21pdHRlZCBvciByZWNlaXZlZCBpbiBhIGZyYW1lLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVVNBUlRFeF9Xb3JkX0xlbmd0aC4gKi8KQEAgLTIwMCwxNiArMjAzLDE2IEBACiAvKiogQGRlZmdyb3VwIFVTQVJUX0Vycm9yX0RlZmluaXRpb24gICBVU0FSVCBFcnJvciBEZWZpbml0aW9uCiAgICogQHsKICAgKi8KLSNkZWZpbmUgSEFMX1VTQVJUX0VSUk9SX05PTkUgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDAwVSkgICAgLyohPCBObyBlcnJvciAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEhBTF9VU0FSVF9FUlJPUl9QRSAgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwMVUpICAgIC8qITwgUGFyaXR5IGVycm9yICAgICAgICAgICAgICAqLwotI2RlZmluZSBIQUxfVVNBUlRfRVJST1JfTkUgICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMDJVKSAgICAvKiE8IE5vaXNlIGVycm9yICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgSEFMX1VTQVJUX0VSUk9SX0ZFICAgICAgICAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA0VSkgICAgLyohPCBGcmFtZSBlcnJvciAgICAgICAgICAgICAgICovCi0jZGVmaW5lIEhBTF9VU0FSVF9FUlJPUl9PUkUgICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDAwOFUpICAgIC8qITwgT3ZlcnJ1biBlcnJvciAgICAgICAgICAgICAqLwotI2RlZmluZSBIQUxfVVNBUlRfRVJST1JfRE1BICAgICAgICAgICAgICAoKHVpbnQzMl90KTB4MDAwMDAwMTBVKSAgICAvKiE8IERNQSB0cmFuc2ZlciBlcnJvciAgICAgICAgKi8KKyNkZWZpbmUgSEFMX1VTQVJUX0VSUk9SX05PTkUgICAgICAgICAgICAgKDB4MDAwMDAwMDBVKSAgICAvKiE8IE5vIGVycm9yICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSEFMX1VTQVJUX0VSUk9SX1BFICAgICAgICAgICAgICAgKDB4MDAwMDAwMDFVKSAgICAvKiE8IFBhcml0eSBlcnJvciAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSEFMX1VTQVJUX0VSUk9SX05FICAgICAgICAgICAgICAgKDB4MDAwMDAwMDJVKSAgICAvKiE8IE5vaXNlIGVycm9yICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSEFMX1VTQVJUX0VSUk9SX0ZFICAgICAgICAgICAgICAgKDB4MDAwMDAwMDRVKSAgICAvKiE8IEZyYW1lIGVycm9yICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSEFMX1VTQVJUX0VSUk9SX09SRSAgICAgICAgICAgICAgKDB4MDAwMDAwMDhVKSAgICAvKiE8IE92ZXJydW4gZXJyb3IgICAgICAgICAgICAgKi8KKyNkZWZpbmUgSEFMX1VTQVJUX0VSUk9SX0RNQSAgICAgICAgICAgICAgKDB4MDAwMDAwMTBVKSAgICAvKiE8IERNQSB0cmFuc2ZlciBlcnJvciAgICAgICAgKi8KICNpZiAoVVNFX0hBTF9VU0FSVF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSNkZWZpbmUgSEFMX1VTQVJUX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0sgKCh1aW50MzJfdCkweDAwMDAwMDQwVSkgICAgLyohPCBJbnZhbGlkIENhbGxiYWNrIGVycm9yICAgICovCisjZGVmaW5lIEhBTF9VU0FSVF9FUlJPUl9JTlZBTElEX0NBTExCQUNLICgweDAwMDAwMDQwVSkgICAgLyohPCBJbnZhbGlkIENhbGxiYWNrIGVycm9yICAgICovCiAjZW5kaWYgLyogVVNFX0hBTF9VU0FSVF9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KLSNkZWZpbmUgIEhBTF9VU0FSVF9FUlJPUl9SVE8gICAgICAgICAgICAgICgodWludDMyX3QpMHgwMDAwMDA4MFUpICAgIC8qITwgUmVjZWl2ZXIgVGltZW91dCBlcnJvciAgKi8KKyNkZWZpbmUgIEhBTF9VU0FSVF9FUlJPUl9SVE8gICAgICAgICAgICAgICgweDAwMDAwMDgwVSkgICAgLyohPCBSZWNlaXZlciBUaW1lb3V0IGVycm9yICAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTI0NSwxNSArMjQ4LDYgQEAKICAgKiBAfQogICAqLwogCi0vKiogQGRlZmdyb3VwIFVTQVJUX092ZXJfU2FtcGxpbmcgVVNBUlQgT3ZlciBTYW1wbGluZwotICAqIEB7Ci0gICovCi0jZGVmaW5lIFVTQVJUX09WRVJTQU1QTElOR18xNiAgICAgICAgICAgICAgIDB4MDAwMDAwMDBVICAgICAgICAgLyohPCBPdmVyc2FtcGxpbmcgYnkgMTYgKi8KLSNkZWZpbmUgVVNBUlRfT1ZFUlNBTVBMSU5HXzggICAgICAgICAgICAgICAgVVNBUlRfQ1IxX09WRVI4ICAgICAvKiE8IE92ZXJzYW1wbGluZyBieSA4ICAqLwotLyoqCi0gICogQH0KLSAgKi8KLQogLyoqIEBkZWZncm91cCBVU0FSVF9DbG9jayAgVVNBUlQgQ2xvY2sKICAgKiBAewogICAqLwpAQCAtNDc0LDkgKzQ2OCwxMiBAQAogICAqICAgICAgICAgICAgQGFyZyBAcmVmIFVTQVJUX0lUX0VSUiAgIEVycm9yIGludGVycnVwdChGcmFtZSBlcnJvciwgbm9pc2UgZXJyb3IsIG92ZXJydW4gZXJyb3IpCiAgICogQHJldHZhbCBOb25lCiAgICovCi0jZGVmaW5lIF9fSEFMX1VTQVJUX0VOQUJMRV9JVChfX0hBTkRMRV9fLCBfX0lOVEVSUlVQVF9fKSAgICgoKCgoX19JTlRFUlJVUFRfXykgJiBVU0FSVF9DUl9NQVNLKSA+PiBVU0FSVF9DUl9QT1MpID09IDFVKT8gKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMSB8PSAoKHVpbnQzMl90KTFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBVU0FSVF9JVF9NQVNLKSkpOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgoX19JTlRFUlJVUFRfXykgJiBVU0FSVF9DUl9NQVNLKSA+PiBVU0FSVF9DUl9QT1MpID09IDJVKT8gKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMiB8PSAoKHVpbnQzMl90KTFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBVU0FSVF9JVF9NQVNLKSkpOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IzIHw9ICgodWludDMyX3QpMVUgPDwgKChfX0lOVEVSUlVQVF9fKSAmIFVTQVJUX0lUX01BU0spKSkpCisjZGVmaW5lIF9fSEFMX1VTQVJUX0VOQUJMRV9JVChfX0hBTkRMRV9fLCBfX0lOVEVSUlVQVF9fKVwKKyAgKCgoKChfX0lOVEVSUlVQVF9fKSAmIFVTQVJUX0NSX01BU0spID4+IFVTQVJUX0NSX1BPUykgPT0gMVUpP1wKKyAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjEgfD0gKDFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBVU0FSVF9JVF9NQVNLKSkpOiBcCisgICAoKCgoX19JTlRFUlJVUFRfXykgJiBVU0FSVF9DUl9NQVNLKSA+PiBVU0FSVF9DUl9QT1MpID09IDJVKT9cCisgICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IyIHw9ICgxVSA8PCAoKF9fSU5URVJSVVBUX18pICYgVVNBUlRfSVRfTUFTSykpKTogXAorICAgKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMyB8PSAoMVUgPDwgKChfX0lOVEVSUlVQVF9fKSAmIFVTQVJUX0lUX01BU0spKSkpCiAKIC8qKiBAYnJpZWYgIERpc2FibGUgdGhlIHNwZWNpZmllZCBVU0FSVCBpbnRlcnJ1cHQuCiAgICogQHBhcmFtICBfX0hBTkRMRV9fIHNwZWNpZmllcyB0aGUgVVNBUlQgSGFuZGxlLgpAQCAtNDkwLDEwICs0ODcsMTIgQEAKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBVU0FSVF9JVF9FUlIgICBFcnJvciBpbnRlcnJ1cHQoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKQogICAqIEByZXR2YWwgTm9uZQogICAqLwotI2RlZmluZSBfX0hBTF9VU0FSVF9ESVNBQkxFX0lUKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICAoKCgoKF9fSU5URVJSVVBUX18pICYgVVNBUlRfQ1JfTUFTSykgPj4gVVNBUlRfQ1JfUE9TKSA9PSAxVSk/ICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjEgJj0gfiAoKHVpbnQzMl90KTFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBVU0FSVF9JVF9NQVNLKSkpOiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgoX19JTlRFUlJVUFRfXykgJiBVU0FSVF9DUl9NQVNLKSA+PiBVU0FSVF9DUl9QT1MpID09IDJVKT8gKChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMiAmPSB+ICgodWludDMyX3QpMVUgPDwgKChfX0lOVEVSUlVQVF9fKSAmIFVTQVJUX0lUX01BU0spKSk6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjMgJj0gfiAoKHVpbnQzMl90KTFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBVU0FSVF9JVF9NQVNLKSkpKQotCisjZGVmaW5lIF9fSEFMX1VTQVJUX0RJU0FCTEVfSVQoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXylcCisgICgoKCgoX19JTlRFUlJVUFRfXykgJiBVU0FSVF9DUl9NQVNLKSA+PiBVU0FSVF9DUl9QT1MpID09IDFVKT9cCisgICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IxICY9IH4gKDFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBVU0FSVF9JVF9NQVNLKSkpOiBcCisgICAoKCgoX19JTlRFUlJVUFRfXykgJiBVU0FSVF9DUl9NQVNLKSA+PiBVU0FSVF9DUl9QT1MpID09IDJVKT9cCisgICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IyICY9IH4gKDFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBVU0FSVF9JVF9NQVNLKSkpOiBcCisgICAoKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IzICY9IH4gKDFVIDw8ICgoX19JTlRFUlJVUFRfXykgJiBVU0FSVF9JVF9NQVNLKSkpKQogCiAvKiogQGJyaWVmICBDaGVjayB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgVVNBUlQgaW50ZXJydXB0IGhhcyBvY2N1cnJlZCBvciBub3QuCiAgICogQHBhcmFtICBfX0hBTkRMRV9fIHNwZWNpZmllcyB0aGUgVVNBUlQgSGFuZGxlLgpAQCAtNTEwLDcgKzUwOSw4IEBACiAgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIF9fSU5URVJSVVBUX18gKFNFVCBvciBSRVNFVCkuCiAgICovCiAjZGVmaW5lIF9fSEFMX1VTQVJUX0dFVF9JVChfX0hBTkRMRV9fLCBfX0lOVEVSUlVQVF9fKSAoKCgoX19IQU5ETEVfXyktPkluc3RhbmNlLT5JU1JcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmICgodWludDMyX3QpMHgwMVUgPDwgKCgoX19JTlRFUlJVUFRfXykgJiBVU0FSVF9JU1JfTUFTSyk+PiBVU0FSVF9JU1JfUE9TKSkpICE9IDBVKSA/IFNFVCA6IFJFU0VUKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiAoMHgwMVUgPDwgKCgoX19JTlRFUlJVUFRfXykgJiBVU0FSVF9JU1JfTUFTSyk+PlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfSVNSX1BPUykpKSAhPSAwVSkgPyBTRVQgOiBSRVNFVCkKIAogLyoqIEBicmllZiAgQ2hlY2sgd2hldGhlciB0aGUgc3BlY2lmaWVkIFVTQVJUIGludGVycnVwdCBzb3VyY2UgaXMgZW5hYmxlZCBvciBub3QuCiAgICogQHBhcmFtICBfX0hBTkRMRV9fIHNwZWNpZmllcyB0aGUgVVNBUlQgSGFuZGxlLgpAQCAtNTI2LDEwICs1MjYsMTMgQEAKICAgKiAgICAgICAgICAgIEBhcmcgQHJlZiBVU0FSVF9JVF9QRSAgICBQYXJpdHkgRXJyb3IgaW50ZXJydXB0CiAgICogQHJldHZhbCBUaGUgbmV3IHN0YXRlIG9mIF9fSU5URVJSVVBUX18gKFNFVCBvciBSRVNFVCkuCiAgICovCi0jZGVmaW5lIF9fSEFMX1VTQVJUX0dFVF9JVF9TT1VSQ0UoX19IQU5ETEVfXywgX19JTlRFUlJVUFRfXykgKCgoKCgoKCh1aW50OF90KShfX0lOVEVSUlVQVF9fKSkgPj4gMHgwNVUpID09IDB4MDFVKSA/IChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMSA6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoKCh1aW50OF90KShfX0lOVEVSUlVQVF9fKSkgPj4gMHgwNVUpID09IDB4MDJVKSA/IChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMiA6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfX0hBTkRMRV9fKS0+SW5zdGFuY2UtPkNSMykpICYgKDB4MDFVIDw8ICgoKHVpbnQxNl90KShfX0lOVEVSUlVQVF9fKSkgJiBVU0FSVF9JVF9NQVNLKSkpICAhPSAwVSkgPyBTRVQgOiBSRVNFVCkKLQorI2RlZmluZSBfX0hBTF9VU0FSVF9HRVRfSVRfU09VUkNFKF9fSEFORExFX18sIF9fSU5URVJSVVBUX18pICgoKCgoKCgodWludDhfdCkoX19JTlRFUlJVUFRfXykpID4+IDB4MDVVKSA9PSAweDAxVSkgP1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fSEFORExFX18pLT5JbnN0YW5jZS0+Q1IxIDogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCgoKHVpbnQ4X3QpKF9fSU5URVJSVVBUX18pKSA+PiAweDA1VSkgPT0gMHgwMlUpID9cCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjIgOiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IQU5ETEVfXyktPkluc3RhbmNlLT5DUjMpKSAmICgweDAxVSA8PFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50MTZfdCkoX19JTlRFUlJVUFRfXykpICZcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0lUX01BU0spKSkgICE9IDBVKSA/IFNFVCA6IFJFU0VUKQogCiAvKiogQGJyaWVmICBDbGVhciB0aGUgc3BlY2lmaWVkIFVTQVJUIElTUiBmbGFnLCBpbiBzZXR0aW5nIHRoZSBwcm9wZXIgSUNSIHJlZ2lzdGVyIGZsYWcuCiAgICogQHBhcmFtICBfX0hBTkRMRV9fIHNwZWNpZmllcyB0aGUgVVNBUlQgSGFuZGxlLgpAQCAtNzI5LDE0ICs3MzIsNiBAQAogI2RlZmluZSBJU19VU0FSVF9NT0RFKF9fTU9ERV9fKSAoKCgoX19NT0RFX18pICYgMHhGRkZGRkZGM1UpID09IDB4MDBVKSAmJiAoKF9fTU9ERV9fKSAhPSAweDAwVSkpCiAKIC8qKgotICAqIEBicmllZiBFbnN1cmUgdGhhdCBVU0FSVCBvdmVyc2FtcGxpbmcgaXMgdmFsaWQuCi0gICogQHBhcmFtIF9fU0FNUExJTkdfXyBVU0FSVCBvdmVyc2FtcGxpbmcuCi0gICogQHJldHZhbCBTRVQgKF9fU0FNUExJTkdfXyBpcyB2YWxpZCkgb3IgUkVTRVQgKF9fU0FNUExJTkdfXyBpcyBpbnZhbGlkKQotICAqLwotI2RlZmluZSBJU19VU0FSVF9PVkVSU0FNUExJTkcoX19TQU1QTElOR19fKSAoKChfX1NBTVBMSU5HX18pID09IFVTQVJUX09WRVJTQU1QTElOR18xNikgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfX1NBTVBMSU5HX18pID09IFVTQVJUX09WRVJTQU1QTElOR184KSkKLQotLyoqCiAgICogQGJyaWVmIEVuc3VyZSB0aGF0IFVTQVJUIGNsb2NrIHN0YXRlIGlzIHZhbGlkLgogICAqIEBwYXJhbSBfX0NMT0NLX18gVVNBUlQgY2xvY2sgc3RhdGUuCiAgICogQHJldHZhbCBTRVQgKF9fQ0xPQ0tfXyBpcyB2YWxpZCkgb3IgUkVTRVQgKF9fQ0xPQ0tfXyBpcyBpbnZhbGlkKQpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9oYWxfdXNhcnRfZXguaCBiL0luYy9zdG0zMmY3eHhfaGFsX3VzYXJ0X2V4LmgKaW5kZXggNDdhYmJmNC4uZDFlZWI4NSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfdXNhcnRfZXguaAorKysgYi9JbmMvc3RtMzJmN3h4X2hhbF91c2FydF9leC5oCkBAIC00NSw5ICs0NSw5IEBACiAvKiogQGRlZmdyb3VwIFVTQVJURXhfV29yZF9MZW5ndGggVVNBUlRFeCBXb3JkIExlbmd0aAogICAqIEB7CiAgICovCi0jZGVmaW5lIFVTQVJUX1dPUkRMRU5HVEhfN0IgICAgICAgICAgICAgICAgICAoKHVpbnQzMl90KVVTQVJUX0NSMV9NMSkgICAvKiE8IDctYml0IGxvbmcgVVNBUlQgZnJhbWUgKi8KKyNkZWZpbmUgVVNBUlRfV09SRExFTkdUSF83QiAgICAgICAgICAgICAgICAgIChVU0FSVF9DUjFfTTEpICAgLyohPCA3LWJpdCBsb25nIFVTQVJUIGZyYW1lICovCiAjZGVmaW5lIFVTQVJUX1dPUkRMRU5HVEhfOEIgICAgICAgICAgICAgICAgICAoMHgwMDAwMDAwMFUpICAgICAgICAgICAgICAvKiE8IDgtYml0IGxvbmcgVVNBUlQgZnJhbWUgKi8KLSNkZWZpbmUgVVNBUlRfV09SRExFTkdUSF85QiAgICAgICAgICAgICAgICAgICgodWludDMyX3QpVVNBUlRfQ1IxX00wKSAgIC8qITwgOS1iaXQgbG9uZyBVU0FSVCBmcmFtZSAqLworI2RlZmluZSBVU0FSVF9XT1JETEVOR1RIXzlCICAgICAgICAgICAgICAgICAgKFVTQVJUX0NSMV9NMCkgICAvKiE8IDktYml0IGxvbmcgVVNBUlQgZnJhbWUgKi8KIC8qKgogICAqIEB9CiAgICovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2hhbF93d2RnLmggYi9JbmMvc3RtMzJmN3h4X2hhbF93d2RnLmgKaW5kZXggYzBjZThlNC4uZDM5M2VhNiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9oYWxfd3dkZy5oCisrKyBiL0luYy9zdG0zMmY3eHhfaGFsX3d3ZGcuaApAQCAtNTYsNyArNTYsNyBAQAogICB1aW50MzJfdCBDb3VudGVyOyAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgV1dERyBmcmVlLXJ1bm5pbmcgZG93bmNvdW50ZXIgIHZhbHVlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4NDAgYW5kIE1heF9EYXRhID0gMHg3RiAqLwogCi0gIHVpbnQzMl90IEVXSU1vZGUgOyAgICAgIC8qITwgU3BlY2lmaWVzIGlmIFdXREcgRWFybHkgV2FrZXVwIEludGVydXB0IGlzIGVuYWJsZSBvciBub3QuCisgIHVpbnQzMl90IEVXSU1vZGUgOyAgICAgIC8qITwgU3BlY2lmaWVzIGlmIFdXREcgRWFybHkgV2FrZXVwIEludGVycnVwdCBpcyBlbmFibGUgb3Igbm90LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgV1dER19FV0lfTW9kZSAqLwogCiB9IFdXREdfSW5pdFR5cGVEZWY7CkBAIC02OCwxNyArNjgsMTcgQEAKIHR5cGVkZWYgc3RydWN0IF9fV1dER19IYW5kbGVUeXBlRGVmCiAjZWxzZQogdHlwZWRlZiBzdHJ1Y3QKLSNlbmRpZgorI2VuZGlmIC8qIFVTRV9IQUxfV1dER19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIHsKICAgV1dER19UeXBlRGVmICAgICAgKkluc3RhbmNlOyAgLyohPCBSZWdpc3RlciBiYXNlIGFkZHJlc3MgKi8KIAogICBXV0RHX0luaXRUeXBlRGVmICBJbml0OyAgICAgICAvKiE8IFdXREcgcmVxdWlyZWQgcGFyYW1ldGVycyAqLwogCiAjaWYgKFVTRV9IQUxfV1dER19SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSAgdm9pZCAgICAgICAgICAgICAgKCogRXdpQ2FsbGJhY2spKHN0cnVjdCBfX1dXREdfSGFuZGxlVHlwZURlZiAqaHd3ZGcpOyAgICAgLyohPCBXV0RHIEVhcmx5IFdha2VVcCBJbnRlcnJ1cHQgY2FsbGJhY2sgKi8KKyAgdm9pZCAoKiBFd2lDYWxsYmFjaykoc3RydWN0IF9fV1dER19IYW5kbGVUeXBlRGVmICpod3dkZyk7ICAgICAgICAgICAgICAgICAgLyohPCBXV0RHIEVhcmx5IFdha2VVcCBJbnRlcnJ1cHQgY2FsbGJhY2sgKi8KIAotICB2b2lkICAgICAgICAgICAgICAoKiBNc3BJbml0Q2FsbGJhY2spKHN0cnVjdCBfX1dXREdfSGFuZGxlVHlwZURlZiAqaHd3ZGcpOyAvKiE8IFdXREcgTXNwIEluaXQgY2FsbGJhY2sgKi8KLSNlbmRpZgorICB2b2lkICgqIE1zcEluaXRDYWxsYmFjaykoc3RydWN0IF9fV1dER19IYW5kbGVUeXBlRGVmICpod3dkZyk7ICAgICAgICAgICAgICAvKiE8IFdXREcgTXNwIEluaXQgY2FsbGJhY2sgKi8KKyNlbmRpZiAvKiBVU0VfSEFMX1dXREdfUkVHSVNURVJfQ0FMTEJBQ0tTICovCiB9IFdXREdfSGFuZGxlVHlwZURlZjsKIAogI2lmIChVU0VfSEFMX1dXREdfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCkBAIC04Nyw4ICs4Nyw4IEBACiAgICovCiB0eXBlZGVmIGVudW0KIHsKLSAgSEFMX1dXREdfRVdJX0NCX0lEICAgICAgICAgID0gMHgwMHUsICAgIC8qITwgV1dERyBFV0kgY2FsbGJhY2sgSUQgKi8KLSAgSEFMX1dXREdfTVNQSU5JVF9DQl9JRCAgICAgID0gMHgwMXUsICAgIC8qITwgV1dERyBNc3BJbml0IGNhbGxiYWNrIElEICovCisgIEhBTF9XV0RHX0VXSV9DQl9JRCAgICAgICAgICA9IDB4MDBVLCAgICAvKiE8IFdXREcgRVdJIGNhbGxiYWNrIElEICovCisgIEhBTF9XV0RHX01TUElOSVRfQ0JfSUQgICAgICA9IDB4MDFVLCAgICAvKiE8IFdXREcgTXNwSW5pdCBjYWxsYmFjayBJRCAqLwogfSBIQUxfV1dER19DYWxsYmFja0lEVHlwZURlZjsKIAogLyoqCkBAIC05Niw3ICs5Niw3IEBACiAgICovCiB0eXBlZGVmIHZvaWQgKCpwV1dER19DYWxsYmFja1R5cGVEZWYpKFdXREdfSGFuZGxlVHlwZURlZiAqaHBwcCk7ICAvKiE8IHBvaW50ZXIgdG8gYSBXV0RHIGNvbW1vbiBjYWxsYmFjayBmdW5jdGlvbnMgKi8KIAotI2VuZGlmCisjZW5kaWYgLyogVVNFX0hBTF9XV0RHX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTI2MCw5ICsyNjAsMTAgQEAKIHZvaWQgICAgICAgICAgICAgICAgICBIQUxfV1dER19Nc3BJbml0KFdXREdfSGFuZGxlVHlwZURlZiAqaHd3ZGcpOwogLyogQ2FsbGJhY2tzIFJlZ2lzdGVyL1VuUmVnaXN0ZXIgZnVuY3Rpb25zICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICNpZiAoVVNFX0hBTF9XV0RHX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotSEFMX1N0YXR1c1R5cGVEZWYgICAgIEhBTF9XV0RHX1JlZ2lzdGVyQ2FsbGJhY2soV1dER19IYW5kbGVUeXBlRGVmICpod3dkZywgSEFMX1dXREdfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCwgcFdXREdfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CitIQUxfU3RhdHVzVHlwZURlZiAgICAgSEFMX1dXREdfUmVnaXN0ZXJDYWxsYmFjayhXV0RHX0hhbmRsZVR5cGVEZWYgKmh3d2RnLCBIQUxfV1dER19DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFdXREdfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjayk7CiBIQUxfU3RhdHVzVHlwZURlZiAgICAgSEFMX1dXREdfVW5SZWdpc3RlckNhbGxiYWNrKFdXREdfSGFuZGxlVHlwZURlZiAqaHd3ZGcsIEhBTF9XV0RHX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQpOwotI2VuZGlmCisjZW5kaWYgLyogVVNFX0hBTF9XV0RHX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogCiAvKioKICAgKiBAfQpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9sbF9hZGMuaCBiL0luYy9zdG0zMmY3eHhfbGxfYWRjLmgKaW5kZXggNzdmMGVhMi4uMmRhYjlhYiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9sbF9hZGMuaAorKysgYi9JbmMvc3RtMzJmN3h4X2xsX2FkYy5oCkBAIC00MDIsNyArNDAyLDcgQEAKIHsKICAgdWludDMyX3QgVHJpZ2dlclNvdXJjZTsgICAgICAgICAgICAgICAvKiE8IFNldCBBREMgZ3JvdXAgcmVndWxhciBjb252ZXJzaW9uIHRyaWdnZXIgc291cmNlOiBpbnRlcm5hbCAoU1cgc3RhcnQpIG9yIGZyb20gZXh0ZXJuYWwgSVAgKHRpbWVyIGV2ZW50LCBleHRlcm5hbCBpbnRlcnJ1cHQgbGluZSkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEFEQ19MTF9FQ19SRUdfVFJJR0dFUl9TT1VSQ0UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIE9uIHRoaXMgU1RNMzIgc2VyaWUsIHNldHRpbmcgb2YgZXh0ZXJuYWwgdHJpZ2dlciBlZGdlIGlzIHBlcmZvcm1lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGUgT24gdGhpcyBTVE0zMiBzZXJpZXMsIHNldHRpbmcgb2YgZXh0ZXJuYWwgdHJpZ2dlciBlZGdlIGlzIHBlcmZvcm1lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgZnVuY3Rpb24gQHJlZiBMTF9BRENfUkVHX1N0YXJ0Q29udmVyc2lvbkV4dFRyaWcoKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9BRENfUkVHX1NldFRyaWdnZXJTb3VyY2UoKS4gKi8KQEAgLTQ1Niw3ICs0NTYsNyBAQAogewogICB1aW50MzJfdCBUcmlnZ2VyU291cmNlOyAgICAgICAgICAgICAgIC8qITwgU2V0IEFEQyBncm91cCBpbmplY3RlZCBjb252ZXJzaW9uIHRyaWdnZXIgc291cmNlOiBpbnRlcm5hbCAoU1cgc3RhcnQpIG9yIGZyb20gZXh0ZXJuYWwgSVAgKHRpbWVyIGV2ZW50LCBleHRlcm5hbCBpbnRlcnJ1cHQgbGluZSkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEFEQ19MTF9FQ19JTkpfVFJJR0dFUl9TT1VSQ0UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIE9uIHRoaXMgU1RNMzIgc2VyaWUsIHNldHRpbmcgb2YgZXh0ZXJuYWwgdHJpZ2dlciBlZGdlIGlzIHBlcmZvcm1lZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQG5vdGUgT24gdGhpcyBTVE0zMiBzZXJpZXMsIHNldHRpbmcgb2YgZXh0ZXJuYWwgdHJpZ2dlciBlZGdlIGlzIHBlcmZvcm1lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgZnVuY3Rpb24gQHJlZiBMTF9BRENfSU5KX1N0YXJ0Q29udmVyc2lvbkV4dFRyaWcoKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9BRENfSU5KX1NldFRyaWdnZXJTb3VyY2UoKS4gKi8KQEAgLTUwMCw3ICs1MDAsNyBAQAogI2RlZmluZSBMTF9BRENfRkxBR19FT0NTICAgICAgICAgICAgICAgICAgIEFEQ19TUl9FT0MgICAgICAgICAvKiE8IEFEQyBmbGFnIEFEQyBncm91cCByZWd1bGFyIGVuZCBvZiB1bml0YXJ5IGNvbnZlcnNpb24gb3Igc2VxdWVuY2UgY29udmVyc2lvbnMgKHRvIGNvbmZpZ3VyZSBmbGFnIG9mIGVuZCBvZiBjb252ZXJzaW9uLCB1c2UgZnVuY3Rpb24gQHJlZiBMTF9BRENfUkVHX1NldEZsYWdFbmRPZkNvbnZlcnNpb24oKSApICovCiAjZGVmaW5lIExMX0FEQ19GTEFHX09WUiAgICAgICAgICAgICAgICAgICAgQURDX1NSX09WUiAgICAgICAgIC8qITwgQURDIGZsYWcgQURDIGdyb3VwIHJlZ3VsYXIgb3ZlcnJ1biAqLwogI2RlZmluZSBMTF9BRENfRkxBR19KU1RSVCAgICAgICAgICAgICAgICAgIEFEQ19TUl9KU1RSVCAgICAgICAvKiE8IEFEQyBmbGFnIEFEQyBncm91cCBpbmplY3RlZCBjb252ZXJzaW9uIHN0YXJ0ICovCi0jZGVmaW5lIExMX0FEQ19GTEFHX0pFT1MgICAgICAgICAgICAgICAgICAgQURDX1NSX0pFT0MgICAgICAgIC8qITwgQURDIGZsYWcgQURDIGdyb3VwIGluamVjdGVkIGVuZCBvZiBzZXF1ZW5jZSBjb252ZXJzaW9ucyAoTm90ZTogb24gdGhpcyBTVE0zMiBzZXJpZSwgdGhlcmUgaXMgbm8gZmxhZyBBREMgZ3JvdXAgaW5qZWN0ZWQgZW5kIG9mIHVuaXRhcnkgY29udmVyc2lvbi4gRmxhZyBub3RlZCBhcyAiSkVPQyIgaXMgY29ycmVzcG9uZGluZyB0byBmbGFnICJKRU9TIiBpbiBvdGhlciBTVE0zMiBmYW1pbGllcykgKi8KKyNkZWZpbmUgTExfQURDX0ZMQUdfSkVPUyAgICAgICAgICAgICAgICAgICBBRENfU1JfSkVPQyAgICAgICAgLyohPCBBREMgZmxhZyBBREMgZ3JvdXAgaW5qZWN0ZWQgZW5kIG9mIHNlcXVlbmNlIGNvbnZlcnNpb25zIChOb3RlOiBvbiB0aGlzIFNUTTMyIHNlcmllcywgdGhlcmUgaXMgbm8gZmxhZyBBREMgZ3JvdXAgaW5qZWN0ZWQgZW5kIG9mIHVuaXRhcnkgY29udmVyc2lvbi4gRmxhZyBub3RlZCBhcyAiSkVPQyIgaXMgY29ycmVzcG9uZGluZyB0byBmbGFnICJKRU9TIiBpbiBvdGhlciBTVE0zMiBmYW1pbGllcykgKi8KICNkZWZpbmUgTExfQURDX0ZMQUdfQVdEMSAgICAgICAgICAgICAgICAgICBBRENfU1JfQVdEICAgICAgICAgLyohPCBBREMgZmxhZyBBREMgYW5hbG9nIHdhdGNoZG9nIDEgKi8KICNkZWZpbmUgTExfQURDX0ZMQUdfRU9DU19NU1QgICAgICAgICAgICAgICBBRENfQ1NSX0VPQzEgICAgICAgLyohPCBBREMgZmxhZyBBREMgbXVsdGltb2RlIG1hc3RlciBncm91cCByZWd1bGFyIGVuZCBvZiB1bml0YXJ5IGNvbnZlcnNpb24gb3Igc2VxdWVuY2UgY29udmVyc2lvbnMgKHRvIGNvbmZpZ3VyZSBmbGFnIG9mIGVuZCBvZiBjb252ZXJzaW9uLCB1c2UgZnVuY3Rpb24gQHJlZiBMTF9BRENfUkVHX1NldEZsYWdFbmRPZkNvbnZlcnNpb24oKSApICovCiAjZGVmaW5lIExMX0FEQ19GTEFHX0VPQ1NfU0xWMSAgICAgICAgICAgICAgQURDX0NTUl9FT0MyICAgICAgIC8qITwgQURDIGZsYWcgQURDIG11bHRpbW9kZSBzbGF2ZSAxIGdyb3VwIHJlZ3VsYXIgZW5kIG9mIHVuaXRhcnkgY29udmVyc2lvbiBvciBzZXF1ZW5jZSBjb252ZXJzaW9ucyAodG8gY29uZmlndXJlIGZsYWcgb2YgZW5kIG9mIGNvbnZlcnNpb24sIHVzZSBmdW5jdGlvbiBAcmVmIExMX0FEQ19SRUdfU2V0RmxhZ0VuZE9mQ29udmVyc2lvbigpICkgKi8KQEAgLTUwOCw5ICs1MDgsOSBAQAogI2RlZmluZSBMTF9BRENfRkxBR19PVlJfTVNUICAgICAgICAgICAgICAgIEFEQ19DU1JfT1ZSMSAgICAvKiE8IEFEQyBmbGFnIEFEQyBtdWx0aW1vZGUgbWFzdGVyIGdyb3VwIHJlZ3VsYXIgb3ZlcnJ1biAqLyAKICNkZWZpbmUgTExfQURDX0ZMQUdfT1ZSX1NMVjEgICAgICAgICAgICAgICBBRENfQ1NSX09WUjIgICAvKiE8IEFEQyBmbGFnIEFEQyBtdWx0aW1vZGUgc2xhdmUgMSBncm91cCByZWd1bGFyIG92ZXJydW4gKi8KICNkZWZpbmUgTExfQURDX0ZMQUdfT1ZSX1NMVjIgICAgICAgICAgICAgICBBRENfQ1NSX09WUjMgICAvKiE8IEFEQyBmbGFnIEFEQyBtdWx0aW1vZGUgc2xhdmUgMiBncm91cCByZWd1bGFyIG92ZXJydW4gKi8KLSNkZWZpbmUgTExfQURDX0ZMQUdfSkVPU19NU1QgICAgICAgICAgICAgICBBRENfQ1NSX0pFT0MxICAgICAvKiE8IEFEQyBmbGFnIEFEQyBtdWx0aW1vZGUgbWFzdGVyIGdyb3VwIGluamVjdGVkIGVuZCBvZiBzZXF1ZW5jZSBjb252ZXJzaW9ucyAoTm90ZTogb24gdGhpcyBTVE0zMiBzZXJpZSwgdGhlcmUgaXMgbm8gZmxhZyBBREMgZ3JvdXAgaW5qZWN0ZWQgZW5kIG9mIHVuaXRhcnkgY29udmVyc2lvbi4gRmxhZyBub3RlZCBhcyAiSkVPQyIgaXMgY29ycmVzcG9uZGluZyB0byBmbGFnICJKRU9TIiBpbiBvdGhlciBTVE0zMiBmYW1pbGllcykgKi8KLSNkZWZpbmUgTExfQURDX0ZMQUdfSkVPU19TTFYxICAgICAgICAgICAgICBBRENfQ1NSX0pFT0MyICAvKiE8IEFEQyBmbGFnIEFEQyBtdWx0aW1vZGUgc2xhdmUgMSBncm91cCBpbmplY3RlZCBlbmQgb2Ygc2VxdWVuY2UgY29udmVyc2lvbnMgKE5vdGU6IG9uIHRoaXMgU1RNMzIgc2VyaWUsIHRoZXJlIGlzIG5vIGZsYWcgQURDIGdyb3VwIGluamVjdGVkIGVuZCBvZiB1bml0YXJ5IGNvbnZlcnNpb24uIEZsYWcgbm90ZWQgYXMgIkpFT0MiIGlzIGNvcnJlc3BvbmRpbmcgdG8gZmxhZyAiSkVPUyIgaW4gb3RoZXIgU1RNMzIgZmFtaWxpZXMpICovCi0jZGVmaW5lIExMX0FEQ19GTEFHX0pFT1NfU0xWMiAgICAgICAgICAgICAgQURDX0NTUl9KRU9DMyAgLyohPCBBREMgZmxhZyBBREMgbXVsdGltb2RlIHNsYXZlIDIgZ3JvdXAgaW5qZWN0ZWQgZW5kIG9mIHNlcXVlbmNlIGNvbnZlcnNpb25zIChOb3RlOiBvbiB0aGlzIFNUTTMyIHNlcmllLCB0aGVyZSBpcyBubyBmbGFnIEFEQyBncm91cCBpbmplY3RlZCBlbmQgb2YgdW5pdGFyeSBjb252ZXJzaW9uLiBGbGFnIG5vdGVkIGFzICJKRU9DIiBpcyBjb3JyZXNwb25kaW5nIHRvIGZsYWcgIkpFT1MiIGluIG90aGVyIFNUTTMyIGZhbWlsaWVzKSAqLworI2RlZmluZSBMTF9BRENfRkxBR19KRU9TX01TVCAgICAgICAgICAgICAgIEFEQ19DU1JfSkVPQzEgICAgIC8qITwgQURDIGZsYWcgQURDIG11bHRpbW9kZSBtYXN0ZXIgZ3JvdXAgaW5qZWN0ZWQgZW5kIG9mIHNlcXVlbmNlIGNvbnZlcnNpb25zIChOb3RlOiBvbiB0aGlzIFNUTTMyIHNlcmllcywgdGhlcmUgaXMgbm8gZmxhZyBBREMgZ3JvdXAgaW5qZWN0ZWQgZW5kIG9mIHVuaXRhcnkgY29udmVyc2lvbi4gRmxhZyBub3RlZCBhcyAiSkVPQyIgaXMgY29ycmVzcG9uZGluZyB0byBmbGFnICJKRU9TIiBpbiBvdGhlciBTVE0zMiBmYW1pbGllcykgKi8KKyNkZWZpbmUgTExfQURDX0ZMQUdfSkVPU19TTFYxICAgICAgICAgICAgICBBRENfQ1NSX0pFT0MyICAvKiE8IEFEQyBmbGFnIEFEQyBtdWx0aW1vZGUgc2xhdmUgMSBncm91cCBpbmplY3RlZCBlbmQgb2Ygc2VxdWVuY2UgY29udmVyc2lvbnMgKE5vdGU6IG9uIHRoaXMgU1RNMzIgc2VyaWVzLCB0aGVyZSBpcyBubyBmbGFnIEFEQyBncm91cCBpbmplY3RlZCBlbmQgb2YgdW5pdGFyeSBjb252ZXJzaW9uLiBGbGFnIG5vdGVkIGFzICJKRU9DIiBpcyBjb3JyZXNwb25kaW5nIHRvIGZsYWcgIkpFT1MiIGluIG90aGVyIFNUTTMyIGZhbWlsaWVzKSAqLworI2RlZmluZSBMTF9BRENfRkxBR19KRU9TX1NMVjIgICAgICAgICAgICAgIEFEQ19DU1JfSkVPQzMgIC8qITwgQURDIGZsYWcgQURDIG11bHRpbW9kZSBzbGF2ZSAyIGdyb3VwIGluamVjdGVkIGVuZCBvZiBzZXF1ZW5jZSBjb252ZXJzaW9ucyAoTm90ZTogb24gdGhpcyBTVE0zMiBzZXJpZXMsIHRoZXJlIGlzIG5vIGZsYWcgQURDIGdyb3VwIGluamVjdGVkIGVuZCBvZiB1bml0YXJ5IGNvbnZlcnNpb24uIEZsYWcgbm90ZWQgYXMgIkpFT0MiIGlzIGNvcnJlc3BvbmRpbmcgdG8gZmxhZyAiSkVPUyIgaW4gb3RoZXIgU1RNMzIgZmFtaWxpZXMpICovCiAjZGVmaW5lIExMX0FEQ19GTEFHX0FXRDFfTVNUICAgICAgICAgICAgICAgQURDX0NTUl9BV0QxICAgICAgIC8qITwgQURDIGZsYWcgQURDIG11bHRpbW9kZSBtYXN0ZXIgYW5hbG9nIHdhdGNoZG9nIDEgb2YgdGhlIEFEQyBtYXN0ZXIgKi8KICNkZWZpbmUgTExfQURDX0ZMQUdfQVdEMV9TTFYxICAgICAgICAgICAgICBBRENfQ1NSX0FXRDIgICAgICAgLyohPCBBREMgZmxhZyBBREMgbXVsdGltb2RlIHNsYXZlIDEgYW5hbG9nIHdhdGNoZG9nIDEgKi8KICNkZWZpbmUgTExfQURDX0ZMQUdfQVdEMV9TTFYyICAgICAgICAgICAgICBBRENfQ1NSX0FXRDMgICAgICAgLyohPCBBREMgZmxhZyBBREMgbXVsdGltb2RlIHNsYXZlIDIgYW5hbG9nIHdhdGNoZG9nIDEgKi8KQEAgLTUyNCw3ICs1MjQsNyBAQAogICAqLwogI2RlZmluZSBMTF9BRENfSVRfRU9DUyAgICAgICAgICAgICAgICAgICAgIEFEQ19DUjFfRU9DSUUgICAgICAvKiE8IEFEQyBpbnRlcnJ1cHRpb24gQURDIGdyb3VwIHJlZ3VsYXIgZW5kIG9mIHVuaXRhcnkgY29udmVyc2lvbiBvciBzZXF1ZW5jZSBjb252ZXJzaW9ucyAodG8gY29uZmlndXJlIGZsYWcgb2YgZW5kIG9mIGNvbnZlcnNpb24sIHVzZSBmdW5jdGlvbiBAcmVmIExMX0FEQ19SRUdfU2V0RmxhZ0VuZE9mQ29udmVyc2lvbigpICkgKi8KICNkZWZpbmUgTExfQURDX0lUX09WUiAgICAgICAgICAgICAgICAgICAgICBBRENfQ1IxX09WUklFICAgICAgLyohPCBBREMgaW50ZXJydXB0aW9uIEFEQyBncm91cCByZWd1bGFyIG92ZXJydW4gKi8KLSNkZWZpbmUgTExfQURDX0lUX0pFT1MgICAgICAgICAgICAgICAgICAgICBBRENfQ1IxX0pFT0NJRSAgICAgLyohPCBBREMgaW50ZXJydXB0aW9uIEFEQyBncm91cCBpbmplY3RlZCBlbmQgb2Ygc2VxdWVuY2UgY29udmVyc2lvbnMgKE5vdGU6IG9uIHRoaXMgU1RNMzIgc2VyaWUsIHRoZXJlIGlzIG5vIGZsYWcgQURDIGdyb3VwIGluamVjdGVkIGVuZCBvZiB1bml0YXJ5IGNvbnZlcnNpb24uIEZsYWcgbm90ZWQgYXMgIkpFT0MiIGlzIGNvcnJlc3BvbmRpbmcgdG8gZmxhZyAiSkVPUyIgaW4gb3RoZXIgU1RNMzIgZmFtaWxpZXMpICovCisjZGVmaW5lIExMX0FEQ19JVF9KRU9TICAgICAgICAgICAgICAgICAgICAgQURDX0NSMV9KRU9DSUUgICAgIC8qITwgQURDIGludGVycnVwdGlvbiBBREMgZ3JvdXAgaW5qZWN0ZWQgZW5kIG9mIHNlcXVlbmNlIGNvbnZlcnNpb25zIChOb3RlOiBvbiB0aGlzIFNUTTMyIHNlcmllcywgdGhlcmUgaXMgbm8gZmxhZyBBREMgZ3JvdXAgaW5qZWN0ZWQgZW5kIG9mIHVuaXRhcnkgY29udmVyc2lvbi4gRmxhZyBub3RlZCBhcyAiSkVPQyIgaXMgY29ycmVzcG9uZGluZyB0byBmbGFnICJKRU9TIiBpbiBvdGhlciBTVE0zMiBmYW1pbGllcykgKi8KICNkZWZpbmUgTExfQURDX0lUX0FXRDEgICAgICAgICAgICAgICAgICAgICBBRENfQ1IxX0FXRElFICAgICAgLyohPCBBREMgaW50ZXJydXB0aW9uIEFEQyBhbmFsb2cgd2F0Y2hkb2cgMSAqLwogLyoqCiAgICogQH0KQEAgLTU2MSw3ICs1NjEsNyBAQAogLyogICAgICAgSWYgdGhleSBhcmUgbm90IGxpc3RlZCBiZWxvdywgdGhleSBkbyBub3QgcmVxdWlyZSBhbnkgc3BlY2lmaWMgICAgICAgKi8KIC8qICAgICAgIHBhdGggZW5hYmxlLiBJbiB0aGlzIGNhc2UsIEFjY2VzcyB0byBtZWFzdXJlbWVudCBwYXRoIGlzIGRvbmUgICAgICAgICovCiAvKiAgICAgICBvbmx5IGJ5IHNlbGVjdGluZyB0aGUgY29ycmVzcG9uZGluZyBBREMgaW50ZXJuYWwgY2hhbm5lbC4gICAgICAgICAgICAqLwotI2RlZmluZSBMTF9BRENfUEFUSF9JTlRFUk5BTF9OT05FICAgICAgICAgIDB4MDAwMDAwMDBVICAgICAgICAgICAgLyohPCBBREMgbWVhc3VyZW1lbnQgcGF0aGVzIGFsbCBkaXNhYmxlZCAqLworI2RlZmluZSBMTF9BRENfUEFUSF9JTlRFUk5BTF9OT05FICAgICAgICAgIDB4MDAwMDAwMDBVICAgICAgICAgICAgLyohPCBBREMgbWVhc3VyZW1lbnQgcGF0aHMgYWxsIGRpc2FibGVkICovCiAjZGVmaW5lIExMX0FEQ19QQVRIX0lOVEVSTkFMX1ZSRUZJTlQgICAgICAgKEFEQ19DQ1JfVFNWUkVGRSkgICAgICAvKiE8IEFEQyBtZWFzdXJlbWVudCBwYXRoIHRvIGludGVybmFsIGNoYW5uZWwgVnJlZkludCAqLwogI2RlZmluZSBMTF9BRENfUEFUSF9JTlRFUk5BTF9URU1QU0VOU09SICAgIChBRENfQ0NSX1RTVlJFRkUpICAgICAgLyohPCBBREMgbWVhc3VyZW1lbnQgcGF0aCB0byBpbnRlcm5hbCBjaGFubmVsIHRlbXBlcmF0dXJlIHNlbnNvciAqLwogI2RlZmluZSBMTF9BRENfUEFUSF9JTlRFUk5BTF9WQkFUICAgICAgICAgIChBRENfQ0NSX1ZCQVRFKSAgICAgICAgLyohPCBBREMgbWVhc3VyZW1lbnQgcGF0aCB0byBpbnRlcm5hbCBjaGFubmVsIFZiYXQgKi8KQEAgLTU4NCw3ICs1ODQsNyBAQAogICAqIEB7CiAgICovCiAjZGVmaW5lIExMX0FEQ19EQVRBX0FMSUdOX1JJR0hUICAgICAgICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgICAvKiE8IEFEQyBjb252ZXJzaW9uIGRhdGEgYWxpZ25tZW50OiByaWdodCBhbGlnbmVkIChhbGlnbm1lbnQgb24gZGF0YSByZWdpc3RlciBMU0IgYml0IDApKi8KLSNkZWZpbmUgTExfQURDX0RBVEFfQUxJR05fTEVGVCAgICAgICAgICAgICAoQURDX0NSMl9BTElHTikgICAgICAgIC8qITwgQURDIGNvbnZlcnNpb24gZGF0YSBhbGlnbm1lbnQ6IGxlZnQgYWxpZ25lZCAoYWxpZ21lbnQgb24gZGF0YSByZWdpc3RlciBNU0IgYml0IDE1KSovCisjZGVmaW5lIExMX0FEQ19EQVRBX0FMSUdOX0xFRlQgICAgICAgICAgICAgKEFEQ19DUjJfQUxJR04pICAgICAgICAvKiE8IEFEQyBjb252ZXJzaW9uIGRhdGEgYWxpZ25tZW50OiBsZWZ0IGFsaWduZWQgKGFsaWdubWVudCBvbiBkYXRhIHJlZ2lzdGVyIE1TQiBiaXQgMTUpKi8KIC8qKgogICAqIEB9CiAgICovCkBAIC0xMDMxLDcgKzEwMzEsNyBAQAogLyogICAgICAgY29uZmlndXJhdGlvbiAoc3lzdGVtIGNsb2NrIHZlcnN1cyBBREMgY2xvY2spLCAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qICAgICAgIGFuZCB0aGVyZWZvcmUgbXVzdCBiZSBkZWZpbmVkIGluIHVzZXIgYXBwbGljYXRpb24uICAgICAgICAgICAgICAgICAgICovCiAvKiAgICAgICBJbmRpY2F0aW9ucyBmb3IgZXN0aW1hdGlvbiBvZiBBREMgdGltZW91dCBkZWxheXMsIGZvciB0aGlzICAgICAgICAgICAqLwotLyogICAgICAgU1RNMzIgc2VyaWU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgIFNUTTMyIHNlcmllczogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogICAgICAgLSBBREMgZW5hYmxlIHRpbWU6IG1heGltdW0gZGVsYXkgaXMgMnVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qICAgICAgICAgKHJlZmVyIHRvIGRldmljZSBkYXRhc2hlZXQsIHBhcmFtZXRlciAidFNUQUIiKSAgICAgICAgICAgICAgICAgICAgICovCiAvKiAgICAgICAtIEFEQyBjb252ZXJzaW9uIHRpbWU6IGR1cmF0aW9uIGRlcGVuZGluZyBvbiBBREMgY2xvY2sgYW5kIEFEQyAgICAgICAqLwpAQCAtMTYzNSw3ICsxNjM1LDcgQEAKICAgKiAgICAgICAgIGNvbm5lY3RlZCB0byBwaW4gVnJlZisuCiAgICogICAgICAgICBPbiBkZXZpY2VzIHdpdGggc21hbGwgcGFja2FnZSwgdGhlIHBpbiBWcmVmKyBpcyBub3QgcHJlc2VudAogICAqICAgICAgICAgYW5kIGludGVybmFsbHkgYm9uZGVkIHRvIHBpbiBWZGRhLgotICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZSwgY2FsaWJyYXRpb24gZGF0YSBvZiBpbnRlcm5hbCB2b2x0YWdlIHJlZmVyZW5jZQorICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZXMsIGNhbGlicmF0aW9uIGRhdGEgb2YgaW50ZXJuYWwgdm9sdGFnZSByZWZlcmVuY2UKICAgKiAgICAgICAgIFZyZWZJbnQgY29ycmVzcG9uZHMgdG8gYSByZXNvbHV0aW9uIG9mIDEyIGJpdHMsCiAgICogICAgICAgICB0aGlzIGlzIHRoZSByZWNvbW1lbmRlZCBBREMgcmVzb2x1dGlvbiB0byBjb252ZXJ0IHZvbHRhZ2Ugb2YKICAgKiAgICAgICAgIGludGVybmFsIHZvbHRhZ2UgcmVmZXJlbmNlIFZyZWZJbnQuCkBAIC0xNjg1LDcgKzE2ODUsNyBAQAogICAqIEBub3RlICAgQW5hbG9nIHJlZmVyZW5jZSB2b2x0YWdlIChWcmVmKykgbXVzdCBiZSBlaXRoZXIga25vd24gZnJvbQogICAqICAgICAgICAgdXNlciBib2FyZCBlbnZpcm9ubWVudCBvciBjYW4gYmUgY2FsY3VsYXRlZCB1c2luZyBBREMgbWVhc3VyZW1lbnQKICAgKiAgICAgICAgIGFuZCBBREMgaGVscGVyIG1hY3JvIEByZWYgX19MTF9BRENfQ0FMQ19WUkVGQU5BTE9HX1ZPTFRBR0UoKS4KLSAgKiBAbm90ZSAgIE9uIHRoaXMgU1RNMzIgc2VyaWUsIGNhbGlicmF0aW9uIGRhdGEgb2YgdGVtcGVyYXR1cmUgc2Vuc29yCisgICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllcywgY2FsaWJyYXRpb24gZGF0YSBvZiB0ZW1wZXJhdHVyZSBzZW5zb3IKICAgKiAgICAgICAgIGNvcnJlc3BvbmRzIHRvIGEgcmVzb2x1dGlvbiBvZiAxMiBiaXRzLAogICAqICAgICAgICAgdGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgQURDIHJlc29sdXRpb24gdG8gY29udmVydCB2b2x0YWdlIG9mCiAgICogICAgICAgICB0ZW1wZXJhdHVyZSBzZW5zb3IuCkBAIC0xODMyLDcgKzE4MzIsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQzMl90IExMX0FEQ19ETUFfR2V0UmVnQWRkcihBRENfVHlwZURlZiAqQURDeCwgdWludDMyX3QgUmVnaXN0ZXIpCiB7Ci0gIHJlZ2lzdGVyIHVpbnQzMl90IGRhdGFfcmVnX2FkZHIgPSAwVTsKKyAgdWludDMyX3QgZGF0YV9yZWdfYWRkciA9IDBVOwogICAKICAgaWYgKFJlZ2lzdGVyID09IExMX0FEQ19ETUFfUkVHX1JFR1VMQVJfREFUQSkKICAgewpAQCAtMjA4MCw3ICsyMDgwLDcgQEAKICAgKiBAYnJpZWYgIFNldCBBREMgZ3JvdXAgcmVndWxhciBjb252ZXJzaW9uIHRyaWdnZXIgc291cmNlOgogICAqICAgICAgICAgaW50ZXJuYWwgKFNXIHN0YXJ0KSBvciBmcm9tIGV4dGVybmFsIElQICh0aW1lciBldmVudCwKICAgKiAgICAgICAgIGV4dGVybmFsIGludGVycnVwdCBsaW5lKS4KLSAgKiBAbm90ZSAgIE9uIHRoaXMgU1RNMzIgc2VyaWUsIHNldHRpbmcgb2YgZXh0ZXJuYWwgdHJpZ2dlciBlZGdlIGlzIHBlcmZvcm1lZAorICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZXMsIHNldHRpbmcgb2YgZXh0ZXJuYWwgdHJpZ2dlciBlZGdlIGlzIHBlcmZvcm1lZAogICAqICAgICAgICAgdXNpbmcgZnVuY3Rpb24gQHJlZiBMTF9BRENfUkVHX1N0YXJ0Q29udmVyc2lvbkV4dFRyaWcoKS4KICAgKiBAbm90ZSAgIEF2YWlsYWJpbGl0eSBvZiBwYXJhbWV0ZXJzIG9mIHRyaWdnZXIgc291cmNlcyBmcm9tIHRpbWVyIAogICAqICAgICAgICAgZGVwZW5kcyBvbiB0aW1lcnMgYXZhaWxhYmlsaXR5IG9uIHRoZSBzZWxlY3RlZCBkZXZpY2UuCkBAIC0yMTA4LDcgKzIxMDgsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfQURDX1JFR19TZXRUcmlnZ2VyU291cmNlKEFEQ19UeXBlRGVmICpBREN4LCB1aW50MzJfdCBUcmlnZ2VyU291cmNlKQogewotLyogTm90ZTogT24gdGhpcyBTVE0zMiBzZXJpZSwgQURDIGdyb3VwIHJlZ3VsYXIgZXh0ZXJuYWwgdHJpZ2dlciBlZGdlICAgICAgICAqLworLyogTm90ZTogT24gdGhpcyBTVE0zMiBzZXJpZXMsIEFEQyBncm91cCByZWd1bGFyIGV4dGVybmFsIHRyaWdnZXIgZWRnZSAgICAgICAgKi8KIC8qICAgICAgIGlzIHVzZWQgdG8gcGVyZm9ybSBhIEFEQyBjb252ZXJzaW9uIHN0YXJ0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAgICAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHNldCBleHRlcm5hbCB0cmlnZ2VyIGVkZ2UuICAgICAgICAgICAgICAgICAgICAqLwogLyogICAgICAgVGhpcyBmZWF0dXJlIGlzIHNldCB1c2luZyBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTIxNTEsMTEgKzIxNTEsMTEgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MzJfdCBMTF9BRENfUkVHX0dldFRyaWdnZXJTb3VyY2UoQURDX1R5cGVEZWYgKkFEQ3gpCiB7Ci0gIHJlZ2lzdGVyIHVpbnQzMl90IFRyaWdnZXJTb3VyY2UgPSBSRUFEX0JJVChBREN4LT5DUjIsIEFEQ19DUjJfRVhUU0VMIHwgQURDX0NSMl9FWFRFTik7CisgIHVpbnQzMl90IFRyaWdnZXJTb3VyY2UgPSBSRUFEX0JJVChBREN4LT5DUjIsIEFEQ19DUjJfRVhUU0VMIHwgQURDX0NSMl9FWFRFTik7CiAgIAogICAvKiBWYWx1ZSBmb3Igc2hpZnQgb2YgezA7IDQ7IDg7IDEyfSBkZXBlbmRpbmcgb24gdmFsdWUgb2YgYml0ZmllbGQgICAgICAgICAgKi8KICAgLyogY29ycmVzcG9uZGluZyB0byBBRENfQ1IyX0VYVEVOIHswOyAxOyAyOyAzfS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gIHJlZ2lzdGVyIHVpbnQzMl90IFNoaWZ0RXh0ZW4gPSAoKFRyaWdnZXJTb3VyY2UgJiBBRENfQ1IyX0VYVEVOKSA+PiAoQURDX1JFR19UUklHX0VYVEVOX0JJVE9GRlNFVF9QT1MgLSAyVSkpOworICB1aW50MzJfdCBTaGlmdEV4dGVuID0gKChUcmlnZ2VyU291cmNlICYgQURDX0NSMl9FWFRFTikgPj4gKEFEQ19SRUdfVFJJR19FWFRFTl9CSVRPRkZTRVRfUE9TIC0gMlUpKTsKICAgCiAgIC8qIFNldCBiaXRmaWVsZCBjb3JyZXNwb25kaW5nIHRvIEFEQ19DUjJfRVhURU4gYW5kIEFEQ19DUjJfRVhUU0VMICAgICAgICAgICAqLwogICAvKiB0byBtYXRjaCB3aXRoIHRyaWdnZXJzIGxpdGVyYWxzIGRlZmluaXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTIxODQsNyArMjE4NCw3IEBACiAvKioKICAgKiBAYnJpZWYgIEdldCBBREMgZ3JvdXAgcmVndWxhciBjb252ZXJzaW9uIHRyaWdnZXIgcG9sYXJpdHkuCiAgICogQG5vdGUgICBBcHBsaWNhYmxlIG9ubHkgZm9yIHRyaWdnZXIgc291cmNlIHNldCB0byBleHRlcm5hbCB0cmlnZ2VyLgotICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZSwgc2V0dGluZyBvZiBleHRlcm5hbCB0cmlnZ2VyIGVkZ2UgaXMgcGVyZm9ybWVkCisgICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllcywgc2V0dGluZyBvZiBleHRlcm5hbCB0cmlnZ2VyIGVkZ2UgaXMgcGVyZm9ybWVkCiAgICogICAgICAgICB1c2luZyBmdW5jdGlvbiBAcmVmIExMX0FEQ19SRUdfU3RhcnRDb252ZXJzaW9uRXh0VHJpZygpLgogICAqIEBybXRvbGwgQ1IyICAgICAgRVhURU4gICAgICAgICAgTExfQURDX1JFR19HZXRUcmlnZ2VyRWRnZQogICAqIEBwYXJhbSAgQURDeCBBREMgaW5zdGFuY2UKQEAgLTIyMjYsNyArMjIyNiw3IEBACiAgICogICAgICAgICAgICAgaGlnaGVzdCBjaGFubmVsIG51bWJlcikuCiAgICogICAgICAgICAgIFNlcXVlbmNlciByYW5rcyBhcmUgc2VsZWN0ZWQgdXNpbmcKICAgKiAgICAgICAgICAgZnVuY3Rpb24gIkxMX0FEQ19SRUdfU2V0U2VxdWVuY2VyQ2hhbm5lbHMoKSIuCi0gICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllLCBncm91cCByZWd1bGFyIHNlcXVlbmNlciBjb25maWd1cmF0aW9uCisgICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllcywgZ3JvdXAgcmVndWxhciBzZXF1ZW5jZXIgY29uZmlndXJhdGlvbgogICAqICAgICAgICAgaXMgY29uZGl0aW9uZWQgdG8gQURDIGluc3RhbmNlIHNlcXVlbmNlciBtb2RlLgogICAqICAgICAgICAgSWYgQURDIGluc3RhbmNlIHNlcXVlbmNlciBtb2RlIGlzIGRpc2FibGVkLCBzZXF1ZW5jZXJzIG9mCiAgICogICAgICAgICBhbGwgZ3JvdXBzIChncm91cCByZWd1bGFyLCBncm91cCBpbmplY3RlZCkgY2FuIGJlIGNvbmZpZ3VyZWQKQEAgLTIyODcsNyArMjI4Nyw3IEBACiAgICogICAgICAgICAgICAgaGlnaGVzdCBjaGFubmVsIG51bWJlcikuCiAgICogICAgICAgICAgIFNlcXVlbmNlciByYW5rcyBhcmUgc2VsZWN0ZWQgdXNpbmcKICAgKiAgICAgICAgICAgZnVuY3Rpb24gIkxMX0FEQ19SRUdfU2V0U2VxdWVuY2VyQ2hhbm5lbHMoKSIuCi0gICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllLCBncm91cCByZWd1bGFyIHNlcXVlbmNlciBjb25maWd1cmF0aW9uCisgICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllcywgZ3JvdXAgcmVndWxhciBzZXF1ZW5jZXIgY29uZmlndXJhdGlvbgogICAqICAgICAgICAgaXMgY29uZGl0aW9uZWQgdG8gQURDIGluc3RhbmNlIHNlcXVlbmNlciBtb2RlLgogICAqICAgICAgICAgSWYgQURDIGluc3RhbmNlIHNlcXVlbmNlciBtb2RlIGlzIGRpc2FibGVkLCBzZXF1ZW5jZXJzIG9mCiAgICogICAgICAgICBhbGwgZ3JvdXBzIChncm91cCByZWd1bGFyLCBncm91cCBpbmplY3RlZCkgY2FuIGJlIGNvbmZpZ3VyZWQKQEAgLTIzNzcsMTMgKzIzNzcsMTMgQEAKICAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgY29uZmlndXJhdGlvbiBvZjoKICAgKiAgICAgICAgIC0gQ2hhbm5lbHMgb3JkZXJpbmcgaW50byBlYWNoIHJhbmsgb2Ygc2NhbiBzZXF1ZW5jZToKICAgKiAgICAgICAgICAgd2hhdGV2ZXIgY2hhbm5lbCBjYW4gYmUgcGxhY2VkIGludG8gd2hhdGV2ZXIgcmFuay4KLSAgKiBAbm90ZSAgIE9uIHRoaXMgU1RNMzIgc2VyaWUsIEFEQyBncm91cCByZWd1bGFyIHNlcXVlbmNlciBpcworICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZXMsIEFEQyBncm91cCByZWd1bGFyIHNlcXVlbmNlciBpcwogICAqICAgICAgICAgZnVsbHkgY29uZmlndXJhYmxlOiBzZXF1ZW5jZXIgbGVuZ3RoIGFuZCBlYWNoIHJhbmsKICAgKiAgICAgICAgIGFmZmVjdGF0aW9uIHRvIGEgY2hhbm5lbCBhcmUgY29uZmlndXJhYmxlLgogICAqICAgICAgICAgUmVmZXIgdG8gZGVzY3JpcHRpb24gb2YgZnVuY3Rpb24gQHJlZiBMTF9BRENfUkVHX1NldFNlcXVlbmNlckxlbmd0aCgpLgogICAqIEBub3RlICAgRGVwZW5kaW5nIG9uIGRldmljZXMgYW5kIHBhY2thZ2VzLCBzb21lIGNoYW5uZWxzIG1heSBub3QgYmUgYXZhaWxhYmxlLgogICAqICAgICAgICAgUmVmZXIgdG8gZGV2aWNlIGRhdGFzaGVldCBmb3IgY2hhbm5lbHMgYXZhaWxhYmlsaXR5LgotICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZSwgdG8gbWVhc3VyZSBpbnRlcm5hbCBjaGFubmVscyAoVnJlZkludCwKKyAgKiBAbm90ZSAgIE9uIHRoaXMgU1RNMzIgc2VyaWVzLCB0byBtZWFzdXJlIGludGVybmFsIGNoYW5uZWxzIChWcmVmSW50LAogICAqICAgICAgICAgVGVtcFNlbnNvciwgLi4uKSwgbWVhc3VyZW1lbnQgcGF0aHMgdG8gaW50ZXJuYWwgY2hhbm5lbHMgbXVzdCBiZQogICAqICAgICAgICAgZW5hYmxlZCBzZXBhcmF0ZWx5LgogICAqICAgICAgICAgVGhpcyBjYW4gYmUgZG9uZSB1c2luZyBmdW5jdGlvbiBAcmVmIExMX0FEQ19TZXRDb21tb25QYXRoSW50ZXJuYWxDaCgpLgpAQCAtMjQ1NSw3ICsyNDU1LDcgQEAKICAgLyogaW4gcmVnaXN0ZXIgYW5kIHJlZ2lzdGVyIHBvc2l0aW9uIGRlcGVuZGluZyBvbiBwYXJhbWV0ZXIgIlJhbmsiLiAgICAgICAgICovCiAgIC8qIFBhcmFtZXRlcnMgIlJhbmsiIGFuZCAiQ2hhbm5lbCIgYXJlIHVzZWQgd2l0aCBtYXNrcyBiZWNhdXNlIGNvbnRhaW5pbmcgICAqLwogICAvKiBvdGhlciBiaXRzIHJlc2VydmVkIGZvciBvdGhlciBwdXJwb3NlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgcmVnaXN0ZXIgX19JTyB1aW50MzJfdCAqcHJlZyA9IF9fQURDX1BUUl9SRUdfT0ZGU0VUKEFEQ3gtPlNRUjEsIF9fQURDX01BU0tfU0hJRlQoUmFuaywgQURDX1JFR19TUVJYX1JFR09GRlNFVF9NQVNLKSk7CisgIF9fSU8gdWludDMyX3QgKnByZWcgPSBfX0FEQ19QVFJfUkVHX09GRlNFVChBREN4LT5TUVIxLCBfX0FEQ19NQVNLX1NISUZUKFJhbmssIEFEQ19SRUdfU1FSWF9SRUdPRkZTRVRfTUFTSykpOwogICAKICAgTU9ESUZZX1JFRygqcHJlZywKICAgICAgICAgICAgICBBRENfQ0hBTk5FTF9JRF9OVU1CRVJfTUFTSyA8PCAoUmFuayAmIEFEQ19SRUdfUkFOS19JRF9TUVJYX01BU0spLApAQCAtMjQ2NSw3ICsyNDY1LDcgQEAKIC8qKgogICAqIEBicmllZiAgR2V0IEFEQyBncm91cCByZWd1bGFyIHNlcXVlbmNlOiBjaGFubmVsIG9uIHRoZSBzZWxlY3RlZAogICAqICAgICAgICAgc2NhbiBzZXF1ZW5jZSByYW5rLgotICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZSwgQURDIGdyb3VwIHJlZ3VsYXIgc2VxdWVuY2VyIGlzCisgICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllcywgQURDIGdyb3VwIHJlZ3VsYXIgc2VxdWVuY2VyIGlzCiAgICogICAgICAgICBmdWxseSBjb25maWd1cmFibGU6IHNlcXVlbmNlciBsZW5ndGggYW5kIGVhY2ggcmFuawogICAqICAgICAgICAgYWZmZWN0YXRpb24gdG8gYSBjaGFubmVsIGFyZSBjb25maWd1cmFibGUuCiAgICogICAgICAgICBSZWZlciB0byBkZXNjcmlwdGlvbiBvZiBmdW5jdGlvbiBAcmVmIExMX0FEQ19SRUdfU2V0U2VxdWVuY2VyTGVuZ3RoKCkuCkBAIC0yNTQ4LDcgKzI1NDgsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQzMl90IExMX0FEQ19SRUdfR2V0U2VxdWVuY2VyUmFua3MoQURDX1R5cGVEZWYgKkFEQ3gsIHVpbnQzMl90IFJhbmspCiB7Ci0gIHJlZ2lzdGVyIF9fSU8gdWludDMyX3QgKnByZWcgPSBfX0FEQ19QVFJfUkVHX09GRlNFVChBREN4LT5TUVIxLCBfX0FEQ19NQVNLX1NISUZUKFJhbmssIEFEQ19SRUdfU1FSWF9SRUdPRkZTRVRfTUFTSykpOworICBfX0lPIHVpbnQzMl90ICpwcmVnID0gX19BRENfUFRSX1JFR19PRkZTRVQoQURDeC0+U1FSMSwgX19BRENfTUFTS19TSElGVChSYW5rLCBBRENfUkVHX1NRUlhfUkVHT0ZGU0VUX01BU0spKTsKICAgCiAgIHJldHVybiAodWludDMyX3QpIChSRUFEX0JJVCgqcHJlZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFEQ19DSEFOTkVMX0lEX05VTUJFUl9NQVNLIDw8IChSYW5rICYgQURDX1JFR19SQU5LX0lEX1NRUlhfTUFTSykpCkBAIC0yNzEzLDcgKzI3MTMsNyBAQAogICAqIEBicmllZiAgU2V0IEFEQyBncm91cCBpbmplY3RlZCBjb252ZXJzaW9uIHRyaWdnZXIgc291cmNlOgogICAqICAgICAgICAgaW50ZXJuYWwgKFNXIHN0YXJ0KSBvciBmcm9tIGV4dGVybmFsIElQICh0aW1lciBldmVudCwKICAgKiAgICAgICAgIGV4dGVybmFsIGludGVycnVwdCBsaW5lKS4KLSAgKiBAbm90ZSAgIE9uIHRoaXMgU1RNMzIgc2VyaWUsIHNldHRpbmcgb2YgZXh0ZXJuYWwgdHJpZ2dlciBlZGdlIGlzIHBlcmZvcm1lZAorICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZXMsIHNldHRpbmcgb2YgZXh0ZXJuYWwgdHJpZ2dlciBlZGdlIGlzIHBlcmZvcm1lZAogICAqICAgICAgICAgdXNpbmcgZnVuY3Rpb24gQHJlZiBMTF9BRENfSU5KX1N0YXJ0Q29udmVyc2lvbkV4dFRyaWcoKS4KICAgKiBAbm90ZSAgIEF2YWlsYWJpbGl0eSBvZiBwYXJhbWV0ZXJzIG9mIHRyaWdnZXIgc291cmNlcyBmcm9tIHRpbWVyIAogICAqICAgICAgICAgZGVwZW5kcyBvbiB0aW1lcnMgYXZhaWxhYmlsaXR5IG9uIHRoZSBzZWxlY3RlZCBkZXZpY2UuCkBAIC0yNzQwLDcgKzI3NDAsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfQURDX0lOSl9TZXRUcmlnZ2VyU291cmNlKEFEQ19UeXBlRGVmICpBREN4LCB1aW50MzJfdCBUcmlnZ2VyU291cmNlKQogewotLyogTm90ZTogT24gdGhpcyBTVE0zMiBzZXJpZSwgQURDIGdyb3VwIGluamVjdGVkIGV4dGVybmFsIHRyaWdnZXIgZWRnZSAgICAgICAqLworLyogTm90ZTogT24gdGhpcyBTVE0zMiBzZXJpZXMsIEFEQyBncm91cCBpbmplY3RlZCBleHRlcm5hbCB0cmlnZ2VyIGVkZ2UgICAgICAgKi8KIC8qICAgICAgIGlzIHVzZWQgdG8gcGVyZm9ybSBhIEFEQyBjb252ZXJzaW9uIHN0YXJ0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAgICAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHNldCBleHRlcm5hbCB0cmlnZ2VyIGVkZ2UuICAgICAgICAgICAgICAgICAgICAqLwogLyogICAgICAgVGhpcyBmZWF0dXJlIGlzIHNldCB1c2luZyBmdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTI3ODIsMTEgKzI3ODIsMTEgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MzJfdCBMTF9BRENfSU5KX0dldFRyaWdnZXJTb3VyY2UoQURDX1R5cGVEZWYgKkFEQ3gpCiB7Ci0gIHJlZ2lzdGVyIHVpbnQzMl90IFRyaWdnZXJTb3VyY2UgPSBSRUFEX0JJVChBREN4LT5DUjIsIEFEQ19DUjJfSkVYVFNFTCB8IEFEQ19DUjJfSkVYVEVOKTsKKyAgdWludDMyX3QgVHJpZ2dlclNvdXJjZSA9IFJFQURfQklUKEFEQ3gtPkNSMiwgQURDX0NSMl9KRVhUU0VMIHwgQURDX0NSMl9KRVhURU4pOwogICAKICAgLyogVmFsdWUgZm9yIHNoaWZ0IG9mIHswOyA0OyA4OyAxMn0gZGVwZW5kaW5nIG9uIHZhbHVlIG9mIGJpdGZpZWxkICAgICAgICAgICovCiAgIC8qIGNvcnJlc3BvbmRpbmcgdG8gQURDX0NSMl9KRVhURU4gezA7IDE7IDI7IDN9LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICByZWdpc3RlciB1aW50MzJfdCBTaGlmdEV4dGVuID0gKChUcmlnZ2VyU291cmNlICYgQURDX0NSMl9KRVhURU4pID4+IChBRENfSU5KX1RSSUdfRVhURU5fQklUT0ZGU0VUX1BPUyAtIDJVKSk7CisgIHVpbnQzMl90IFNoaWZ0RXh0ZW4gPSAoKFRyaWdnZXJTb3VyY2UgJiBBRENfQ1IyX0pFWFRFTikgPj4gKEFEQ19JTkpfVFJJR19FWFRFTl9CSVRPRkZTRVRfUE9TIC0gMlUpKTsKICAgCiAgIC8qIFNldCBiaXRmaWVsZCBjb3JyZXNwb25kaW5nIHRvIEFEQ19DUjJfSkVYVEVOIGFuZCBBRENfQ1IyX0pFWFRTRUwgICAgICAgICAqLwogICAvKiB0byBtYXRjaCB3aXRoIHRyaWdnZXJzIGxpdGVyYWxzIGRlZmluaXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTI4MzMsNyArMjgzMyw3IEBACiAgICogICAgICAgICAtIFNlcXVlbmNlIGxlbmd0aDogTnVtYmVyIG9mIHJhbmtzIGluIHRoZSBzY2FuIHNlcXVlbmNlLgogICAqICAgICAgICAgLSBTZXF1ZW5jZSBkaXJlY3Rpb246IFVubGVzcyBzcGVjaWZpZWQgaW4gcGFyYW1ldGVycywgc2VxdWVuY2VyCiAgICogICAgICAgICAgIHNjYW4gZGlyZWN0aW9uIGlzIGZvcndhcmQgKGZyb20gcmFuayAxIHRvIHJhbmsgbikuCi0gICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllLCBncm91cCBpbmplY3RlZCBzZXF1ZW5jZXIgY29uZmlndXJhdGlvbgorICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZXMsIGdyb3VwIGluamVjdGVkIHNlcXVlbmNlciBjb25maWd1cmF0aW9uCiAgICogICAgICAgICBpcyBjb25kaXRpb25lZCB0byBBREMgaW5zdGFuY2Ugc2VxdWVuY2VyIG1vZGUuCiAgICogICAgICAgICBJZiBBREMgaW5zdGFuY2Ugc2VxdWVuY2VyIG1vZGUgaXMgZGlzYWJsZWQsIHNlcXVlbmNlcnMgb2YKICAgKiAgICAgICAgIGFsbCBncm91cHMgKGdyb3VwIHJlZ3VsYXIsIGdyb3VwIGluamVjdGVkKSBjYW4gYmUgY29uZmlndXJlZApAQCAtMjg2MSw3ICsyODYxLDcgQEAKICAgKiAgICAgICAgIC0gU2VxdWVuY2UgbGVuZ3RoOiBOdW1iZXIgb2YgcmFua3MgaW4gdGhlIHNjYW4gc2VxdWVuY2UuCiAgICogICAgICAgICAtIFNlcXVlbmNlIGRpcmVjdGlvbjogVW5sZXNzIHNwZWNpZmllZCBpbiBwYXJhbWV0ZXJzLCBzZXF1ZW5jZXIKICAgKiAgICAgICAgICAgc2NhbiBkaXJlY3Rpb24gaXMgZm9yd2FyZCAoZnJvbSByYW5rIDEgdG8gcmFuayBuKS4KLSAgKiBAbm90ZSAgIE9uIHRoaXMgU1RNMzIgc2VyaWUsIGdyb3VwIGluamVjdGVkIHNlcXVlbmNlciBjb25maWd1cmF0aW9uCisgICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllcywgZ3JvdXAgaW5qZWN0ZWQgc2VxdWVuY2VyIGNvbmZpZ3VyYXRpb24KICAgKiAgICAgICAgIGlzIGNvbmRpdGlvbmVkIHRvIEFEQyBpbnN0YW5jZSBzZXF1ZW5jZXIgbW9kZS4KICAgKiAgICAgICAgIElmIEFEQyBpbnN0YW5jZSBzZXF1ZW5jZXIgbW9kZSBpcyBkaXNhYmxlZCwgc2VxdWVuY2VycyBvZgogICAqICAgICAgICAgYWxsIGdyb3VwcyAoZ3JvdXAgcmVndWxhciwgZ3JvdXAgaW5qZWN0ZWQpIGNhbiBiZSBjb25maWd1cmVkCkBAIC0yOTIwLDcgKzI5MjAsNyBAQAogICAqICAgICAgICAgc2VxdWVuY2UgcmFuay4KICAgKiBAbm90ZSAgIERlcGVuZGluZyBvbiBkZXZpY2VzIGFuZCBwYWNrYWdlcywgc29tZSBjaGFubmVscyBtYXkgbm90IGJlIGF2YWlsYWJsZS4KICAgKiAgICAgICAgIFJlZmVyIHRvIGRldmljZSBkYXRhc2hlZXQgZm9yIGNoYW5uZWxzIGF2YWlsYWJpbGl0eS4KLSAgKiBAbm90ZSAgIE9uIHRoaXMgU1RNMzIgc2VyaWUsIHRvIG1lYXN1cmUgaW50ZXJuYWwgY2hhbm5lbHMgKFZyZWZJbnQsCisgICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllcywgdG8gbWVhc3VyZSBpbnRlcm5hbCBjaGFubmVscyAoVnJlZkludCwKICAgKiAgICAgICAgIFRlbXBTZW5zb3IsIC4uLiksIG1lYXN1cmVtZW50IHBhdGhzIHRvIGludGVybmFsIGNoYW5uZWxzIG11c3QgYmUKICAgKiAgICAgICAgIGVuYWJsZWQgc2VwYXJhdGVseS4KICAgKiAgICAgICAgIFRoaXMgY2FuIGJlIGRvbmUgdXNpbmcgZnVuY3Rpb24gQHJlZiBMTF9BRENfU2V0Q29tbW9uUGF0aEludGVybmFsQ2goKS4KQEAgLTI5NjgsNyArMjk2OCw3IEBACiAgIC8qIGluIHJlZ2lzdGVyIGRlcGVuZGluZyBvbiBwYXJhbWV0ZXIgIlJhbmsiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAvKiBQYXJhbWV0ZXJzICJSYW5rIiBhbmQgIkNoYW5uZWwiIGFyZSB1c2VkIHdpdGggbWFza3MgYmVjYXVzZSBjb250YWluaW5nICAgKi8KICAgLyogb3RoZXIgYml0cyByZXNlcnZlZCBmb3Igb3RoZXIgcHVycG9zZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gIHJlZ2lzdGVyIHVpbnQzMl90IHRtcHJlZzEgPSAoUkVBRF9CSVQoQURDeC0+SlNRUiwgQURDX0pTUVJfSkwpID4+IEFEQ19KU1FSX0pMX1BvcykgKyAxVTsKKyAgdWludDMyX3QgdG1wcmVnMSA9IChSRUFEX0JJVChBREN4LT5KU1FSLCBBRENfSlNRUl9KTCkgPj4gQURDX0pTUVJfSkxfUG9zKSArIDFVOwogICAKICAgTU9ESUZZX1JFRyhBREN4LT5KU1FSLAogICAgICAgICAgICAgIEFEQ19DSEFOTkVMX0lEX05VTUJFUl9NQVNLIDw8ICg1VSAqICh1aW50OF90KSgoKFJhbmspICsgM1UpIC0gKHRtcHJlZzEpKSksCkBAIC0zMDMzLDcgKzMwMzMsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQzMl90IExMX0FEQ19JTkpfR2V0U2VxdWVuY2VyUmFua3MoQURDX1R5cGVEZWYgKkFEQ3gsIHVpbnQzMl90IFJhbmspCiB7Ci0gIHJlZ2lzdGVyIHVpbnQzMl90IHRtcHJlZzEgPSAoUkVBRF9CSVQoQURDeC0+SlNRUiwgQURDX0pTUVJfSkwpID4+IEFEQ19KU1FSX0pMX1BvcykgICsgMVU7CisgIHVpbnQzMl90IHRtcHJlZzEgPSAoUkVBRF9CSVQoQURDeC0+SlNRUiwgQURDX0pTUVJfSkwpID4+IEFEQ19KU1FSX0pMX1BvcykgICsgMVU7CiAgIAogICByZXR1cm4gKHVpbnQzMl90KShSRUFEX0JJVChBREN4LT5KU1FSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRENfQ0hBTk5FTF9JRF9OVU1CRVJfTUFTSyA8PCAoNVUgKiAodWludDhfdCkoKChSYW5rKSArIDNVKSAtICh0bXByZWcxKSkpKQpAQCAtMzExMyw3ICszMTEzLDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX0FEQ19JTkpfU2V0T2Zmc2V0KEFEQ19UeXBlRGVmICpBREN4LCB1aW50MzJfdCBSYW5rLCB1aW50MzJfdCBPZmZzZXRMZXZlbCkKIHsKLSAgcmVnaXN0ZXIgX19JTyB1aW50MzJfdCAqcHJlZyA9IF9fQURDX1BUUl9SRUdfT0ZGU0VUKEFEQ3gtPkpPRlIxLCBfX0FEQ19NQVNLX1NISUZUKFJhbmssIEFEQ19JTkpfSk9GUlhfUkVHT0ZGU0VUX01BU0spKTsKKyAgX19JTyB1aW50MzJfdCAqcHJlZyA9IF9fQURDX1BUUl9SRUdfT0ZGU0VUKEFEQ3gtPkpPRlIxLCBfX0FEQ19NQVNLX1NISUZUKFJhbmssIEFEQ19JTkpfSk9GUlhfUkVHT0ZGU0VUX01BU0spKTsKICAgCiAgIE1PRElGWV9SRUcoKnByZWcsCiAgICAgICAgICAgICAgQURDX0pPRlIxX0pPRkZTRVQxLApAQCAtMzE0MCw3ICszMTQwLDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MzJfdCBMTF9BRENfSU5KX0dldE9mZnNldChBRENfVHlwZURlZiAqQURDeCwgdWludDMyX3QgUmFuaykKIHsKLSAgcmVnaXN0ZXIgX19JTyB1aW50MzJfdCAqcHJlZyA9IF9fQURDX1BUUl9SRUdfT0ZGU0VUKEFEQ3gtPkpPRlIxLCBfX0FEQ19NQVNLX1NISUZUKFJhbmssIEFEQ19JTkpfSk9GUlhfUkVHT0ZGU0VUX01BU0spKTsKKyAgX19JTyB1aW50MzJfdCAqcHJlZyA9IF9fQURDX1BUUl9SRUdfT0ZGU0VUKEFEQ3gtPkpPRlIxLCBfX0FEQ19NQVNLX1NISUZUKFJhbmssIEFEQ19JTkpfSk9GUlhfUkVHT0ZGU0VUX01BU0spKTsKICAgCiAgIHJldHVybiAodWludDMyX3QpKFJFQURfQklUKCpwcmVnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRENfSk9GUjFfSk9GRlNFVDEpCkBAIC0zMTY5LDcgKzMxNjksNyBAQAogICAqICAgICAgICAgVFNfdGVtcCwgLi4uKS4KICAgKiBAbm90ZSAgIENvbnZlcnNpb24gdGltZSBpcyB0aGUgYWRkaXRpb24gb2Ygc2FtcGxpbmcgdGltZSBhbmQgcHJvY2Vzc2luZyB0aW1lLgogICAqICAgICAgICAgUmVmZXIgdG8gcmVmZXJlbmNlIG1hbnVhbCBmb3IgQURDIHByb2Nlc3NpbmcgdGltZSBvZgotICAqICAgICAgICAgdGhpcyBTVE0zMiBzZXJpZS4KKyAgKiAgICAgICAgIHRoaXMgU1RNMzIgc2VyaWVzLgogICAqIEBub3RlICAgSW4gY2FzZSBvZiBBREMgY29udmVyc2lvbiBvZiBpbnRlcm5hbCBjaGFubmVsIChWcmVmSW50LAogICAqICAgICAgICAgdGVtcGVyYXR1cmUgc2Vuc29yLCAuLi4pLCBhIHNhbXBsaW5nIHRpbWUgbWluaW11bSB2YWx1ZQogICAqICAgICAgICAgaXMgcmVxdWlyZWQuCkBAIC0zMjM3LDcgKzMyMzcsNyBAQAogICAvKiBpbiByZWdpc3RlciBhbmQgcmVnaXN0ZXIgcG9zaXRpb24gZGVwZW5kaW5nIG9uIHBhcmFtZXRlciAiQ2hhbm5lbCIuICAgICAgKi8KICAgLyogUGFyYW1ldGVyICJDaGFubmVsIiBpcyB1c2VkIHdpdGggbWFza3MgYmVjYXVzZSBjb250YWluaW5nICAgICAgICAgICAgICAgICovCiAgIC8qIG90aGVyIGJpdHMgcmVzZXJ2ZWQgZm9yIG90aGVyIHB1cnBvc2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICByZWdpc3RlciBfX0lPIHVpbnQzMl90ICpwcmVnID0gX19BRENfUFRSX1JFR19PRkZTRVQoQURDeC0+U01QUjEsIF9fQURDX01BU0tfU0hJRlQoQ2hhbm5lbCwgQURDX0NIQU5ORUxfU01QUlhfUkVHT0ZGU0VUX01BU0spKTsKKyAgX19JTyB1aW50MzJfdCAqcHJlZyA9IF9fQURDX1BUUl9SRUdfT0ZGU0VUKEFEQ3gtPlNNUFIxLCBfX0FEQ19NQVNLX1NISUZUKENoYW5uZWwsIEFEQ19DSEFOTkVMX1NNUFJYX1JFR09GRlNFVF9NQVNLKSk7CiAgIAogICBNT0RJRllfUkVHKCpwcmVnLAogICAgICAgICAgICAgIEFEQ19TTVBSMl9TTVAwIDw8IF9fQURDX01BU0tfU0hJRlQoQ2hhbm5lbCwgQURDX0NIQU5ORUxfU01QeF9CSVRPRkZTRVRfTUFTSyksCkBAIC0zMjUxLDcgKzMyNTEsNyBAQAogICAqICAgICAgICAgb2YgY2hhbm5lbCBtYXBwZWQgb24gQURDIGdyb3VwIHJlZ3VsYXIgb3IgaW5qZWN0ZWQuCiAgICogQG5vdGUgICBDb252ZXJzaW9uIHRpbWUgaXMgdGhlIGFkZGl0aW9uIG9mIHNhbXBsaW5nIHRpbWUgYW5kIHByb2Nlc3NpbmcgdGltZS4KICAgKiAgICAgICAgIFJlZmVyIHRvIHJlZmVyZW5jZSBtYW51YWwgZm9yIEFEQyBwcm9jZXNzaW5nIHRpbWUgb2YKLSAgKiAgICAgICAgIHRoaXMgU1RNMzIgc2VyaWUuCisgICogICAgICAgICB0aGlzIFNUTTMyIHNlcmllcy4KICAgKiBAcm10b2xsIFNNUFIxICAgIFNNUDE4ICAgICAgICAgIExMX0FEQ19HZXRDaGFubmVsU2FtcGxpbmdUaW1lXG4KICAgKiAgICAgICAgIFNNUFIxICAgIFNNUDE3ICAgICAgICAgIExMX0FEQ19HZXRDaGFubmVsU2FtcGxpbmdUaW1lXG4KICAgKiAgICAgICAgIFNNUFIxICAgIFNNUDE2ICAgICAgICAgIExMX0FEQ19HZXRDaGFubmVsU2FtcGxpbmdUaW1lXG4KQEAgLTMzMTAsNyArMzMxMCw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdWludDMyX3QgTExfQURDX0dldENoYW5uZWxTYW1wbGluZ1RpbWUoQURDX1R5cGVEZWYgKkFEQ3gsIHVpbnQzMl90IENoYW5uZWwpCiB7Ci0gIHJlZ2lzdGVyIF9fSU8gdWludDMyX3QgKnByZWcgPSBfX0FEQ19QVFJfUkVHX09GRlNFVChBREN4LT5TTVBSMSwgX19BRENfTUFTS19TSElGVChDaGFubmVsLCBBRENfQ0hBTk5FTF9TTVBSWF9SRUdPRkZTRVRfTUFTSykpOworICBfX0lPIHVpbnQzMl90ICpwcmVnID0gX19BRENfUFRSX1JFR19PRkZTRVQoQURDeC0+U01QUjEsIF9fQURDX01BU0tfU0hJRlQoQ2hhbm5lbCwgQURDX0NIQU5ORUxfU01QUlhfUkVHT0ZGU0VUX01BU0spKTsKICAgCiAgIHJldHVybiAodWludDMyX3QpKFJFQURfQklUKCpwcmVnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRENfU01QUjJfU01QMCA8PCBfX0FEQ19NQVNLX1NISUZUKENoYW5uZWwsIEFEQ19DSEFOTkVMX1NNUHhfQklUT0ZGU0VUX01BU0spKQpAQCAtMzMzNSw3ICszMzM1LDcgQEAKICAgKiBAbm90ZSAgIEluIGNhc2Ugb2YgbmVlZCB0byBkZWZpbmUgYSBzaW5nbGUgY2hhbm5lbCB0byBtb25pdG9yCiAgICogICAgICAgICB3aXRoIGFuYWxvZyB3YXRjaGRvZyBmcm9tIHNlcXVlbmNlciBjaGFubmVsIGRlZmluaXRpb24sCiAgICogICAgICAgICB1c2UgaGVscGVyIG1hY3JvIEByZWYgX19MTF9BRENfQU5BTE9HV0RfQ0hBTk5FTF9HUk9VUCgpLgotICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZSwgdGhlcmUgaXMgb25seSAxIGtpbmQgb2YgYW5hbG9nIHdhdGNoZG9nCisgICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllcywgdGhlcmUgaXMgb25seSAxIGtpbmQgb2YgYW5hbG9nIHdhdGNoZG9nCiAgICogICAgICAgICBpbnN0YW5jZToKICAgKiAgICAgICAgIC0gQVdEIHN0YW5kYXJkIChpbnN0YW5jZSBBV0QxKToKICAgKiAgICAgICAgICAgLSBjaGFubmVscyBtb25pdG9yZWQ6IGNhbiBtb25pdG9yIDEgY2hhbm5lbCBvciBhbGwgY2hhbm5lbHMuCkBAIC0zNDQ0LDcgKzM0NDQsNyBAQAogICAqICAgICAgICAgICBAcmVmIF9fTExfQURDX0NIQU5ORUxfVE9fREVDSU1BTF9OQigpLgogICAqICAgICAgICAgICBBcHBsaWNhYmxlIG9ubHkgd2hlbiB0aGUgYW5hbG9nIHdhdGNoZG9nIGlzIHNldCB0byBtb25pdG9yCiAgICogICAgICAgICAgIG9uZSBjaGFubmVsLgotICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZSwgdGhlcmUgaXMgb25seSAxIGtpbmQgb2YgYW5hbG9nIHdhdGNoZG9nCisgICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllcywgdGhlcmUgaXMgb25seSAxIGtpbmQgb2YgYW5hbG9nIHdhdGNoZG9nCiAgICogICAgICAgICBpbnN0YW5jZToKICAgKiAgICAgICAgIC0gQVdEIHN0YW5kYXJkIChpbnN0YW5jZSBBV0QxKToKICAgKiAgICAgICAgICAgLSBjaGFubmVscyBtb25pdG9yZWQ6IGNhbiBtb25pdG9yIDEgY2hhbm5lbCBvciBhbGwgY2hhbm5lbHMuCkBAIC0zNTI5LDcgKzM1MjksNyBAQAogICAqIEBub3RlICAgSW4gY2FzZSBvZiBBREMgcmVzb2x1dGlvbiBkaWZmZXJlbnQgb2YgMTIgYml0cywKICAgKiAgICAgICAgIGFuYWxvZyB3YXRjaGRvZyB0aHJlc2hvbGRzIGRhdGEgcmVxdWlyZSBhIHNwZWNpZmljIHNoaWZ0LgogICAqICAgICAgICAgVXNlIGhlbHBlciBtYWNybyBAcmVmIF9fTExfQURDX0FOQUxPR1dEX1NFVF9USFJFU0hPTERfUkVTT0xVVElPTigpLgotICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZSwgdGhlcmUgaXMgb25seSAxIGtpbmQgb2YgYW5hbG9nIHdhdGNoZG9nCisgICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllcywgdGhlcmUgaXMgb25seSAxIGtpbmQgb2YgYW5hbG9nIHdhdGNoZG9nCiAgICogICAgICAgICBpbnN0YW5jZToKICAgKiAgICAgICAgIC0gQVdEIHN0YW5kYXJkIChpbnN0YW5jZSBBV0QxKToKICAgKiAgICAgICAgICAgLSBjaGFubmVscyBtb25pdG9yZWQ6IGNhbiBtb25pdG9yIDEgY2hhbm5lbCBvciBhbGwgY2hhbm5lbHMuCkBAIC0zNTQ3LDcgKzM1NDcsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfQURDX1NldEFuYWxvZ1dEVGhyZXNob2xkcyhBRENfVHlwZURlZiAqQURDeCwgdWludDMyX3QgQVdEVGhyZXNob2xkc0hpZ2hMb3csIHVpbnQzMl90IEFXRFRocmVzaG9sZFZhbHVlKQogewotICByZWdpc3RlciBfX0lPIHVpbnQzMl90ICpwcmVnID0gX19BRENfUFRSX1JFR19PRkZTRVQoQURDeC0+SFRSLCBBV0RUaHJlc2hvbGRzSGlnaExvdyk7CisgIF9fSU8gdWludDMyX3QgKnByZWcgPSBfX0FEQ19QVFJfUkVHX09GRlNFVChBREN4LT5IVFIsIEFXRFRocmVzaG9sZHNIaWdoTG93KTsKICAgCiAgIE1PRElGWV9SRUcoKnByZWcsCiAgICAgICAgICAgICAgQURDX0hUUl9IVCwKQEAgLTM1NzAsNyArMzU3MCw3IEBACiAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQzMl90IExMX0FEQ19HZXRBbmFsb2dXRFRocmVzaG9sZHMoQURDX1R5cGVEZWYgKkFEQ3gsIHVpbnQzMl90IEFXRFRocmVzaG9sZHNIaWdoTG93KQogewotICByZWdpc3RlciBfX0lPIHVpbnQzMl90ICpwcmVnID0gX19BRENfUFRSX1JFR19PRkZTRVQoQURDeC0+SFRSLCBBV0RUaHJlc2hvbGRzSGlnaExvdyk7CisgIF9fSU8gdWludDMyX3QgKnByZWcgPSBfX0FEQ19QVFJfUkVHX09GRlNFVChBREN4LT5IVFIsIEFXRFRocmVzaG9sZHNIaWdoTG93KTsKICAgCiAgIHJldHVybiAodWludDMyX3QpKFJFQURfQklUKCpwcmVnLCBBRENfSFRSX0hUKSk7CiB9CkBAIC0zODEyLDcgKzM4MTIsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEVuYWJsZSB0aGUgc2VsZWN0ZWQgQURDIGluc3RhbmNlLgotICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZSwgYWZ0ZXIgQURDIGVuYWJsZSwgYSBkZWxheSBmb3IgCisgICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllcywgYWZ0ZXIgQURDIGVuYWJsZSwgYSBkZWxheSBmb3IgCiAgICogICAgICAgICBBREMgaW50ZXJuYWwgYW5hbG9nIHN0YWJpbGl6YXRpb24gaXMgcmVxdWlyZWQgYmVmb3JlIHBlcmZvcm1pbmcgYQogICAqICAgICAgICAgQURDIGNvbnZlcnNpb24gc3RhcnQuCiAgICogICAgICAgICBSZWZlciB0byBkZXZpY2UgZGF0YXNoZWV0LCBwYXJhbWV0ZXIgdFNUQUIuCkBAIC0zODU3LDcgKzM4NTcsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIFN0YXJ0IEFEQyBncm91cCByZWd1bGFyIGNvbnZlcnNpb24uCi0gICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllLCB0aGlzIGZ1bmN0aW9uIGlzIHJlbGV2YW50IG9ubHkgZm9yCisgICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllcywgdGhpcyBmdW5jdGlvbiBpcyByZWxldmFudCBvbmx5IGZvcgogICAqICAgICAgICAgaW50ZXJuYWwgdHJpZ2dlciAoU1cgc3RhcnQpLCBub3QgZm9yIGV4dGVybmFsIHRyaWdnZXI6CiAgICogICAgICAgICAtIElmIEFEQyB0cmlnZ2VyIGhhcyBiZWVuIHNldCB0byBzb2Z0d2FyZSBzdGFydCwgQURDIGNvbnZlcnNpb24KICAgKiAgICAgICAgICAgc3RhcnRzIGltbWVkaWF0ZWx5LgpAQCAtMzg4MCw3ICszODgwLDcgQEAKICAgKiBAYnJpZWYgIFN0YXJ0IEFEQyBncm91cCByZWd1bGFyIGNvbnZlcnNpb24gZnJvbSBleHRlcm5hbCB0cmlnZ2VyLgogICAqIEBub3RlICAgQURDIGNvbnZlcnNpb24gd2lsbCBzdGFydCBhdCBuZXh0IHRyaWdnZXIgZXZlbnQgKG9uIHRoZSBzZWxlY3RlZAogICAqICAgICAgICAgdHJpZ2dlciBlZGdlKSBmb2xsb3dpbmcgdGhlIEFEQyBzdGFydCBjb252ZXJzaW9uIGNvbW1hbmQuCi0gICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllLCB0aGlzIGZ1bmN0aW9uIGlzIHJlbGV2YW50IGZvciAKKyAgKiBAbm90ZSAgIE9uIHRoaXMgU1RNMzIgc2VyaWVzLCB0aGlzIGZ1bmN0aW9uIGlzIHJlbGV2YW50IGZvciAKICAgKiAgICAgICAgIEFEQyBjb252ZXJzaW9uIHN0YXJ0IGZyb20gZXh0ZXJuYWwgdHJpZ2dlci4KICAgKiAgICAgICAgIElmIGludGVybmFsIHRyaWdnZXIgKFNXIHN0YXJ0KSBpcyBuZWVkZWQsIHBlcmZvcm0gQURDIGNvbnZlcnNpb24KICAgKiAgICAgICAgIHN0YXJ0IHVzaW5nIGZ1bmN0aW9uIEByZWYgTExfQURDX1JFR19TdGFydENvbnZlcnNpb25TV1N0YXJ0KCkuCkBAIC0zOTAyLDcgKzM5MDIsNyBAQAogICAqIEBub3RlICAgTm8gbW9yZSBBREMgY29udmVyc2lvbiB3aWxsIHN0YXJ0IGF0IG5leHQgdHJpZ2dlciBldmVudAogICAqICAgICAgICAgZm9sbG93aW5nIHRoZSBBREMgc3RvcCBjb252ZXJzaW9uIGNvbW1hbmQuCiAgICogICAgICAgICBJZiBhIGNvbnZlcnNpb24gaXMgb24tZ29pbmcsIGl0IHdpbGwgYmUgY29tcGxldGVkLgotICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZSwgdGhlcmUgaXMgbm8gc3BlY2lmaWMgY29tbWFuZAorICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZXMsIHRoZXJlIGlzIG5vIHNwZWNpZmljIGNvbW1hbmQKICAgKiAgICAgICAgIHRvIHN0b3AgYSBjb252ZXJzaW9uIG9uLWdvaW5nIG9yIHRvIHN0b3AgQURDIGNvbnZlcnRpbmcKICAgKiAgICAgICAgIGluIGNvbnRpbnVvdXMgbW9kZS4gVGhlc2UgYWN0aW9ucyBjYW4gYmUgcGVyZm9ybWVkCiAgICogICAgICAgICB1c2luZyBmdW5jdGlvbiBAcmVmIExMX0FEQ19EaXNhYmxlKCkuCkBAIC00MDI4LDcgKzQwMjgsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIFN0YXJ0IEFEQyBncm91cCBpbmplY3RlZCBjb252ZXJzaW9uLgotICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZSwgdGhpcyBmdW5jdGlvbiBpcyByZWxldmFudCBvbmx5IGZvcgorICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZXMsIHRoaXMgZnVuY3Rpb24gaXMgcmVsZXZhbnQgb25seSBmb3IKICAgKiAgICAgICAgIGludGVybmFsIHRyaWdnZXIgKFNXIHN0YXJ0KSwgbm90IGZvciBleHRlcm5hbCB0cmlnZ2VyOgogICAqICAgICAgICAgLSBJZiBBREMgdHJpZ2dlciBoYXMgYmVlbiBzZXQgdG8gc29mdHdhcmUgc3RhcnQsIEFEQyBjb252ZXJzaW9uCiAgICogICAgICAgICAgIHN0YXJ0cyBpbW1lZGlhdGVseS4KQEAgLTQwNTEsNyArNDA1MSw3IEBACiAgICogQGJyaWVmICBTdGFydCBBREMgZ3JvdXAgaW5qZWN0ZWQgY29udmVyc2lvbiBmcm9tIGV4dGVybmFsIHRyaWdnZXIuCiAgICogQG5vdGUgICBBREMgY29udmVyc2lvbiB3aWxsIHN0YXJ0IGF0IG5leHQgdHJpZ2dlciBldmVudCAob24gdGhlIHNlbGVjdGVkCiAgICogICAgICAgICB0cmlnZ2VyIGVkZ2UpIGZvbGxvd2luZyB0aGUgQURDIHN0YXJ0IGNvbnZlcnNpb24gY29tbWFuZC4KLSAgKiBAbm90ZSAgIE9uIHRoaXMgU1RNMzIgc2VyaWUsIHRoaXMgZnVuY3Rpb24gaXMgcmVsZXZhbnQgZm9yIAorICAqIEBub3RlICAgT24gdGhpcyBTVE0zMiBzZXJpZXMsIHRoaXMgZnVuY3Rpb24gaXMgcmVsZXZhbnQgZm9yIAogICAqICAgICAgICAgQURDIGNvbnZlcnNpb24gc3RhcnQgZnJvbSBleHRlcm5hbCB0cmlnZ2VyLgogICAqICAgICAgICAgSWYgaW50ZXJuYWwgdHJpZ2dlciAoU1cgc3RhcnQpIGlzIG5lZWRlZCwgcGVyZm9ybSBBREMgY29udmVyc2lvbgogICAqICAgICAgICAgc3RhcnQgdXNpbmcgZnVuY3Rpb24gQHJlZiBMTF9BRENfSU5KX1N0YXJ0Q29udmVyc2lvblNXU3RhcnQoKS4KQEAgLTQwNzMsNyArNDA3Myw3IEBACiAgICogQG5vdGUgICBObyBtb3JlIEFEQyBjb252ZXJzaW9uIHdpbGwgc3RhcnQgYXQgbmV4dCB0cmlnZ2VyIGV2ZW50CiAgICogICAgICAgICBmb2xsb3dpbmcgdGhlIEFEQyBzdG9wIGNvbnZlcnNpb24gY29tbWFuZC4KICAgKiAgICAgICAgIElmIGEgY29udmVyc2lvbiBpcyBvbi1nb2luZywgaXQgd2lsbCBiZSBjb21wbGV0ZWQuCi0gICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllLCB0aGVyZSBpcyBubyBzcGVjaWZpYyBjb21tYW5kCisgICogQG5vdGUgICBPbiB0aGlzIFNUTTMyIHNlcmllcywgdGhlcmUgaXMgbm8gc3BlY2lmaWMgY29tbWFuZAogICAqICAgICAgICAgdG8gc3RvcCBhIGNvbnZlcnNpb24gb24tZ29pbmcgb3IgdG8gc3RvcCBBREMgY29udmVydGluZwogICAqICAgICAgICAgaW4gY29udGludW91cyBtb2RlLiBUaGVzZSBhY3Rpb25zIGNhbiBiZSBwZXJmb3JtZWQKICAgKiAgICAgICAgIHVzaW5nIGZ1bmN0aW9uIEByZWYgTExfQURDX0Rpc2FibGUoKS4KQEAgLTQxMDUsNyArNDEwNSw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdWludDMyX3QgTExfQURDX0lOSl9SZWFkQ29udmVyc2lvbkRhdGEzMihBRENfVHlwZURlZiAqQURDeCwgdWludDMyX3QgUmFuaykKIHsKLSAgcmVnaXN0ZXIgX19JTyB1aW50MzJfdCAqcHJlZyA9IF9fQURDX1BUUl9SRUdfT0ZGU0VUKEFEQ3gtPkpEUjEsIF9fQURDX01BU0tfU0hJRlQoUmFuaywgQURDX0lOSl9KRFJYX1JFR09GRlNFVF9NQVNLKSk7CisgIF9fSU8gdWludDMyX3QgKnByZWcgPSBfX0FEQ19QVFJfUkVHX09GRlNFVChBREN4LT5KRFIxLCBfX0FEQ19NQVNLX1NISUZUKFJhbmssIEFEQ19JTkpfSkRSWF9SRUdPRkZTRVRfTUFTSykpOwogICAKICAgcmV0dXJuICh1aW50MzJfdCkoUkVBRF9CSVQoKnByZWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFEQ19KRFIxX0pEQVRBKQpAQCAtNDEzMiw3ICs0MTMyLDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MTZfdCBMTF9BRENfSU5KX1JlYWRDb252ZXJzaW9uRGF0YTEyKEFEQ19UeXBlRGVmICpBREN4LCB1aW50MzJfdCBSYW5rKQogewotICByZWdpc3RlciBfX0lPIHVpbnQzMl90ICpwcmVnID0gX19BRENfUFRSX1JFR19PRkZTRVQoQURDeC0+SkRSMSwgX19BRENfTUFTS19TSElGVChSYW5rLCBBRENfSU5KX0pEUlhfUkVHT0ZGU0VUX01BU0spKTsKKyAgX19JTyB1aW50MzJfdCAqcHJlZyA9IF9fQURDX1BUUl9SRUdfT0ZGU0VUKEFEQ3gtPkpEUjEsIF9fQURDX01BU0tfU0hJRlQoUmFuaywgQURDX0lOSl9KRFJYX1JFR09GRlNFVF9NQVNLKSk7CiAgIAogICByZXR1cm4gKHVpbnQxNl90KShSRUFEX0JJVCgqcHJlZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURDX0pEUjFfSkRBVEEpCkBAIC00MTU5LDcgKzQxNTksNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQxNl90IExMX0FEQ19JTkpfUmVhZENvbnZlcnNpb25EYXRhMTAoQURDX1R5cGVEZWYgKkFEQ3gsIHVpbnQzMl90IFJhbmspCiB7Ci0gIHJlZ2lzdGVyIF9fSU8gdWludDMyX3QgKnByZWcgPSBfX0FEQ19QVFJfUkVHX09GRlNFVChBREN4LT5KRFIxLCBfX0FEQ19NQVNLX1NISUZUKFJhbmssIEFEQ19JTkpfSkRSWF9SRUdPRkZTRVRfTUFTSykpOworICBfX0lPIHVpbnQzMl90ICpwcmVnID0gX19BRENfUFRSX1JFR19PRkZTRVQoQURDeC0+SkRSMSwgX19BRENfTUFTS19TSElGVChSYW5rLCBBRENfSU5KX0pEUlhfUkVHT0ZGU0VUX01BU0spKTsKICAgCiAgIHJldHVybiAodWludDE2X3QpKFJFQURfQklUKCpwcmVnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRENfSkRSMV9KREFUQSkKQEAgLTQxODYsNyArNDE4Niw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdWludDhfdCBMTF9BRENfSU5KX1JlYWRDb252ZXJzaW9uRGF0YTgoQURDX1R5cGVEZWYgKkFEQ3gsIHVpbnQzMl90IFJhbmspCiB7Ci0gIHJlZ2lzdGVyIF9fSU8gdWludDMyX3QgKnByZWcgPSBfX0FEQ19QVFJfUkVHX09GRlNFVChBREN4LT5KRFIxLCBfX0FEQ19NQVNLX1NISUZUKFJhbmssIEFEQ19JTkpfSkRSWF9SRUdPRkZTRVRfTUFTSykpOworICBfX0lPIHVpbnQzMl90ICpwcmVnID0gX19BRENfUFRSX1JFR19PRkZTRVQoQURDeC0+SkRSMSwgX19BRENfTUFTS19TSElGVChSYW5rLCBBRENfSU5KX0pEUlhfUkVHT0ZGU0VUX01BU0spKTsKICAgCiAgIHJldHVybiAodWludDhfdCkoUkVBRF9CSVQoKnByZWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURDX0pEUjFfSkRBVEEpCkBAIC00MjEzLDcgKzQyMTMsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQ4X3QgTExfQURDX0lOSl9SZWFkQ29udmVyc2lvbkRhdGE2KEFEQ19UeXBlRGVmICpBREN4LCB1aW50MzJfdCBSYW5rKQogewotICByZWdpc3RlciBfX0lPIHVpbnQzMl90ICpwcmVnID0gX19BRENfUFRSX1JFR19PRkZTRVQoQURDeC0+SkRSMSwgX19BRENfTUFTS19TSElGVChSYW5rLCBBRENfSU5KX0pEUlhfUkVHT0ZGU0VUX01BU0spKTsKKyAgX19JTyB1aW50MzJfdCAqcHJlZyA9IF9fQURDX1BUUl9SRUdfT0ZGU0VUKEFEQ3gtPkpEUjEsIF9fQURDX01BU0tfU0hJRlQoUmFuaywgQURDX0lOSl9KRFJYX1JFR09GRlNFVF9NQVNLKSk7CiAgIAogICByZXR1cm4gKHVpbnQ4X3QpKFJFQURfQklUKCpwcmVnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFEQ19KRFIxX0pEQVRBKQpAQCAtNDI2Myw3ICs0MjYzLDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MzJfdCBMTF9BRENfSXNBY3RpdmVGbGFnX0pFT1MoQURDX1R5cGVEZWYgKkFEQ3gpCiB7Ci0gIC8qIE5vdGU6IG9uIHRoaXMgU1RNMzIgc2VyaWUsIHRoZXJlIGlzIG5vIGZsYWcgQURDIGdyb3VwIGluamVjdGVkICAgICAgICAgICovCisgIC8qIE5vdGU6IG9uIHRoaXMgU1RNMzIgc2VyaWVzLCB0aGVyZSBpcyBubyBmbGFnIEFEQyBncm91cCBpbmplY3RlZCAgICAgICAgICAqLwogICAvKiAgICAgICBlbmQgb2YgdW5pdGFyeSBjb252ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgLyogICAgICAgRmxhZyBub3RlZCBhcyAiSkVPQyIgaXMgY29ycmVzcG9uZGluZyB0byBmbGFnICJKRU9TIiAgICAgICAgICAgICAgICovCiAgIC8qICAgICAgIGluIG90aGVyIFNUTTMyIGZhbWlsaWVzKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwpAQCAtNDMxNiw3ICs0MzE2LDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX0FEQ19DbGVhckZsYWdfSkVPUyhBRENfVHlwZURlZiAqQURDeCkKIHsKLSAgLyogTm90ZTogb24gdGhpcyBTVE0zMiBzZXJpZSwgdGhlcmUgaXMgbm8gZmxhZyBBREMgZ3JvdXAgaW5qZWN0ZWQgICAgICAgICAgKi8KKyAgLyogTm90ZTogb24gdGhpcyBTVE0zMiBzZXJpZXMsIHRoZXJlIGlzIG5vIGZsYWcgQURDIGdyb3VwIGluamVjdGVkICAgICAgICAgICovCiAgIC8qICAgICAgIGVuZCBvZiB1bml0YXJ5IGNvbnZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAvKiAgICAgICBGbGFnIG5vdGVkIGFzICJKRU9DIiBpcyBjb3JyZXNwb25kaW5nIHRvIGZsYWcgIkpFT1MiICAgICAgICAgICAgICAgKi8KICAgLyogICAgICAgaW4gb3RoZXIgU1RNMzIgZmFtaWxpZXMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCkBAIC00NDI3LDcgKzQ0MjcsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQzMl90IExMX0FEQ19Jc0FjdGl2ZUZsYWdfTVNUX0pFT1MoQURDX0NvbW1vbl9UeXBlRGVmICpBREN4eV9DT01NT04pCiB7Ci0gIC8qIE5vdGU6IG9uIHRoaXMgU1RNMzIgc2VyaWUsIHRoZXJlIGlzIG5vIGZsYWcgQURDIGdyb3VwIGluamVjdGVkICAgICAgICAgICovCisgIC8qIE5vdGU6IG9uIHRoaXMgU1RNMzIgc2VyaWVzLCB0aGVyZSBpcyBubyBmbGFnIEFEQyBncm91cCBpbmplY3RlZCAgICAgICAgICAqLwogICAvKiAgICAgICBlbmQgb2YgdW5pdGFyeSBjb252ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgLyogICAgICAgRmxhZyBub3RlZCBhcyAiSkVPQyIgaXMgY29ycmVzcG9uZGluZyB0byBmbGFnICJKRU9TIiAgICAgICAgICAgICAgICovCiAgIC8qICAgICAgIGluIG90aGVyIFNUTTMyIGZhbWlsaWVzKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwpAQCAtNDQ0Myw3ICs0NDQzLDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MzJfdCBMTF9BRENfSXNBY3RpdmVGbGFnX1NMVjFfSkVPUyhBRENfQ29tbW9uX1R5cGVEZWYgKkFEQ3h5X0NPTU1PTikKIHsKLSAgLyogTm90ZTogb24gdGhpcyBTVE0zMiBzZXJpZSwgdGhlcmUgaXMgbm8gZmxhZyBBREMgZ3JvdXAgaW5qZWN0ZWQgICAgICAgICAgKi8KKyAgLyogTm90ZTogb24gdGhpcyBTVE0zMiBzZXJpZXMsIHRoZXJlIGlzIG5vIGZsYWcgQURDIGdyb3VwIGluamVjdGVkICAgICAgICAgICovCiAgIC8qICAgICAgIGVuZCBvZiB1bml0YXJ5IGNvbnZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAvKiAgICAgICBGbGFnIG5vdGVkIGFzICJKRU9DIiBpcyBjb3JyZXNwb25kaW5nIHRvIGZsYWcgIkpFT1MiICAgICAgICAgICAgICAgKi8KICAgLyogICAgICAgaW4gb3RoZXIgU1RNMzIgZmFtaWxpZXMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCkBAIC00NDU5LDcgKzQ0NTksNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQzMl90IExMX0FEQ19Jc0FjdGl2ZUZsYWdfU0xWMl9KRU9TKEFEQ19Db21tb25fVHlwZURlZiAqQURDeHlfQ09NTU9OKQogewotICAvKiBOb3RlOiBvbiB0aGlzIFNUTTMyIHNlcmllLCB0aGVyZSBpcyBubyBmbGFnIEFEQyBncm91cCBpbmplY3RlZCAgICAgICAgICAqLworICAvKiBOb3RlOiBvbiB0aGlzIFNUTTMyIHNlcmllcywgdGhlcmUgaXMgbm8gZmxhZyBBREMgZ3JvdXAgaW5qZWN0ZWQgICAgICAgICAgKi8KICAgLyogICAgICAgZW5kIG9mIHVuaXRhcnkgY29udmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgIC8qICAgICAgIEZsYWcgbm90ZWQgYXMgIkpFT0MiIGlzIGNvcnJlc3BvbmRpbmcgdG8gZmxhZyAiSkVPUyIgICAgICAgICAgICAgICAqLwogICAvKiAgICAgICBpbiBvdGhlciBTVE0zMiBmYW1pbGllcykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTQ1NDYsNyArNDU0Niw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9BRENfRW5hYmxlSVRfSkVPUyhBRENfVHlwZURlZiAqQURDeCkKIHsKLSAgLyogTm90ZTogb24gdGhpcyBTVE0zMiBzZXJpZSwgdGhlcmUgaXMgbm8gZmxhZyBBREMgZ3JvdXAgaW5qZWN0ZWQgICAgICAgICAgKi8KKyAgLyogTm90ZTogb24gdGhpcyBTVE0zMiBzZXJpZXMsIHRoZXJlIGlzIG5vIGZsYWcgQURDIGdyb3VwIGluamVjdGVkICAgICAgICAgICovCiAgIC8qICAgICAgIGVuZCBvZiB1bml0YXJ5IGNvbnZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAvKiAgICAgICBGbGFnIG5vdGVkIGFzICJKRU9DIiBpcyBjb3JyZXNwb25kaW5nIHRvIGZsYWcgIkpFT1MiICAgICAgICAgICAgICAgKi8KICAgLyogICAgICAgaW4gb3RoZXIgU1RNMzIgZmFtaWxpZXMpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCkBAIC00NTk5LDcgKzQ1OTksNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfQURDX0Rpc2FibGVJVF9KRU9TKEFEQ19UeXBlRGVmICpBREN4KQogewotICAvKiBOb3RlOiBvbiB0aGlzIFNUTTMyIHNlcmllLCB0aGVyZSBpcyBubyBmbGFnIEFEQyBncm91cCBpbmplY3RlZCAgICAgICAgICAqLworICAvKiBOb3RlOiBvbiB0aGlzIFNUTTMyIHNlcmllcywgdGhlcmUgaXMgbm8gZmxhZyBBREMgZ3JvdXAgaW5qZWN0ZWQgICAgICAgICAgKi8KICAgLyogICAgICAgZW5kIG9mIHVuaXRhcnkgY29udmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgIC8qICAgICAgIEZsYWcgbm90ZWQgYXMgIkpFT0MiIGlzIGNvcnJlc3BvbmRpbmcgdG8gZmxhZyAiSkVPUyIgICAgICAgICAgICAgICAqLwogICAvKiAgICAgICBpbiBvdGhlciBTVE0zMiBmYW1pbGllcykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTQ2NTUsNyArNDY1NSw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdWludDMyX3QgTExfQURDX0lzRW5hYmxlZElUX0pFT1MoQURDX1R5cGVEZWYgKkFEQ3gpCiB7Ci0gIC8qIE5vdGU6IG9uIHRoaXMgU1RNMzIgc2VyaWUsIHRoZXJlIGlzIG5vIGZsYWcgQURDIGdyb3VwIGluamVjdGVkICAgICAgICAgICovCisgIC8qIE5vdGU6IG9uIHRoaXMgU1RNMzIgc2VyaWVzLCB0aGVyZSBpcyBubyBmbGFnIEFEQyBncm91cCBpbmplY3RlZCAgICAgICAgICAqLwogICAvKiAgICAgICBlbmQgb2YgdW5pdGFyeSBjb252ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgLyogICAgICAgRmxhZyBub3RlZCBhcyAiSkVPQyIgaXMgY29ycmVzcG9uZGluZyB0byBmbGFnICJKRU9TIiAgICAgICAgICAgICAgICovCiAgIC8qICAgICAgIGluIG90aGVyIFNUTTMyIGZhbWlsaWVzKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9sbF9kYWMuaCBiL0luYy9zdG0zMmY3eHhfbGxfZGFjLmgKaW5kZXggMWVkNTAzMS4uOTg4NjMxNyAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9sbF9kYWMuaAorKysgYi9JbmMvc3RtMzJmN3h4X2xsX2RhYy5oCkBAIC0xOCw4ICsxOCw4IEBACiAgICovCiAKIC8qIERlZmluZSB0byBwcmV2ZW50IHJlY3Vyc2l2ZSBpbmNsdXNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0jaWZuZGVmIF9fU1RNMzJGN3h4X0xMX0RBQ19ICi0jZGVmaW5lIF9fU1RNMzJGN3h4X0xMX0RBQ19ICisjaWZuZGVmIFNUTTMyRjd4eF9MTF9EQUNfSAorI2RlZmluZSBTVE0zMkY3eHhfTExfREFDX0gKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKQEAgLTQ4LDQwICs0OCw3NiBAQAogCiAvKiBJbnRlcm5hbCBtYXNrcyBmb3IgREFDIGNoYW5uZWxzIGRlZmluaXRpb24gKi8KIC8qIFRvIHNlbGVjdCBpbnRvIGxpdGVyYWwgTExfREFDX0NIQU5ORUxfeCB0aGUgcmVsZXZhbnQgYml0cyBmb3I6ICAgICAgICAgICAgICovCi0vKiAtIGNoYW5uZWwgYml0cyBwb3NpdGlvbiBpbnRvIHJlZ2lzdGVyIENSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLSBjaGFubmVsIGJpdHMgcG9zaXRpb24gaW50byByZWdpc3RlcnMgQ1IsIE1DUiwgQ0NSLCBTSEhSLCBTSFJSICAgICAgICAgICAgKi8KIC8qIC0gY2hhbm5lbCBiaXRzIHBvc2l0aW9uIGludG8gcmVnaXN0ZXIgU1dUUklHICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAtIGNoYW5uZWwgcmVnaXN0ZXIgb2Zmc2V0IG9mIGRhdGEgaG9sZGluZyByZWdpc3RlciBESFJ4ICAgICAgICAgICAgICAgICAgICAqLwogLyogLSBjaGFubmVsIHJlZ2lzdGVyIG9mZnNldCBvZiBkYXRhIG91dHB1dCByZWdpc3RlciBET1J4ICAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgREFDX0NSX0NIMV9CSVRPRkZTRVQgICAgICAgICAgIDBVICAgIC8qIFBvc2l0aW9uIG9mIGNoYW5uZWwgYml0cyBpbnRvIHJlZ2lzdGVycyBDUiwgTUNSLCBDQ1IsIFNISFIsIFNIUlIgb2YgY2hhbm5lbCAxICovCi0jZGVmaW5lIERBQ19DUl9DSDJfQklUT0ZGU0VUICAgICAgICAgICAxNlUgICAvKiBQb3NpdGlvbiBvZiBjaGFubmVsIGJpdHMgaW50byByZWdpc3RlcnMgQ1IsIE1DUiwgQ0NSLCBTSEhSLCBTSFJSIG9mIGNoYW5uZWwgMiAqLworI2RlZmluZSBEQUNfQ1JfQ0gxX0JJVE9GRlNFVCAgICAgICAgICAgMFVMICAgLyogUG9zaXRpb24gb2YgY2hhbm5lbCBiaXRzIGludG8gcmVnaXN0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUiwgTUNSLCBDQ1IsIFNISFIsIFNIUlIgb2YgY2hhbm5lbCAxICovCisjZGVmaW5lIERBQ19DUl9DSDJfQklUT0ZGU0VUICAgICAgICAgICAxNlVMICAvKiBQb3NpdGlvbiBvZiBjaGFubmVsIGJpdHMgaW50byByZWdpc3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENSLCBNQ1IsIENDUiwgU0hIUiwgU0hSUiBvZiBjaGFubmVsIDIgKi8KICNkZWZpbmUgREFDX0NSX0NIWF9CSVRPRkZTRVRfTUFTSyAgICAgIChEQUNfQ1JfQ0gxX0JJVE9GRlNFVCB8IERBQ19DUl9DSDJfQklUT0ZGU0VUKQogCi0jZGVmaW5lIERBQ19TV1RSX0NIMSAgICAgICAgICAgICAgICAgICAoREFDX1NXVFJJR1JfU1dUUklHMSkgLyogQ2hhbm5lbCBiaXQgaW50byByZWdpc3RlciBTV1RSSUdSIG9mIGNoYW5uZWwgMS4gVGhpcyBiaXQgaXMgaW50byBhcmVhIG9mIExMX0RBQ19DUl9DSHhfQklUT0ZGU0VUIGJ1dCBleGNsdWRlZCBieSBtYXNrIERBQ19DUl9DSFhfQklUT0ZGU0VUX01BU0sgKGRvbmUgdG8gYmUgZW5hYmxlIHRvIHRyaWcgU1cgc3RhcnQgb2YgYm90aCBEQUMgY2hhbm5lbHMgc2ltdWx0YW5lb3VzbHkpLiAqLwotI2RlZmluZSBEQUNfU1dUUl9DSDIgICAgICAgICAgICAgICAgICAgKERBQ19TV1RSSUdSX1NXVFJJRzIpIC8qIENoYW5uZWwgYml0IGludG8gcmVnaXN0ZXIgU1dUUklHUiBvZiBjaGFubmVsIDIuIFRoaXMgYml0IGlzIGludG8gYXJlYSBvZiBMTF9EQUNfQ1JfQ0h4X0JJVE9GRlNFVCBidXQgZXhjbHVkZWQgYnkgbWFzayBEQUNfQ1JfQ0hYX0JJVE9GRlNFVF9NQVNLIChkb25lIHRvIGJlIGVuYWJsZSB0byB0cmlnIFNXIHN0YXJ0IG9mIGJvdGggREFDIGNoYW5uZWxzIHNpbXVsdGFuZW91c2x5KS4gKi8KKyNkZWZpbmUgREFDX1NXVFJfQ0gxICAgICAgICAgICAgICAgICAgIChEQUNfU1dUUklHUl9TV1RSSUcxKSAvKiBDaGFubmVsIGJpdCBpbnRvIHJlZ2lzdGVyIFNXVFJJR1Igb2YgY2hhbm5lbCAxLiAqLworI2RlZmluZSBEQUNfU1dUUl9DSDIgICAgICAgICAgICAgICAgICAgKERBQ19TV1RSSUdSX1NXVFJJRzIpIC8qIENoYW5uZWwgYml0IGludG8gcmVnaXN0ZXIgU1dUUklHUiBvZiBjaGFubmVsIDIuICovCiAjZGVmaW5lIERBQ19TV1RSX0NIWF9NQVNLICAgICAgICAgICAgICAoREFDX1NXVFJfQ0gxIHwgREFDX1NXVFJfQ0gyKQogCi0jZGVmaW5lIERBQ19SRUdfREhSMTJSMV9SRUdPRkZTRVQgICAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAvKiBSZWdpc3RlciBESFIxMlJ4IGNoYW5uZWwgMSB0YWtlbiBhcyByZWZlcmVuY2UgKi8KLSNkZWZpbmUgREFDX1JFR19ESFIxMkwxX1JFR09GRlNFVCAgICAgIDB4MDAxMDAwMDBVICAgICAgICAgICAgIC8qIFJlZ2lzdGVyIG9mZnNldCBvZiBESFIxMkx4IGNoYW5uZWwgMSB2ZXJzdXMgREhSMTJSeCBjaGFubmVsIDEgKHNoaWZ0ZWQgbGVmdCBvZiAyMCBiaXRzKSAqLwotI2RlZmluZSBEQUNfUkVHX0RIUjhSMV9SRUdPRkZTRVQgICAgICAgMHgwMjAwMDAwMFUgICAgICAgICAgICAgLyogUmVnaXN0ZXIgb2Zmc2V0IG9mIERIUjhSeCAgY2hhbm5lbCAxIHZlcnN1cyBESFIxMlJ4IGNoYW5uZWwgMSAoc2hpZnRlZCBsZWZ0IG9mIDI0IGJpdHMpICovCi0jZGVmaW5lIERBQ19SRUdfREhSMTJSMl9SRUdPRkZTRVQgICAgICAweDAwMDMwMDAwVSAgICAgICAgICAgICAvKiBSZWdpc3RlciBvZmZzZXQgb2YgREhSMTJSeCBjaGFubmVsIDIgdmVyc3VzIERIUjEyUnggY2hhbm5lbCAxIChzaGlmdGVkIGxlZnQgb2YgMTYgYml0cykgKi8KLSNkZWZpbmUgREFDX1JFR19ESFIxMkwyX1JFR09GRlNFVCAgICAgIDB4MDA0MDAwMDBVICAgICAgICAgICAgIC8qIFJlZ2lzdGVyIG9mZnNldCBvZiBESFIxMkx4IGNoYW5uZWwgMiB2ZXJzdXMgREhSMTJSeCBjaGFubmVsIDEgKHNoaWZ0ZWQgbGVmdCBvZiAyMCBiaXRzKSAqLwotI2RlZmluZSBEQUNfUkVHX0RIUjhSMl9SRUdPRkZTRVQgICAgICAgMHgwNTAwMDAwMFUgICAgICAgICAgICAgLyogUmVnaXN0ZXIgb2Zmc2V0IG9mIERIUjhSeCAgY2hhbm5lbCAyIHZlcnN1cyBESFIxMlJ4IGNoYW5uZWwgMSAoc2hpZnRlZCBsZWZ0IG9mIDI0IGJpdHMpICovCi0jZGVmaW5lIERBQ19SRUdfREhSMTJSWF9SRUdPRkZTRVRfTUFTSyAweDAwMEYwMDAwVQotI2RlZmluZSBEQUNfUkVHX0RIUjEyTFhfUkVHT0ZGU0VUX01BU0sgMHgwMEYwMDAwMFUKLSNkZWZpbmUgREFDX1JFR19ESFI4UlhfUkVHT0ZGU0VUX01BU0sgIDB4MEYwMDAwMDBVCi0jZGVmaW5lIERBQ19SRUdfREhSWF9SRUdPRkZTRVRfTUFTSyAgICAoREFDX1JFR19ESFIxMlJYX1JFR09GRlNFVF9NQVNLIHwgREFDX1JFR19ESFIxMkxYX1JFR09GRlNFVF9NQVNLIHwgREFDX1JFR19ESFI4UlhfUkVHT0ZGU0VUX01BU0spCisjZGVmaW5lIERBQ19SRUdfREhSMTJSMV9SRUdPRkZTRVQgICAgICAweDAwMDAwMDAwVUwgICAgICAgICAgICAvKiBSZWdpc3RlciBESFIxMlJ4IGNoYW5uZWwgMSB0YWtlbiBhcyByZWZlcmVuY2UgKi8KKyNkZWZpbmUgREFDX1JFR19ESFIxMkwxX1JFR09GRlNFVCAgICAgIDB4MDAxMDAwMDBVTCAgICAgICAgICAgIC8qIFJlZ2lzdGVyIG9mZnNldCBvZiBESFIxMkx4IGNoYW5uZWwgMSB2ZXJzdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERIUjEyUnggY2hhbm5lbCAxIChzaGlmdGVkIGxlZnQgb2YgMjAgYml0cykgICAqLworI2RlZmluZSBEQUNfUkVHX0RIUjhSMV9SRUdPRkZTRVQgICAgICAgMHgwMjAwMDAwMFVMICAgICAgICAgICAgLyogUmVnaXN0ZXIgb2Zmc2V0IG9mIERIUjhSeCAgY2hhbm5lbCAxIHZlcnN1cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREhSMTJSeCBjaGFubmVsIDEgKHNoaWZ0ZWQgbGVmdCBvZiAyNCBiaXRzKSAgICovCiAKLSNkZWZpbmUgREFDX1JFR19ET1IxX1JFR09GRlNFVCAgICAgICAgIDB4MDAwMDAwMDBVICAgICAgICAgICAgIC8qIFJlZ2lzdGVyIERPUnggY2hhbm5lbCAxIHRha2VuIGFzIHJlZmVyZW5jZSAqLwotI2RlZmluZSBEQUNfUkVHX0RPUjJfUkVHT0ZGU0VUICAgICAgICAgMHgxMDAwMDAwMFUgICAgICAgICAgICAgLyogUmVnaXN0ZXIgb2Zmc2V0IG9mIERPUnggY2hhbm5lbCAxIHZlcnN1cyBET1J4IGNoYW5uZWwgMiAoc2hpZnRlZCBsZWZ0IG9mIDI4IGJpdHMpICovCisjZGVmaW5lIERBQ19SRUdfREhSMTJSMl9SRUdPRkZTRVQgICAgICAweDAwMDMwMDAwVUwgICAgICAgICAgICAvKiBSZWdpc3RlciBvZmZzZXQgb2YgREhSMTJSeCBjaGFubmVsIDIgdmVyc3VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESFIxMlJ4IGNoYW5uZWwgMSAoc2hpZnRlZCBsZWZ0IG9mIDE2IGJpdHMpICAgKi8KKyNkZWZpbmUgREFDX1JFR19ESFIxMkwyX1JFR09GRlNFVCAgICAgIDB4MDA0MDAwMDBVTCAgICAgICAgICAgIC8qIFJlZ2lzdGVyIG9mZnNldCBvZiBESFIxMkx4IGNoYW5uZWwgMiB2ZXJzdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERIUjEyUnggY2hhbm5lbCAxIChzaGlmdGVkIGxlZnQgb2YgMjAgYml0cykgICAqLworI2RlZmluZSBEQUNfUkVHX0RIUjhSMl9SRUdPRkZTRVQgICAgICAgMHgwNTAwMDAwMFVMICAgICAgICAgICAgLyogUmVnaXN0ZXIgb2Zmc2V0IG9mIERIUjhSeCAgY2hhbm5lbCAyIHZlcnN1cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREhSMTJSeCBjaGFubmVsIDEgKHNoaWZ0ZWQgbGVmdCBvZiAyNCBiaXRzKSAgICovCisKKyNkZWZpbmUgREFDX1JFR19ESFIxMlJYX1JFR09GRlNFVF9NQVNLIDB4MDAwRjAwMDBVTAorI2RlZmluZSBEQUNfUkVHX0RIUjEyTFhfUkVHT0ZGU0VUX01BU0sgMHgwMEYwMDAwMFVMCisjZGVmaW5lIERBQ19SRUdfREhSOFJYX1JFR09GRlNFVF9NQVNLICAweDBGMDAwMDAwVUwKKyNkZWZpbmUgREFDX1JFR19ESFJYX1JFR09GRlNFVF9NQVNLICAgIChEQUNfUkVHX0RIUjEyUlhfUkVHT0ZGU0VUX01BU0tcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEQUNfUkVHX0RIUjEyTFhfUkVHT0ZGU0VUX01BU0sgfCBEQUNfUkVHX0RIUjhSWF9SRUdPRkZTRVRfTUFTSykKKworI2RlZmluZSBEQUNfUkVHX0RPUjFfUkVHT0ZGU0VUICAgICAgICAgMHgwMDAwMDAwMFVMICAgICAgICAgICAgLyogUmVnaXN0ZXIgRE9SeCBjaGFubmVsIDEgdGFrZW4gYXMgcmVmZXJlbmNlICovCisKKyNkZWZpbmUgREFDX1JFR19ET1IyX1JFR09GRlNFVCAgICAgICAgIDB4MTAwMDAwMDBVTCAgICAgICAgICAgIC8qIFJlZ2lzdGVyIG9mZnNldCBvZiBET1J4IGNoYW5uZWwgMSB2ZXJzdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPUnggY2hhbm5lbCAyIChzaGlmdGVkIGxlZnQgb2YgMjggYml0cykgICAqLwogI2RlZmluZSBEQUNfUkVHX0RPUlhfUkVHT0ZGU0VUX01BU0sgICAgKERBQ19SRUdfRE9SMV9SRUdPRkZTRVQgfCBEQUNfUkVHX0RPUjJfUkVHT0ZGU0VUKQogCisKKworI2RlZmluZSBEQUNfUkVHX0RIUl9SRUdPRkZTRVRfTUFTS19QT1NCSVQwICAgICAgICAgMHgwMDAwMDAwRlVMIC8qIE1hc2sgb2YgZGF0YSBob2xkIHJlZ2lzdGVycyBvZmZzZXQgKERIUjEyUngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREhSMTJMeCwgREhSOFJ4LCAuLi4pIHdoZW4gc2hpZnRlZCB0byBwb3NpdGlvbiAwICovCisjZGVmaW5lIERBQ19SRUdfRE9SWF9SRUdPRkZTRVRfTUFTS19QT1NCSVQwICAgICAgICAweDAwMDAwMDAxVUwgLyogTWFzayBvZiBET1J4IHJlZ2lzdGVycyBvZmZzZXQgd2hlbiBzaGlmdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gcG9zaXRpb24gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIERBQ19SRUdfU0hTUlhfUkVHT0ZGU0VUX01BU0tfUE9TQklUMCAgICAgICAweDAwMDAwMDAxVUwgLyogTWFzayBvZiBTSFNSeCByZWdpc3RlcnMgb2Zmc2V0IHdoZW4gc2hpZnRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHBvc2l0aW9uIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisjZGVmaW5lIERBQ19SRUdfREhSMTJSWF9SRUdPRkZTRVRfQklUT0ZGU0VUX1BPUyAgICAgICAgICAgMTZVTCAgLyogUG9zaXRpb24gb2YgYml0cyByZWdpc3RlciBvZmZzZXQgb2YgREhSMTJSeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWwgMSBvciAyIHZlcnN1cyBESFIxMlJ4IGNoYW5uZWwgMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaGlmdGVkIGxlZnQgb2YgMTYgYml0cykgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgREFDX1JFR19ESFIxMkxYX1JFR09GRlNFVF9CSVRPRkZTRVRfUE9TICAgICAgICAgICAyMFVMICAvKiBQb3NpdGlvbiBvZiBiaXRzIHJlZ2lzdGVyIG9mZnNldCBvZiBESFIxMkx4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbCAxIG9yIDIgdmVyc3VzIERIUjEyUnggY2hhbm5lbCAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNoaWZ0ZWQgbGVmdCBvZiAyMCBiaXRzKSAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBEQUNfUkVHX0RIUjhSWF9SRUdPRkZTRVRfQklUT0ZGU0VUX1BPUyAgICAgICAgICAgIDI0VUwgIC8qIFBvc2l0aW9uIG9mIGJpdHMgcmVnaXN0ZXIgb2Zmc2V0IG9mIERIUjhSeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWwgMSBvciAyIHZlcnN1cyBESFIxMlJ4IGNoYW5uZWwgMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaGlmdGVkIGxlZnQgb2YgMjQgYml0cykgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgREFDX1JFR19ET1JYX1JFR09GRlNFVF9CSVRPRkZTRVRfUE9TICAgICAgICAgICAgICAyOFVMICAvKiBQb3NpdGlvbiBvZiBiaXRzIHJlZ2lzdGVyIG9mZnNldCBvZiBET1J4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbCAxIG9yIDIgdmVyc3VzIERPUnggY2hhbm5lbCAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNoaWZ0ZWQgbGVmdCBvZiAyOCBiaXRzKSAgICAgICAgICAgICAgICAgICAqLworCiAvKiBEQUMgcmVnaXN0ZXJzIGJpdHMgcG9zaXRpb25zICovCi0jZGVmaW5lIERBQ19ESFIxMlJEX0RBQ0MyREhSX0JJVE9GRlNFVF9QT1MgICAgICAgICAgICAgICAgMTZVICAvKiBWYWx1ZSBlcXVpdmFsZW50IHRvIFBPU0lUSU9OX1ZBTChEQUNfREhSMTJSRF9EQUNDMkRIUikgKi8KLSNkZWZpbmUgREFDX0RIUjEyTERfREFDQzJESFJfQklUT0ZGU0VUX1BPUyAgICAgICAgICAgICAgICAyMFUgIC8qIFZhbHVlIGVxdWl2YWxlbnQgdG8gUE9TSVRJT05fVkFMKERBQ19ESFIxMkxEX0RBQ0MyREhSKSAqLwotI2RlZmluZSBEQUNfREhSOFJEX0RBQ0MyREhSX0JJVE9GRlNFVF9QT1MgICAgICAgICAgICAgICAgICA4VSAgLyogVmFsdWUgZXF1aXZhbGVudCB0byBQT1NJVElPTl9WQUwoREFDX0RIUjhSRF9EQUNDMkRIUikgKi8KKyNkZWZpbmUgREFDX0RIUjEyUkRfREFDQzJESFJfQklUT0ZGU0VUX1BPUyAgICAgICAgICAgICAgICBEQUNfREhSMTJSRF9EQUNDMkRIUl9Qb3MKKyNkZWZpbmUgREFDX0RIUjEyTERfREFDQzJESFJfQklUT0ZGU0VUX1BPUyAgICAgICAgICAgICAgICBEQUNfREhSMTJMRF9EQUNDMkRIUl9Qb3MKKyNkZWZpbmUgREFDX0RIUjhSRF9EQUNDMkRIUl9CSVRPRkZTRVRfUE9TICAgICAgICAgICAgICAgICBEQUNfREhSOFJEX0RBQ0MyREhSX1BvcwogCiAvKiBNaXNjZWxsYW5lb3VzIGRhdGEgKi8KLSNkZWZpbmUgREFDX0RJR0lUQUxfU0NBTEVfMTJCSVRTICAgICAgICAgICAgICAgICAgICAgICAgNDA5NVUgIC8qIEZ1bGwtc2NhbGUgZGlnaXRhbCB2YWx1ZSB3aXRoIGEgcmVzb2x1dGlvbiBvZiAxMiBiaXRzICh2b2x0YWdlIHJhbmdlIGRldGVybWluZWQgYnkgYW5hbG9nIHZvbHRhZ2UgcmVmZXJlbmNlcyBWcmVmKyBhbmQgVnJlZi0sIHJlZmVyIHRvIHJlZmVyZW5jZSBtYW51YWwpICovCisjZGVmaW5lIERBQ19ESUdJVEFMX1NDQUxFXzEyQklUUyAgICAgICAgICAgICAgICAgIDQwOTVVTCAgIC8qIEZ1bGwtc2NhbGUgZGlnaXRhbCB2YWx1ZSB3aXRoIGEgcmVzb2x1dGlvbiBvZiAxMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRzICh2b2x0YWdlIHJhbmdlIGRldGVybWluZWQgYnkgYW5hbG9nIHZvbHRhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyBWcmVmKyBhbmQgVnJlZi0sIHJlZmVyIHRvIHJlZmVyZW5jZSBtYW51YWwpICovCiAKIC8qKgogICAqIEB9CkBAIC05NCwyNiArMTMwLDE1IEBACiAgICovCiAKIC8qKgotICAqIEBicmllZiAgRHJpdmVyIG1hY3JvIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2U6IGlzb2xhdGUgYml0cyB3aXRoIHRoZQotICAqICAgICAgICAgc2VsZWN0ZWQgbWFzayBhbmQgc2hpZnQgdGhlbSB0byB0aGUgcmVnaXN0ZXIgTFNCCi0gICogICAgICAgICAoc2hpZnQgbWFzayBvbiByZWdpc3RlciBwb3NpdGlvbiBiaXQgMCkuCi0gICogQHBhcmFtICBfX0JJVFNfXyBCaXRzIGluIHJlZ2lzdGVyIDMyIGJpdHMKLSAgKiBAcGFyYW0gIF9fTUFTS19fIE1hc2sgaW4gcmVnaXN0ZXIgMzIgYml0cwotICAqIEByZXR2YWwgQml0cyBpbiByZWdpc3RlciAzMiBiaXRzCi0qLwotI2RlZmluZSBfX0RBQ19NQVNLX1NISUZUKF9fQklUU19fLCBfX01BU0tfXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKCgoX19CSVRTX18pICYgKF9fTUFTS19fKSkgPj4gUE9TSVRJT05fVkFMKChfX01BU0tfXykpKQotCi0vKioKICAgKiBAYnJpZWYgIERyaXZlciBtYWNybyByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlOiBzZXQgYSBwb2ludGVyIHRvCiAgICogICAgICAgICBhIHJlZ2lzdGVyIGZyb20gYSByZWdpc3RlciBiYXNpcyBmcm9tIHdoaWNoIGFuIG9mZnNldAogICAqICAgICAgICAgaXMgYXBwbGllZC4KICAgKiBAcGFyYW0gIF9fUkVHX18gUmVnaXN0ZXIgYmFzaXMgZnJvbSB3aGljaCB0aGUgb2Zmc2V0IGlzIGFwcGxpZWQuCiAgICogQHBhcmFtICBfX1JFR19PRkZGU0VUX18gT2Zmc2V0IHRvIGJlIGFwcGxpZWQgKHVuaXQ6IG51bWJlciBvZiByZWdpc3RlcnMpLgogICAqIEByZXR2YWwgUG9pbnRlciB0byByZWdpc3RlciBhZGRyZXNzCi0qLworICAqLwogI2RlZmluZSBfX0RBQ19QVFJfUkVHX09GRlNFVChfX1JFR19fLCBfX1JFR19PRkZGU0VUX18pICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAoKHVpbnQzMl90ICopKCh1aW50MzJfdCkgKCh1aW50MzJfdCkoJihfX1JFR19fKSkgKyAoKF9fUkVHX09GRkZTRVRfXykgPDwgMlUpKSkpCisgICgodWludDMyX3QgKikoKHVpbnQzMl90KSAoKHVpbnQzMl90KSgmKF9fUkVHX18pKSArICgoX19SRUdfT0ZGRlNFVF9fKSA8PCAyVUwpKSkpCiAKIC8qKgogICAqIEB9CkBAIC0xMzEsMjggKzE1NiwzOCBAQAogICAqLwogdHlwZWRlZiBzdHJ1Y3QKIHsKLSAgdWludDMyX3QgVHJpZ2dlclNvdXJjZTsgICAgICAgICAgICAgICAvKiE8IFNldCB0aGUgY29udmVyc2lvbiB0cmlnZ2VyIHNvdXJjZSBmb3IgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsOiBpbnRlcm5hbCAoU1cgc3RhcnQpIG9yIGZyb20gZXh0ZXJuYWwgSVAgKHRpbWVyIGV2ZW50LCBleHRlcm5hbCBpbnRlcnJ1cHQgbGluZSkuCisgIHVpbnQzMl90IFRyaWdnZXJTb3VyY2U7ICAgICAgICAgICAgICAgLyohPCBTZXQgdGhlIGNvbnZlcnNpb24gdHJpZ2dlciBzb3VyY2UgZm9yIHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsIChTVyBzdGFydCkgb3IgZnJvbSBleHRlcm5hbCBwZXJpcGhlcmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGltZXIgZXZlbnQsIGV4dGVybmFsIGludGVycnVwdCBsaW5lKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgREFDX0xMX0VDX1RSSUdHRVJfU09VUkNFCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfREFDX1NldFRyaWdnZXJTb3VyY2UoKS4gKi8KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEByZWYgTExfREFDX1NldFRyaWdnZXJTb3VyY2UoKS4gKi8KIAogICB1aW50MzJfdCBXYXZlQXV0b0dlbmVyYXRpb247ICAgICAgICAgIC8qITwgU2V0IHRoZSB3YXZlZm9ybSBhdXRvbWF0aWMgZ2VuZXJhdGlvbiBtb2RlIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIERBQ19MTF9FQ19XQVZFX0FVVE9fR0VORVJBVElPTl9NT0RFCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfREFDX1NldFdhdmVBdXRvR2VuZXJhdGlvbigpLiAqLworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQHJlZiBMTF9EQUNfU2V0V2F2ZUF1dG9HZW5lcmF0aW9uKCkuICovCiAKICAgdWludDMyX3QgV2F2ZUF1dG9HZW5lcmF0aW9uQ29uZmlnOyAgICAvKiE8IFNldCB0aGUgd2F2ZWZvcm0gYXV0b21hdGljIGdlbmVyYXRpb24gbW9kZSBmb3IgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgd2F2ZWZvcm0gYXV0b21hdGljIGdlbmVyYXRpb24gbW9kZSBpcyBzZXQgdG8gbm9pc2UsIHRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgREFDX0xMX0VDX1dBVkVfTk9JU0VfTEZTUl9VTk1BU0tfQklUUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgd2F2ZWZvcm0gYXV0b21hdGljIGdlbmVyYXRpb24gbW9kZSBpcyBzZXQgdG8gdHJpYW5nbGUsIHRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgREFDX0xMX0VDX1dBVkVfVFJJQU5HTEVfQU1QTElUVURFCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAbm90ZSBJZiB3YXZlZm9ybSBhdXRvbWF0aWMgZ2VuZXJhdGlvbiBtb2RlIGlzIGRpc2FibGVkLCB0aGlzIHBhcmFtZXRlciBpcyBkaXNjYXJkZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfREFDX1NldFdhdmVOb2lzZUxGU1IoKSBvciBAcmVmIExMX0RBQ19TZXRXYXZlVHJpYW5nbGVBbXBsaXR1ZGUoKSwgZGVwZW5kaW5nIG9uIHRoZSB3YXZlIGF1dG9tYXRpYyBnZW5lcmF0aW9uIHNlbGVjdGVkLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgd2F2ZWZvcm0gYXV0b21hdGljIGdlbmVyYXRpb24gbW9kZSBpcyBzZXQgdG8gbm9pc2UsIHRoaXMgcGFyYW1ldGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIERBQ19MTF9FQ19XQVZFX05PSVNFX0xGU1JfVU5NQVNLX0JJVFMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHdhdmVmb3JtIGF1dG9tYXRpYyBnZW5lcmF0aW9uIG1vZGUgaXMgc2V0IHRvIHRyaWFuZ2xlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBEQUNfTExfRUNfV0FWRV9UUklBTkdMRV9BTVBMSVRVREUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBub3RlIElmIHdhdmVmb3JtIGF1dG9tYXRpYyBnZW5lcmF0aW9uIG1vZGUgaXMgZGlzYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBwYXJhbWV0ZXIgaXMgZGlzY2FyZGVkLgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQHJlZiBMTF9EQUNfU2V0V2F2ZU5vaXNlTEZTUigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHJlZiBMTF9EQUNfU2V0V2F2ZVRyaWFuZ2xlQW1wbGl0dWRlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiB0aGUgd2F2ZSBhdXRvbWF0aWMgZ2VuZXJhdGlvbiBzZWxlY3RlZC4gKi8KIAogICB1aW50MzJfdCBPdXRwdXRCdWZmZXI7ICAgICAgICAgICAgICAgIC8qITwgU2V0IHRoZSBvdXRwdXQgYnVmZmVyIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIERBQ19MTF9FQ19PVVRQVVRfQlVGRkVSCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfREFDX1NldE91dHB1dEJ1ZmZlcigpLiAqLwogCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQHJlZiBMTF9EQUNfU2V0T3V0cHV0QnVmZmVyKCkuICovCiB9IExMX0RBQ19Jbml0VHlwZURlZjsKIAogLyoqCkBAIC0xNzQsNiArMjA5LDcgQEAKIAogLyogREFDIGNoYW5uZWwgMiBmbGFncyAqLwogI2RlZmluZSBMTF9EQUNfRkxBR19ETUFVRFIyICAgICAgICAgICAgICAgIChEQUNfU1JfRE1BVURSMikgICAvKiE8IERBQyBjaGFubmVsIDIgZmxhZyBETUEgdW5kZXJydW4gKi8KKwogLyoqCiAgICogQH0KICAgKi8KQEAgLTE4Myw3ICsyMTksOSBAQAogICAqIEB7CiAgICovCiAjZGVmaW5lIExMX0RBQ19JVF9ETUFVRFJJRTEgICAgICAgICAgICAgICAgKERBQ19DUl9ETUFVRFJJRTEpIC8qITwgREFDIGNoYW5uZWwgMSBpbnRlcnJ1cHRpb24gRE1BIHVuZGVycnVuICovCisKICNkZWZpbmUgTExfREFDX0lUX0RNQVVEUklFMiAgICAgICAgICAgICAgICAoREFDX0NSX0RNQVVEUklFMikgLyohPCBEQUMgY2hhbm5lbCAyIGludGVycnVwdGlvbiBETUEgdW5kZXJydW4gKi8KKwogLyoqCiAgICogQH0KICAgKi8KQEAgLTE5Miw3ICsyMzAsOSBAQAogICAqIEB7CiAgICovCiAjZGVmaW5lIExMX0RBQ19DSEFOTkVMXzEgICAgICAgICAgICAgICAgICAgKERBQ19SRUdfRE9SMV9SRUdPRkZTRVQgfCBEQUNfUkVHX0RIUjEyUjFfUkVHT0ZGU0VUIHwgREFDX1JFR19ESFIxMkwxX1JFR09GRlNFVCB8IERBQ19SRUdfREhSOFIxX1JFR09GRlNFVCB8IERBQ19DUl9DSDFfQklUT0ZGU0VUIHwgREFDX1NXVFJfQ0gxKSAvKiE8IERBQyBjaGFubmVsIDEgKi8KKwogI2RlZmluZSBMTF9EQUNfQ0hBTk5FTF8yICAgICAgICAgICAgICAgICAgIChEQUNfUkVHX0RPUjJfUkVHT0ZGU0VUIHwgREFDX1JFR19ESFIxMlIyX1JFR09GRlNFVCB8IERBQ19SRUdfREhSMTJMMl9SRUdPRkZTRVQgfCBEQUNfUkVHX0RIUjhSMl9SRUdPRkZTRVQgfCBEQUNfQ1JfQ0gyX0JJVE9GRlNFVCB8IERBQ19TV1RSX0NIMikgLyohPCBEQUMgY2hhbm5lbCAyICovCisKIC8qKgogICAqIEB9CiAgICovCkBAIC0yMDEsMTMgKzI0MSwxMyBAQAogICAqIEB7CiAgICovCiAjZGVmaW5lIExMX0RBQ19UUklHX1NPRlRXQVJFICAgICAgICAgICAgICAgKERBQ19DUl9UU0VMMV8yIHwgREFDX0NSX1RTRUwxXzEgfCBEQUNfQ1JfVFNFTDFfMCkgLyohPCBEQUMgY2hhbm5lbCBjb252ZXJzaW9uIHRyaWdnZXIgaW50ZXJuYWwgKFNXIHN0YXJ0KSAqLwotI2RlZmluZSBMTF9EQUNfVFJJR19FWFRfVElNMl9UUkdPICAgICAgICAgIChEQUNfQ1JfVFNFTDFfMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIC8qITwgREFDIGNoYW5uZWwgY29udmVyc2lvbiB0cmlnZ2VyIGZyb20gZXh0ZXJuYWwgSVA6IFRJTTIgVFJHTy4gKi8KLSNkZWZpbmUgTExfREFDX1RSSUdfRVhUX1RJTThfVFJHTyAgICAgICAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBQ19DUl9UU0VMMV8wKSAvKiE8IERBQyBjaGFubmVsIGNvbnZlcnNpb24gdHJpZ2dlciBmcm9tIGV4dGVybmFsIElQOiBUSU04IFRSR08uICovCi0jZGVmaW5lIExMX0RBQ19UUklHX0VYVF9USU00X1RSR08gICAgICAgICAgKERBQ19DUl9UU0VMMV8yICAgICAgICAgICAgICAgICAgfCBEQUNfQ1JfVFNFTDFfMCkgLyohPCBEQUMgY2hhbm5lbCBjb252ZXJzaW9uIHRyaWdnZXIgZnJvbSBleHRlcm5hbCBJUDogVElNNCBUUkdPLiAqLwotI2RlZmluZSBMTF9EQUNfVFJJR19FWFRfVElNNl9UUkdPICAgICAgICAgIDB4MDAwMDAwMDBVICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgREFDIGNoYW5uZWwgY29udmVyc2lvbiB0cmlnZ2VyIGZyb20gZXh0ZXJuYWwgSVA6IFRJTTYgVFJHTy4gKi8KLSNkZWZpbmUgTExfREFDX1RSSUdfRVhUX1RJTTdfVFJHTyAgICAgICAgICAoICAgICAgICAgICAgICAgICBEQUNfQ1JfVFNFTDFfMSAgICAgICAgICAgICAgICAgKSAvKiE8IERBQyBjaGFubmVsIGNvbnZlcnNpb24gdHJpZ2dlciBmcm9tIGV4dGVybmFsIElQOiBUSU03IFRSR08uICovCi0jZGVmaW5lIExMX0RBQ19UUklHX0VYVF9USU01X1RSR08gICAgICAgICAgKCAgICAgICAgICAgICAgICAgREFDX0NSX1RTRUwxXzEgfCBEQUNfQ1JfVFNFTDFfMCkgLyohPCBEQUMgY2hhbm5lbCBjb252ZXJzaW9uIHRyaWdnZXIgZnJvbSBleHRlcm5hbCBJUDogVElNNSBUUkdPLiAqLwotI2RlZmluZSBMTF9EQUNfVFJJR19FWFRfRVhUSV9MSU5FOSAgICAgICAgIChEQUNfQ1JfVFNFTDFfMiB8IERBQ19DUl9UU0VMMV8xICAgICAgICAgICAgICAgICApIC8qITwgREFDIGNoYW5uZWwgY29udmVyc2lvbiB0cmlnZ2VyIGZyb20gZXh0ZXJuYWwgSVA6IGV4dGVybmFsIGludGVycnVwdCBsaW5lIDkuICovCisjZGVmaW5lIExMX0RBQ19UUklHX0VYVF9USU0yX1RSR08gICAgICAgICAgKERBQ19DUl9UU0VMMV8yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgLyohPCBEQUMgY2hhbm5lbCBjb252ZXJzaW9uIHRyaWdnZXIgZnJvbSBleHRlcm5hbCBwZXJpcGhlcmFsOiBUSU0yIFRSR08uICovCisjZGVmaW5lIExMX0RBQ19UUklHX0VYVF9USU04X1RSR08gICAgICAgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQUNfQ1JfVFNFTDFfMCkgLyohPCBEQUMgY2hhbm5lbCBjb252ZXJzaW9uIHRyaWdnZXIgZnJvbSBleHRlcm5hbCBwZXJpcGhlcmFsOiBUSU04IFRSR08uICovCisjZGVmaW5lIExMX0RBQ19UUklHX0VYVF9USU00X1RSR08gICAgICAgICAgKERBQ19DUl9UU0VMMV8yICAgICAgICAgICAgICAgICAgfCBEQUNfQ1JfVFNFTDFfMCkgLyohPCBEQUMgY2hhbm5lbCBjb252ZXJzaW9uIHRyaWdnZXIgZnJvbSBleHRlcm5hbCBwZXJpcGhlcmFsOiBUSU00IFRSR08uICovCisjZGVmaW5lIExMX0RBQ19UUklHX0VYVF9USU02X1RSR08gICAgICAgICAgMHgwMDAwMDAwMFVMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBEQUMgY2hhbm5lbCBjb252ZXJzaW9uIHRyaWdnZXIgZnJvbSBleHRlcm5hbCBwZXJpcGhlcmFsOiBUSU02IFRSR08uICovCisjZGVmaW5lIExMX0RBQ19UUklHX0VYVF9USU03X1RSR08gICAgICAgICAgKCAgICAgICAgICAgICAgICAgREFDX0NSX1RTRUwxXzEgICAgICAgICAgICAgICAgICkgLyohPCBEQUMgY2hhbm5lbCBjb252ZXJzaW9uIHRyaWdnZXIgZnJvbSBleHRlcm5hbCBwZXJpcGhlcmFsOiBUSU03IFRSR08uICovCisjZGVmaW5lIExMX0RBQ19UUklHX0VYVF9USU01X1RSR08gICAgICAgICAgKCAgICAgICAgICAgICAgICAgREFDX0NSX1RTRUwxXzEgfCBEQUNfQ1JfVFNFTDFfMCkgLyohPCBEQUMgY2hhbm5lbCBjb252ZXJzaW9uIHRyaWdnZXIgZnJvbSBleHRlcm5hbCBwZXJpcGhlcmFsOiBUSU01IFRSR08uICovCisjZGVmaW5lIExMX0RBQ19UUklHX0VYVF9FWFRJX0xJTkU5ICAgICAgICAgKERBQ19DUl9UU0VMMV8yIHwgREFDX0NSX1RTRUwxXzEgICAgICAgICAgICAgICAgICkgLyohPCBEQUMgY2hhbm5lbCBjb252ZXJzaW9uIHRyaWdnZXIgZnJvbSBleHRlcm5hbCBwZXJpcGhlcmFsOiBleHRlcm5hbCBpbnRlcnJ1cHQgbGluZSA5LiAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTIxNSw5ICsyNTUsOSBAQAogLyoqIEBkZWZncm91cCBEQUNfTExfRUNfV0FWRV9BVVRPX0dFTkVSQVRJT05fTU9ERSBEQUMgd2F2ZWZvcm0gYXV0b21hdGljIGdlbmVyYXRpb24gbW9kZQogICAqIEB7CiAgICovCi0jZGVmaW5lIExMX0RBQ19XQVZFX0FVVE9fR0VORVJBVElPTl9OT05FICAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAvKiE8IERBQyBjaGFubmVsIHdhdmUgYXV0byBnZW5lcmF0aW9uIG1vZGUgZGlzYWJsZWQuICovCi0jZGVmaW5lIExMX0RBQ19XQVZFX0FVVE9fR0VORVJBVElPTl9OT0lTRSAgICAoREFDX0NSX1dBVkUxXzApICAgICAgICAvKiE8IERBQyBjaGFubmVsIHdhdmUgYXV0byBnZW5lcmF0aW9uIG1vZGUgZW5hYmxlZCwgc2V0IGdlbmVyYXRlZCBub2lzZSB3YXZlZm9ybS4gKi8KLSNkZWZpbmUgTExfREFDX1dBVkVfQVVUT19HRU5FUkFUSU9OX1RSSUFOR0xFIChEQUNfQ1JfV0FWRTFfMSkgICAgICAgIC8qITwgREFDIGNoYW5uZWwgd2F2ZSBhdXRvIGdlbmVyYXRpb24gbW9kZSBlbmFibGVkLCBzZXQgZ2VuZXJhdGVkIHRyaWFuZ2xlIHdhdmVmb3JtLiAqLworI2RlZmluZSBMTF9EQUNfV0FWRV9BVVRPX0dFTkVSQVRJT05fTk9ORSAgICAgMHgwMDAwMDAwMFVMICAgICAgICAgICAgICAgICAgICAvKiE8IERBQyBjaGFubmVsIHdhdmUgYXV0byBnZW5lcmF0aW9uIG1vZGUgZGlzYWJsZWQuICovCisjZGVmaW5lIExMX0RBQ19XQVZFX0FVVE9fR0VORVJBVElPTl9OT0lTRSAgICAoICAgICAgICAgICAgICAgREFDX0NSX1dBVkUxXzApIC8qITwgREFDIGNoYW5uZWwgd2F2ZSBhdXRvIGdlbmVyYXRpb24gbW9kZSBlbmFibGVkLCBzZXQgZ2VuZXJhdGVkIG5vaXNlIHdhdmVmb3JtLiAqLworI2RlZmluZSBMTF9EQUNfV0FWRV9BVVRPX0dFTkVSQVRJT05fVFJJQU5HTEUgKERBQ19DUl9XQVZFMV8xICAgICAgICAgICAgICAgKSAvKiE8IERBQyBjaGFubmVsIHdhdmUgYXV0byBnZW5lcmF0aW9uIG1vZGUgZW5hYmxlZCwgc2V0IGdlbmVyYXRlZCB0cmlhbmdsZSB3YXZlZm9ybS4gKi8KIC8qKgogICAqIEB9CiAgICovCkBAIC0yMjUsNyArMjY1LDcgQEAKIC8qKiBAZGVmZ3JvdXAgREFDX0xMX0VDX1dBVkVfTk9JU0VfTEZTUl9VTk1BU0tfQklUUyBEQUMgd2F2ZSBnZW5lcmF0aW9uIC0gTm9pc2UgTEZTUiB1bm1hc2sgYml0cwogICAqIEB7CiAgICovCi0jZGVmaW5lIExMX0RBQ19OT0lTRV9MRlNSX1VOTUFTS19CSVQwICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IE5vaXNlIHdhdmUgZ2VuZXJhdGlvbiwgdW5tYXNrIExGU1IgYml0MCwgZm9yIHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbCAqLworI2RlZmluZSBMTF9EQUNfTk9JU0VfTEZTUl9VTk1BU0tfQklUMCAgICAgIDB4MDAwMDAwMDBVTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBOb2lzZSB3YXZlIGdlbmVyYXRpb24sIHVubWFzayBMRlNSIGJpdDAsIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgKi8KICNkZWZpbmUgTExfREFDX05PSVNFX0xGU1JfVU5NQVNLX0JJVFMxXzAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFDX0NSX01BTVAxXzApIC8qITwgTm9pc2Ugd2F2ZSBnZW5lcmF0aW9uLCB1bm1hc2sgTEZTUiBiaXRzWzE6MF0sIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgKi8KICNkZWZpbmUgTExfREFDX05PSVNFX0xGU1JfVU5NQVNLX0JJVFMyXzAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBQ19DUl9NQU1QMV8xICAgICAgICAgICAgICAgICApIC8qITwgTm9pc2Ugd2F2ZSBnZW5lcmF0aW9uLCB1bm1hc2sgTEZTUiBiaXRzWzI6MF0sIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgKi8KICNkZWZpbmUgTExfREFDX05PSVNFX0xGU1JfVU5NQVNLX0JJVFMzXzAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBQ19DUl9NQU1QMV8xIHwgREFDX0NSX01BTVAxXzApIC8qITwgTm9pc2Ugd2F2ZSBnZW5lcmF0aW9uLCB1bm1hc2sgTEZTUiBiaXRzWzM6MF0sIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgKi8KQEAgLTI0NCw3ICsyODQsNyBAQAogLyoqIEBkZWZncm91cCBEQUNfTExfRUNfV0FWRV9UUklBTkdMRV9BTVBMSVRVREUgREFDIHdhdmUgZ2VuZXJhdGlvbiAtIFRyaWFuZ2xlIGFtcGxpdHVkZQogICAqIEB7CiAgICovCi0jZGVmaW5lIExMX0RBQ19UUklBTkdMRV9BTVBMSVRVREVfMSAgICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFRyaWFuZ2xlIHdhdmUgZ2VuZXJhdGlvbiwgYW1wbGl0dWRlIG9mIDEgTFNCIG9mIERBQyBvdXRwdXQgcmFuZ2UsIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgKi8KKyNkZWZpbmUgTExfREFDX1RSSUFOR0xFX0FNUExJVFVERV8xICAgICAgICAweDAwMDAwMDAwVUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgVHJpYW5nbGUgd2F2ZSBnZW5lcmF0aW9uLCBhbXBsaXR1ZGUgb2YgMSBMU0Igb2YgREFDIG91dHB1dCByYW5nZSwgZm9yIHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbCAqLwogI2RlZmluZSBMTF9EQUNfVFJJQU5HTEVfQU1QTElUVURFXzMgICAgICAgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQUNfQ1JfTUFNUDFfMCkgLyohPCBUcmlhbmdsZSB3YXZlIGdlbmVyYXRpb24sIGFtcGxpdHVkZSBvZiAzIExTQiBvZiBEQUMgb3V0cHV0IHJhbmdlLCBmb3IgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsICovCiAjZGVmaW5lIExMX0RBQ19UUklBTkdMRV9BTVBMSVRVREVfNyAgICAgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQUNfQ1JfTUFNUDFfMSAgICAgICAgICAgICAgICAgKSAvKiE8IFRyaWFuZ2xlIHdhdmUgZ2VuZXJhdGlvbiwgYW1wbGl0dWRlIG9mIDcgTFNCIG9mIERBQyBvdXRwdXQgcmFuZ2UsIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgKi8KICNkZWZpbmUgTExfREFDX1RSSUFOR0xFX0FNUExJVFVERV8xNSAgICAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBQ19DUl9NQU1QMV8xIHwgREFDX0NSX01BTVAxXzApIC8qITwgVHJpYW5nbGUgd2F2ZSBnZW5lcmF0aW9uLCBhbXBsaXR1ZGUgb2YgMTUgTFNCIG9mIERBQyBvdXRwdXQgcmFuZ2UsIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgKi8KQEAgLTI2MywxOCArMzAzLDE3IEBACiAvKiogQGRlZmdyb3VwIERBQ19MTF9FQ19PVVRQVVRfQlVGRkVSIERBQyBjaGFubmVsIG91dHB1dCBidWZmZXIKICAgKiBAewogICAqLwotI2RlZmluZSBMTF9EQUNfT1VUUFVUX0JVRkZFUl9FTkFCTEUgICAgICAgIDB4MDAwMDAwMDBVICAgICAgICAgICAgIC8qITwgVGhlIHNlbGVjdGVkIERBQyBjaGFubmVsIG91dHB1dCBpcyBidWZmZXJlZDogaGlnaGVyIGRyaXZlIGN1cnJlbnQgY2FwYWJpbGl0eSwgYnV0IGFsc28gaGlnaGVyIGN1cnJlbnQgY29uc3VtcHRpb24gKi8KKyNkZWZpbmUgTExfREFDX09VVFBVVF9CVUZGRVJfRU5BQkxFICAgICAgICAweDAwMDAwMDAwVUwgICAgICAgICAgICAvKiE8IFRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbCBvdXRwdXQgaXMgYnVmZmVyZWQ6IGhpZ2hlciBkcml2ZSBjdXJyZW50IGNhcGFiaWxpdHksIGJ1dCBhbHNvIGhpZ2hlciBjdXJyZW50IGNvbnN1bXB0aW9uICovCiAjZGVmaW5lIExMX0RBQ19PVVRQVVRfQlVGRkVSX0RJU0FCTEUgICAgICAgKERBQ19DUl9CT0ZGMSkgICAgICAgICAgLyohPCBUaGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgb3V0cHV0IGlzIG5vdCBidWZmZXJlZDogbG93ZXIgZHJpdmUgY3VycmVudCBjYXBhYmlsaXR5LCBidXQgYWxzbyBsb3dlciBjdXJyZW50IGNvbnN1bXB0aW9uICovCiAvKioKICAgKiBAfQogICAqLwogCi0KIC8qKiBAZGVmZ3JvdXAgREFDX0xMX0VDX1JFU09MVVRJT04gIERBQyBjaGFubmVsIG91dHB1dCByZXNvbHV0aW9uCiAgICogQHsKICAgKi8KLSNkZWZpbmUgTExfREFDX1JFU09MVVRJT05fMTJCICAgICAgICAgICAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAvKiE8IERBQyBjaGFubmVsIHJlc29sdXRpb24gMTIgYml0cyAqLwotI2RlZmluZSBMTF9EQUNfUkVTT0xVVElPTl84QiAgICAgICAgICAgICAgIDB4MDAwMDAwMDJVICAgICAgICAgICAgIC8qITwgREFDIGNoYW5uZWwgcmVzb2x1dGlvbiA4IGJpdHMgKi8KKyNkZWZpbmUgTExfREFDX1JFU09MVVRJT05fMTJCICAgICAgICAgICAgICAweDAwMDAwMDAwVUwgICAgICAgICAgICAvKiE8IERBQyBjaGFubmVsIHJlc29sdXRpb24gMTIgYml0cyAqLworI2RlZmluZSBMTF9EQUNfUkVTT0xVVElPTl84QiAgICAgICAgICAgICAgIDB4MDAwMDAwMDJVTCAgICAgICAgICAgIC8qITwgREFDIGNoYW5uZWwgcmVzb2x1dGlvbiA4IGJpdHMgKi8KIC8qKgogICAqIEB9CiAgICovCkBAIC0yODUsMTUgKzMyNCwxNSBAQAogLyogTGlzdCBvZiBEQUMgcmVnaXN0ZXJzIGludGVuZGVkIHRvIGJlIHVzZWQgKG1vc3QgY29tbW9ubHkpIHdpdGggICAgICAgICAgICAgKi8KIC8qIERNQSB0cmFuc2Zlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiBSZWZlciB0byBmdW5jdGlvbiBAcmVmIExMX0RBQ19ETUFfR2V0UmVnQWRkcigpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBMTF9EQUNfRE1BX1JFR19EQVRBXzEyQklUU19SSUdIVF9BTElHTkVEICBEQUNfUkVHX0RIUjEyUlhfUkVHT0ZGU0VUX01BU0sgLyohPCBEQUMgY2hhbm5lbCBkYXRhIGhvbGRpbmcgcmVnaXN0ZXIgMTIgYml0cyByaWdodCBhbGlnbmVkICovCi0jZGVmaW5lIExMX0RBQ19ETUFfUkVHX0RBVEFfMTJCSVRTX0xFRlRfQUxJR05FRCAgIERBQ19SRUdfREhSMTJMWF9SRUdPRkZTRVRfTUFTSyAvKiE8IERBQyBjaGFubmVsIGRhdGEgaG9sZGluZyByZWdpc3RlciAxMiBiaXRzIGxlZnQgYWxpZ25lZCAqLwotI2RlZmluZSBMTF9EQUNfRE1BX1JFR19EQVRBXzhCSVRTX1JJR0hUX0FMSUdORUQgICBEQUNfUkVHX0RIUjhSWF9SRUdPRkZTRVRfTUFTSyAgLyohPCBEQUMgY2hhbm5lbCBkYXRhIGhvbGRpbmcgcmVnaXN0ZXIgOCBiaXRzIHJpZ2h0IGFsaWduZWQgKi8KKyNkZWZpbmUgTExfREFDX0RNQV9SRUdfREFUQV8xMkJJVFNfUklHSFRfQUxJR05FRCAgREFDX1JFR19ESFIxMlJYX1JFR09GRlNFVF9CSVRPRkZTRVRfUE9TIC8qITwgREFDIGNoYW5uZWwgZGF0YSBob2xkaW5nIHJlZ2lzdGVyIDEyIGJpdHMgcmlnaHQgYWxpZ25lZCAqLworI2RlZmluZSBMTF9EQUNfRE1BX1JFR19EQVRBXzEyQklUU19MRUZUX0FMSUdORUQgICBEQUNfUkVHX0RIUjEyTFhfUkVHT0ZGU0VUX0JJVE9GRlNFVF9QT1MgLyohPCBEQUMgY2hhbm5lbCBkYXRhIGhvbGRpbmcgcmVnaXN0ZXIgMTIgYml0cyBsZWZ0IGFsaWduZWQgKi8KKyNkZWZpbmUgTExfREFDX0RNQV9SRUdfREFUQV84QklUU19SSUdIVF9BTElHTkVEICAgREFDX1JFR19ESFI4UlhfUkVHT0ZGU0VUX0JJVE9GRlNFVF9QT1MgIC8qITwgREFDIGNoYW5uZWwgZGF0YSBob2xkaW5nIHJlZ2lzdGVyIDggYml0cyByaWdodCBhbGlnbmVkICovCiAvKioKICAgKiBAfQogICAqLwogCiAvKiogQGRlZmdyb3VwIERBQ19MTF9FQ19IV19ERUxBWVMgIERlZmluaXRpb25zIG9mIERBQyBoYXJkd2FyZSBjb25zdHJhaW50cyBkZWxheXMKLSAgKiBAbm90ZSAgIE9ubHkgREFDIElQIEhXIGRlbGF5cyBhcmUgZGVmaW5lZCBpbiBEQUMgTEwgZHJpdmVyIGRyaXZlciwKKyAgKiBAbm90ZSAgIE9ubHkgREFDIHBlcmlwaGVyYWwgSFcgZGVsYXlzIGFyZSBkZWZpbmVkIGluIERBQyBMTCBkcml2ZXIgZHJpdmVyLAogICAqICAgICAgICAgbm90IHRpbWVvdXQgdmFsdWVzLgogICAqICAgICAgICAgRm9yIGRldGFpbHMgb24gZGVsYXlzIHZhbHVlcywgcmVmZXIgdG8gZGVzY3JpcHRpb25zIGluIHNvdXJjZSBjb2RlCiAgICogICAgICAgICBhYm92ZSBlYWNoIGxpdGVyYWwgZGVmaW5pdGlvbi4KQEAgLTMxMiw3ICszNTEsNyBAQAogLyogTGl0ZXJhbCBzZXQgdG8gbWF4aW11bSB2YWx1ZSAocmVmZXIgdG8gZGV2aWNlIGRhdGFzaGVldCwgICAgICAgICAgICAgICAgICAgKi8KIC8qIHBhcmFtZXRlciAidFdBS0VVUCIpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiBVbml0OiB1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBMTF9EQUNfREVMQVlfU1RBUlRVUF9WT0xUQUdFX1NFVFRMSU5HX1VTICAgICAgICAgICAgIDE1VSAgLyohPCBEZWxheSBmb3IgREFDIGNoYW5uZWwgdm9sdGFnZSBzZXR0bGluZyB0aW1lIGZyb20gREFDIGNoYW5uZWwgc3RhcnR1cCAodHJhbnNpdGlvbiBmcm9tIGRpc2FibGUgdG8gZW5hYmxlKSAqLworI2RlZmluZSBMTF9EQUNfREVMQVlfU1RBUlRVUF9WT0xUQUdFX1NFVFRMSU5HX1VTICAgICAgICAgICAgIDE1VUwgLyohPCBEZWxheSBmb3IgREFDIGNoYW5uZWwgdm9sdGFnZSBzZXR0bGluZyB0aW1lIGZyb20gREFDIGNoYW5uZWwgc3RhcnR1cCAodHJhbnNpdGlvbiBmcm9tIGRpc2FibGUgdG8gZW5hYmxlKSAqLwogCiAvKiBEZWxheSBmb3IgREFDIGNoYW5uZWwgdm9sdGFnZSBzZXR0bGluZyB0aW1lLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogTm90ZTogREFDIGNoYW5uZWwgc3RhcnR1cCB0aW1lIGRlcGVuZHMgb24gYm9hcmQgYXBwbGljYXRpb24gZW52aXJvbm1lbnQ6ICAgKi8KQEAgLTMyNSw3ICszNjQsOCBAQAogLyogTGl0ZXJhbCBzZXQgdG8gbWF4aW11bSB2YWx1ZSAocmVmZXIgdG8gZGV2aWNlIGRhdGFzaGVldCwgICAgICAgICAgICAgICAgICAgKi8KIC8qIHBhcmFtZXRlciAidFNFVFRMSU5HIikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiBVbml0OiB1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBMTF9EQUNfREVMQVlfVk9MVEFHRV9TRVRUTElOR19VUyAgICAgICAgICAgICAgICAgICAgMTJVICAvKiE8IERlbGF5IGZvciBEQUMgY2hhbm5lbCB2b2x0YWdlIHNldHRsaW5nIHRpbWUgKi8KKyNkZWZpbmUgTExfREFDX0RFTEFZX1ZPTFRBR0VfU0VUVExJTkdfVVMgICAgICAgICAgICAgICAgICAgIDEyVUwgLyohPCBEZWxheSBmb3IgREFDIGNoYW5uZWwgdm9sdGFnZSBzZXR0bGluZyB0aW1lICovCisKIC8qKgogICAqIEB9CiAgICovCkBAIC0zOTcsMjIgKzQzNyw4IEBACiAgICogICAgICAgICBAYXJnIEByZWYgTExfREFDX0NIQU5ORUxfMQogICAqICAgICAgICAgQGFyZyBAcmVmIExMX0RBQ19DSEFOTkVMXzIKICAgKi8KLSNkZWZpbmUgX19MTF9EQUNfREVDSU1BTF9OQl9UT19DSEFOTkVMKF9fREVDSU1BTF9OQl9fKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgoKF9fREVDSU1BTF9OQl9fKSA9PSAxVSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICA/ICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgTExfREFDX0NIQU5ORUxfMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAoKChfX0RFQ0lNQUxfTkJfXykgPT0gMlUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgPyAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgIExMX0RBQ19DSEFOTkVMXzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICApCisjZGVmaW5lIF9fTExfREFDX0RFQ0lNQUxfTkJfVE9fQ0hBTk5FTChfX0RFQ0lNQUxfTkJfXylcCisgICgoKF9fREVDSU1BTF9OQl9fKSA9PSAxVUwpPyAoTExfREFDX0NIQU5ORUxfMSAgKTooKChfX0RFQ0lNQUxfTkJfXykgPT0gMlVMKSA/ICggTExfREFDX0NIQU5ORUxfMik6KDBVTCkpKQogCiAvKioKICAgKiBAYnJpZWYgIEhlbHBlciBtYWNybyB0byBkZWZpbmUgdGhlIERBQyBjb252ZXJzaW9uIGRhdGEgZnVsbC1zY2FsZSBkaWdpdGFsCkBAIC00MjYsNyArNDUyLDcgQEAKICAgKiBAcmV0dmFsIEFEQyBjb252ZXJzaW9uIGRhdGEgZXF1aXZhbGVudCB2b2x0YWdlIHZhbHVlICh1bml0OiBtVm9sdCkKICAgKi8KICNkZWZpbmUgX19MTF9EQUNfRElHSVRBTF9TQ0FMRShfX0RBQ19SRVNPTFVUSU9OX18pICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgoMHgwMDAwMEZGRlUpID4+ICgoX19EQUNfUkVTT0xVVElPTl9fKSA8PCAxVSkpCisgICgoMHgwMDAwMEZGRlVMKSA+PiAoKF9fREFDX1JFU09MVVRJT05fXykgPDwgMVVMKSkKIAogLyoqCiAgICogQGJyaWVmICBIZWxwZXIgbWFjcm8gdG8gY2FsY3VsYXRlIHRoZSBEQUMgY29udmVyc2lvbiBkYXRhICh1bml0OiBkaWdpdGFsCkBAIC00MzcsNyArNDYzLDcgQEAKICAgKiAgICAgICAgIEByZWYgTExfREFDX0NvbnZlcnREYXRhMTJSaWdodEFsaWduZWQoKS4KICAgKiBAbm90ZSAgIEFuYWxvZyByZWZlcmVuY2Ugdm9sdGFnZSAoVnJlZispIG11c3QgYmUgZWl0aGVyIGtub3duIGZyb20KICAgKiAgICAgICAgIHVzZXIgYm9hcmQgZW52aXJvbm1lbnQgb3IgY2FuIGJlIGNhbGN1bGF0ZWQgdXNpbmcgQURDIG1lYXN1cmVtZW50Ci0gICogICAgICAgICBhbmQgQURDIGhlbHBlciBtYWNybyBAcmVmIF9fTExfQURDX0NBTENfVlJFRkFOQUxPR19WT0xUQUdFKCkuCisgICogICAgICAgICBhbmQgQURDIGhlbHBlciBtYWNybyBfX0xMX0FEQ19DQUxDX1ZSRUZBTkFMT0dfVk9MVEFHRSgpLgogICAqIEBwYXJhbSAgX19WUkVGQU5BTE9HX1ZPTFRBR0VfXyBBbmFsb2cgcmVmZXJlbmNlIHZvbHRhZ2UgKHVuaXQ6IG1WKQogICAqIEBwYXJhbSAgX19EQUNfVk9MVEFHRV9fIFZvbHRhZ2UgdG8gYmUgZ2VuZXJhdGVkIGJ5IERBQyBjaGFubmVsCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgKHVuaXQ6IG1Wb2x0KS4KQEAgLTQ0OSw5ICs0NzUsOSBAQAogI2RlZmluZSBfX0xMX0RBQ19DQUxDX1ZPTFRBR0VfVE9fREFUQShfX1ZSRUZBTkFMT0dfVk9MVEFHRV9fLFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19EQUNfVk9MVEFHRV9fLFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19EQUNfUkVTT0xVVElPTl9fKSAgICAgICAgICAgICAgICAgICAgICBcCi0gICgoX19EQUNfVk9MVEFHRV9fKSAqIF9fTExfREFDX0RJR0lUQUxfU0NBTEUoX19EQUNfUkVTT0xVVElPTl9fKSAgICAgICAgICAgICAgXAotICAgLyAoX19WUkVGQU5BTE9HX1ZPTFRBR0VfXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKQorKChfX0RBQ19WT0xUQUdFX18pICogX19MTF9EQUNfRElHSVRBTF9TQ0FMRShfX0RBQ19SRVNPTFVUSU9OX18pICAgICAgICAgICAgICBcCisgLyAoX19WUkVGQU5BTE9HX1ZPTFRBR0VfXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKykKIAogLyoqCiAgICogQH0KQEAgLTQ2NiwxMCArNDkyLDYgQEAKIC8qKiBAZGVmZ3JvdXAgREFDX0xMX0V4cG9ydGVkX0Z1bmN0aW9ucyBEQUMgRXhwb3J0ZWQgRnVuY3Rpb25zCiAgICogQHsKICAgKi8KLS8qKiBAZGVmZ3JvdXAgREFDX0xMX0VGX0NvbmZpZ3VyYXRpb24gQ29uZmlndXJhdGlvbiBvZiBEQUMgY2hhbm5lbHMKLSAgKiBAewotICAqLwotCiAvKioKICAgKiBAYnJpZWYgIFNldCB0aGUgY29udmVyc2lvbiB0cmlnZ2VyIHNvdXJjZSBmb3IgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLgogICAqIEBub3RlICAgRm9yIGNvbnZlcnNpb24gdHJpZ2dlciBzb3VyY2UgdG8gYmUgZWZmZWN0aXZlLCBEQUMgdHJpZ2dlcgpAQCAtNjExLDcgKzYzMyw3IEBACiB9CiAKIC8qKgotICAqIEBicmllZiAgU2V0IHRoZSBub2lzZSB3YXZlZm9ybSBnZW5lcmF0aW9uIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWw6CisgICogQGJyaWVmICBHZXQgdGhlIG5vaXNlIHdhdmVmb3JtIGdlbmVyYXRpb24gZm9yIHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbDoKICAgKiAgICAgICAgIE5vaXNlIG1vZGUgYW5kIHBhcmFtZXRlcnMgTEZTUiAobGluZWFyIGZlZWRiYWNrIHNoaWZ0IHJlZ2lzdGVyKS4KICAgKiBAcm10b2xsIENSICAgICAgIE1BTVAxICAgICAgICAgIExMX0RBQ19HZXRXYXZlTm9pc2VMRlNSXG4KICAgKiAgICAgICAgIENSICAgICAgIE1BTVAyICAgICAgICAgIExMX0RBQ19HZXRXYXZlTm9pc2VMRlNSCkBAIC02NjksNyArNjkxLDggQEAKICAgKiAgICAgICAgIEBhcmcgQHJlZiBMTF9EQUNfVFJJQU5HTEVfQU1QTElUVURFXzQwOTUKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLV9fU1RBVElDX0lOTElORSB2b2lkIExMX0RBQ19TZXRXYXZlVHJpYW5nbGVBbXBsaXR1ZGUoREFDX1R5cGVEZWYgKkRBQ3gsIHVpbnQzMl90IERBQ19DaGFubmVsLCB1aW50MzJfdCBUcmlhbmdsZUFtcGxpdHVkZSkKK19fU1RBVElDX0lOTElORSB2b2lkIExMX0RBQ19TZXRXYXZlVHJpYW5nbGVBbXBsaXR1ZGUoREFDX1R5cGVEZWYgKkRBQ3gsIHVpbnQzMl90IERBQ19DaGFubmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUcmlhbmdsZUFtcGxpdHVkZSkKIHsKICAgTU9ESUZZX1JFRyhEQUN4LT5DUiwKICAgICAgICAgICAgICBEQUNfQ1JfTUFNUDEgPDwgKERBQ19DaGFubmVsICYgREFDX0NSX0NIWF9CSVRPRkZTRVRfTUFTSyksCkBAIC02NzcsNyArNzAwLDcgQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBTZXQgdGhlIHRyaWFuZ2xlIHdhdmVmb3JtIGdlbmVyYXRpb24gZm9yIHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbDoKKyAgKiBAYnJpZWYgIEdldCB0aGUgdHJpYW5nbGUgd2F2ZWZvcm0gZ2VuZXJhdGlvbiBmb3IgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsOgogICAqICAgICAgICAgdHJpYW5nbGUgbW9kZSBhbmQgYW1wbGl0dWRlLgogICAqIEBybXRvbGwgQ1IgICAgICAgTUFNUDEgICAgICAgICAgTExfREFDX0dldFdhdmVUcmlhbmdsZUFtcGxpdHVkZVxuCiAgICogICAgICAgICBDUiAgICAgICBNQU1QMiAgICAgICAgICBMTF9EQUNfR2V0V2F2ZVRyaWFuZ2xlQW1wbGl0dWRlCkBAIC04MDIsOSArODI1LDkgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MzJfdCBMTF9EQUNfSXNETUFSZXFFbmFibGVkKERBQ19UeXBlRGVmICpEQUN4LCB1aW50MzJfdCBEQUNfQ2hhbm5lbCkKIHsKLSAgcmV0dXJuIChSRUFEX0JJVChEQUN4LT5DUiwKLSAgICAgICAgICAgICAgICAgICBEQUNfQ1JfRE1BRU4xIDw8IChEQUNfQ2hhbm5lbCAmIERBQ19DUl9DSFhfQklUT0ZGU0VUX01BU0spKQotICAgICAgICAgID09IChEQUNfQ1JfRE1BRU4xIDw8IChEQUNfQ2hhbm5lbCAmIERBQ19DUl9DSFhfQklUT0ZGU0VUX01BU0spKSk7CisgIHJldHVybiAoKFJFQURfQklUKERBQ3gtPkNSLAorICAgICAgICAgICAgICAgICAgICBEQUNfQ1JfRE1BRU4xIDw8IChEQUNfQ2hhbm5lbCAmIERBQ19DUl9DSFhfQklUT0ZGU0VUX01BU0spKQorICAgICAgICAgICA9PSAoREFDX0NSX0RNQUVOMSA8PCAoREFDX0NoYW5uZWwgJiBEQUNfQ1JfQ0hYX0JJVE9GRlNFVF9NQVNLKSkpID8gMVVMIDogMFVMKTsKIH0KIAogLyoqCkBAIC04MjAsNyArODQzLDggQEAKICAgKiAgICAgICAgICAgTExfRE1BX0NvbmZpZ0FkZHJlc3NlcyhETUExLAogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMX0RNQV9DSEFOTkVMXzEsCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSY8IGFycmF5IG9yIHZhcmlhYmxlID4sCi0gICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExfREFDX0RNQV9HZXRSZWdBZGRyKERBQzEsIExMX0RBQ19DSEFOTkVMXzEsIExMX0RBQ19ETUFfUkVHX0RBVEFfMTJCSVRTX1JJR0hUX0FMSUdORUQpLAorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMX0RBQ19ETUFfR2V0UmVnQWRkcihEQUMxLCBMTF9EQUNfQ0hBTk5FTF8xLAorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMX0RBQ19ETUFfUkVHX0RBVEFfMTJCSVRTX1JJR0hUX0FMSUdORUQpLAogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMX0RNQV9ESVJFQ1RJT05fTUVNT1JZX1RPX1BFUklQSCk7CiAgICogQHJtdG9sbCBESFIxMlIxICBEQUNDMURIUiAgICAgICBMTF9EQUNfRE1BX0dldFJlZ0FkZHJcbgogICAqICAgICAgICAgREhSMTJMMSAgREFDQzFESFIgICAgICAgTExfREFDX0RNQV9HZXRSZWdBZGRyXG4KQEAgLTg0Miw3ICs4NjYsOCBAQAogewogICAvKiBSZXRyaWV2ZSBhZGRyZXNzIG9mIHJlZ2lzdGVyIERIUjEyUngsIERIUjEyTHggb3IgREhSOFJ4IGRlcGVuZGluZyBvbiAgICAgKi8KICAgLyogREFDIGNoYW5uZWwgc2VsZWN0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gIHJldHVybiAoKHVpbnQzMl90KShfX0RBQ19QVFJfUkVHX09GRlNFVCgoREFDeCktPkRIUjEyUjEsIF9fREFDX01BU0tfU0hJRlQoREFDX0NoYW5uZWwsIFJlZ2lzdGVyKSkpKTsKKyAgcmV0dXJuICgodWludDMyX3QpKF9fREFDX1BUUl9SRUdfT0ZGU0VUKChEQUN4KS0+REhSMTJSMSwgKChEQUNfQ2hhbm5lbCA+PiAoUmVnaXN0ZXIgJiAweDFGVUwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBEQUNfUkVHX0RIUl9SRUdPRkZTRVRfTUFTS19QT1NCSVQwKSkpKTsKIH0KIC8qKgogICAqIEB9CkBAIC05MDAsOSArOTI1LDkgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MzJfdCBMTF9EQUNfSXNFbmFibGVkKERBQ19UeXBlRGVmICpEQUN4LCB1aW50MzJfdCBEQUNfQ2hhbm5lbCkKIHsKLSAgcmV0dXJuIChSRUFEX0JJVChEQUN4LT5DUiwKLSAgICAgICAgICAgICAgICAgICBEQUNfQ1JfRU4xIDw8IChEQUNfQ2hhbm5lbCAmIERBQ19DUl9DSFhfQklUT0ZGU0VUX01BU0spKQotICAgICAgICAgID09IChEQUNfQ1JfRU4xIDw8IChEQUNfQ2hhbm5lbCAmIERBQ19DUl9DSFhfQklUT0ZGU0VUX01BU0spKSk7CisgIHJldHVybiAoKFJFQURfQklUKERBQ3gtPkNSLAorICAgICAgICAgICAgICAgICAgICBEQUNfQ1JfRU4xIDw8IChEQUNfQ2hhbm5lbCAmIERBQ19DUl9DSFhfQklUT0ZGU0VUX01BU0spKQorICAgICAgICAgICA9PSAoREFDX0NSX0VOMSA8PCAoREFDX0NoYW5uZWwgJiBEQUNfQ1JfQ0hYX0JJVE9GRlNFVF9NQVNLKSkpID8gMVVMIDogMFVMKTsKIH0KIAogLyoqCkBAIC05NTgsMTUgKzk4MywxNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQzMl90IExMX0RBQ19Jc1RyaWdnZXJFbmFibGVkKERBQ19UeXBlRGVmICpEQUN4LCB1aW50MzJfdCBEQUNfQ2hhbm5lbCkKIHsKLSAgcmV0dXJuIChSRUFEX0JJVChEQUN4LT5DUiwKLSAgICAgICAgICAgICAgICAgICBEQUNfQ1JfVEVOMSA8PCAoREFDX0NoYW5uZWwgJiBEQUNfQ1JfQ0hYX0JJVE9GRlNFVF9NQVNLKSkKLSAgICAgICAgICA9PSAoREFDX0NSX1RFTjEgPDwgKERBQ19DaGFubmVsICYgREFDX0NSX0NIWF9CSVRPRkZTRVRfTUFTSykpKTsKKyAgcmV0dXJuICgoUkVBRF9CSVQoREFDeC0+Q1IsCisgICAgICAgICAgICAgICAgICAgIERBQ19DUl9URU4xIDw8IChEQUNfQ2hhbm5lbCAmIERBQ19DUl9DSFhfQklUT0ZGU0VUX01BU0spKQorICAgICAgICAgICA9PSAoREFDX0NSX1RFTjEgPDwgKERBQ19DaGFubmVsICYgREFDX0NSX0NIWF9CSVRPRkZTRVRfTUFTSykpKSA/IDFVTCA6IDBVTCk7CiB9CiAKIC8qKgogICAqIEBicmllZiAgVHJpZyBEQUMgY29udmVyc2lvbiBieSBzb2Z0d2FyZSBmb3IgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLgogICAqIEBub3RlICAgUHJlbGltaW5hcmlseSwgREFDIHRyaWdnZXIgbXVzdCBiZSBzZXQgdG8gc29mdHdhcmUgdHJpZ2dlcgotICAqICAgICAgICAgdXNpbmcgZnVuY3Rpb24gQHJlZiBMTF9EQUNfU2V0VHJpZ2dlclNvdXJjZSgpCisgICogICAgICAgICB1c2luZyBmdW5jdGlvbgorICAqICAgICAgICAgICBAcmVmIExMX0RBQ19Jbml0KCkKKyAgKiAgICAgICAgICAgQHJlZiBMTF9EQUNfU2V0VHJpZ2dlclNvdXJjZSgpCiAgICogICAgICAgICB3aXRoIHBhcmFtZXRlciAiTExfREFDX1RSSUdHRVJfU09GVFdBUkUiLgogICAqICAgICAgICAgYW5kIERBQyB0cmlnZ2VyIG11c3QgYmUgZW5hYmxlZCB1c2luZwogICAqICAgICAgICAgZnVuY3Rpb24gQHJlZiBMTF9EQUNfRW5hYmxlVHJpZ2dlcigpLgpAQCAtMTAwMywxMSArMTAzMCwxMCBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfREFDX0NvbnZlcnREYXRhMTJSaWdodEFsaWduZWQoREFDX1R5cGVEZWYgKkRBQ3gsIHVpbnQzMl90IERBQ19DaGFubmVsLCB1aW50MzJfdCBEYXRhKQogewotICByZWdpc3RlciB1aW50MzJfdCAqcHJlZyA9IF9fREFDX1BUUl9SRUdfT0ZGU0VUKERBQ3gtPkRIUjEyUjEsIF9fREFDX01BU0tfU0hJRlQoREFDX0NoYW5uZWwsIERBQ19SRUdfREhSMTJSWF9SRUdPRkZTRVRfTUFTSykpOwotICAKLSAgTU9ESUZZX1JFRygqcHJlZywKLSAgICAgICAgICAgICBEQUNfREhSMTJSMV9EQUNDMURIUiwKLSAgICAgICAgICAgICBEYXRhKTsKKyAgX19JTyB1aW50MzJfdCAqcHJlZyA9IF9fREFDX1BUUl9SRUdfT0ZGU0VUKERBQ3gtPkRIUjEyUjEsIChEQUNfQ2hhbm5lbCA+PiBEQUNfUkVHX0RIUjEyUlhfUkVHT0ZGU0VUX0JJVE9GRlNFVF9QT1MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIERBQ19SRUdfREhSX1JFR09GRlNFVF9NQVNLX1BPU0JJVDApOworCisgIE1PRElGWV9SRUcoKnByZWcsIERBQ19ESFIxMlIxX0RBQ0MxREhSLCBEYXRhKTsKIH0KIAogLyoqCkBAIC0xMDI1LDExICsxMDUxLDEwIEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9EQUNfQ29udmVydERhdGExMkxlZnRBbGlnbmVkKERBQ19UeXBlRGVmICpEQUN4LCB1aW50MzJfdCBEQUNfQ2hhbm5lbCwgdWludDMyX3QgRGF0YSkKIHsKLSAgcmVnaXN0ZXIgdWludDMyX3QgKnByZWcgPSBfX0RBQ19QVFJfUkVHX09GRlNFVChEQUN4LT5ESFIxMlIxLCBfX0RBQ19NQVNLX1NISUZUKERBQ19DaGFubmVsLCBEQUNfUkVHX0RIUjEyTFhfUkVHT0ZGU0VUX01BU0spKTsKLSAgCi0gIE1PRElGWV9SRUcoKnByZWcsCi0gICAgICAgICAgICAgREFDX0RIUjEyTDFfREFDQzFESFIsCi0gICAgICAgICAgICAgRGF0YSk7CisgIF9fSU8gdWludDMyX3QgKnByZWcgPSBfX0RBQ19QVFJfUkVHX09GRlNFVChEQUN4LT5ESFIxMlIxLCAoREFDX0NoYW5uZWwgPj4gREFDX1JFR19ESFIxMkxYX1JFR09GRlNFVF9CSVRPRkZTRVRfUE9TKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBEQUNfUkVHX0RIUl9SRUdPRkZTRVRfTUFTS19QT1NCSVQwKTsKKworICBNT0RJRllfUkVHKCpwcmVnLCBEQUNfREhSMTJMMV9EQUNDMURIUiwgRGF0YSk7CiB9CiAKIC8qKgpAQCAtMTA0NywxMyArMTA3MiwxMyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfREFDX0NvbnZlcnREYXRhOFJpZ2h0QWxpZ25lZChEQUNfVHlwZURlZiAqREFDeCwgdWludDMyX3QgREFDX0NoYW5uZWwsIHVpbnQzMl90IERhdGEpCiB7Ci0gIHJlZ2lzdGVyIHVpbnQzMl90ICpwcmVnID0gX19EQUNfUFRSX1JFR19PRkZTRVQoREFDeC0+REhSMTJSMSwgX19EQUNfTUFTS19TSElGVChEQUNfQ2hhbm5lbCwgREFDX1JFR19ESFI4UlhfUkVHT0ZGU0VUX01BU0spKTsKLSAgCi0gIE1PRElGWV9SRUcoKnByZWcsCi0gICAgICAgICAgICAgREFDX0RIUjhSMV9EQUNDMURIUiwKLSAgICAgICAgICAgICBEYXRhKTsKKyAgX19JTyB1aW50MzJfdCAqcHJlZyA9IF9fREFDX1BUUl9SRUdfT0ZGU0VUKERBQ3gtPkRIUjEyUjEsIChEQUNfQ2hhbm5lbCA+PiBEQUNfUkVHX0RIUjhSWF9SRUdPRkZTRVRfQklUT0ZGU0VUX1BPUykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgREFDX1JFR19ESFJfUkVHT0ZGU0VUX01BU0tfUE9TQklUMCk7CisKKyAgTU9ESUZZX1JFRygqcHJlZywgREFDX0RIUjhSMV9EQUNDMURIUiwgRGF0YSk7CiB9CiAKKwogLyoqCiAgICogQGJyaWVmICBTZXQgdGhlIGRhdGEgdG8gYmUgbG9hZGVkIGluIHRoZSBkYXRhIGhvbGRpbmcgcmVnaXN0ZXIKICAgKiAgICAgICAgIGluIGZvcm1hdCAxMiBiaXRzIGxlZnQgYWxpZ25tZW50IChMU0IgYWxpZ25lZCBvbiBiaXQgMCksCkBAIC0xMDY1LDcgKzEwOTAsOCBAQAogICAqIEBwYXJhbSAgRGF0YUNoYW5uZWwyIFZhbHVlIGJldHdlZW4gTWluX0RhdGE9MHgwMDAgYW5kIE1heF9EYXRhPTB4RkZGCiAgICogQHJldHZhbCBOb25lCiAgICovCi1fX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9EQUNfQ29udmVydER1YWxEYXRhMTJSaWdodEFsaWduZWQoREFDX1R5cGVEZWYgKkRBQ3gsIHVpbnQzMl90IERhdGFDaGFubmVsMSwgdWludDMyX3QgRGF0YUNoYW5uZWwyKQorX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfREFDX0NvbnZlcnREdWFsRGF0YTEyUmlnaHRBbGlnbmVkKERBQ19UeXBlRGVmICpEQUN4LCB1aW50MzJfdCBEYXRhQ2hhbm5lbDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgRGF0YUNoYW5uZWwyKQogewogICBNT0RJRllfUkVHKERBQ3gtPkRIUjEyUkQsCiAgICAgICAgICAgICAgKERBQ19ESFIxMlJEX0RBQ0MyREhSIHwgREFDX0RIUjEyUkRfREFDQzFESFIpLApAQCAtMTA4Myw3ICsxMTA5LDggQEAKICAgKiBAcGFyYW0gIERhdGFDaGFubmVsMiBWYWx1ZSBiZXR3ZWVuIE1pbl9EYXRhPTB4MDAwIGFuZCBNYXhfRGF0YT0weEZGRgogICAqIEByZXR2YWwgTm9uZQogICAqLwotX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfREFDX0NvbnZlcnREdWFsRGF0YTEyTGVmdEFsaWduZWQoREFDX1R5cGVEZWYgKkRBQ3gsIHVpbnQzMl90IERhdGFDaGFubmVsMSwgdWludDMyX3QgRGF0YUNoYW5uZWwyKQorX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfREFDX0NvbnZlcnREdWFsRGF0YTEyTGVmdEFsaWduZWQoREFDX1R5cGVEZWYgKkRBQ3gsIHVpbnQzMl90IERhdGFDaGFubmVsMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IERhdGFDaGFubmVsMikKIHsKICAgLyogTm90ZTogRGF0YSBvZiBEQUMgY2hhbm5lbCAyIHNoaWZ0IHZhbHVlIHN1YnRyYWN0ZWQgb2YgNCBiZWNhdXNlICAgICAgICAgICovCiAgIC8qICAgICAgIGRhdGEgb24gMTYgYml0cyBhbmQgREFDIGNoYW5uZWwgMiBiaXRzIGZpZWxkIGlzIG9uIHRoZSAxMiBNU0IsICAgICAqLwpAQCAtMTEwNCwxMyArMTEzMSwxNSBAQAogICAqIEBwYXJhbSAgRGF0YUNoYW5uZWwyIFZhbHVlIGJldHdlZW4gTWluX0RhdGE9MHgwMCBhbmQgTWF4X0RhdGE9MHhGRgogICAqIEByZXR2YWwgTm9uZQogICAqLwotX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfREFDX0NvbnZlcnREdWFsRGF0YThSaWdodEFsaWduZWQoREFDX1R5cGVEZWYgKkRBQ3gsIHVpbnQzMl90IERhdGFDaGFubmVsMSwgdWludDMyX3QgRGF0YUNoYW5uZWwyKQorX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfREFDX0NvbnZlcnREdWFsRGF0YThSaWdodEFsaWduZWQoREFDX1R5cGVEZWYgKkRBQ3gsIHVpbnQzMl90IERhdGFDaGFubmVsMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IERhdGFDaGFubmVsMikKIHsKICAgTU9ESUZZX1JFRyhEQUN4LT5ESFI4UkQsCiAgICAgICAgICAgICAgKERBQ19ESFI4UkRfREFDQzJESFIgfCBEQUNfREhSOFJEX0RBQ0MxREhSKSwKICAgICAgICAgICAgICAoKERhdGFDaGFubmVsMiA8PCBEQUNfREhSOFJEX0RBQ0MyREhSX0JJVE9GRlNFVF9QT1MpIHwgRGF0YUNoYW5uZWwxKSk7CiB9CiAKKwogLyoqCiAgICogQGJyaWVmICBSZXRyaWV2ZSBvdXRwdXQgZGF0YSBjdXJyZW50bHkgZ2VuZXJhdGVkIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwuCiAgICogQG5vdGUgICBXaGF0ZXZlciBhbGlnbm1lbnQgYW5kIHJlc29sdXRpb24gc2V0dGluZ3MKQEAgLTExMjcsOCArMTE1Niw5IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdWludDMyX3QgTExfREFDX1JldHJpZXZlT3V0cHV0RGF0YShEQUNfVHlwZURlZiAqREFDeCwgdWludDMyX3QgREFDX0NoYW5uZWwpCiB7Ci0gIHJlZ2lzdGVyIHVpbnQzMl90ICpwcmVnID0gX19EQUNfUFRSX1JFR19PRkZTRVQoREFDeC0+RE9SMSwgX19EQUNfTUFTS19TSElGVChEQUNfQ2hhbm5lbCwgREFDX1JFR19ET1JYX1JFR09GRlNFVF9NQVNLKSk7Ci0gIAorICBfX0lPIHVpbnQzMl90IGNvbnN0ICpwcmVnID0gX19EQUNfUFRSX1JFR19PRkZTRVQoREFDeC0+RE9SMSwgKERBQ19DaGFubmVsID4+IERBQ19SRUdfRE9SWF9SRUdPRkZTRVRfQklUT0ZGU0VUX1BPUykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgREFDX1JFR19ET1JYX1JFR09GRlNFVF9NQVNLX1BPU0JJVDApOworCiAgIHJldHVybiAodWludDE2X3QpIFJFQURfQklUKCpwcmVnLCBEQUNfRE9SMV9EQUNDMURPUik7CiB9CiAKQEAgLTExMzksNiArMTE2OSw4IEBACiAvKiogQGRlZmdyb3VwIERBQ19MTF9FRl9GTEFHX01hbmFnZW1lbnQgRkxBRyBNYW5hZ2VtZW50CiAgICogQHsKICAgKi8KKworCiAvKioKICAgKiBAYnJpZWYgIEdldCBEQUMgdW5kZXJydW4gZmxhZyBmb3IgREFDIGNoYW5uZWwgMQogICAqIEBybXRvbGwgU1IgICAgICAgRE1BVURSMSAgICAgICAgTExfREFDX0lzQWN0aXZlRmxhZ19ETUFVRFIxCkBAIC0xMTQ3LDkgKzExNzksMTAgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MzJfdCBMTF9EQUNfSXNBY3RpdmVGbGFnX0RNQVVEUjEoREFDX1R5cGVEZWYgKkRBQ3gpCiB7Ci0gIHJldHVybiAoUkVBRF9CSVQoREFDeC0+U1IsIExMX0RBQ19GTEFHX0RNQVVEUjEpID09IChMTF9EQUNfRkxBR19ETUFVRFIxKSk7CisgIHJldHVybiAoKFJFQURfQklUKERBQ3gtPlNSLCBMTF9EQUNfRkxBR19ETUFVRFIxKSA9PSAoTExfREFDX0ZMQUdfRE1BVURSMSkpID8gMVVMIDogMFVMKTsKIH0KIAorCiAvKioKICAgKiBAYnJpZWYgIEdldCBEQUMgdW5kZXJydW4gZmxhZyBmb3IgREFDIGNoYW5uZWwgMgogICAqIEBybXRvbGwgU1IgICAgICAgRE1BVURSMiAgICAgICAgTExfREFDX0lzQWN0aXZlRmxhZ19ETUFVRFIyCkBAIC0xMTU4LDkgKzExOTEsMTAgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MzJfdCBMTF9EQUNfSXNBY3RpdmVGbGFnX0RNQVVEUjIoREFDX1R5cGVEZWYgKkRBQ3gpCiB7Ci0gIHJldHVybiAoUkVBRF9CSVQoREFDeC0+U1IsIExMX0RBQ19GTEFHX0RNQVVEUjIpID09IChMTF9EQUNfRkxBR19ETUFVRFIyKSk7CisgIHJldHVybiAoKFJFQURfQklUKERBQ3gtPlNSLCBMTF9EQUNfRkxBR19ETUFVRFIyKSA9PSAoTExfREFDX0ZMQUdfRE1BVURSMikpID8gMVVMIDogMFVMKTsKIH0KIAorCiAvKioKICAgKiBAYnJpZWYgIENsZWFyIERBQyB1bmRlcnJ1biBmbGFnIGZvciBEQUMgY2hhbm5lbCAxCiAgICogQHJtdG9sbCBTUiAgICAgICBETUFVRFIxICAgICAgICBMTF9EQUNfQ2xlYXJGbGFnX0RNQVVEUjEKQEAgLTExNzIsNiArMTIwNiw3IEBACiAgIFdSSVRFX1JFRyhEQUN4LT5TUiwgTExfREFDX0ZMQUdfRE1BVURSMSk7CiB9CiAKKwogLyoqCiAgICogQGJyaWVmICBDbGVhciBEQUMgdW5kZXJydW4gZmxhZyBmb3IgREFDIGNoYW5uZWwgMgogICAqIEBybXRvbGwgU1IgICAgICAgRE1BVURSMiAgICAgICAgTExfREFDX0NsZWFyRmxhZ19ETUFVRFIyCkBAIC0xMTgzLDYgKzEyMTgsNyBAQAogICBXUklURV9SRUcoREFDeC0+U1IsIExMX0RBQ19GTEFHX0RNQVVEUjIpOwogfQogCisKIC8qKgogICAqIEB9CiAgICovCkBAIC0xMjAyLDYgKzEyMzgsNyBAQAogICBTRVRfQklUKERBQ3gtPkNSLCBMTF9EQUNfSVRfRE1BVURSSUUxKTsKIH0KIAorCiAvKioKICAgKiBAYnJpZWYgIEVuYWJsZSBETUEgdW5kZXJydW4gaW50ZXJydXB0IGZvciBEQUMgY2hhbm5lbCAyCiAgICogQHJtdG9sbCBDUiAgICAgICBETUFVRFJJRTIgICAgICBMTF9EQUNfRW5hYmxlSVRfRE1BVURSMgpAQCAtMTIxMyw2ICsxMjUwLDcgQEAKICAgU0VUX0JJVChEQUN4LT5DUiwgTExfREFDX0lUX0RNQVVEUklFMik7CiB9CiAKKwogLyoqCiAgICogQGJyaWVmICBEaXNhYmxlIERNQSB1bmRlcnJ1biBpbnRlcnJ1cHQgZm9yIERBQyBjaGFubmVsIDEKICAgKiBAcm10b2xsIENSICAgICAgIERNQVVEUklFMSAgICAgIExMX0RBQ19EaXNhYmxlSVRfRE1BVURSMQpAQCAtMTIyNCw2ICsxMjYyLDcgQEAKICAgQ0xFQVJfQklUKERBQ3gtPkNSLCBMTF9EQUNfSVRfRE1BVURSSUUxKTsKIH0KIAorCiAvKioKICAgKiBAYnJpZWYgIERpc2FibGUgRE1BIHVuZGVycnVuIGludGVycnVwdCBmb3IgREFDIGNoYW5uZWwgMgogICAqIEBybXRvbGwgQ1IgICAgICAgRE1BVURSSUUyICAgICAgTExfREFDX0Rpc2FibGVJVF9ETUFVRFIyCkBAIC0xMjM1LDYgKzEyNzQsNyBAQAogICBDTEVBUl9CSVQoREFDeC0+Q1IsIExMX0RBQ19JVF9ETUFVRFJJRTIpOwogfQogCisKIC8qKgogICAqIEBicmllZiAgR2V0IERNQSB1bmRlcnJ1biBpbnRlcnJ1cHQgZm9yIERBQyBjaGFubmVsIDEKICAgKiBAcm10b2xsIENSICAgICAgIERNQVVEUklFMSAgICAgIExMX0RBQ19Jc0VuYWJsZWRJVF9ETUFVRFIxCkBAIC0xMjQzLDkgKzEyODMsMTAgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MzJfdCBMTF9EQUNfSXNFbmFibGVkSVRfRE1BVURSMShEQUNfVHlwZURlZiAqREFDeCkKIHsKLSAgcmV0dXJuIChSRUFEX0JJVChEQUN4LT5DUiwgTExfREFDX0lUX0RNQVVEUklFMSkgPT0gKExMX0RBQ19JVF9ETUFVRFJJRTEpKTsKKyAgcmV0dXJuICgoUkVBRF9CSVQoREFDeC0+Q1IsIExMX0RBQ19JVF9ETUFVRFJJRTEpID09IChMTF9EQUNfSVRfRE1BVURSSUUxKSkgPyAxVUwgOiAwVUwpOwogfQogCisKIC8qKgogICAqIEBicmllZiAgR2V0IERNQSB1bmRlcnJ1biBpbnRlcnJ1cHQgZm9yIERBQyBjaGFubmVsIDIKICAgKiBAcm10b2xsIENSICAgICAgIERNQVVEUklFMiAgICAgIExMX0RBQ19Jc0VuYWJsZWRJVF9ETUFVRFIyCkBAIC0xMjU0LDkgKzEyOTUsMTAgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MzJfdCBMTF9EQUNfSXNFbmFibGVkSVRfRE1BVURSMihEQUNfVHlwZURlZiAqREFDeCkKIHsKLSAgcmV0dXJuIChSRUFEX0JJVChEQUN4LT5DUiwgTExfREFDX0lUX0RNQVVEUklFMikgPT0gKExMX0RBQ19JVF9ETUFVRFJJRTIpKTsKKyAgcmV0dXJuICgoUkVBRF9CSVQoREFDeC0+Q1IsIExMX0RBQ19JVF9ETUFVRFJJRTIpID09IChMTF9EQUNfSVRfRE1BVURSSUUyKSkgPyAxVUwgOiAwVUwpOwogfQogCisKIC8qKgogICAqIEB9CiAgICovCkBAIC0xMjY2LDkgKzEzMDgsOSBAQAogICAqIEB7CiAgICovCiAKLUVycm9yU3RhdHVzIExMX0RBQ19EZUluaXQoREFDX1R5cGVEZWYqIERBQ3gpOwotRXJyb3JTdGF0dXMgTExfREFDX0luaXQoREFDX1R5cGVEZWYqIERBQ3gsIHVpbnQzMl90IERBQ19DaGFubmVsLCBMTF9EQUNfSW5pdFR5cGVEZWYqIERBQ19Jbml0U3RydWN0KTsKLXZvaWQgICAgICAgIExMX0RBQ19TdHJ1Y3RJbml0KExMX0RBQ19Jbml0VHlwZURlZiogREFDX0luaXRTdHJ1Y3QpOworRXJyb3JTdGF0dXMgTExfREFDX0RlSW5pdChEQUNfVHlwZURlZiAqREFDeCk7CitFcnJvclN0YXR1cyBMTF9EQUNfSW5pdChEQUNfVHlwZURlZiAqREFDeCwgdWludDMyX3QgREFDX0NoYW5uZWwsIExMX0RBQ19Jbml0VHlwZURlZiAqREFDX0luaXRTdHJ1Y3QpOwordm9pZCAgICAgICAgTExfREFDX1N0cnVjdEluaXQoTExfREFDX0luaXRUeXBlRGVmICpEQUNfSW5pdFN0cnVjdCk7CiAKIC8qKgogICAqIEB9CkBAIC0xMjkzLDYgKzEzMzUsNiBAQAogfQogI2VuZGlmCiAKLSNlbmRpZiAvKiBfX1NUTTMyRjd4eF9MTF9EQUNfSCAqLworI2VuZGlmIC8qIFNUTTMyRjd4eF9MTF9EQUNfSCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9sbF9kbWEyZC5oIGIvSW5jL3N0bTMyZjd4eF9sbF9kbWEyZC5oCmluZGV4IGY4ZTFmMTEuLmY5ZDFkMjMgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfbGxfZG1hMmQuaAorKysgYi9JbmMvc3RtMzJmN3h4X2xsX2RtYTJkLmgKQEAgLTY2LDg0ICs2NiwxMTYgQEAKICAgdWludDMyX3QgTW9kZTsgICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBETUEyRCB0cmFuc2ZlciBtb2RlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgdmFsdWUgb2YgQHJlZiBETUEyRF9MTF9FQ19NT0RFLgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9ETUEyRF9TZXRNb2RlKCkuKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9ETUEyRF9TZXRNb2RlKCkuICovCiAKICAgdWludDMyX3QgQ29sb3JNb2RlOyAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBjb2xvciBmb3JtYXQgb2YgdGhlIG91dHB1dCBpbWFnZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIHZhbHVlIG9mIEByZWYgRE1BMkRfTExfRUNfT1VUUFVUX0NPTE9SX01PREUuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0RNQTJEX1NldE91dHB1dENvbG9yTW9kZSgpLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0RNQTJEX1NldE91dHB1dENvbG9yTW9kZSgpLiAqLwogCiAgIHVpbnQzMl90IE91dHB1dEJsdWU7ICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgQmx1ZSB2YWx1ZSBvZiB0aGUgb3V0cHV0IGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHhGRiBpZiBBUkdCODg4OCBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHhGRiBpZiBSR0I4ODggY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4MUYgaWYgUkdCNTY1IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweDFGIGlmIEFSR0IxNTU1IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweDBGIGlmIEFSR0I0NDQ0IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweEZGIGlmIEFSR0I4ODg4IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweEZGIGlmIFJHQjg4OCBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgxRiBpZiBSR0I1NjUgY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4MUYgaWYgQVJHQjE1NTUgY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4MEYgaWYgQVJHQjQ0NDQgY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfRE1BMkRfU2V0T3V0cHV0Q29sb3IoKSBvciBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfRE1BMkRfU2V0T3V0cHV0Q29sb3IoKSBvciBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEByZWYgTExfRE1BMkRfQ29uZmlnT3V0cHV0Q29sb3IoKS4gKi8KIAogICB1aW50MzJfdCBPdXRwdXRHcmVlbjsgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIEdyZWVuIHZhbHVlIG9mIHRoZSBvdXRwdXQgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweEZGIGlmIEFSR0I4ODg4IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweEZGIGlmIFJHQjg4OCBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgzRiBpZiBSR0I1NjUgY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4MUYgaWYgQVJHQjE1NTUgY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4MEYgaWYgQVJHQjQ0NDQgY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4RkYgaWYgQVJHQjg4ODggY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4RkYgaWYgUkdCODg4IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweDNGIGlmIFJHQjU2NSBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgxRiBpZiBBUkdCMTU1NSBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgwRiBpZiBBUkdCNDQ0NCBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9ETUEyRF9TZXRPdXRwdXRDb2xvcigpIG9yIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0RNQTJEX1NldE91dHB1dENvbG9yKCkgb3IgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBAcmVmIExMX0RNQTJEX0NvbmZpZ091dHB1dENvbG9yKCkuICovCiAKICAgdWludDMyX3QgT3V0cHV0UmVkOyAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBSZWQgdmFsdWUgb2YgdGhlIG91dHB1dCBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4RkYgaWYgQVJHQjg4ODggY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4RkYgaWYgUkdCODg4IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweDFGIGlmIFJHQjU2NSBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgxRiBpZiBBUkdCMTU1NSBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgwRiBpZiBBUkdCNDQ0NCBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHhGRiBpZiBBUkdCODg4OCBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHhGRiBpZiBSR0I4ODggY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4MUYgaWYgUkdCNTY1IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweDFGIGlmIEFSR0IxNTU1IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweDBGIGlmIEFSR0I0NDQ0IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0RNQTJEX1NldE91dHB1dENvbG9yKCkgb3IgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfRE1BMkRfU2V0T3V0cHV0Q29sb3IoKSBvciBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEByZWYgTExfRE1BMkRfQ29uZmlnT3V0cHV0Q29sb3IoKS4gKi8KIAogICB1aW50MzJfdCBPdXRwdXRBbHBoYTsgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIEFscGhhIGNoYW5uZWwgb2YgdGhlIG91dHB1dCBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4RkYgaWYgQVJHQjg4ODggY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4MDEgaWYgQVJHQjE1NTUgY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4MEYgaWYgQVJHQjQ0NDQgY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4RkYgaWYgQVJHQjg4ODggY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4MDEgaWYgQVJHQjE1NTUgY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4MEYgaWYgQVJHQjQ0NDQgY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBpcyBub3QgY29uc2lkZXJlZCBpZiBSR0I4ODggb3IgUkdCNTY1IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0RNQTJEX1NldE91dHB1dENvbG9yKCkgb3IgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0RNQTJEX1NldE91dHB1dENvbG9yKCkgb3IgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBAcmVmIExMX0RNQTJEX0NvbmZpZ091dHB1dENvbG9yKCkuICovCiAKICAgdWludDMyX3QgT3V0cHV0TWVtb3J5QWRkcmVzczsgIC8qITwgU3BlY2lmaWVzIHRoZSBtZW1vcnkgYWRkcmVzcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwMDAgYW5kIE1heF9EYXRhID0gMHhGRkZGRkZGRi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluX0RhdGEgPSAweDAwMDAgYW5kIE1heF9EYXRhID0gMHhGRkZGRkZGRi4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfRE1BMkRfU2V0T3V0cHV0TWVtQWRkcigpLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0RNQTJEX1NldE91dHB1dE1lbUFkZHIoKS4gKi8KIAogCiAKICAgdWludDMyX3QgTGluZU9mZnNldDsgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBvdXRwdXQgbGluZSBvZmZzZXQgdmFsdWUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMDAwIGFuZCBNYXhfRGF0YSA9IDB4M0ZGRi4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfRE1BMkRfU2V0TGluZU9mZnNldCgpLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0RNQTJEX1NldExpbmVPZmZzZXQoKS4gKi8KIAogICB1aW50MzJfdCBOYnJPZkxpbmVzOyAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBsaW5lcyBvZiB0aGUgYXJlYSB0byBiZSB0cmFuc2ZlcnJlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwMDAgYW5kIE1heF9EYXRhID0gMHhGRkZGLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAwMCBhbmQgTWF4X0RhdGEgPSAweEZGRkYuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0RNQTJEX1NldE5ick9mTGluZXMoKS4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9ETUEyRF9TZXROYnJPZkxpbmVzKCkuICovCiAKLSAgdWludDMyX3QgTmJyT2ZQaXhlbHNQZXJMaW5lczsgIC8qITwgU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgcGl4ZWxzIHBlciBsaW5lcyBvZiB0aGUgYXJlYSB0byBiZSB0cmFuc2ZlcmVkLgorICB1aW50MzJfdCBOYnJPZlBpeGVsc1BlckxpbmVzOyAgLyohPCBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBwaXhlbHMgcGVyIGxpbmVzIG9mIHRoZSBhcmVhIHRvIGJlIHRyYW5zZmVycmVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAwMCBhbmQgTWF4X0RhdGEgPSAweDNGRkYuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0RNQTJEX1NldE5ick9mUGl4ZWxzUGVyTGluZXMoKS4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9ETUEyRF9TZXROYnJPZlBpeGVsc1BlckxpbmVzKCkuICovCiAKICNpZiBkZWZpbmVkIChETUEyRF9BTFBIQV9JTlZfUkJfU1dBUF9TVVBQT1JUKQogICB1aW50MzJfdCBBbHBoYUludmVyc2lvbk1vZGU7ICAgLyohPCBTcGVjaWZpZXMgdGhlIG91dHB1dCBhbHBoYSBpbnZlcnNpb24gbW9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIHZhbHVlIG9mIEByZWYgRE1BMkRfTExfRUNfQUxQSEFfSU5WRVJTSU9OLgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9ETUEyRF9TZXRPdXRwdXRBbHBoYUludk1vZGUoKS4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9ETUEyRF9TZXRPdXRwdXRBbHBoYUludk1vZGUoKS4gKi8KIAogICB1aW50MzJfdCBSQlN3YXBNb2RlOyAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIG91dHB1dCBSZWQgQmx1ZSBzd2FwIG1vZGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSB2YWx1ZSBvZiBAcmVmIERNQTJEX0xMX0VDX1JFRF9CTFVFX1NXQVAuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0RNQTJEX1NldE91dHB1dFJCU3dhcE1vZGUoKS4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9ETUEyRF9TZXRPdXRwdXRSQlN3YXBNb2RlKCkuICovCiAjZW5kaWYgLyogRE1BMkRfQUxQSEFfSU5WX1JCX1NXQVBfU1VQUE9SVCAqLwogCiB9IExMX0RNQTJEX0luaXRUeXBlRGVmOwpAQCAtMTU0LDcgKzE4Niw4IEBACiB0eXBlZGVmIHN0cnVjdAogewogICB1aW50MzJfdCBNZW1vcnlBZGRyZXNzOyAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGZvcmVncm91bmQgb3IgYmFja2dyb3VuZCBtZW1vcnkgYWRkcmVzcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwMDAgYW5kIE1heF9EYXRhID0gMHhGRkZGRkZGRi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluX0RhdGEgPSAweDAwMDAgYW5kIE1heF9EYXRhID0gMHhGRkZGRkZGRi4KIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIEByZWYgTExfRE1BMkRfRkdORF9TZXRNZW1BZGRyKCkgZm9yIGZvcmVncm91bmQgbGF5ZXIsCkBAIC0yMjQsNyArMjU3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBAcmVmIExMX0RNQTJEX0JHTkRfU2V0UmVkQ29sb3IoKSBmb3IgYmFja2dyb3VuZCBsYXllci4gKi8KIAogICB1aW50MzJfdCBDTFVUTWVtb3J5QWRkcmVzczsgICAgLyohPCBTcGVjaWZpZXMgdGhlIGZvcmVncm91bmQgb3IgYmFja2dyb3VuZCBDTFVUIG1lbW9yeSBhZGRyZXNzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAwMCBhbmQgTWF4X0RhdGEgPSAweEZGRkZGRkZGLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAwMCBhbmQgTWF4X0RhdGEgPSAweEZGRkZGRkZGLgogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb25zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gQHJlZiBMTF9ETUEyRF9GR05EX1NldENMVVRNZW1BZGRyKCkgZm9yIGZvcmVncm91bmQgbGF5ZXIsCkBAIC0yNTcsNDUgKzI5MSw2OCBAQAogICB1aW50MzJfdCBDb2xvck1vZGU7ICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIGNvbG9yIGZvcm1hdCBvZiB0aGUgb3V0cHV0IGltYWdlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgdmFsdWUgb2YgQHJlZiBETUEyRF9MTF9FQ19PVVRQVVRfQ09MT1JfTU9ERS4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfRE1BMkRfU2V0T3V0cHV0Q29sb3JNb2RlKCkuICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nCisgICAgICAgICAgICAgICAgICAgIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9ETUEyRF9TZXRPdXRwdXRDb2xvck1vZGUoKS4gKi8KIAogICB1aW50MzJfdCBPdXRwdXRCbHVlOyAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIEJsdWUgdmFsdWUgb2YgdGhlIG91dHB1dCBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4RkYgaWYgQVJHQjg4ODggY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4RkYgaWYgUkdCODg4IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweDFGIGlmIFJHQjU2NSBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgxRiBpZiBBUkdCMTU1NSBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgwRiBpZiBBUkdCNDQ0NCBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHhGRiBpZiBBUkdCODg4OCBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHhGRiBpZiBSR0I4ODggY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4MUYgaWYgUkdCNTY1IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweDFGIGlmIEFSR0IxNTU1IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweDBGIGlmIEFSR0I0NDQ0IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0RNQTJEX1NldE91dHB1dENvbG9yKCkgb3IgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0RNQTJEX1NldE91dHB1dENvbG9yKCkgb3IgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBAcmVmIExMX0RNQTJEX0NvbmZpZ091dHB1dENvbG9yKCkuICovCiAKICAgdWludDMyX3QgT3V0cHV0R3JlZW47ICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBHcmVlbiB2YWx1ZSBvZiB0aGUgb3V0cHV0IGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHhGRiBpZiBBUkdCODg4OCBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHhGRiBpZiBSR0I4ODggY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4M0YgaWYgUkdCNTY1IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweDFGIGlmIEFSR0IxNTU1IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweDBGIGlmIEFSR0I0NDQ0IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweEZGIGlmIEFSR0I4ODg4IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4RkYgaWYgUkdCODg4IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweDNGIGlmIFJHQjU2NSBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgxRiBpZiBBUkdCMTU1NSBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgwRiBpZiBBUkdCNDQ0NCBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9ETUEyRF9TZXRPdXRwdXRDb2xvcigpIG9yIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9ETUEyRF9TZXRPdXRwdXRDb2xvcigpIG9yIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQHJlZiBMTF9ETUEyRF9Db25maWdPdXRwdXRDb2xvcigpLiAqLwogCiAgIHVpbnQzMl90IE91dHB1dFJlZDsgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgUmVkIHZhbHVlIG9mIHRoZSBvdXRwdXQgaW1hZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweEZGIGlmIEFSR0I4ODg4IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweEZGIGlmIFJHQjg4OCBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgxRiBpZiBSR0I1NjUgY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4MUYgaWYgQVJHQjE1NTUgY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4MEYgaWYgQVJHQjQ0NDQgY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4RkYgaWYgQVJHQjg4ODggY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluX0RhdGEgPSAweDAwIGFuZCBNYXhfRGF0YSA9IDB4RkYgaWYgUkdCODg4IGNvbG9yIG1vZGUgaXMgc2VsZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweDFGIGlmIFJHQjU2NSBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgxRiBpZiBBUkdCMTU1NSBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgwRiBpZiBBUkdCNDQ0NCBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9ETUEyRF9TZXRPdXRwdXRDb2xvcigpIG9yIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9ETUEyRF9TZXRPdXRwdXRDb2xvcigpIG9yIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQHJlZiBMTF9ETUEyRF9Db25maWdPdXRwdXRDb2xvcigpLiAqLwogCiAgIHVpbnQzMl90IE91dHB1dEFscGhhOyAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgQWxwaGEgY2hhbm5lbCBvZiB0aGUgb3V0cHV0IGltYWdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHhGRiBpZiBBUkdCODg4OCBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgwMSBpZiBBUkdCMTU1NSBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgwRiBpZiBBUkdCNDQ0NCBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHhGRiBpZiBBUkdCODg4OCBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgwMSBpZiBBUkdCMTU1NSBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgwRiBpZiBBUkdCNDQ0NCBjb2xvciBtb2RlIGlzIHNlbGVjdGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFRoaXMgcGFyYW1ldGVyIGlzIG5vdCBjb25zaWRlcmVkIGlmIFJHQjg4OCBvciBSR0I1NjUgY29sb3IgbW9kZSBpcyBzZWxlY3RlZC4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfRE1BMkRfU2V0T3V0cHV0Q29sb3IoKSBvciBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfRE1BMkRfU2V0T3V0cHV0Q29sb3IoKSBvciBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEByZWYgTExfRE1BMkRfQ29uZmlnT3V0cHV0Q29sb3IoKS4gKi8KIAogfSBMTF9ETUEyRF9Db2xvclR5cGVEZWY7CkBAIC0zODMsOSArNDQwLDExIEBACiAgICogQHsKICAgKi8KICNkZWZpbmUgTExfRE1BMkRfQUxQSEFfTU9ERV9OT19NT0RJRiAgICAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAvKiE8IE5vIG1vZGlmaWNhdGlvbiBvZiB0aGUgYWxwaGEgY2hhbm5lbCB2YWx1ZSAqLwotI2RlZmluZSBMTF9ETUEyRF9BTFBIQV9NT0RFX1JFUExBQ0UgICAgICAgIERNQTJEX0ZHUEZDQ1JfQU1fMCAgICAgIC8qITwgUmVwbGFjZSBvcmlnaW5hbCBhbHBoYSBjaGFubmVsIHZhbHVlIGJ5IHByb2dyYW1tZWQgYWxwaGEgdmFsdWUgKi8KLSNkZWZpbmUgTExfRE1BMkRfQUxQSEFfTU9ERV9DT01CSU5FICAgICAgICBETUEyRF9GR1BGQ0NSX0FNXzEgICAgICAvKiE8IFJlcGxhY2Ugb3JpZ2luYWwgYWxwaGEgY2hhbm5lbCB2YWx1ZSBieSBwcm9ncmFtbWVkIGFscGhhIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBvcmlnaW5hbCBhbHBoYSBjaGFubmVsIHZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgTExfRE1BMkRfQUxQSEFfTU9ERV9SRVBMQUNFICAgICAgICBETUEyRF9GR1BGQ0NSX0FNXzAgICAgICAvKiE8IFJlcGxhY2Ugb3JpZ2luYWwgYWxwaGEgY2hhbm5lbCB2YWx1ZSBieQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbW1lZCBhbHBoYSB2YWx1ZSAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIExMX0RNQTJEX0FMUEhBX01PREVfQ09NQklORSAgICAgICAgRE1BMkRfRkdQRkNDUl9BTV8xICAgICAgLyohPCBSZXBsYWNlIG9yaWdpbmFsIGFscGhhIGNoYW5uZWwgdmFsdWUgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1tZWQgYWxwaGEgdmFsdWUgd2l0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsIGFscGhhIGNoYW5uZWwgdmFsdWUgICAgICAgICAgICAgICAqLwogLyoqCiAgICogQH0KICAgKi8KZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfbGxfZ3Bpby5oIGIvSW5jL3N0bTMyZjd4eF9sbF9ncGlvLmgKaW5kZXggYmZmNzIwYS4uZWFiNDJiMSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9sbF9ncGlvLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9sbF9ncGlvLmgKQEAgLTkzOSw3ICs5MzksOCBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfR1BJT19Ub2dnbGVQaW4oR1BJT19UeXBlRGVmICpHUElPeCwgdWludDMyX3QgUGluTWFzaykKIHsKLSAgV1JJVEVfUkVHKEdQSU94LT5PRFIsIFJFQURfUkVHKEdQSU94LT5PRFIpIF4gUGluTWFzayk7CisgIHVpbnQzMl90IG9kciA9IFJFQURfUkVHKEdQSU94LT5PRFIpOworICBXUklURV9SRUcoR1BJT3gtPkJTUlIsICgob2RyICYgUGluTWFzaykgPDwgMTZ1KSB8ICh+b2RyICYgUGluTWFzaykpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfbGxfaTJjLmggYi9JbmMvc3RtMzJmN3h4X2xsX2kyYy5oCmluZGV4IGNiNTY0MzAuLjc2ZGM0YzYgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfbGxfaTJjLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9sbF9pMmMuaApAQCAtNjcsMzggKzY3LDM4IEBACiB0eXBlZGVmIHN0cnVjdAogewogICB1aW50MzJfdCBQZXJpcGhlcmFsTW9kZTsgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgcGVyaXBoZXJhbCBtb2RlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgSTJDX0xMX0VDX1BFUklQSEVSQUxfTU9ERQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgSTJDX0xMX0VDX1BFUklQSEVSQUxfTU9ERS4KIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfSTJDX1NldE1vZGUoKS4gKi8KIAogICB1aW50MzJfdCBUaW1pbmc7ICAgICAgICAgICAgICAvKiE8IFNwZWNpZmllcyB0aGUgU0RBIHNldHVwLCBob2xkIHRpbWUgYW5kIHRoZSBTQ0wgaGlnaCwgbG93IHBlcmlvZCB2YWx1ZXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBzZXQgYnkgcmVmZXJyaW5nIHRvIHRoZSBTVE0zMkN1YmVNWCBUb29sIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBoZWxwZXIgbWFjcm8gQHJlZiBfX0xMX0kyQ19DT05WRVJUX1RJTUlOR1MoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBoZWxwZXIgbWFjcm8gQHJlZiBfX0xMX0kyQ19DT05WRVJUX1RJTUlOR1MoKS4KIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfSTJDX1NldFRpbWluZygpLiAqLwogCiAgIHVpbnQzMl90IEFuYWxvZ0ZpbHRlcjsgICAgICAgIC8qITwgRW5hYmxlcyBvciBkaXNhYmxlcyBhbmFsb2cgbm9pc2UgZmlsdGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgSTJDX0xMX0VDX0FOQUxPR0ZJTFRFUl9TRUxFQ1RJT04KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIEkyQ19MTF9FQ19BTkFMT0dGSUxURVJfU0VMRUNUSU9OLgogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb25zIEByZWYgTExfSTJDX0VuYWJsZUFuYWxvZ0ZpbHRlcigpIG9yIExMX0kyQ19EaXNhYmxlQW5hbG9nRmlsdGVyKCkuICovCiAKICAgdWludDMyX3QgRGlnaXRhbEZpbHRlcjsgICAgICAgLyohPCBDb25maWd1cmVzIHRoZSBkaWdpdGFsIG5vaXNlIGZpbHRlci4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSBudW1iZXIgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgwRgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMHgwMCBhbmQgTWF4X0RhdGEgPSAweDBGLgogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9JMkNfU2V0RGlnaXRhbEZpbHRlcigpLiAqLwogCiAgIHVpbnQzMl90IE93bkFkZHJlc3MxOyAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBkZXZpY2Ugb3duIGFkZHJlc3MgMS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgdmFsdWUgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgzRkYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBtdXN0IGJlIGEgdmFsdWUgYmV0d2VlbiBNaW5fRGF0YSA9IDB4MDAgYW5kIE1heF9EYXRhID0gMHgzRkYuCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0kyQ19TZXRPd25BZGRyZXNzMSgpLiAqLwogCiAgIHVpbnQzMl90IFR5cGVBY2tub3dsZWRnZTsgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBBQ0tub3dsZWRnZSBvciBOb24gQUNLbm93bGVkZ2UgY29uZGl0aW9uIGFmdGVyIHRoZSBhZGRyZXNzIHJlY2VpdmUgbWF0Y2ggY29kZSBvciBuZXh0IHJlY2VpdmVkIGJ5dGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBJMkNfTExfRUNfSTJDX0FDS05PV0xFREdFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBJMkNfTExfRUNfSTJDX0FDS05PV0xFREdFLgogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9JMkNfQWNrbm93bGVkZ2VOZXh0RGF0YSgpLiAqLwogCiAgIHVpbnQzMl90IE93bkFkZHJTaXplOyAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBkZXZpY2Ugb3duIGFkZHJlc3MgMSBzaXplICg3LWJpdCBvciAxMC1iaXQpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgSTJDX0xMX0VDX09XTkFERFJFU1MxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBJMkNfTExfRUNfT1dOQUREUkVTUzEuCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX0kyQ19TZXRPd25BZGRyZXNzMSgpLiAqLwogfSBMTF9JMkNfSW5pdFR5cGVEZWY7CkBAIC0zNjAsMTEgKzM2MCwxMSBAQAogICAqIEByZXR2YWwgVmFsdWUgYmV0d2VlbiBNaW5fRGF0YT0wIGFuZCBNYXhfRGF0YT0weEZGRkZGRkZGCiAgICovCiAjZGVmaW5lIF9fTExfSTJDX0NPTlZFUlRfVElNSU5HUyhfX1BSRVNDQUxFUl9fLCBfX0RBVEFfU0VUVVBfVElNRV9fLCBfX0RBVEFfSE9MRF9USU1FX18sIF9fQ0xPQ0tfSElHSF9QRVJJT0RfXywgX19DTE9DS19MT1dfUEVSSU9EX18pICAgXAotICAgICAgICAoKCgodWludDMyX3QpKF9fUFJFU0NBTEVSX18pICAgICAgICAgPDwgSTJDX1RJTUlOR1JfUFJFU0NfUG9zKSAgJiBJMkNfVElNSU5HUl9QUkVTQykgICB8IFwKLSAgICAgICAgICgoKHVpbnQzMl90KShfX0RBVEFfU0VUVVBfVElNRV9fKSAgIDw8IEkyQ19USU1JTkdSX1NDTERFTF9Qb3MpICYgSTJDX1RJTUlOR1JfU0NMREVMKSAgfCBcCi0gICAgICAgICAoKCh1aW50MzJfdCkoX19EQVRBX0hPTERfVElNRV9fKSAgICA8PCBJMkNfVElNSU5HUl9TREFERUxfUG9zKSAmIEkyQ19USU1JTkdSX1NEQURFTCkgIHwgXAotICAgICAgICAgKCgodWludDMyX3QpKF9fQ0xPQ0tfSElHSF9QRVJJT0RfXykgPDwgSTJDX1RJTUlOR1JfU0NMSF9Qb3MpICAgJiBJMkNfVElNSU5HUl9TQ0xIKSAgICB8IFwKLSAgICAgICAgICgoKHVpbnQzMl90KShfX0NMT0NLX0xPV19QRVJJT0RfXykgIDw8IEkyQ19USU1JTkdSX1NDTExfUG9zKSAgICYgSTJDX1RJTUlOR1JfU0NMTCkpCisgICgoKCh1aW50MzJfdCkoX19QUkVTQ0FMRVJfXykgICAgICAgICA8PCBJMkNfVElNSU5HUl9QUkVTQ19Qb3MpICAmIEkyQ19USU1JTkdSX1BSRVNDKSAgIHwgXAorICAgKCgodWludDMyX3QpKF9fREFUQV9TRVRVUF9USU1FX18pICAgPDwgSTJDX1RJTUlOR1JfU0NMREVMX1BvcykgJiBJMkNfVElNSU5HUl9TQ0xERUwpICB8IFwKKyAgICgoKHVpbnQzMl90KShfX0RBVEFfSE9MRF9USU1FX18pICAgIDw8IEkyQ19USU1JTkdSX1NEQURFTF9Qb3MpICYgSTJDX1RJTUlOR1JfU0RBREVMKSAgfCBcCisgICAoKCh1aW50MzJfdCkoX19DTE9DS19ISUdIX1BFUklPRF9fKSA8PCBJMkNfVElNSU5HUl9TQ0xIX1BvcykgICAmIEkyQ19USU1JTkdSX1NDTEgpICAgIHwgXAorICAgKCgodWludDMyX3QpKF9fQ0xPQ0tfTE9XX1BFUklPRF9fKSAgPDwgSTJDX1RJTUlOR1JfU0NMTF9Qb3MpICAgJiBJMkNfVElNSU5HUl9TQ0xMKSkKIC8qKgogICAqIEB9CiAgICovCkBAIC01NzgsMTcgKzU3OCwxNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQzMl90IExMX0kyQ19ETUFfR2V0UmVnQWRkcihJMkNfVHlwZURlZiAqSTJDeCwgdWludDMyX3QgRGlyZWN0aW9uKQogewotICByZWdpc3RlciB1aW50MzJfdCBkYXRhX3JlZ19hZGRyOworICB1aW50MzJfdCBkYXRhX3JlZ19hZGRyOwogCiAgIGlmIChEaXJlY3Rpb24gPT0gTExfSTJDX0RNQV9SRUdfREFUQV9UUkFOU01JVCkKICAgewogICAgIC8qIHJldHVybiBhZGRyZXNzIG9mIFRYRFIgcmVnaXN0ZXIgKi8KLSAgICBkYXRhX3JlZ19hZGRyID0gKHVpbnQzMl90KSAmIChJMkN4LT5UWERSKTsKKyAgICBkYXRhX3JlZ19hZGRyID0gKHVpbnQzMl90KSAmKEkyQ3gtPlRYRFIpOwogICB9CiAgIGVsc2UKICAgewogICAgIC8qIHJldHVybiBhZGRyZXNzIG9mIFJYRFIgcmVnaXN0ZXIgKi8KLSAgICBkYXRhX3JlZ19hZGRyID0gKHVpbnQzMl90KSAmIChJMkN4LT5SWERSKTsKKyAgICBkYXRhX3JlZ19hZGRyID0gKHVpbnQzMl90KSAmKEkyQ3gtPlJYRFIpOwogICB9CiAKICAgcmV0dXJuIGRhdGFfcmVnX2FkZHI7CkBAIC05MDIsNyArOTAyLDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBDb25maWd1cmUgcGVyaXBoZXJhbCBtb2RlLgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjEgICAgICAgICAgU01CSEVOICAgICAgICBMTF9JMkNfU2V0TW9kZVxuCiAgICogICAgICAgICBDUjEgICAgICAgICAgU01CREVOICAgICAgICBMTF9JMkNfU2V0TW9kZQpAQCAtOTIxLDcgKzkyMSw3IEBACiAKIC8qKgogICAqIEBicmllZiAgR2V0IHBlcmlwaGVyYWwgbW9kZS4KLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNNQnVzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBJMkN4IEluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IxICAgICAgICAgIFNNQkhFTiAgICAgICAgTExfSTJDX0dldE1vZGVcbgogICAqICAgICAgICAgQ1IxICAgICAgICAgIFNNQkRFTiAgICAgICAgTExfSTJDX0dldE1vZGUKQEAgLTkzOSw3ICs5MzksNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEVuYWJsZSBTTUJ1cyBhbGVydCAoSG9zdCBvciBEZXZpY2UgbW9kZSkKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNNQnVzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBJMkN4IEluc3RhbmNlLgogICAqIEBub3RlICAgU01CdXMgRGV2aWNlIG1vZGU6CiAgICogICAgICAgICAtIFNNQnVzIEFsZXJ0IHBpbiBpcyBkcml2ZWQgbG93IGFuZApAQCAtOTU3LDcgKzk1Nyw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRGlzYWJsZSBTTUJ1cyBhbGVydCAoSG9zdCBvciBEZXZpY2UgbW9kZSkKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNNQnVzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBJMkN4IEluc3RhbmNlLgogICAqIEBub3RlICAgU01CdXMgRGV2aWNlIG1vZGU6CiAgICogICAgICAgICAtIFNNQnVzIEFsZXJ0IHBpbiBpcyBub3QgZHJpdmVkIChjYW4gYmUgdXNlZCBhcyBhIHN0YW5kYXJkIEdQSU8pIGFuZApAQCAtOTc1LDcgKzk3NSw3IEBACiAKIC8qKgogICAqIEBicmllZiAgQ2hlY2sgaWYgU01CdXMgYWxlcnQgKEhvc3Qgb3IgRGV2aWNlIG1vZGUpIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMSAgICAgICAgICBBTEVSVEVOICAgICAgIExMX0kyQ19Jc0VuYWJsZWRTTUJ1c0FsZXJ0CiAgICogQHBhcmFtICBJMkN4IEkyQyBJbnN0YW5jZS4KQEAgLTk4OCw3ICs5ODgsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEVuYWJsZSBTTUJ1cyBQYWNrZXQgRXJyb3IgQ2FsY3VsYXRpb24gKFBFQykuCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMSAgICAgICAgICBQRUNFTiAgICAgICAgIExMX0kyQ19FbmFibGVTTUJ1c1BFQwogICAqIEBwYXJhbSAgSTJDeCBJMkMgSW5zdGFuY2UuCkBAIC0xMDAxLDcgKzEwMDEsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIERpc2FibGUgU01CdXMgUGFja2V0IEVycm9yIENhbGN1bGF0aW9uIChQRUMpLgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjEgICAgICAgICAgUEVDRU4gICAgICAgICBMTF9JMkNfRGlzYWJsZVNNQnVzUEVDCiAgICogQHBhcmFtICBJMkN4IEkyQyBJbnN0YW5jZS4KQEAgLTEwMTQsNyArMTAxNCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgQ2hlY2sgaWYgU01CdXMgUGFja2V0IEVycm9yIENhbGN1bGF0aW9uIChQRUMpIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMSAgICAgICAgICBQRUNFTiAgICAgICAgIExMX0kyQ19Jc0VuYWJsZWRTTUJ1c1BFQwogICAqIEBwYXJhbSAgSTJDeCBJMkMgSW5zdGFuY2UuCkBAIC0xMDI3LDcgKzEwMjcsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIENvbmZpZ3VyZSB0aGUgU01CdXMgQ2xvY2sgVGltZW91dC4KLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNNQnVzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBJMkN4IEluc3RhbmNlLgogICAqIEBub3RlICAgVGhpcyBjb25maWd1cmF0aW9uIGNhbiBvbmx5IGJlIHByb2dyYW1tZWQgd2hlbiBhc3NvY2lhdGVkIFRpbWVvdXQgaXMgZGlzYWJsZWQgKFRpbWVvdXRBIGFuZC9vclRpbWVvdXRCKS4KICAgKiBAcm10b2xsIFRJTUVPVVRSICAgICBUSU1FT1VUQSAgICAgIExMX0kyQ19Db25maWdTTUJ1c1RpbWVvdXRcbgpAQCAtMTA1MCw3ICsxMDUwLDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBDb25maWd1cmUgdGhlIFNNQnVzIENsb2NrIFRpbWVvdXRBIChTQ0wgbG93IHRpbWVvdXQgb3IgU0NMIGFuZCBTREEgaGlnaCB0aW1lb3V0IGRlcGVuZHMgb24gVGltZW91dEEgbW9kZSkuCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAbm90ZSAgIFRoZXNlIGJpdHMgY2FuIG9ubHkgYmUgcHJvZ3JhbW1lZCB3aGVuIFRpbWVvdXRBIGlzIGRpc2FibGVkLgogICAqIEBybXRvbGwgVElNRU9VVFIgICAgIFRJTUVPVVRBICAgICAgTExfSTJDX1NldFNNQnVzVGltZW91dEEKQEAgLTEwNjUsNyArMTA2NSw3IEBACiAKIC8qKgogICAqIEBicmllZiAgR2V0IHRoZSBTTUJ1cyBDbG9jayBUaW1lb3V0QSBzZXR0aW5nLgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQHJtdG9sbCBUSU1FT1VUUiAgICAgVElNRU9VVEEgICAgICBMTF9JMkNfR2V0U01CdXNUaW1lb3V0QQogICAqIEBwYXJhbSAgSTJDeCBJMkMgSW5zdGFuY2UuCkBAIC0xMDc4LDcgKzEwNzgsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIFNldCB0aGUgU01CdXMgQ2xvY2sgVGltZW91dEEgbW9kZS4KLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNNQnVzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBJMkN4IEluc3RhbmNlLgogICAqIEBub3RlICAgVGhpcyBiaXQgY2FuIG9ubHkgYmUgcHJvZ3JhbW1lZCB3aGVuIFRpbWVvdXRBIGlzIGRpc2FibGVkLgogICAqIEBybXRvbGwgVElNRU9VVFIgICAgIFRJRExFICAgICAgICAgTExfSTJDX1NldFNNQnVzVGltZW91dEFNb2RlCkBAIC0xMDk1LDcgKzEwOTUsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEdldCB0aGUgU01CdXMgQ2xvY2sgVGltZW91dEEgbW9kZS4KLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNNQnVzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBJMkN4IEluc3RhbmNlLgogICAqIEBybXRvbGwgVElNRU9VVFIgICAgIFRJRExFICAgICAgICAgTExfSTJDX0dldFNNQnVzVGltZW91dEFNb2RlCiAgICogQHBhcmFtICBJMkN4IEkyQyBJbnN0YW5jZS4KQEAgLTExMTAsNyArMTExMCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgQ29uZmlndXJlIHRoZSBTTUJ1cyBFeHRlbmRlZCBDdW11bGF0aXZlIENsb2NrIFRpbWVvdXRCIChNYXN0ZXIgb3IgU2xhdmUgbW9kZSkuCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAbm90ZSAgIFRoZXNlIGJpdHMgY2FuIG9ubHkgYmUgcHJvZ3JhbW1lZCB3aGVuIFRpbWVvdXRCIGlzIGRpc2FibGVkLgogICAqIEBybXRvbGwgVElNRU9VVFIgICAgIFRJTUVPVVRCICAgICAgTExfSTJDX1NldFNNQnVzVGltZW91dEIKQEAgLTExMjQsOCArMTEyNCw4IEBACiB9CiAKIC8qKgotICAqIEBicmllZiAgR2V0IHRoZSBTTUJ1cyBFeHRlbnRlZCBDdW11bGF0aXZlIENsb2NrIFRpbWVvdXRCIHNldHRpbmcuCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBicmllZiAgR2V0IHRoZSBTTUJ1cyBFeHRlbmRlZCBDdW11bGF0aXZlIENsb2NrIFRpbWVvdXRCIHNldHRpbmcuCisgICogQG5vdGUgICBNYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNNQnVzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBJMkN4IEluc3RhbmNlLgogICAqIEBybXRvbGwgVElNRU9VVFIgICAgIFRJTUVPVVRCICAgICAgTExfSTJDX0dldFNNQnVzVGltZW91dEIKICAgKiBAcGFyYW0gIEkyQ3ggSTJDIEluc3RhbmNlLgpAQCAtMTEzOCw3ICsxMTM4LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBFbmFibGUgdGhlIFNNQnVzIENsb2NrIFRpbWVvdXQuCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAcm10b2xsIFRJTUVPVVRSICAgICBUSU1PVVRFTiAgICAgIExMX0kyQ19FbmFibGVTTUJ1c1RpbWVvdXRcbgogICAqICAgICAgICAgVElNRU9VVFIgICAgIFRFWFRFTiAgICAgICAgTExfSTJDX0VuYWJsZVNNQnVzVGltZW91dApAQCAtMTE1Niw3ICsxMTU2LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBEaXNhYmxlIHRoZSBTTUJ1cyBDbG9jayBUaW1lb3V0LgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQHJtdG9sbCBUSU1FT1VUUiAgICAgVElNT1VURU4gICAgICBMTF9JMkNfRGlzYWJsZVNNQnVzVGltZW91dFxuCiAgICogICAgICAgICBUSU1FT1VUUiAgICAgVEVYVEVOICAgICAgICBMTF9JMkNfRGlzYWJsZVNNQnVzVGltZW91dApAQCAtMTE3NCw3ICsxMTc0LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBDaGVjayBpZiB0aGUgU01CdXMgQ2xvY2sgVGltZW91dCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQHJtdG9sbCBUSU1FT1VUUiAgICAgVElNT1VURU4gICAgICBMTF9JMkNfSXNFbmFibGVkU01CdXNUaW1lb3V0XG4KICAgKiAgICAgICAgIFRJTUVPVVRSICAgICBURVhURU4gICAgICAgIExMX0kyQ19Jc0VuYWJsZWRTTUJ1c1RpbWVvdXQKQEAgLTE0MDQsNyArMTQwNCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRW5hYmxlIEVycm9yIGludGVycnVwdHMuCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAbm90ZSAgIEFueSBvZiB0aGVzZSBlcnJvcnMgd2lsbCBnZW5lcmF0ZSBpbnRlcnJ1cHQgOgogICAqICAgICAgICAgQXJiaXRyYXRpb24gTG9zcyAoQVJMTykKQEAgLTE0MjQsNyArMTQyNCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRGlzYWJsZSBFcnJvciBpbnRlcnJ1cHRzLgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQG5vdGUgICBBbnkgb2YgdGhlc2UgZXJyb3JzIHdpbGwgZ2VuZXJhdGUgaW50ZXJydXB0IDoKICAgKiAgICAgICAgIEFyYml0cmF0aW9uIExvc3MgKEFSTE8pCkBAIC0xNjA2LDcgKzE2MDYsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEluZGljYXRlIHRoZSBzdGF0dXMgb2YgU01CdXMgUEVDIGVycm9yIGZsYWcgaW4gcmVjZXB0aW9uLgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQG5vdGUgICBSRVNFVDogQ2xlYXIgZGVmYXVsdCB2YWx1ZS4KICAgKiAgICAgICAgIFNFVDogV2hlbiB0aGUgcmVjZWl2ZWQgUEVDIGRvZXMgbm90IG1hdGNoIHdpdGggdGhlIFBFQyByZWdpc3RlciBjb250ZW50LgpAQCAtMTYyMSw3ICsxNjIxLDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBJbmRpY2F0ZSB0aGUgc3RhdHVzIG9mIFNNQnVzIFRpbWVvdXQgZGV0ZWN0aW9uIGZsYWcuCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAbm90ZSAgIFJFU0VUOiBDbGVhciBkZWZhdWx0IHZhbHVlLgogICAqICAgICAgICAgU0VUOiBXaGVuIGEgdGltZW91dCBvciBleHRlbmRlZCBjbG9jayB0aW1lb3V0IG9jY3Vycy4KQEAgLTE2MzYsNyArMTYzNiw3IEBACiAKIC8qKgogICAqIEBicmllZiAgSW5kaWNhdGUgdGhlIHN0YXR1cyBvZiBTTUJ1cyBhbGVydCBmbGFnLgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQG5vdGUgICBSRVNFVDogQ2xlYXIgZGVmYXVsdCB2YWx1ZS4KICAgKiAgICAgICAgIFNFVDogV2hlbiBTTUJ1cyBob3N0IGNvbmZpZ3VyYXRpb24sIFNNQnVzIGFsZXJ0IGVuYWJsZWQgYW5kCkBAIC0xNzQzLDcgKzE3NDMsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIENsZWFyIFNNQnVzIFBFQyBlcnJvciBmbGFnLgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQHJtdG9sbCBJQ1IgICAgICAgICAgUEVDQ0YgICAgICAgICBMTF9JMkNfQ2xlYXJTTUJ1c0ZsYWdfUEVDRVJSCiAgICogQHBhcmFtICBJMkN4IEkyQyBJbnN0YW5jZS4KQEAgLTE3NTYsNyArMTc1Niw3IEBACiAKIC8qKgogICAqIEBicmllZiAgQ2xlYXIgU01CdXMgVGltZW91dCBkZXRlY3Rpb24gZmxhZy4KLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNNQnVzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBJMkN4IEluc3RhbmNlLgogICAqIEBybXRvbGwgSUNSICAgICAgICAgIFRJTU9VVENGICAgICAgTExfSTJDX0NsZWFyU01CdXNGbGFnX1RJTUVPVVQKICAgKiBAcGFyYW0gIEkyQ3ggSTJDIEluc3RhbmNlLgpAQCAtMTc2OSw3ICsxNzY5LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBDbGVhciBTTUJ1cyBBbGVydCBmbGFnLgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQHJtdG9sbCBJQ1IgICAgICAgICAgQUxFUlRDRiAgICAgICBMTF9JMkNfQ2xlYXJTTUJ1c0ZsYWdfQUxFUlQKICAgKiBAcGFyYW0gIEkyQ3ggSTJDIEluc3RhbmNlLgpAQCAtMjA1MSw3ICsyMDUxLDkgQEAKIF9fU1RBVElDX0lOTElORSB2b2lkIExMX0kyQ19IYW5kbGVUcmFuc2ZlcihJMkNfVHlwZURlZiAqSTJDeCwgdWludDMyX3QgU2xhdmVBZGRyLCB1aW50MzJfdCBTbGF2ZUFkZHJTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRyYW5zZmVyU2l6ZSwgdWludDMyX3QgRW5kTW9kZSwgdWludDMyX3QgUmVxdWVzdCkKIHsKLSAgTU9ESUZZX1JFRyhJMkN4LT5DUjIsIEkyQ19DUjJfU0FERCB8IEkyQ19DUjJfQUREMTAgfCAoSTJDX0NSMl9SRF9XUk4gJiAodWludDMyX3QpKFJlcXVlc3QgPj4gKDMxVSAtIEkyQ19DUjJfUkRfV1JOX1BvcykpKSB8IEkyQ19DUjJfU1RBUlQgfCBJMkNfQ1IyX1NUT1AgfCBJMkNfQ1IyX1JFTE9BRCB8CisgIE1PRElGWV9SRUcoSTJDeC0+Q1IyLCBJMkNfQ1IyX1NBREQgfCBJMkNfQ1IyX0FERDEwIHwKKyAgICAgICAgICAgICAoSTJDX0NSMl9SRF9XUk4gJiAodWludDMyX3QpKFJlcXVlc3QgPj4gKDMxVSAtIEkyQ19DUjJfUkRfV1JOX1BvcykpKSB8CisgICAgICAgICAgICAgSTJDX0NSMl9TVEFSVCB8IEkyQ19DUjJfU1RPUCB8IEkyQ19DUjJfUkVMT0FEIHwKICAgICAgICAgICAgICBJMkNfQ1IyX05CWVRFUyB8IEkyQ19DUjJfQVVUT0VORCB8IEkyQ19DUjJfSEVBRDEwUiwKICAgICAgICAgICAgICBTbGF2ZUFkZHIgfCBTbGF2ZUFkZHJTaXplIHwgKFRyYW5zZmVyU2l6ZSA8PCBJMkNfQ1IyX05CWVRFU19Qb3MpIHwgRW5kTW9kZSB8IFJlcXVlc3QpOwogfQpAQCAtMjA4NCw3ICsyMDg2LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBFbmFibGUgaW50ZXJuYWwgY29tcGFyaXNvbiBvZiB0aGUgU01CdXMgUGFja2V0IEVycm9yIGJ5dGUgKHRyYW5zbWlzc2lvbiBvciByZWNlcHRpb24gbW9kZSkuCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAbm90ZSAgIFRoaXMgZmVhdHVyZSBpcyBjbGVhcmVkIGJ5IGhhcmR3YXJlIHdoZW4gdGhlIFBFQyBieXRlIGlzIHRyYW5zZmVycmVkLCBvciB3aGVuIGEgU1RPUCBjb25kaXRpb24gb3IgYW4gQWRkcmVzcyBNYXRjaGVkIGlzIHJlY2VpdmVkLgogICAqICAgICAgICAgVGhpcyBiaXQgaGFzIG5vIGVmZmVjdCB3aGVuIFJFTE9BRCBiaXQgaXMgc2V0LgpAQCAtMjEwMCw3ICsyMTAyLDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBDaGVjayBpZiB0aGUgU01CdXMgUGFja2V0IEVycm9yIGJ5dGUgaW50ZXJuYWwgY29tcGFyaXNvbiBpcyByZXF1ZXN0ZWQgb3Igbm90LgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19TTUJVU19BTExfSU5TVEFOQ0UoSTJDeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU01CdXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIEkyQ3ggSW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjIgICAgICAgICAgUEVDQllURSAgICAgICBMTF9JMkNfSXNFbmFibGVkU01CdXNQRUNDb21wYXJlCiAgICogQHBhcmFtICBJMkN4IEkyQyBJbnN0YW5jZS4KQEAgLTIxMTMsMTIgKzIxMTUsMTIgQEAKIAogLyoqCiAgICogQGJyaWVmICBHZXQgdGhlIFNNQnVzIFBhY2tldCBFcnJvciBieXRlIGNhbGN1bGF0ZWQuCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1NNQlVTX0FMTF9JTlNUQU5DRShJMkN4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfU01CVVNfQUxMX0lOU1RBTkNFKEkyQ3gpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTTUJ1cyBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgSTJDeCBJbnN0YW5jZS4KICAgKiBAcm10b2xsIFBFQ1IgICAgICAgICBQRUMgICAgICAgICAgIExMX0kyQ19HZXRTTUJ1c1BFQwogICAqIEBwYXJhbSAgSTJDeCBJMkMgSW5zdGFuY2UuCiAgICogQHJldHZhbCBWYWx1ZSBiZXR3ZWVuIE1pbl9EYXRhPTB4MDAgYW5kIE1heF9EYXRhPTB4RkYKLSovCisgICovCiBfX1NUQVRJQ19JTkxJTkUgdWludDMyX3QgTExfSTJDX0dldFNNQnVzUEVDKEkyQ19UeXBlRGVmICpJMkN4KQogewogICByZXR1cm4gKHVpbnQzMl90KShSRUFEX0JJVChJMkN4LT5QRUNSLCBJMkNfUEVDUl9QRUMpKTsKZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfbGxfaXdkZy5oIGIvSW5jL3N0bTMyZjd4eF9sbF9pd2RnLmgKaW5kZXggNTA0MTJhYy4uNjg2ZjA5ZSAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9sbF9pd2RnLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9sbF9pd2RnLmgKQEAgLTMwNCw4ICszMDQsOCBAQAogLyoqCiAgICogQGJyaWVmICBDaGVjayBpZiBhbGwgZmxhZ3MgUHJlc2NhbGVyLCBSZWxvYWQgJiBXaW5kb3cgVmFsdWUgVXBkYXRlIGFyZSByZXNldCBvciBub3QKICAgKiBAcm10b2xsIFNSICAgICAgICAgICBQVlUgICAgICAgICAgIExMX0lXREdfSXNSZWFkeVxuCi0gICogICAgICAgICBTUiAgICAgICAgICAgV1ZVICAgICAgICAgICBMTF9JV0RHX0lzUmVhZHlcbgotICAqICAgICAgICAgU1IgICAgICAgICAgIFJWVSAgICAgICAgICAgTExfSVdER19Jc1JlYWR5CisgICogICAgICAgICBTUiAgICAgICAgICAgUlZVICAgICAgICAgICBMTF9JV0RHX0lzUmVhZHlcbgorICAqICAgICAgICAgU1IgICAgICAgICAgIFdWVSAgICAgICAgICAgTExfSVdER19Jc1JlYWR5CiAgICogQHBhcmFtICBJV0RHeCBJV0RHIEluc3RhbmNlCiAgICogQHJldHZhbCBTdGF0ZSBvZiBiaXRzICgxIG9yIDApLgogICAqLwpAQCAtMzE4LDcgKzMxOCw2IEBACiAgICogQH0KICAgKi8KIAotCiAvKioKICAgKiBAfQogICAqLwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9sbF9scHRpbS5oIGIvSW5jL3N0bTMyZjd4eF9sbF9scHRpbS5oCmluZGV4IDAzYmFhOTEuLmI5YTA3MTkgMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfbGxfbHB0aW0uaAorKysgYi9JbmMvc3RtMzJmN3h4X2xsX2xwdGltLmgKQEAgLTEwMCw5ICsxMDAsOSBAQAogICAqIEB7CiAgICovCiAjZGVmaW5lIExMX0xQVElNX0lTUl9DTVBNICAgICAgICAgICAgICAgICAgICAgTFBUSU1fSVNSX0NNUE0gICAgIC8qITwgQ29tcGFyZSBtYXRjaCAqLworI2RlZmluZSBMTF9MUFRJTV9JU1JfQ01QT0sgICAgICAgICAgICAgICAgICAgIExQVElNX0lTUl9DTVBPSyAgICAvKiE8IENvbXBhcmUgcmVnaXN0ZXIgdXBkYXRlIE9LICovCiAjZGVmaW5lIExMX0xQVElNX0lTUl9BUlJNICAgICAgICAgICAgICAgICAgICAgTFBUSU1fSVNSX0FSUk0gICAgIC8qITwgQXV0b3JlbG9hZCBtYXRjaCAqLwogI2RlZmluZSBMTF9MUFRJTV9JU1JfRVhUVFJJRyAgICAgICAgICAgICAgICAgIExQVElNX0lTUl9FWFRUUklHICAvKiE8IEV4dGVybmFsIHRyaWdnZXIgZWRnZSBldmVudCAqLwotI2RlZmluZSBMTF9MUFRJTV9JU1JfQ01QT0sgICAgICAgICAgICAgICAgICAgIExQVElNX0lTUl9DTVBPSyAgICAvKiE8IENvbXBhcmUgcmVnaXN0ZXIgdXBkYXRlIE9LICovCiAjZGVmaW5lIExMX0xQVElNX0lTUl9BUlJPSyAgICAgICAgICAgICAgICAgICAgTFBUSU1fSVNSX0FSUk9LICAgIC8qITwgQXV0b3JlbG9hZCByZWdpc3RlciB1cGRhdGUgT0sgKi8KICNkZWZpbmUgTExfTFBUSU1fSVNSX1VQICAgICAgICAgICAgICAgICAgICAgICBMUFRJTV9JU1JfVVAgICAgICAgLyohPCBDb3VudGVyIGRpcmVjdGlvbiBjaGFuZ2UgZG93biB0byB1cCAqLwogI2RlZmluZSBMTF9MUFRJTV9JU1JfRE9XTiAgICAgICAgICAgICAgICAgICAgIExQVElNX0lTUl9ET1dOICAgICAvKiE8IENvdW50ZXIgZGlyZWN0aW9uIGNoYW5nZSB1cCB0byBkb3duICovCkBAIC0xMTQsMTMgKzExNCwxMyBAQAogICAqIEBicmllZiAgICBJVCBkZWZpbmVzIHdoaWNoIGNhbiBiZSB1c2VkIHdpdGggTExfTFBUSU1fUmVhZFJlZyBhbmQgIExMX0xQVElNX1dyaXRlUmVnIGZ1bmN0aW9ucwogICAqIEB7CiAgICovCi0jZGVmaW5lIExMX0xQVElNX0lFUl9DTVBNSUUgICAgICAgICAgICAgICAgICAgTFBUSU1fSUVSX0NNUE1JRSAgICAgICAvKiE8IENvbXBhcmUgbWF0Y2ggSW50ZXJydXB0IEVuYWJsZSAqLwotI2RlZmluZSBMTF9MUFRJTV9JRVJfQVJSTUlFICAgICAgICAgICAgICAgICAgIExQVElNX0lFUl9BUlJNSUUgICAgICAgLyohPCBBdXRvcmVsb2FkIG1hdGNoIEludGVycnVwdCBFbmFibGUgKi8KLSNkZWZpbmUgTExfTFBUSU1fSUVSX0VYVFRSSUdJRSAgICAgICAgICAgICAgICBMUFRJTV9JRVJfRVhUVFJJR0lFICAgIC8qITwgRXh0ZXJuYWwgdHJpZ2dlciB2YWxpZCBlZGdlIEludGVycnVwdCBFbmFibGUgKi8KLSNkZWZpbmUgTExfTFBUSU1fSUVSX0NNUE9LSUUgICAgICAgICAgICAgICAgICBMUFRJTV9JRVJfQ01QT0tJRSAgICAgIC8qITwgQ29tcGFyZSByZWdpc3RlciB1cGRhdGUgT0sgSW50ZXJydXB0IEVuYWJsZSAqLwotI2RlZmluZSBMTF9MUFRJTV9JRVJfQVJST0tJRSAgICAgICAgICAgICAgICAgIExQVElNX0lFUl9BUlJPS0lFICAgICAgLyohPCBBdXRvcmVsb2FkIHJlZ2lzdGVyIHVwZGF0ZSBPSyBJbnRlcnJ1cHQgRW5hYmxlICovCi0jZGVmaW5lIExMX0xQVElNX0lFUl9VUElFICAgICAgICAgICAgICAgICAgICAgTFBUSU1fSUVSX1VQSUUgICAgICAgICAvKiE8IERpcmVjdGlvbiBjaGFuZ2UgdG8gVVAgSW50ZXJydXB0IEVuYWJsZSAqLwotI2RlZmluZSBMTF9MUFRJTV9JRVJfRE9XTklFICAgICAgICAgICAgICAgICAgIExQVElNX0lFUl9ET1dOSUUgICAgICAgLyohPCBEaXJlY3Rpb24gY2hhbmdlIHRvIGRvd24gSW50ZXJydXB0IEVuYWJsZSAqLworI2RlZmluZSBMTF9MUFRJTV9JRVJfQ01QTUlFICAgICAgICAgICAgICAgICAgIExQVElNX0lFUl9DTVBNSUUgICAgIC8qITwgQ29tcGFyZSBtYXRjaCAqLworI2RlZmluZSBMTF9MUFRJTV9JRVJfQ01QT0tJRSAgICAgICAgICAgICAgICAgIExQVElNX0lFUl9DTVBPS0lFICAgIC8qITwgQ29tcGFyZSByZWdpc3RlciB1cGRhdGUgT0sgKi8KKyNkZWZpbmUgTExfTFBUSU1fSUVSX0FSUk1JRSAgICAgICAgICAgICAgICAgICBMUFRJTV9JRVJfQVJSTUlFICAgICAvKiE8IEF1dG9yZWxvYWQgbWF0Y2ggKi8KKyNkZWZpbmUgTExfTFBUSU1fSUVSX0VYVFRSSUdJRSAgICAgICAgICAgICAgICBMUFRJTV9JRVJfRVhUVFJJR0lFICAvKiE8IEV4dGVybmFsIHRyaWdnZXIgZWRnZSBldmVudCAqLworI2RlZmluZSBMTF9MUFRJTV9JRVJfQVJST0tJRSAgICAgICAgICAgICAgICAgIExQVElNX0lFUl9BUlJPS0lFICAgIC8qITwgQXV0b3JlbG9hZCByZWdpc3RlciB1cGRhdGUgT0sgKi8KKyNkZWZpbmUgTExfTFBUSU1fSUVSX1VQSUUgICAgICAgICAgICAgICAgICAgICBMUFRJTV9JRVJfVVBJRSAgICAgICAvKiE8IENvdW50ZXIgZGlyZWN0aW9uIGNoYW5nZSBkb3duIHRvIHVwICovCisjZGVmaW5lIExMX0xQVElNX0lFUl9ET1dOSUUgICAgICAgICAgICAgICAgICAgTFBUSU1fSUVSX0RPV05JRSAgICAgLyohPCBDb3VudGVyIGRpcmVjdGlvbiBjaGFuZ2UgdXAgdG8gZG93biAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTE1NSw3ICsxNTUsNyBAQAogLyoqIEBkZWZncm91cCBMUFRJTV9MTF9FQ19PVVRQVVRfV0FWRUZPUk0gT3V0cHV0IFdhdmVmb3JtIFR5cGUKICAgKiBAewogICAqLwotI2RlZmluZSBMTF9MUFRJTV9PVVRQVVRfV0FWRUZPUk1fUFdNICAgICAgICAgIDB4MDAwMDAwMDBVICAgICAvKiE8TFBUSU0gIGdlbmVyYXRlcyBlaXRoZXIgYSBQV00gd2F2ZWZvcm0gb3IgYSBPbmUgcHVsc2Ugd2F2ZWZvcm0gZGVwZW5kaW5nIG9uIGNob3NlbiBvcGVyYXRpbmcgbW9kZSBDT05USU5PVVMgb3IgU0lOR0xFKi8KKyNkZWZpbmUgTExfTFBUSU1fT1VUUFVUX1dBVkVGT1JNX1BXTSAgICAgICAgICAweDAwMDAwMDAwVSAgICAgLyohPExQVElNICBnZW5lcmF0ZXMgZWl0aGVyIGEgUFdNIHdhdmVmb3JtIG9yIGEgT25lIHB1bHNlIHdhdmVmb3JtIGRlcGVuZGluZyBvbiBjaG9zZW4gb3BlcmF0aW5nIG1vZGUgQ09OVElOVU9VUyBvciBTSU5HTEUqLwogI2RlZmluZSBMTF9MUFRJTV9PVVRQVVRfV0FWRUZPUk1fU0VUT05DRSAgICAgIExQVElNX0NGR1JfV0FWRSAvKiE8TFBUSU0gIGdlbmVyYXRlcyBhIFNldCBPbmNlIHdhdmVmb3JtKi8KIC8qKgogICAqIEB9CkBAIC0xMjI3LDcgKzEyMjcsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEVuYWJsZSBhdXRvcmVsb2FkIHJlZ2lzdGVyIHdyaXRlIGNvbXBsZXRlZCBpbnRlcnJ1cHQgKEFSUk9LSUUpLgotICAqIEBybXRvbGwgSUVSICAgICAgICAgIEFSUk9LSUUgICAgICAgTExfTFBUSU1fRW5hYmxlSVRfQVJST0sKKyAgKiBAcm10b2xsIElFUiAgICAgICAgIEFSUk9LSUUgICAgICAgTExfTFBUSU1fRW5hYmxlSVRfQVJST0sKICAgKiBAcGFyYW0gIExQVElNeCBMb3ctUG93ZXIgVGltZXIgaW5zdGFuY2UKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KQEAgLTEyMzgsNyArMTIzOCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRGlzYWJsZSBhdXRvcmVsb2FkIHJlZ2lzdGVyIHdyaXRlIGNvbXBsZXRlZCBpbnRlcnJ1cHQgKEFSUk9LSUUpLgotICAqIEBybXRvbGwgSUVSICAgICAgICAgIEFSUk9LSUUgICAgICAgTExfTFBUSU1fRGlzYWJsZUlUX0FSUk9LCisgICogQHJtdG9sbCBJRVIgICAgICAgICBBUlJPS0lFICAgICAgIExMX0xQVElNX0Rpc2FibGVJVF9BUlJPSwogICAqIEBwYXJhbSAgTFBUSU14IExvdy1Qb3dlciBUaW1lciBpbnN0YW5jZQogICAqIEByZXR2YWwgTm9uZQogICAqLwpAQCAtMTI0OSw3ICsxMjQ5LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBJbmRpY2F0ZXMgd2hldGhlciB0aGUgYXV0b3JlbG9hZCByZWdpc3RlciB3cml0ZSBjb21wbGV0ZWQgaW50ZXJydXB0IChBUlJPS0lFKSBpcyBlbmFibGVkLgotICAqIEBybXRvbGwgSUVSICAgICAgICAgIEFSUk9LSUUgICAgICAgTExfTFBUSU1fSXNFbmFibGVkSVRfQVJST0sKKyAgKiBAcm10b2xsIElFUiAgICAgICAgIEFSUk9LSUUgICAgICAgTExfTFBUSU1fSXNFbmFibGVkSVRfQVJST0sKICAgKiBAcGFyYW0gIExQVElNeCBMb3ctUG93ZXIgVGltZXIgaW5zdGFuY2UKICAgKiBAcmV0dmFsIFN0YXRlIG9mIGJpdCgxIG9yIDApLgogICAqLwpAQCAtMTI2MCw3ICsxMjYwLDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBFbmFibGUgZGlyZWN0aW9uIGNoYW5nZSB0byB1cCBpbnRlcnJ1cHQgKFVQSUUpLgotICAqIEBybXRvbGwgSUVSICAgICAgICAgIFVQSUUgICAgICAgICAgTExfTFBUSU1fRW5hYmxlSVRfVVAKKyAgKiBAcm10b2xsIElFUiAgICAgICAgIFVQSUUgICAgICAgICAgTExfTFBUSU1fRW5hYmxlSVRfVVAKICAgKiBAcGFyYW0gIExQVElNeCBMb3ctUG93ZXIgVGltZXIgaW5zdGFuY2UKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KQEAgLTEyNzEsNyArMTI3MSw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRGlzYWJsZSBkaXJlY3Rpb24gY2hhbmdlIHRvIHVwIGludGVycnVwdCAoVVBJRSkuCi0gICogQHJtdG9sbCBJRVIgICAgICAgICAgVVBJRSAgICAgICAgICBMTF9MUFRJTV9EaXNhYmxlSVRfVVAKKyAgKiBAcm10b2xsIElFUiAgICAgICAgIFVQSUUgICAgICAgICAgTExfTFBUSU1fRGlzYWJsZUlUX1VQCiAgICogQHBhcmFtICBMUFRJTXggTG93LVBvd2VyIFRpbWVyIGluc3RhbmNlCiAgICogQHJldHZhbCBOb25lCiAgICovCkBAIC0xMjgyLDcgKzEyODIsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEluZGljYXRlcyB3aGV0aGVyIHRoZSBkaXJlY3Rpb24gY2hhbmdlIHRvIHVwIGludGVycnVwdCAoVVBJRSkgaXMgZW5hYmxlZC4KLSAgKiBAcm10b2xsIElFUiAgICAgICAgICBVUElFICAgICAgICAgIExMX0xQVElNX0lzRW5hYmxlZElUX1VQCisgICogQHJtdG9sbCBJRVIgICAgICAgICBVUElFICAgICAgICAgIExMX0xQVElNX0lzRW5hYmxlZElUX1VQCiAgICogQHBhcmFtICBMUFRJTXggTG93LVBvd2VyIFRpbWVyIGluc3RhbmNlCiAgICogQHJldHZhbCBTdGF0ZSBvZiBiaXQoMSBvciAwKS4KICAgKi8KQEAgLTEyOTMsNyArMTI5Myw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRW5hYmxlIGRpcmVjdGlvbiBjaGFuZ2UgdG8gZG93biBpbnRlcnJ1cHQgKERPV05JRSkuCi0gICogQHJtdG9sbCBJRVIgICAgICAgICAgRE9XTklFICAgICAgICBMTF9MUFRJTV9FbmFibGVJVF9ET1dOCisgICogQHJtdG9sbCBJRVIgICAgICAgICBET1dOSUUgICAgICAgIExMX0xQVElNX0VuYWJsZUlUX0RPV04KICAgKiBAcGFyYW0gIExQVElNeCBMb3ctUG93ZXIgVGltZXIgaW5zdGFuY2UKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KQEAgLTEzMDQsNyArMTMwNCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRGlzYWJsZSBkaXJlY3Rpb24gY2hhbmdlIHRvIGRvd24gaW50ZXJydXB0IChET1dOSUUpLgotICAqIEBybXRvbGwgSUVSICAgICAgICAgIERPV05JRSAgICAgICAgTExfTFBUSU1fRGlzYWJsZUlUX0RPV04KKyAgKiBAcm10b2xsIElFUiAgICAgICAgIERPV05JRSAgICAgICAgTExfTFBUSU1fRGlzYWJsZUlUX0RPV04KICAgKiBAcGFyYW0gIExQVElNeCBMb3ctUG93ZXIgVGltZXIgaW5zdGFuY2UKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KQEAgLTEzMTUsNyArMTMxNSw3IEBACiAKIC8qKgogICAqIEBicmllZiAgSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGRpcmVjdGlvbiBjaGFuZ2UgdG8gZG93biBpbnRlcnJ1cHQgKERPV05JRSkgaXMgZW5hYmxlZC4KLSAgKiBAcm10b2xsIElFUiAgICAgICAgICBET1dOSUUgICAgICAgIExMX0xQVElNX0lzRW5hYmxlZElUX0RPV04KKyAgKiBAcm10b2xsIElFUiAgICAgICAgIERPV05JRSAgICAgICAgTExfTFBUSU1fSXNFbmFibGVkSVRfRE9XTgogICAqIEBwYXJhbSAgTFBUSU14IExvdy1Qb3dlciBUaW1lciBpbnN0YW5jZQogICAqIEByZXR2YWwgU3RhdGUgb2YgYml0KDEgb3IgMCkuCiAgICovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2xsX3J0Yy5oIGIvSW5jL3N0bTMyZjd4eF9sbF9ydGMuaAppbmRleCBiMWQ3OWRkLi5jZWIzOThiIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2xsX3J0Yy5oCisrKyBiL0luYy9zdG0zMmY3eHhfbGxfcnRjLmgKQEAgLTExOTAsNyArMTE5MCw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9SVENfVElNRV9Db25maWcoUlRDX1R5cGVEZWYgKlJUQ3gsIHVpbnQzMl90IEZvcm1hdDEyXzI0LCB1aW50MzJfdCBIb3VycywgdWludDMyX3QgTWludXRlcywgdWludDMyX3QgU2Vjb25kcykKIHsKLSAgcmVnaXN0ZXIgdWludDMyX3QgdGVtcCA9IDBVOworICB1aW50MzJfdCB0ZW1wID0gMFU7CiAKICAgdGVtcCA9IEZvcm1hdDEyXzI0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcCiAgICAgICAgICAoKChIb3VycyAmIDB4RjBVKSA8PCAoUlRDX1RSX0hUX1BvcyAtIDRVKSkgfCAoKEhvdXJzICYgMHgwRlUpIDw8IFJUQ19UUl9IVV9Qb3MpKSAgICAgfCBcCkBAIC0xMjE4LDcgKzEyMTgsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQzMl90IExMX1JUQ19USU1FX0dldChSVENfVHlwZURlZiAqUlRDeCkKIHsKLSAgcmVnaXN0ZXIgdWludDMyX3QgdGVtcCA9IDBVOworICB1aW50MzJfdCB0ZW1wID0gMFU7CiAgIAogICB0ZW1wID0gUkVBRF9CSVQoUlRDeC0+VFIsIChSVENfVFJfSFQgfCBSVENfVFJfSFUgfCBSVENfVFJfTU5UIHwgUlRDX1RSX01OVSB8IFJUQ19UUl9TVCB8IFJUQ19UUl9TVSkpOwogICByZXR1cm4gKHVpbnQzMl90KSgoKCgoKHRlbXAgJiBSVENfVFJfSFQpID4+IFJUQ19UUl9IVF9Qb3MpIDw8IDRVKSB8ICgodGVtcCAmIFJUQ19UUl9IVSkgPj4gUlRDX1RSX0hVX1BvcykpIDw8IFJUQ19PRkZTRVRfSE9VUikgfCAgXApAQCAtMTUyMCw3ICsxNTIwLDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1JUQ19EQVRFX0NvbmZpZyhSVENfVHlwZURlZiAqUlRDeCwgdWludDMyX3QgV2Vla0RheSwgdWludDMyX3QgRGF5LCB1aW50MzJfdCBNb250aCwgdWludDMyX3QgWWVhcikKIHsKLSAgcmVnaXN0ZXIgdWludDMyX3QgdGVtcCA9IDBVOworICB1aW50MzJfdCB0ZW1wID0gMFU7CiAKICAgdGVtcCA9IChXZWVrRGF5IDw8IFJUQ19EUl9XRFVfUG9zKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcCiAgICAgICAgICAoKChZZWFyICYgMHhGMFUpIDw8IChSVENfRFJfWVRfUG9zIC0gNFUpKSB8ICgoWWVhciAmIDB4MEZVKSA8PCBSVENfRFJfWVVfUG9zKSkgICB8IFwKQEAgLTE1NDgsNyArMTU0OCw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdWludDMyX3QgTExfUlRDX0RBVEVfR2V0KFJUQ19UeXBlRGVmICpSVEN4KQogewotICByZWdpc3RlciB1aW50MzJfdCB0ZW1wID0gMFU7CisgIHVpbnQzMl90IHRlbXAgPSAwVTsKICAgCiAgIHRlbXAgPSBSRUFEX0JJVChSVEN4LT5EUiwgKFJUQ19EUl9XRFUgfCBSVENfRFJfTVQgfCBSVENfRFJfTVUgfCBSVENfRFJfRFQgfCBSVENfRFJfRFUgfCBSVENfRFJfWVQgfCBSVENfRFJfWVUpKTsKICAgcmV0dXJuICh1aW50MzJfdCkoKCgodGVtcCAmIFJUQ19EUl9XRFUpID4+IFJUQ19EUl9XRFVfUG9zKSA8PCBSVENfT0ZGU0VUX1dFRUtEQVkpIHwgXApAQCAtMTg0OCw3ICsxODQ4LDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1JUQ19BTE1BX0NvbmZpZ1RpbWUoUlRDX1R5cGVEZWYgKlJUQ3gsIHVpbnQzMl90IEZvcm1hdDEyXzI0LCB1aW50MzJfdCBIb3VycywgdWludDMyX3QgTWludXRlcywgdWludDMyX3QgU2Vjb25kcykKIHsKLSAgcmVnaXN0ZXIgdWludDMyX3QgdGVtcCA9IDBVOworICB1aW50MzJfdCB0ZW1wID0gMFU7CiAKICAgdGVtcCA9IEZvcm1hdDEyXzI0IHwgKCgoSG91cnMgJiAweEYwVSkgPDwgKFJUQ19BTFJNQVJfSFRfUG9zIC0gNFUpKSB8ICgoSG91cnMgJiAweDBGVSkgPDwgUlRDX0FMUk1BUl9IVV9Qb3MpKSAgICB8IFwKICAgICAgICAgICgoKE1pbnV0ZXMgJiAweEYwVSkgPDwgKFJUQ19BTFJNQVJfTU5UX1BvcyAtIDRVKSkgfCAoKE1pbnV0ZXMgJiAweDBGVSkgPDwgUlRDX0FMUk1BUl9NTlVfUG9zKSkgfCBcCkBAIC0yMjE0LDcgKzIyMTQsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfUlRDX0FMTUJfQ29uZmlnVGltZShSVENfVHlwZURlZiAqUlRDeCwgdWludDMyX3QgRm9ybWF0MTJfMjQsIHVpbnQzMl90IEhvdXJzLCB1aW50MzJfdCBNaW51dGVzLCB1aW50MzJfdCBTZWNvbmRzKQogewotICByZWdpc3RlciB1aW50MzJfdCB0ZW1wID0gMFU7CisgIHVpbnQzMl90IHRlbXAgPSAwVTsKIAogICB0ZW1wID0gRm9ybWF0MTJfMjQgfCAoKChIb3VycyAmIDB4RjBVKSA8PCAoUlRDX0FMUk1CUl9IVF9Qb3MgLSA0VSkpIHwgKChIb3VycyAmIDB4MEZVKSA8PCBSVENfQUxSTUJSX0hVX1BvcykpICAgIHwgXAogICAgICAgICAgKCgoTWludXRlcyAmIDB4RjBVKSA8PCAoUlRDX0FMUk1CUl9NTlRfUG9zIC0gNFUpKSB8ICgoTWludXRlcyAmIDB4MEZVKSA8PCBSVENfQUxSTUJSX01OVV9Qb3MpKSB8IFwKQEAgLTI5OTIsNyArMjk5Miw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9SVENfQkFLX1NldFJlZ2lzdGVyKFJUQ19UeXBlRGVmICpSVEN4LCB1aW50MzJfdCBCYWNrdXBSZWdpc3RlciwgdWludDMyX3QgRGF0YSkKIHsKLSAgcmVnaXN0ZXIgdWludDMyX3QgdG1wID0gMFU7CisgIHVpbnQzMl90IHRtcCA9IDBVOwogCiAgIHRtcCA9ICh1aW50MzJfdCkoJihSVEN4LT5CS1AwUikpOwogICB0bXAgKz0gKEJhY2t1cFJlZ2lzdGVyICogNFUpOwpAQCAtMzA0Miw3ICszMDQyLDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MzJfdCBMTF9SVENfQkFLX0dldFJlZ2lzdGVyKFJUQ19UeXBlRGVmICpSVEN4LCB1aW50MzJfdCBCYWNrdXBSZWdpc3RlcikKIHsKLSAgcmVnaXN0ZXIgdWludDMyX3QgdG1wID0gMFU7CisgIHVpbnQzMl90IHRtcCA9IDBVOwogCiAgIHRtcCA9ICh1aW50MzJfdCkoJihSVEN4LT5CS1AwUikpOwogICB0bXAgKz0gKEJhY2t1cFJlZ2lzdGVyICogNFUpOwpkaWZmIC0tZ2l0IGEvSW5jL3N0bTMyZjd4eF9sbF9zZG1tYy5oIGIvSW5jL3N0bTMyZjd4eF9sbF9zZG1tYy5oCmluZGV4IGFhMGQwZWUuLmI5NzgxODggMTAwNjQ0Ci0tLSBhL0luYy9zdG0zMmY3eHhfbGxfc2RtbWMuaAorKysgYi9JbmMvc3RtMzJmN3h4X2xsX3NkbW1jLmgKQEAgLTMwMSw3ICszMDEsOSBAQAogI2RlZmluZSBTRE1NQ19TSU5HTEVfQlVTX1NVUFBPUlQgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxMDAwMFUKICNkZWZpbmUgU0RNTUNfQ0FSRF9MT0NLRUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwMDAwMDBVCiAKKyNpZm5kZWYgU0RNTUNfREFUQVRJTUVPVVQKICNkZWZpbmUgU0RNTUNfREFUQVRJTUVPVVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkZVCisjZW5kaWYgLyogU0RNTUNfREFUQVRJTUVPVVQgKi8KIAogI2RlZmluZSBTRE1NQ18wVE83QklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDBGRlUKICNkZWZpbmUgU0RNTUNfOFRPMTVCSVRTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMEZGMDBVCkBAIC00NTUsNyArNDU3LDcgQEAKICAgKiBAfQogICAqLwogCi0vKiogQGRlZmdyb3VwIFNETU1DX0xMX0RhdGFfTGVuZ3RoIERhdGEgTGVuZ2h0CisvKiogQGRlZmdyb3VwIFNETU1DX0xMX0RhdGFfTGVuZ3RoIERhdGEgTGVuZ3RoCiAgICogQHsKICAgKi8KICNkZWZpbmUgSVNfU0RNTUNfREFUQV9MRU5HVEgoTEVOR1RIKSAoKExFTkdUSCkgPD0gMHgwMUZGRkZGRlUpCkBAIC05ODQsNiArOTg2LDcgQEAKIHVpbnQzMl90IFNETU1DX0NtZFNlbmRTQ1IoU0RNTUNfVHlwZURlZiAqU0RNTUN4KTsKIHVpbnQzMl90IFNETU1DX0NtZFNlbmRDSUQoU0RNTUNfVHlwZURlZiAqU0RNTUN4KTsKIHVpbnQzMl90IFNETU1DX0NtZFNlbmRDU0QoU0RNTUNfVHlwZURlZiAqU0RNTUN4LCB1aW50MzJfdCBBcmd1bWVudCk7Cit1aW50MzJfdCBTRE1NQ19DbWRTZW5kRVhUQ1NEKFNETU1DX1R5cGVEZWYgKlNETU1DeCwgdWludDMyX3QgQXJndW1lbnQpOwogdWludDMyX3QgU0RNTUNfQ21kU2V0UmVsQWRkKFNETU1DX1R5cGVEZWYgKlNETU1DeCwgdWludDE2X3QgKnBSQ0EpOwogdWludDMyX3QgU0RNTUNfQ21kU2VuZFN0YXR1cyhTRE1NQ19UeXBlRGVmICpTRE1NQ3gsIHVpbnQzMl90IEFyZ3VtZW50KTsKIHVpbnQzMl90IFNETU1DX0NtZFN0YXR1c1JlZ2lzdGVyKFNETU1DX1R5cGVEZWYgKlNETU1DeCk7CmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2xsX3NwaS5oIGIvSW5jL3N0bTMyZjd4eF9sbF9zcGkuaAppbmRleCAxYTBhYzQ4Li5hOWJlZWViIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2xsX3NwaS5oCisrKyBiL0luYy9zdG0zMmY3eHhfbGxfc3BpLmgKQEAgLTI2Niw4ICsyNjYsOCBAQAogLyoqIEBkZWZncm91cCBTUElfTExfRUNfUlhfRklGT19USCBSWCBGSUZPIFRocmVzaG9sZAogICAqIEB7CiAgICovCi0jZGVmaW5lIExMX1NQSV9SWF9GSUZPX1RIX0hBTEYgICAgICAgICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgICAgICAvKiE8IFJYTkUgZXZlbnQgaXMgZ2VuZXJhdGVkIGlmIEZJRk8gbGV2ZWwgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWVsIHRvIDEvMiAoMTYtYml0KSAqLwotI2RlZmluZSBMTF9TUElfUlhfRklGT19USF9RVUFSVEVSICAgICAgICAgIChTUElfQ1IyX0ZSWFRIKSAgICAgICAgICAgLyohPCBSWE5FIGV2ZW50IGlzIGdlbmVyYXRlZCBpZiBGSUZPIGxldmVsIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVlbCB0byAxLzQgKDgtYml0KSAgKi8KKyNkZWZpbmUgTExfU1BJX1JYX0ZJRk9fVEhfSEFMRiAgICAgICAgICAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAgIC8qITwgUlhORSBldmVudCBpcyBnZW5lcmF0ZWQgaWYgRklGTyBsZXZlbCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS8yICgxNi1iaXQpICovCisjZGVmaW5lIExMX1NQSV9SWF9GSUZPX1RIX1FVQVJURVIgICAgICAgICAgKFNQSV9DUjJfRlJYVEgpICAgICAgICAgICAvKiE8IFJYTkUgZXZlbnQgaXMgZ2VuZXJhdGVkIGlmIEZJRk8gbGV2ZWwgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEvNCAoOC1iaXQpICAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTg0OCw4ICs4NDgsOCBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQzMl90IExMX1NQSV9HZXROU1NNb2RlKFNQSV9UeXBlRGVmICpTUEl4KQogewotICByZWdpc3RlciB1aW50MzJfdCBTc20gID0gKFJFQURfQklUKFNQSXgtPkNSMSwgU1BJX0NSMV9TU00pKTsKLSAgcmVnaXN0ZXIgdWludDMyX3QgU3NvZSA9IChSRUFEX0JJVChTUEl4LT5DUjIsICBTUElfQ1IyX1NTT0UpIDw8IDE2VSk7CisgIHVpbnQzMl90IFNzbSAgPSAoUkVBRF9CSVQoU1BJeC0+Q1IxLCBTUElfQ1IxX1NTTSkpOworICB1aW50MzJfdCBTc29lID0gKFJFQURfQklUKFNQSXgtPkNSMiwgIFNQSV9DUjJfU1NPRSkgPDwgMTZVKTsKICAgcmV0dXJuIChTc20gfCBTc29lKTsKIH0KIApAQCAtMTMxNCw3ICsxMzE0LDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MzJfdCBMTF9TUElfRE1BX0dldFJlZ0FkZHIoU1BJX1R5cGVEZWYgKlNQSXgpCiB7Ci0gIHJldHVybiAodWludDMyX3QpICYgKFNQSXgtPkRSKTsKKyAgcmV0dXJuICh1aW50MzJfdCkgJihTUEl4LT5EUik7CiB9CiAKIC8qKgpAQCAtMTM2MSw3ICsxMzYxLDcgQEAKICAgKnNwaWRyID0gVHhEYXRhOwogI2Vsc2UKICAgKigoX19JTyB1aW50OF90ICopJlNQSXgtPkRSKSA9IFR4RGF0YTsKLSNlbmRpZgorI2VuZGlmIC8qIF9fR05VQ19fICovCiB9CiAKIC8qKgpAQCAtMTM3OCw3ICsxMzc4LDcgQEAKICAgKnNwaWRyID0gVHhEYXRhOwogI2Vsc2UKICAgU1BJeC0+RFIgPSBUeERhdGE7Ci0jZW5kaWYKKyNlbmRpZiAvKiBfX0dOVUNfXyAqLwogfQogCiAvKioKQEAgLTE1MDAsMTAgKzE1MDAsMTAgQEAKIC8qKiBAZGVmZ3JvdXAgSTJTX0xMX0VDX0RBVEFfRk9STUFUIERhdGEgZm9ybWF0CiAgICogQHsKICAgKi8KLSNkZWZpbmUgTExfSTJTX0RBVEFGT1JNQVRfMTZCICAgICAgICAgICAgICAweDAwMDAwMDAwVSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyohPCBEYXRhIGxlbmd0aCAxNiBiaXRzLCBDaGFubmVsIGxlbmdodCAxNmJpdCAqLwotI2RlZmluZSBMTF9JMlNfREFUQUZPUk1BVF8xNkJfRVhURU5ERUQgICAgIChTUElfSTJTQ0ZHUl9DSExFTikgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IERhdGEgbGVuZ3RoIDE2IGJpdHMsIENoYW5uZWwgbGVuZ2h0IDMyYml0ICovCi0jZGVmaW5lIExMX0kyU19EQVRBRk9STUFUXzI0QiAgICAgICAgICAgICAgKFNQSV9JMlNDRkdSX0NITEVOIHwgU1BJX0kyU0NGR1JfREFUTEVOXzApICAgIC8qITwgRGF0YSBsZW5ndGggMjQgYml0cywgQ2hhbm5lbCBsZW5naHQgMzJiaXQgKi8KLSNkZWZpbmUgTExfSTJTX0RBVEFGT1JNQVRfMzJCICAgICAgICAgICAgICAoU1BJX0kyU0NGR1JfQ0hMRU4gfCBTUElfSTJTQ0ZHUl9EQVRMRU5fMSkgICAgLyohPCBEYXRhIGxlbmd0aCAxNiBiaXRzLCBDaGFubmVsIGxlbmdodCAzMmJpdCAqLworI2RlZmluZSBMTF9JMlNfREFUQUZPUk1BVF8xNkIgICAgICAgICAgICAgIDB4MDAwMDAwMDBVICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IERhdGEgbGVuZ3RoIDE2IGJpdHMsIENoYW5uZWwgbGVuZ3RoIDE2Yml0ICovCisjZGVmaW5lIExMX0kyU19EQVRBRk9STUFUXzE2Ql9FWFRFTkRFRCAgICAgKFNQSV9JMlNDRkdSX0NITEVOKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qITwgRGF0YSBsZW5ndGggMTYgYml0cywgQ2hhbm5lbCBsZW5ndGggMzJiaXQgKi8KKyNkZWZpbmUgTExfSTJTX0RBVEFGT1JNQVRfMjRCICAgICAgICAgICAgICAoU1BJX0kyU0NGR1JfQ0hMRU4gfCBTUElfSTJTQ0ZHUl9EQVRMRU5fMCkgICAgLyohPCBEYXRhIGxlbmd0aCAyNCBiaXRzLCBDaGFubmVsIGxlbmd0aCAzMmJpdCAqLworI2RlZmluZSBMTF9JMlNfREFUQUZPUk1BVF8zMkIgICAgICAgICAgICAgIChTUElfSTJTQ0ZHUl9DSExFTiB8IFNQSV9JMlNDRkdSX0RBVExFTl8xKSAgICAvKiE8IERhdGEgbGVuZ3RoIDE2IGJpdHMsIENoYW5uZWwgbGVuZ3RoIDMyYml0ICovCiAvKioKICAgKiBAfQogICAqLwpAQCAtMTgzOCw3ICsxODM4LDcgQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBFbmFibGUgdGhlIG1hc3RlciBjbG9jayBvdXB1dCAoUGluIE1DSykKKyAgKiBAYnJpZWYgIEVuYWJsZSB0aGUgbWFzdGVyIGNsb2NrIG91dHB1dCAoUGluIE1DSykKICAgKiBAcm10b2xsIEkyU1BSICAgICAgICBNQ0tPRSAgICAgICAgIExMX0kyU19FbmFibGVNYXN0ZXJDbG9jawogICAqIEBwYXJhbSAgU1BJeCBTUEkgSW5zdGFuY2UKICAgKiBAcmV0dmFsIE5vbmUKQEAgLTE4NDksNyArMTg0OSw3IEBACiB9CiAKIC8qKgotICAqIEBicmllZiAgRGlzYWJsZSB0aGUgbWFzdGVyIGNsb2NrIG91cHV0IChQaW4gTUNLKQorICAqIEBicmllZiAgRGlzYWJsZSB0aGUgbWFzdGVyIGNsb2NrIG91dHB1dCAoUGluIE1DSykKICAgKiBAcm10b2xsIEkyU1BSICAgICAgICBNQ0tPRSAgICAgICAgIExMX0kyU19EaXNhYmxlTWFzdGVyQ2xvY2sKICAgKiBAcGFyYW0gIFNQSXggU1BJIEluc3RhbmNlCiAgICogQHJldHZhbCBOb25lCkBAIC0xODYwLDcgKzE4NjAsNyBAQAogfQogCiAvKioKLSAgKiBAYnJpZWYgIENoZWNrIGlmIHRoZSBtYXN0ZXIgY2xvY2sgb3VwdXQgKFBpbiBNQ0spIGlzIGVuYWJsZWQKKyAgKiBAYnJpZWYgIENoZWNrIGlmIHRoZSBtYXN0ZXIgY2xvY2sgb3V0cHV0IChQaW4gTUNLKSBpcyBlbmFibGVkCiAgICogQHJtdG9sbCBJMlNQUiAgICAgICAgTUNLT0UgICAgICAgICBMTF9JMlNfSXNFbmFibGVkTWFzdGVyQ2xvY2sKICAgKiBAcGFyYW0gIFNQSXggU1BJIEluc3RhbmNlCiAgICogQHJldHZhbCBTdGF0ZSBvZiBiaXQgKDEgb3IgMCkuCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2xsX3RpbS5oIGIvSW5jL3N0bTMyZjd4eF9sbF90aW0uaAppbmRleCA1NzUwZWVmLi40NzA5NzBmIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2xsX3RpbS5oCisrKyBiL0luYy9zdG0zMmY3eHhfbGxfdGltLmgKQEAgLTU3MCw4ICs1NzAsOCBAQAogLyoqIEBkZWZncm91cCBUSU1fTExfRUNfT05FUFVMU0VNT0RFIE9uZSBQdWxzZSBNb2RlCiAgICogQHsKICAgKi8KLSNkZWZpbmUgTExfVElNX09ORVBVTFNFTU9ERV9TSU5HTEUgICAgICAgICAgICAgVElNX0NSMV9PUE0gICAgICAgICAgLyohPCBDb3VudGVyIGlzIG5vdCBzdG9wcGVkIGF0IHVwZGF0ZSBldmVudCAqLwotI2RlZmluZSBMTF9USU1fT05FUFVMU0VNT0RFX1JFUEVUSVRJVkUgICAgICAgICAweDAwMDAwMDAwVSAgICAgICAgICAvKiE8IENvdW50ZXIgc3RvcHMgY291bnRpbmcgYXQgdGhlIG5leHQgdXBkYXRlIGV2ZW50ICovCisjZGVmaW5lIExMX1RJTV9PTkVQVUxTRU1PREVfU0lOR0xFICAgICAgICAgICAgIFRJTV9DUjFfT1BNICAgICAgICAgIC8qITwgQ291bnRlciBzdG9wcyBjb3VudGluZyBhdCB0aGUgbmV4dCB1cGRhdGUgZXZlbnQgKi8KKyNkZWZpbmUgTExfVElNX09ORVBVTFNFTU9ERV9SRVBFVElUSVZFICAgICAgICAgMHgwMDAwMDAwMFUgICAgICAgICAgLyohPCBDb3VudGVyIGlzIG5vdCBzdG9wcGVkIGF0IHVwZGF0ZSBldmVudCAqLwogLyoqCiAgICogQH0KICAgKi8KQEAgLTU4MSw4ICs1ODEsOCBAQAogICAqLwogI2RlZmluZSBMTF9USU1fQ09VTlRFUk1PREVfVVAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwVSAgICAgICAgICAvKiE8Q291bnRlciB1c2VkIGFzIHVwY291bnRlciAqLwogI2RlZmluZSBMTF9USU1fQ09VTlRFUk1PREVfRE9XTiAgICAgICAgICAgICAgICBUSU1fQ1IxX0RJUiAgICAgICAgICAvKiE8IENvdW50ZXIgdXNlZCBhcyBkb3duY291bnRlciAqLwotI2RlZmluZSBMTF9USU1fQ09VTlRFUk1PREVfQ0VOVEVSX1VQICAgICAgICAgICBUSU1fQ1IxX0NNU18wICAgICAgICAvKiE8IFRoZSBjb3VudGVyIGNvdW50cyB1cCBhbmQgZG93biBhbHRlcm5hdGl2ZWx5LiBPdXRwdXQgY29tcGFyZSBpbnRlcnJ1cHQgZmxhZ3Mgb2Ygb3V0cHV0IGNoYW5uZWxzICBhcmUgc2V0IG9ubHkgd2hlbiB0aGUgY291bnRlciBpcyBjb3VudGluZyBkb3duLiAqLwotI2RlZmluZSBMTF9USU1fQ09VTlRFUk1PREVfQ0VOVEVSX0RPV04gICAgICAgICBUSU1fQ1IxX0NNU18xICAgICAgICAvKiE8VGhlIGNvdW50ZXIgY291bnRzIHVwIGFuZCBkb3duIGFsdGVybmF0aXZlbHkuIE91dHB1dCBjb21wYXJlIGludGVycnVwdCBmbGFncyBvZiBvdXRwdXQgY2hhbm5lbHMgIGFyZSBzZXQgb25seSB3aGVuIHRoZSBjb3VudGVyIGlzIGNvdW50aW5nIHVwICovCisjZGVmaW5lIExMX1RJTV9DT1VOVEVSTU9ERV9DRU5URVJfRE9XTiAgICAgICAgIFRJTV9DUjFfQ01TXzAgICAgICAgIC8qITwgVGhlIGNvdW50ZXIgY291bnRzIHVwIGFuZCBkb3duIGFsdGVybmF0aXZlbHkuIE91dHB1dCBjb21wYXJlIGludGVycnVwdCBmbGFncyBvZiBvdXRwdXQgY2hhbm5lbHMgIGFyZSBzZXQgb25seSB3aGVuIHRoZSBjb3VudGVyIGlzIGNvdW50aW5nIGRvd24uICovCisjZGVmaW5lIExMX1RJTV9DT1VOVEVSTU9ERV9DRU5URVJfVVAgICAgICAgICAgIFRJTV9DUjFfQ01TXzEgICAgICAgIC8qITxUaGUgY291bnRlciBjb3VudHMgdXAgYW5kIGRvd24gYWx0ZXJuYXRpdmVseS4gT3V0cHV0IGNvbXBhcmUgaW50ZXJydXB0IGZsYWdzIG9mIG91dHB1dCBjaGFubmVscyAgYXJlIHNldCBvbmx5IHdoZW4gdGhlIGNvdW50ZXIgaXMgY291bnRpbmcgdXAgKi8KICNkZWZpbmUgTExfVElNX0NPVU5URVJNT0RFX0NFTlRFUl9VUF9ET1dOICAgICAgVElNX0NSMV9DTVMgICAgICAgICAgLyohPCBUaGUgY291bnRlciBjb3VudHMgdXAgYW5kIGRvd24gYWx0ZXJuYXRpdmVseS4gT3V0cHV0IGNvbXBhcmUgaW50ZXJydXB0IGZsYWdzIG9mIG91dHB1dCBjaGFubmVscyAgYXJlIHNldCBvbmx5IHdoZW4gdGhlIGNvdW50ZXIgaXMgY291bnRpbmcgdXAgb3IgZG93bi4gKi8KIC8qKgogICAqIEB9CkBAIC0xNDEzLDcgKzE0MTMsMTYgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MzJfdCBMTF9USU1fR2V0Q291bnRlck1vZGUoVElNX1R5cGVEZWYgKlRJTXgpCiB7Ci0gIHJldHVybiAodWludDMyX3QpKFJFQURfQklUKFRJTXgtPkNSMSwgVElNX0NSMV9ESVIgfCBUSU1fQ1IxX0NNUykpOworICB1aW50MzJfdCBjb3VudGVyX21vZGU7CisKKyAgY291bnRlcl9tb2RlID0gKHVpbnQzMl90KShSRUFEX0JJVChUSU14LT5DUjEsIFRJTV9DUjFfQ01TKSk7CisKKyAgaWYgKGNvdW50ZXJfbW9kZSA9PSAwVSkKKyAgeworICAgIGNvdW50ZXJfbW9kZSA9ICh1aW50MzJfdCkoUkVBRF9CSVQoVElNeC0+Q1IxLCBUSU1fQ1IxX0RJUikpOworICB9CisKKyAgcmV0dXJuIGNvdW50ZXJfbW9kZTsKIH0KIAogLyoqCkBAIC0xODY4LDggKzE4NzcsOCBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVElNX09DX0NvbmZpZ091dHB1dChUSU1fVHlwZURlZiAqVElNeCwgdWludDMyX3QgQ2hhbm5lbCwgdWludDMyX3QgQ29uZmlndXJhdGlvbikKIHsKLSAgcmVnaXN0ZXIgdWludDhfdCBpQ2hhbm5lbCA9IFRJTV9HRVRfQ0hBTk5FTF9JTkRFWChDaGFubmVsKTsKLSAgcmVnaXN0ZXIgX19JTyB1aW50MzJfdCAqcFJlZyA9IChfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdCkoKHVpbnQzMl90KSgmVElNeC0+Q0NNUjEpICsgT0ZGU0VUX1RBQl9DQ01SeFtpQ2hhbm5lbF0pKTsKKyAgdWludDhfdCBpQ2hhbm5lbCA9IFRJTV9HRVRfQ0hBTk5FTF9JTkRFWChDaGFubmVsKTsKKyAgX19JTyB1aW50MzJfdCAqcFJlZyA9IChfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdCkoKHVpbnQzMl90KSgmVElNeC0+Q0NNUjEpICsgT0ZGU0VUX1RBQl9DQ01SeFtpQ2hhbm5lbF0pKTsKICAgQ0xFQVJfQklUKCpwUmVnLCAoVElNX0NDTVIxX0NDMVMgPDwgU0hJRlRfVEFCX09DeHhbaUNoYW5uZWxdKSk7CiAgIE1PRElGWV9SRUcoVElNeC0+Q0NFUiwgKFRJTV9DQ0VSX0NDMVAgPDwgU0hJRlRfVEFCX0NDeFBbaUNoYW5uZWxdKSwKICAgICAgICAgICAgICAoQ29uZmlndXJhdGlvbiAmIFRJTV9DQ0VSX0NDMVApIDw8IFNISUZUX1RBQl9DQ3hQW2lDaGFubmVsXSk7CkBAIC0xOTEzLDggKzE5MjIsOCBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVElNX09DX1NldE1vZGUoVElNX1R5cGVEZWYgKlRJTXgsIHVpbnQzMl90IENoYW5uZWwsIHVpbnQzMl90IE1vZGUpCiB7Ci0gIHJlZ2lzdGVyIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7Ci0gIHJlZ2lzdGVyIF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7CisgIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7CisgIF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7CiAgIE1PRElGWV9SRUcoKnBSZWcsICgoVElNX0NDTVIxX09DMU0gIHwgVElNX0NDTVIxX0NDMVMpIDw8IFNISUZUX1RBQl9PQ3h4W2lDaGFubmVsXSksICBNb2RlIDw8IFNISUZUX1RBQl9PQ3h4W2lDaGFubmVsXSk7CiB9CiAKQEAgLTE5NTIsOCArMTk2MSw4IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdWludDMyX3QgTExfVElNX09DX0dldE1vZGUoVElNX1R5cGVEZWYgKlRJTXgsIHVpbnQzMl90IENoYW5uZWwpCiB7Ci0gIHJlZ2lzdGVyIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7Ci0gIHJlZ2lzdGVyIGNvbnN0IF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7CisgIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7CisgIGNvbnN0IF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7CiAgIHJldHVybiAoUkVBRF9CSVQoKnBSZWcsICgoVElNX0NDTVIxX09DMU0gIHwgVElNX0NDTVIxX0NDMVMpIDw8IFNISUZUX1RBQl9PQ3h4W2lDaGFubmVsXSkpID4+IFNISUZUX1RBQl9PQ3h4W2lDaGFubmVsXSk7CiB9CiAKQEAgLTE5ODYsNyArMTk5NSw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9USU1fT0NfU2V0UG9sYXJpdHkoVElNX1R5cGVEZWYgKlRJTXgsIHVpbnQzMl90IENoYW5uZWwsIHVpbnQzMl90IFBvbGFyaXR5KQogewotICByZWdpc3RlciB1aW50OF90IGlDaGFubmVsID0gVElNX0dFVF9DSEFOTkVMX0lOREVYKENoYW5uZWwpOworICB1aW50OF90IGlDaGFubmVsID0gVElNX0dFVF9DSEFOTkVMX0lOREVYKENoYW5uZWwpOwogICBNT0RJRllfUkVHKFRJTXgtPkNDRVIsIChUSU1fQ0NFUl9DQzFQIDw8IFNISUZUX1RBQl9DQ3hQW2lDaGFubmVsXSksICBQb2xhcml0eSA8PCBTSElGVF9UQUJfQ0N4UFtpQ2hhbm5lbF0pOwogfQogCkBAIC0yMDE4LDcgKzIwMjcsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQzMl90IExMX1RJTV9PQ19HZXRQb2xhcml0eShUSU1fVHlwZURlZiAqVElNeCwgdWludDMyX3QgQ2hhbm5lbCkKIHsKLSAgcmVnaXN0ZXIgdWludDhfdCBpQ2hhbm5lbCA9IFRJTV9HRVRfQ0hBTk5FTF9JTkRFWChDaGFubmVsKTsKKyAgdWludDhfdCBpQ2hhbm5lbCA9IFRJTV9HRVRfQ0hBTk5FTF9JTkRFWChDaGFubmVsKTsKICAgcmV0dXJuIChSRUFEX0JJVChUSU14LT5DQ0VSLCAoVElNX0NDRVJfQ0MxUCA8PCBTSElGVF9UQUJfQ0N4UFtpQ2hhbm5lbF0pKSA+PiBTSElGVF9UQUJfQ0N4UFtpQ2hhbm5lbF0pOwogfQogCkBAIC0yMDU1LDcgKzIwNjQsNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVElNX09DX1NldElkbGVTdGF0ZShUSU1fVHlwZURlZiAqVElNeCwgdWludDMyX3QgQ2hhbm5lbCwgdWludDMyX3QgSWRsZVN0YXRlKQogewotICByZWdpc3RlciB1aW50OF90IGlDaGFubmVsID0gVElNX0dFVF9DSEFOTkVMX0lOREVYKENoYW5uZWwpOworICB1aW50OF90IGlDaGFubmVsID0gVElNX0dFVF9DSEFOTkVMX0lOREVYKENoYW5uZWwpOwogICBNT0RJRllfUkVHKFRJTXgtPkNSMiwgKFRJTV9DUjJfT0lTMSA8PCBTSElGVF9UQUJfT0lTeFtpQ2hhbm5lbF0pLCAgSWRsZVN0YXRlIDw8IFNISUZUX1RBQl9PSVN4W2lDaGFubmVsXSk7CiB9CiAKQEAgLTIwODcsNyArMjA5Niw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdWludDMyX3QgTExfVElNX09DX0dldElkbGVTdGF0ZShUSU1fVHlwZURlZiAqVElNeCwgdWludDMyX3QgQ2hhbm5lbCkKIHsKLSAgcmVnaXN0ZXIgdWludDhfdCBpQ2hhbm5lbCA9IFRJTV9HRVRfQ0hBTk5FTF9JTkRFWChDaGFubmVsKTsKKyAgdWludDhfdCBpQ2hhbm5lbCA9IFRJTV9HRVRfQ0hBTk5FTF9JTkRFWChDaGFubmVsKTsKICAgcmV0dXJuIChSRUFEX0JJVChUSU14LT5DUjIsIChUSU1fQ1IyX09JUzEgPDwgU0hJRlRfVEFCX09JU3hbaUNoYW5uZWxdKSkgPj4gU0hJRlRfVEFCX09JU3hbaUNoYW5uZWxdKTsKIH0KIApAQCAtMjExMiw4ICsyMTIxLDggQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1RJTV9PQ19FbmFibGVGYXN0KFRJTV9UeXBlRGVmICpUSU14LCB1aW50MzJfdCBDaGFubmVsKQogewotICByZWdpc3RlciB1aW50OF90IGlDaGFubmVsID0gVElNX0dFVF9DSEFOTkVMX0lOREVYKENoYW5uZWwpOwotICByZWdpc3RlciBfX0lPIHVpbnQzMl90ICpwUmVnID0gKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgodWludDMyX3QpKCZUSU14LT5DQ01SMSkgKyBPRkZTRVRfVEFCX0NDTVJ4W2lDaGFubmVsXSkpOworICB1aW50OF90IGlDaGFubmVsID0gVElNX0dFVF9DSEFOTkVMX0lOREVYKENoYW5uZWwpOworICBfX0lPIHVpbnQzMl90ICpwUmVnID0gKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgodWludDMyX3QpKCZUSU14LT5DQ01SMSkgKyBPRkZTRVRfVEFCX0NDTVJ4W2lDaGFubmVsXSkpOwogICBTRVRfQklUKCpwUmVnLCAoVElNX0NDTVIxX09DMUZFIDw8IFNISUZUX1RBQl9PQ3h4W2lDaGFubmVsXSkpOwogCiB9CkBAIC0yMTM4LDggKzIxNDcsOCBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVElNX09DX0Rpc2FibGVGYXN0KFRJTV9UeXBlRGVmICpUSU14LCB1aW50MzJfdCBDaGFubmVsKQogewotICByZWdpc3RlciB1aW50OF90IGlDaGFubmVsID0gVElNX0dFVF9DSEFOTkVMX0lOREVYKENoYW5uZWwpOwotICByZWdpc3RlciBfX0lPIHVpbnQzMl90ICpwUmVnID0gKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgodWludDMyX3QpKCZUSU14LT5DQ01SMSkgKyBPRkZTRVRfVEFCX0NDTVJ4W2lDaGFubmVsXSkpOworICB1aW50OF90IGlDaGFubmVsID0gVElNX0dFVF9DSEFOTkVMX0lOREVYKENoYW5uZWwpOworICBfX0lPIHVpbnQzMl90ICpwUmVnID0gKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgodWludDMyX3QpKCZUSU14LT5DQ01SMSkgKyBPRkZTRVRfVEFCX0NDTVJ4W2lDaGFubmVsXSkpOwogICBDTEVBUl9CSVQoKnBSZWcsIChUSU1fQ0NNUjFfT0MxRkUgPDwgU0hJRlRfVEFCX09DeHhbaUNoYW5uZWxdKSk7CiAKIH0KQEAgLTIxNjQsOSArMjE3Myw5IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdWludDMyX3QgTExfVElNX09DX0lzRW5hYmxlZEZhc3QoVElNX1R5cGVEZWYgKlRJTXgsIHVpbnQzMl90IENoYW5uZWwpCiB7Ci0gIHJlZ2lzdGVyIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7Ci0gIHJlZ2lzdGVyIGNvbnN0IF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7Ci0gIHJlZ2lzdGVyIHVpbnQzMl90IGJpdGZpZWxkID0gVElNX0NDTVIxX09DMUZFIDw8IFNISUZUX1RBQl9PQ3h4W2lDaGFubmVsXTsKKyAgdWludDhfdCBpQ2hhbm5lbCA9IFRJTV9HRVRfQ0hBTk5FTF9JTkRFWChDaGFubmVsKTsKKyAgY29uc3QgX19JTyB1aW50MzJfdCAqcFJlZyA9IChfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdCkoKHVpbnQzMl90KSgmVElNeC0+Q0NNUjEpICsgT0ZGU0VUX1RBQl9DQ01SeFtpQ2hhbm5lbF0pKTsKKyAgdWludDMyX3QgYml0ZmllbGQgPSBUSU1fQ0NNUjFfT0MxRkUgPDwgU0hJRlRfVEFCX09DeHhbaUNoYW5uZWxdOwogICByZXR1cm4gKChSRUFEX0JJVCgqcFJlZywgYml0ZmllbGQpID09IGJpdGZpZWxkKSA/IDFVTCA6IDBVTCk7CiB9CiAKQEAgLTIxOTAsOCArMjE5OSw4IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9USU1fT0NfRW5hYmxlUHJlbG9hZChUSU1fVHlwZURlZiAqVElNeCwgdWludDMyX3QgQ2hhbm5lbCkKIHsKLSAgcmVnaXN0ZXIgdWludDhfdCBpQ2hhbm5lbCA9IFRJTV9HRVRfQ0hBTk5FTF9JTkRFWChDaGFubmVsKTsKLSAgcmVnaXN0ZXIgX19JTyB1aW50MzJfdCAqcFJlZyA9IChfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdCkoKHVpbnQzMl90KSgmVElNeC0+Q0NNUjEpICsgT0ZGU0VUX1RBQl9DQ01SeFtpQ2hhbm5lbF0pKTsKKyAgdWludDhfdCBpQ2hhbm5lbCA9IFRJTV9HRVRfQ0hBTk5FTF9JTkRFWChDaGFubmVsKTsKKyAgX19JTyB1aW50MzJfdCAqcFJlZyA9IChfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdCkoKHVpbnQzMl90KSgmVElNeC0+Q0NNUjEpICsgT0ZGU0VUX1RBQl9DQ01SeFtpQ2hhbm5lbF0pKTsKICAgU0VUX0JJVCgqcFJlZywgKFRJTV9DQ01SMV9PQzFQRSA8PCBTSElGVF9UQUJfT0N4eFtpQ2hhbm5lbF0pKTsKIH0KIApAQCAtMjIxNSw4ICsyMjI0LDggQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1RJTV9PQ19EaXNhYmxlUHJlbG9hZChUSU1fVHlwZURlZiAqVElNeCwgdWludDMyX3QgQ2hhbm5lbCkKIHsKLSAgcmVnaXN0ZXIgdWludDhfdCBpQ2hhbm5lbCA9IFRJTV9HRVRfQ0hBTk5FTF9JTkRFWChDaGFubmVsKTsKLSAgcmVnaXN0ZXIgX19JTyB1aW50MzJfdCAqcFJlZyA9IChfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdCkoKHVpbnQzMl90KSgmVElNeC0+Q0NNUjEpICsgT0ZGU0VUX1RBQl9DQ01SeFtpQ2hhbm5lbF0pKTsKKyAgdWludDhfdCBpQ2hhbm5lbCA9IFRJTV9HRVRfQ0hBTk5FTF9JTkRFWChDaGFubmVsKTsKKyAgX19JTyB1aW50MzJfdCAqcFJlZyA9IChfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdCkoKHVpbnQzMl90KSgmVElNeC0+Q0NNUjEpICsgT0ZGU0VUX1RBQl9DQ01SeFtpQ2hhbm5lbF0pKTsKICAgQ0xFQVJfQklUKCpwUmVnLCAoVElNX0NDTVIxX09DMVBFIDw8IFNISUZUX1RBQl9PQ3h4W2lDaGFubmVsXSkpOwogfQogCkBAIC0yMjQwLDkgKzIyNDksOSBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQzMl90IExMX1RJTV9PQ19Jc0VuYWJsZWRQcmVsb2FkKFRJTV9UeXBlRGVmICpUSU14LCB1aW50MzJfdCBDaGFubmVsKQogewotICByZWdpc3RlciB1aW50OF90IGlDaGFubmVsID0gVElNX0dFVF9DSEFOTkVMX0lOREVYKENoYW5uZWwpOwotICByZWdpc3RlciBjb25zdCBfX0lPIHVpbnQzMl90ICpwUmVnID0gKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgodWludDMyX3QpKCZUSU14LT5DQ01SMSkgKyBPRkZTRVRfVEFCX0NDTVJ4W2lDaGFubmVsXSkpOwotICByZWdpc3RlciB1aW50MzJfdCBiaXRmaWVsZCA9IFRJTV9DQ01SMV9PQzFQRSA8PCBTSElGVF9UQUJfT0N4eFtpQ2hhbm5lbF07CisgIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7CisgIGNvbnN0IF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7CisgIHVpbnQzMl90IGJpdGZpZWxkID0gVElNX0NDTVIxX09DMVBFIDw8IFNISUZUX1RBQl9PQ3h4W2lDaGFubmVsXTsKICAgcmV0dXJuICgoUkVBRF9CSVQoKnBSZWcsIGJpdGZpZWxkKSA9PSBiaXRmaWVsZCkgPyAxVUwgOiAwVUwpOwogfQogCkBAIC0yMjY5LDggKzIyNzgsOCBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVElNX09DX0VuYWJsZUNsZWFyKFRJTV9UeXBlRGVmICpUSU14LCB1aW50MzJfdCBDaGFubmVsKQogewotICByZWdpc3RlciB1aW50OF90IGlDaGFubmVsID0gVElNX0dFVF9DSEFOTkVMX0lOREVYKENoYW5uZWwpOwotICByZWdpc3RlciBfX0lPIHVpbnQzMl90ICpwUmVnID0gKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgodWludDMyX3QpKCZUSU14LT5DQ01SMSkgKyBPRkZTRVRfVEFCX0NDTVJ4W2lDaGFubmVsXSkpOworICB1aW50OF90IGlDaGFubmVsID0gVElNX0dFVF9DSEFOTkVMX0lOREVYKENoYW5uZWwpOworICBfX0lPIHVpbnQzMl90ICpwUmVnID0gKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgodWludDMyX3QpKCZUSU14LT5DQ01SMSkgKyBPRkZTRVRfVEFCX0NDTVJ4W2lDaGFubmVsXSkpOwogICBTRVRfQklUKCpwUmVnLCAoVElNX0NDTVIxX09DMUNFIDw8IFNISUZUX1RBQl9PQ3h4W2lDaGFubmVsXSkpOwogfQogCkBAIC0yMjk2LDggKzIzMDUsOCBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVElNX09DX0Rpc2FibGVDbGVhcihUSU1fVHlwZURlZiAqVElNeCwgdWludDMyX3QgQ2hhbm5lbCkKIHsKLSAgcmVnaXN0ZXIgdWludDhfdCBpQ2hhbm5lbCA9IFRJTV9HRVRfQ0hBTk5FTF9JTkRFWChDaGFubmVsKTsKLSAgcmVnaXN0ZXIgX19JTyB1aW50MzJfdCAqcFJlZyA9IChfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdCkoKHVpbnQzMl90KSgmVElNeC0+Q0NNUjEpICsgT0ZGU0VUX1RBQl9DQ01SeFtpQ2hhbm5lbF0pKTsKKyAgdWludDhfdCBpQ2hhbm5lbCA9IFRJTV9HRVRfQ0hBTk5FTF9JTkRFWChDaGFubmVsKTsKKyAgX19JTyB1aW50MzJfdCAqcFJlZyA9IChfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdCkoKHVpbnQzMl90KSgmVElNeC0+Q0NNUjEpICsgT0ZGU0VUX1RBQl9DQ01SeFtpQ2hhbm5lbF0pKTsKICAgQ0xFQVJfQklUKCpwUmVnLCAoVElNX0NDTVIxX09DMUNFIDw8IFNISUZUX1RBQl9PQ3h4W2lDaGFubmVsXSkpOwogfQogCkBAIC0yMzI1LDkgKzIzMzQsOSBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQzMl90IExMX1RJTV9PQ19Jc0VuYWJsZWRDbGVhcihUSU1fVHlwZURlZiAqVElNeCwgdWludDMyX3QgQ2hhbm5lbCkKIHsKLSAgcmVnaXN0ZXIgdWludDhfdCBpQ2hhbm5lbCA9IFRJTV9HRVRfQ0hBTk5FTF9JTkRFWChDaGFubmVsKTsKLSAgcmVnaXN0ZXIgY29uc3QgX19JTyB1aW50MzJfdCAqcFJlZyA9IChfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdCkoKHVpbnQzMl90KSgmVElNeC0+Q0NNUjEpICsgT0ZGU0VUX1RBQl9DQ01SeFtpQ2hhbm5lbF0pKTsKLSAgcmVnaXN0ZXIgdWludDMyX3QgYml0ZmllbGQgPSBUSU1fQ0NNUjFfT0MxQ0UgPDwgU0hJRlRfVEFCX09DeHhbaUNoYW5uZWxdOworICB1aW50OF90IGlDaGFubmVsID0gVElNX0dFVF9DSEFOTkVMX0lOREVYKENoYW5uZWwpOworICBjb25zdCBfX0lPIHVpbnQzMl90ICpwUmVnID0gKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgodWludDMyX3QpKCZUSU14LT5DQ01SMSkgKyBPRkZTRVRfVEFCX0NDTVJ4W2lDaGFubmVsXSkpOworICB1aW50MzJfdCBiaXRmaWVsZCA9IFRJTV9DQ01SMV9PQzFDRSA8PCBTSElGVF9UQUJfT0N4eFtpQ2hhbm5lbF07CiAgIHJldHVybiAoKFJFQURfQklUKCpwUmVnLCBiaXRmaWVsZCkgPT0gYml0ZmllbGQpID8gMVVMIDogMFVMKTsKIH0KIApAQCAtMjU5Niw4ICsyNjA1LDggQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1RJTV9JQ19Db25maWcoVElNX1R5cGVEZWYgKlRJTXgsIHVpbnQzMl90IENoYW5uZWwsIHVpbnQzMl90IENvbmZpZ3VyYXRpb24pCiB7Ci0gIHJlZ2lzdGVyIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7Ci0gIHJlZ2lzdGVyIF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7CisgIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7CisgIF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7CiAgIE1PRElGWV9SRUcoKnBSZWcsICgoVElNX0NDTVIxX0lDMUYgfCBUSU1fQ0NNUjFfSUMxUFNDIHwgVElNX0NDTVIxX0NDMVMpIDw8IFNISUZUX1RBQl9JQ3h4W2lDaGFubmVsXSksCiAgICAgICAgICAgICAgKChDb25maWd1cmF0aW9uID4+IDE2VSkgJiAoVElNX0NDTVIxX0lDMUYgfCBUSU1fQ0NNUjFfSUMxUFNDIHwgVElNX0NDTVIxX0NDMVMpKSAgPDwgU0hJRlRfVEFCX0lDeHhbaUNoYW5uZWxdKTsKICAgTU9ESUZZX1JFRyhUSU14LT5DQ0VSLCAoKFRJTV9DQ0VSX0NDMU5QIHwgVElNX0NDRVJfQ0MxUCkgPDwgU0hJRlRfVEFCX0NDeFBbaUNoYW5uZWxdKSwKQEAgLTI2MjQsOCArMjYzMyw4IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9USU1fSUNfU2V0QWN0aXZlSW5wdXQoVElNX1R5cGVEZWYgKlRJTXgsIHVpbnQzMl90IENoYW5uZWwsIHVpbnQzMl90IElDQWN0aXZlSW5wdXQpCiB7Ci0gIHJlZ2lzdGVyIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7Ci0gIHJlZ2lzdGVyIF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7CisgIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7CisgIF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7CiAgIE1PRElGWV9SRUcoKnBSZWcsICgoVElNX0NDTVIxX0NDMVMpIDw8IFNISUZUX1RBQl9JQ3h4W2lDaGFubmVsXSksIChJQ0FjdGl2ZUlucHV0ID4+IDE2VSkgPDwgU0hJRlRfVEFCX0lDeHhbaUNoYW5uZWxdKTsKIH0KIApAQCAtMjY0OCw4ICsyNjU3LDggQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MzJfdCBMTF9USU1fSUNfR2V0QWN0aXZlSW5wdXQoVElNX1R5cGVEZWYgKlRJTXgsIHVpbnQzMl90IENoYW5uZWwpCiB7Ci0gIHJlZ2lzdGVyIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7Ci0gIHJlZ2lzdGVyIGNvbnN0IF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7CisgIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7CisgIGNvbnN0IF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7CiAgIHJldHVybiAoKFJFQURfQklUKCpwUmVnLCAoKFRJTV9DQ01SMV9DQzFTKSA8PCBTSElGVF9UQUJfSUN4eFtpQ2hhbm5lbF0pKSA+PiBTSElGVF9UQUJfSUN4eFtpQ2hhbm5lbF0pIDw8IDE2VSk7CiB9CiAKQEAgLTI2NzQsOCArMjY4Myw4IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9USU1fSUNfU2V0UHJlc2NhbGVyKFRJTV9UeXBlRGVmICpUSU14LCB1aW50MzJfdCBDaGFubmVsLCB1aW50MzJfdCBJQ1ByZXNjYWxlcikKIHsKLSAgcmVnaXN0ZXIgdWludDhfdCBpQ2hhbm5lbCA9IFRJTV9HRVRfQ0hBTk5FTF9JTkRFWChDaGFubmVsKTsKLSAgcmVnaXN0ZXIgX19JTyB1aW50MzJfdCAqcFJlZyA9IChfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdCkoKHVpbnQzMl90KSgmVElNeC0+Q0NNUjEpICsgT0ZGU0VUX1RBQl9DQ01SeFtpQ2hhbm5lbF0pKTsKKyAgdWludDhfdCBpQ2hhbm5lbCA9IFRJTV9HRVRfQ0hBTk5FTF9JTkRFWChDaGFubmVsKTsKKyAgX19JTyB1aW50MzJfdCAqcFJlZyA9IChfX0lPIHVpbnQzMl90ICopKCh1aW50MzJfdCkoKHVpbnQzMl90KSgmVElNeC0+Q0NNUjEpICsgT0ZGU0VUX1RBQl9DQ01SeFtpQ2hhbm5lbF0pKTsKICAgTU9ESUZZX1JFRygqcFJlZywgKChUSU1fQ0NNUjFfSUMxUFNDKSA8PCBTSElGVF9UQUJfSUN4eFtpQ2hhbm5lbF0pLCAoSUNQcmVzY2FsZXIgPj4gMTZVKSA8PCBTSElGVF9UQUJfSUN4eFtpQ2hhbm5lbF0pOwogfQogCkBAIC0yNjk5LDggKzI3MDgsOCBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQzMl90IExMX1RJTV9JQ19HZXRQcmVzY2FsZXIoVElNX1R5cGVEZWYgKlRJTXgsIHVpbnQzMl90IENoYW5uZWwpCiB7Ci0gIHJlZ2lzdGVyIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7Ci0gIHJlZ2lzdGVyIGNvbnN0IF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7CisgIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7CisgIGNvbnN0IF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7CiAgIHJldHVybiAoKFJFQURfQklUKCpwUmVnLCAoKFRJTV9DQ01SMV9JQzFQU0MpIDw8IFNISUZUX1RBQl9JQ3h4W2lDaGFubmVsXSkpID4+IFNISUZUX1RBQl9JQ3h4W2lDaGFubmVsXSkgPDwgMTZVKTsKIH0KIApAQCAtMjczNyw4ICsyNzQ2LDggQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1RJTV9JQ19TZXRGaWx0ZXIoVElNX1R5cGVEZWYgKlRJTXgsIHVpbnQzMl90IENoYW5uZWwsIHVpbnQzMl90IElDRmlsdGVyKQogewotICByZWdpc3RlciB1aW50OF90IGlDaGFubmVsID0gVElNX0dFVF9DSEFOTkVMX0lOREVYKENoYW5uZWwpOwotICByZWdpc3RlciBfX0lPIHVpbnQzMl90ICpwUmVnID0gKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgodWludDMyX3QpKCZUSU14LT5DQ01SMSkgKyBPRkZTRVRfVEFCX0NDTVJ4W2lDaGFubmVsXSkpOworICB1aW50OF90IGlDaGFubmVsID0gVElNX0dFVF9DSEFOTkVMX0lOREVYKENoYW5uZWwpOworICBfX0lPIHVpbnQzMl90ICpwUmVnID0gKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgodWludDMyX3QpKCZUSU14LT5DQ01SMSkgKyBPRkZTRVRfVEFCX0NDTVJ4W2lDaGFubmVsXSkpOwogICBNT0RJRllfUkVHKCpwUmVnLCAoKFRJTV9DQ01SMV9JQzFGKSA8PCBTSElGVF9UQUJfSUN4eFtpQ2hhbm5lbF0pLCAoSUNGaWx0ZXIgPj4gMTZVKSA8PCBTSElGVF9UQUJfSUN4eFtpQ2hhbm5lbF0pOwogfQogCkBAIC0yNzc0LDggKzI3ODMsOCBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHVpbnQzMl90IExMX1RJTV9JQ19HZXRGaWx0ZXIoVElNX1R5cGVEZWYgKlRJTXgsIHVpbnQzMl90IENoYW5uZWwpCiB7Ci0gIHJlZ2lzdGVyIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7Ci0gIHJlZ2lzdGVyIGNvbnN0IF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7CisgIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7CisgIGNvbnN0IF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkNDTVIxKSArIE9GRlNFVF9UQUJfQ0NNUnhbaUNoYW5uZWxdKSk7CiAgIHJldHVybiAoKFJFQURfQklUKCpwUmVnLCAoKFRJTV9DQ01SMV9JQzFGKSA8PCBTSElGVF9UQUJfSUN4eFtpQ2hhbm5lbF0pKSA+PiBTSElGVF9UQUJfSUN4eFtpQ2hhbm5lbF0pIDw8IDE2VSk7CiB9CiAKQEAgLTI4MDMsNyArMjgxMiw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9USU1fSUNfU2V0UG9sYXJpdHkoVElNX1R5cGVEZWYgKlRJTXgsIHVpbnQzMl90IENoYW5uZWwsIHVpbnQzMl90IElDUG9sYXJpdHkpCiB7Ci0gIHJlZ2lzdGVyIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7CisgIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7CiAgIE1PRElGWV9SRUcoVElNeC0+Q0NFUiwgKChUSU1fQ0NFUl9DQzFOUCB8IFRJTV9DQ0VSX0NDMVApIDw8IFNISUZUX1RBQl9DQ3hQW2lDaGFubmVsXSksCiAgICAgICAgICAgICAgSUNQb2xhcml0eSA8PCBTSElGVF9UQUJfQ0N4UFtpQ2hhbm5lbF0pOwogfQpAQCAtMjgzMSw3ICsyODQwLDcgQEAKICAgKi8KIF9fU1RBVElDX0lOTElORSB1aW50MzJfdCBMTF9USU1fSUNfR2V0UG9sYXJpdHkoVElNX1R5cGVEZWYgKlRJTXgsIHVpbnQzMl90IENoYW5uZWwpCiB7Ci0gIHJlZ2lzdGVyIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7CisgIHVpbnQ4X3QgaUNoYW5uZWwgPSBUSU1fR0VUX0NIQU5ORUxfSU5ERVgoQ2hhbm5lbCk7CiAgIHJldHVybiAoUkVBRF9CSVQoVElNeC0+Q0NFUiwgKChUSU1fQ0NFUl9DQzFOUCB8IFRJTV9DQ0VSX0NDMVApIDw8IFNISUZUX1RBQl9DQ3hQW2lDaGFubmVsXSkpID4+CiAgICAgICAgICAgU0hJRlRfVEFCX0NDeFBbaUNoYW5uZWxdKTsKIH0KQEAgLTM0NTcsNyArMzQ2Niw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdm9pZCBMTF9USU1fRW5hYmxlQnJlYWtJbnB1dFNvdXJjZShUSU1fVHlwZURlZiAqVElNeCwgdWludDMyX3QgQnJlYWtJbnB1dCwgdWludDMyX3QgU291cmNlKQogewotICByZWdpc3RlciBfX0lPIHVpbnQzMl90ICpwUmVnID0gKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgodWludDMyX3QpKCZUSU14LT5BRjEpICsgQnJlYWtJbnB1dCkpOworICBfX0lPIHVpbnQzMl90ICpwUmVnID0gKF9fSU8gdWludDMyX3QgKikoKHVpbnQzMl90KSgodWludDMyX3QpKCZUSU14LT5BRjEpICsgQnJlYWtJbnB1dCkpOwogICBTRVRfQklUKCpwUmVnLCBTb3VyY2UpOwogfQogCkBAIC0zNDgwLDcgKzM0ODksNyBAQAogICAqLwogX19TVEFUSUNfSU5MSU5FIHZvaWQgTExfVElNX0Rpc2FibGVCcmVha0lucHV0U291cmNlKFRJTV9UeXBlRGVmICpUSU14LCB1aW50MzJfdCBCcmVha0lucHV0LCB1aW50MzJfdCBTb3VyY2UpCiB7Ci0gIHJlZ2lzdGVyIF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkFGMSkgKyBCcmVha0lucHV0KSk7CisgIF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkFGMSkgKyBCcmVha0lucHV0KSk7CiAgIENMRUFSX0JJVCgqcFJlZywgU291cmNlKTsKIH0KIApAQCAtMzUwNyw3ICszNTE2LDcgQEAKIF9fU1RBVElDX0lOTElORSB2b2lkIExMX1RJTV9TZXRCcmVha0lucHV0U291cmNlUG9sYXJpdHkoVElNX1R5cGVEZWYgKlRJTXgsIHVpbnQzMl90IEJyZWFrSW5wdXQsIHVpbnQzMl90IFNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgUG9sYXJpdHkpCiB7Ci0gIHJlZ2lzdGVyIF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkFGMSkgKyBCcmVha0lucHV0KSk7CisgIF9fSU8gdWludDMyX3QgKnBSZWcgPSAoX19JTyB1aW50MzJfdCAqKSgodWludDMyX3QpKCh1aW50MzJfdCkoJlRJTXgtPkFGMSkgKyBCcmVha0lucHV0KSk7CiAgIE1PRElGWV9SRUcoKnBSZWcsIChUSU14X0FGMV9CS0lOUCA8PCBUSU1fUE9TSVRJT05fQlJLX1NPVVJDRSksIChQb2xhcml0eSA8PCBUSU1fUE9TSVRJT05fQlJLX1NPVVJDRSkpOwogfQogI2VuZGlmIC8qIFRJTV9CUkVBS19JTlBVVF9TVVBQT1JUICovCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2xsX3VzYXJ0LmggYi9JbmMvc3RtMzJmN3h4X2xsX3VzYXJ0LmgKaW5kZXggNWE4OTY4OC4uN2EzY2RhZiAxMDA2NDQKLS0tIGEvSW5jL3N0bTMyZjd4eF9sbF91c2FydC5oCisrKyBiL0luYy9zdG0zMmY3eHhfbGxfdXNhcnQuaApAQCAtNjYsMzcgKzY2LDQ0IEBACiAKICAgdWludDMyX3QgQmF1ZFJhdGU7ICAgICAgICAgICAgICAgICAgLyohPCBUaGlzIGZpZWxkIGRlZmluZXMgZXhwZWN0ZWQgVXNhcnQgY29tbXVuaWNhdGlvbiBiYXVkIHJhdGUuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX1VTQVJUX1NldEJhdWRSYXRlKCkuKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEByZWYgTExfVVNBUlRfU2V0QmF1ZFJhdGUoKS4qLwogCiAgIHVpbnQzMl90IERhdGFXaWR0aDsgICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZGF0YSBiaXRzIHRyYW5zbWl0dGVkIG9yIHJlY2VpdmVkIGluIGEgZnJhbWUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBVU0FSVF9MTF9FQ19EQVRBV0lEVEguCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeSBmdW5jdGlvbiBAcmVmIExMX1VTQVJUX1NldERhdGFXaWR0aCgpLiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBAcmVmIExMX1VTQVJUX1NldERhdGFXaWR0aCgpLiovCiAKICAgdWludDMyX3QgU3RvcEJpdHM7ICAgICAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzdG9wIGJpdHMgdHJhbnNtaXR0ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGEgdmFsdWUgb2YgQHJlZiBVU0FSVF9MTF9FQ19TVE9QQklUUy4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfVVNBUlRfU2V0U3RvcEJpdHNMZW5ndGgoKS4qLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQHJlZiBMTF9VU0FSVF9TZXRTdG9wQml0c0xlbmd0aCgpLiovCiAKICAgdWludDMyX3QgUGFyaXR5OyAgICAgICAgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIHBhcml0eSBtb2RlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVVNBUlRfTExfRUNfUEFSSVRZLgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb24gQHJlZiBMTF9VU0FSVF9TZXRQYXJpdHkoKS4qLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQHJlZiBMTF9VU0FSVF9TZXRQYXJpdHkoKS4qLwogCiAgIHVpbnQzMl90IFRyYW5zZmVyRGlyZWN0aW9uOyAgICAgICAgIC8qITwgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIFJlY2VpdmUgYW5kL29yIFRyYW5zbWl0IG1vZGUgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVTQVJUX0xMX0VDX0RJUkVDVElPTi4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfVVNBUlRfU2V0VHJhbnNmZXJEaXJlY3Rpb24oKS4qLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gQHJlZiBMTF9VU0FSVF9TZXRUcmFuc2ZlckRpcmVjdGlvbigpLiovCiAKICAgdWludDMyX3QgSGFyZHdhcmVGbG93Q29udHJvbDsgICAgICAgLyohPCBTcGVjaWZpZXMgd2hldGhlciB0aGUgaGFyZHdhcmUgZmxvdyBjb250cm9sIG1vZGUgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVTQVJUX0xMX0VDX0hXQ09OVFJPTC4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfVVNBUlRfU2V0SFdGbG93Q3RybCgpLiovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBmZWF0dXJlIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBAcmVmIExMX1VTQVJUX1NldEhXRmxvd0N0cmwoKS4qLwogCiAgIHVpbnQzMl90IE92ZXJTYW1wbGluZzsgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHdoZXRoZXIgVVNBUlQgb3ZlcnNhbXBsaW5nIG1vZGUgaXMgMTYgb3IgOC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBvZiBAcmVmIFVTQVJUX0xMX0VDX09WRVJTQU1QTElORy4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9uIEByZWYgTExfVVNBUlRfU2V0T3ZlclNhbXBsaW5nKCkuKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZlYXR1cmUgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIEByZWYgTExfVVNBUlRfU2V0T3ZlclNhbXBsaW5nKCkuKi8KIAogfSBMTF9VU0FSVF9Jbml0VHlwZURlZjsKIApAQCAtMTE1LDIwICsxMjIsMjMgQEAKICAgdWludDMyX3QgQ2xvY2tQb2xhcml0eTsgICAgICAgICAgICAgLyohPCBTcGVjaWZpZXMgdGhlIHN0ZWFkeSBzdGF0ZSBvZiB0aGUgc2VyaWFsIGNsb2NrLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVVNBUlRfTExfRUNfUE9MQVJJVFkuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0FSVCBIVyBjb25maWd1cmF0aW9uIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb25zIEByZWYgTExfVVNBUlRfU2V0Q2xvY2tQb2xhcml0eSgpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUIEhXIGNvbmZpZ3VyYXRpb24gY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyBAcmVmIExMX1VTQVJUX1NldENsb2NrUG9sYXJpdHkoKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBkZXRhaWxzLCByZWZlciB0byBkZXNjcmlwdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLiAqLwogCiAgIHVpbnQzMl90IENsb2NrUGhhc2U7ICAgICAgICAgICAgICAgIC8qITwgU3BlY2lmaWVzIHRoZSBjbG9jayB0cmFuc2l0aW9uIG9uIHdoaWNoIHRoZSBiaXQgY2FwdHVyZSBpcyBtYWRlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVVNBUlRfTExfRUNfUEhBU0UuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0FSVCBIVyBjb25maWd1cmF0aW9uIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIHVzaW5nIHVuaXRhcnkgZnVuY3Rpb25zIEByZWYgTExfVVNBUlRfU2V0Q2xvY2tQaGFzZSgpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUIEhXIGNvbmZpZ3VyYXRpb24gY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyBAcmVmIExMX1VTQVJUX1NldENsb2NrUGhhc2UoKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgbW9yZSBkZXRhaWxzLCByZWZlciB0byBkZXNjcmlwdGlvbiBvZiB0aGlzIGZ1bmN0aW9uLiAqLwogCiAgIHVpbnQzMl90IExhc3RCaXRDbG9ja1B1bHNlOyAgICAgICAgIC8qITwgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGNsb2NrIHB1bHNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxhc3QgdHJhbnNtaXR0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhIGJpdCAoTVNCKSBoYXMgdG8gYmUgb3V0cHV0IG9uIHRoZSBTQ0xLIHBpbiBpbiBzeW5jaHJvbm91cyBtb2RlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhIHZhbHVlIG9mIEByZWYgVVNBUlRfTExfRUNfTEFTVENMS1BVTFNFLgogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNBUlQgSFcgY29uZmlndXJhdGlvbiBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyB1c2luZyB1bml0YXJ5IGZ1bmN0aW9ucyBAcmVmIExMX1VTQVJUX1NldExhc3RDbGtQdWxzZU91dHB1dCgpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUIEhXIGNvbmZpZ3VyYXRpb24gY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgdXNpbmcgdW5pdGFyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyBAcmVmIExMX1VTQVJUX1NldExhc3RDbGtQdWxzZU91dHB1dCgpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBtb3JlIGRldGFpbHMsIHJlZmVyIHRvIGRlc2NyaXB0aW9uIG9mIHRoaXMgZnVuY3Rpb24uICovCiAKIH0gTExfVVNBUlRfQ2xvY2tJbml0VHlwZURlZjsKQEAgLTE0NywyMiArMTU3LDI0IEBACiAgICogQGJyaWVmICAgIEZsYWdzIGRlZmluZXMgd2hpY2ggY2FuIGJlIHVzZWQgd2l0aCBMTF9VU0FSVF9Xcml0ZVJlZyBmdW5jdGlvbgogICAqIEB7CiAgICovCi0jZGVmaW5lIExMX1VTQVJUX0lDUl9QRUNGICAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9JQ1JfUEVDRiAgICAgICAgICAgICAgICAvKiE8IFBhcml0eSBlcnJvciBmbGFnICovCi0jZGVmaW5lIExMX1VTQVJUX0lDUl9GRUNGICAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9JQ1JfRkVDRiAgICAgICAgICAgICAgICAvKiE8IEZyYW1pbmcgZXJyb3IgZmxhZyAqLwotI2RlZmluZSBMTF9VU0FSVF9JQ1JfTkNGICAgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfSUNSX05DRiAgICAgICAgICAgICAgICAgLyohPCBOb2lzZSBlcnJvciBkZXRlY3RlZCBmbGFnICovCi0jZGVmaW5lIExMX1VTQVJUX0lDUl9PUkVDRiAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9JQ1JfT1JFQ0YgICAgICAgICAgICAgICAvKiE8IE92ZXJydW4gZXJyb3IgZmxhZyAqLwotI2RlZmluZSBMTF9VU0FSVF9JQ1JfSURMRUNGICAgICAgICAgICAgICAgICAgICAgVVNBUlRfSUNSX0lETEVDRiAgICAgICAgICAgICAgLyohPCBJZGxlIGxpbmUgZGV0ZWN0ZWQgZmxhZyAqLwotI2RlZmluZSBMTF9VU0FSVF9JQ1JfVENDRiAgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfSUNSX1RDQ0YgICAgICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gY29tcGxldGUgZmxhZyAqLworI2RlZmluZSBMTF9VU0FSVF9JQ1JfUEVDRiAgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfSUNSX1BFQ0YgICAgICAgICAgICAgICAgLyohPCBQYXJpdHkgZXJyb3IgY2xlYXIgZmxhZyAqLworI2RlZmluZSBMTF9VU0FSVF9JQ1JfRkVDRiAgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfSUNSX0ZFQ0YgICAgICAgICAgICAgICAgLyohPCBGcmFtaW5nIGVycm9yIGNsZWFyIGZsYWcgKi8KKyNkZWZpbmUgTExfVVNBUlRfSUNSX05DRiAgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0lDUl9OQ0YgICAgICAgICAgICAgICAgIC8qITwgTm9pc2UgZXJyb3IgZGV0ZWN0ZWQgY2xlYXIgZmxhZyAqLworI2RlZmluZSBMTF9VU0FSVF9JQ1JfT1JFQ0YgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfSUNSX09SRUNGICAgICAgICAgICAgICAgLyohPCBPdmVycnVuIGVycm9yIGNsZWFyIGZsYWcgKi8KKyNkZWZpbmUgTExfVVNBUlRfSUNSX0lETEVDRiAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0lDUl9JRExFQ0YgICAgICAgICAgICAgIC8qITwgSWRsZSBsaW5lIGRldGVjdGVkIGNsZWFyIGZsYWcgKi8KKyNkZWZpbmUgTExfVVNBUlRfSUNSX1RDQ0YgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0lDUl9UQ0NGICAgICAgICAgICAgICAgIC8qITwgVHJhbnNtaXNzaW9uIGNvbXBsZXRlIGNsZWFyIGZsYWcgKi8KICNpZiBkZWZpbmVkKFVTQVJUX1RDQkdUX1NVUFBPUlQpCi0jZGVmaW5lIExMX1VTQVJUX0lDUl9UQ0JHVENGICAgICAgICAgICAgICAgICAgICBVU0FSVF9JQ1JfVENCR1RDRiAgICAgICAgICAgICAvKiE8IFRyYW5zbWlzc2lvbiBjb21wbGV0ZWQgYmVmb3JlIGd1YXJkIHRpbWUgZmxhZyAqLworI2RlZmluZSBMTF9VU0FSVF9JQ1JfVENCR1RDRiAgICAgICAgICAgICAgICAgICAgVVNBUlRfSUNSX1RDQkdUQ0YgICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gY29tcGxldGVkIGJlZm9yZSBndWFyZCB0aW1lIGNsZWFyIGZsYWcgKi8KICNlbmRpZiAvKiBVU0FSVF9UQ0JHVF9TVVBQT1JUICovCi0jZGVmaW5lIExMX1VTQVJUX0lDUl9MQkRDRiAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9JQ1JfTEJEQ0YgICAgICAgICAgICAgICAvKiE8IExJTiBicmVhayBkZXRlY3Rpb24gZmxhZyAqLwotI2RlZmluZSBMTF9VU0FSVF9JQ1JfQ1RTQ0YgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfSUNSX0NUU0NGICAgICAgICAgICAgICAgLyohPCBDVFMgZmxhZyAqLwotI2RlZmluZSBMTF9VU0FSVF9JQ1JfUlRPQ0YgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfSUNSX1JUT0NGICAgICAgICAgICAgICAgLyohPCBSZWNlaXZlciB0aW1lb3V0IGZsYWcgKi8KLSNkZWZpbmUgTExfVVNBUlRfSUNSX0VPQkNGICAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0lDUl9FT0JDRiAgICAgICAgICAgICAgIC8qITwgRW5kIG9mIGJsb2NrIGZsYWcgKi8KLSNkZWZpbmUgTExfVVNBUlRfSUNSX0NNQ0YgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0lDUl9DTUNGICAgICAgICAgICAgICAgIC8qITwgQ2hhcmFjdGVyIG1hdGNoIGZsYWcgKi8KKyNkZWZpbmUgTExfVVNBUlRfSUNSX0xCRENGICAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0lDUl9MQkRDRiAgICAgICAgICAgICAgIC8qITwgTElOIGJyZWFrIGRldGVjdGlvbiBjbGVhciBmbGFnICovCisjZGVmaW5lIExMX1VTQVJUX0lDUl9DVFNDRiAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9JQ1JfQ1RTQ0YgICAgICAgICAgICAgICAvKiE8IENUUyBjbGVhciBmbGFnICovCisjZGVmaW5lIExMX1VTQVJUX0lDUl9SVE9DRiAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9JQ1JfUlRPQ0YgICAgICAgICAgICAgICAvKiE8IFJlY2VpdmVyIHRpbWVvdXQgY2xlYXIgZmxhZyAqLworI2RlZmluZSBMTF9VU0FSVF9JQ1JfRU9CQ0YgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfSUNSX0VPQkNGICAgICAgICAgICAgICAgLyohPCBFbmQgb2YgYmxvY2sgY2xlYXIgZmxhZyAqLworI2RlZmluZSBMTF9VU0FSVF9JQ1JfQ01DRiAgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfSUNSX0NNQ0YgICAgICAgICAgICAgICAgLyohPCBDaGFyYWN0ZXIgbWF0Y2ggY2xlYXIgZmxhZyAqLwogI2lmIGRlZmluZWQoVVNBUlRfQ1IxX1VFU00pCi0jZGVmaW5lIExMX1VTQVJUX0lDUl9XVUNGICAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9JQ1JfV1VDRiAgICAgICAgICAgICAgICAvKiE8IFdha2V1cCBmcm9tIFN0b3AgbW9kZSBmbGFnICovCisjaWYgZGVmaW5lZChVU0FSVF9DUjNfV1VGSUUpCisjZGVmaW5lIExMX1VTQVJUX0lDUl9XVUNGICAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9JQ1JfV1VDRiAgICAgICAgICAgICAgICAvKiE8IFdha2V1cCBmcm9tIFN0b3AgbW9kZSBjbGVhciBmbGFnICovCisjZW5kaWYgLyogVVNBUlRfQ1IzX1dVRklFICovCiAjZW5kaWYgLyogVVNBUlRfQ1IxX1VFU00gKi8KIC8qKgogICAqIEB9CkBAIC0xOTIsNyArMjA0LDkgQEAKICNkZWZpbmUgTExfVVNBUlRfSVNSX1NCS0YgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0lTUl9TQktGICAgICAgICAgICAgICAgIC8qITwgU2VuZCBicmVhayBmbGFnICovCiAjZGVmaW5lIExMX1VTQVJUX0lTUl9SV1UgICAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9JU1JfUldVICAgICAgICAgICAgICAgICAvKiE8IFJlY2VpdmVyIHdha2V1cCBmcm9tIE11dGUgbW9kZSBmbGFnICovCiAjaWYgZGVmaW5lZChVU0FSVF9DUjFfVUVTTSkKKyNpZiBkZWZpbmVkKFVTQVJUX0NSM19XVUZJRSkKICNkZWZpbmUgTExfVVNBUlRfSVNSX1dVRiAgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0lTUl9XVUYgICAgICAgICAgICAgICAgIC8qITwgV2FrZXVwIGZyb20gU3RvcCBtb2RlIGZsYWcgKi8KKyNlbmRpZiAvKiBVU0FSVF9DUjNfV1VGSUUgKi8KICNlbmRpZiAvKiBVU0FSVF9DUjFfVUVTTSAqLwogI2RlZmluZSBMTF9VU0FSVF9JU1JfVEVBQ0sgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfSVNSX1RFQUNLICAgICAgICAgICAgICAgLyohPCBUcmFuc21pdCBlbmFibGUgYWNrbm93bGVkZ2UgZmxhZyAqLwogI2lmIGRlZmluZWQoVVNBUlRfSVNSX1JFQUNLKQpAQCAtMjIxLDcgKzIzNSw5IEBACiAjZGVmaW5lIExMX1VTQVJUX0NSM19FSUUgICAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9DUjNfRUlFICAgICAgICAgICAgICAgICAvKiE8IEVycm9yIGludGVycnVwdCBlbmFibGUgKi8KICNkZWZpbmUgTExfVVNBUlRfQ1IzX0NUU0lFICAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0NSM19DVFNJRSAgICAgICAgICAgICAgIC8qITwgQ1RTIGludGVycnVwdCBlbmFibGUgKi8KICNpZiBkZWZpbmVkKFVTQVJUX0NSMV9VRVNNKQorI2lmIGRlZmluZWQoVVNBUlRfQ1IzX1dVRklFKQogI2RlZmluZSBMTF9VU0FSVF9DUjNfV1VGSUUgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfQ1IzX1dVRklFICAgICAgICAgICAgICAgLyohPCBXYWtldXAgZnJvbSBTdG9wIG1vZGUgaW50ZXJydXB0IGVuYWJsZSAqLworI2VuZGlmIC8qIFVTQVJUX0NSM19XVUZJRSAqLwogI2VuZGlmIC8qIFVTQVJUX0NSMV9VRVNNICovCiAjaWYgZGVmaW5lZChVU0FSVF9UQ0JHVF9TVVBQT1JUKQogI2RlZmluZSBMTF9VU0FSVF9DUjNfVENCR1RJRSAgICAgICAgICAgICAgICAgICAgVVNBUlRfQ1IzX1RDQkdUSUUgICAgICAgICAgICAgLyohPCBUcmFuc21pc3Npb24gY29tcGxldGUgYmVmb3JlIGd1YXJkIHRpbWUgaW50ZXJydXB0IGVuYWJsZSAqLwpAQCAtNDA2LDYgKzQyMiw3IEBACiAgICovCiAKICNpZiBkZWZpbmVkKFVTQVJUX0NSMV9VRVNNKQorI2lmIGRlZmluZWQoVVNBUlRfQ1IzX1dVUykKIC8qKiBAZGVmZ3JvdXAgVVNBUlRfTExfRUNfV0FLRVVQX09OIFdha2V1cCBBY3RpdmF0aW9uCiAgICogQHsKICAgKi8KQEAgLTQxNiw2ICs0MzMsNyBAQAogICAqIEB9CiAgICovCiAKKyNlbmRpZiAvKiBVU0FSVF9DUjNfV1VTICovCiAjZW5kaWYgLyogVVNBUlRfQ1IxX1VFU00gKi8KIC8qKiBAZGVmZ3JvdXAgVVNBUlRfTExfRUNfSVJEQV9QT1dFUiBJckRBIFBvd2VyCiAgICogQHsKQEAgLTU2OCw3ICs1ODYsNyBAQAogICAqIEBicmllZiAgVVNBUlQgZW5hYmxlZCBpbiBTVE9QIE1vZGUuCiAgICogQG5vdGUgICBXaGVuIHRoaXMgZnVuY3Rpb24gaXMgZW5hYmxlZCwgVVNBUlQgaXMgYWJsZSB0byB3YWtlIHVwIHRoZSBNQ1UgZnJvbSBTdG9wIG1vZGUsIHByb3ZpZGVkIHRoYXQKICAgKiAgICAgICAgIFVTQVJUIGNsb2NrIHNlbGVjdGlvbiBpcyBIU0kgb3IgTFNFIGluIFJDQy4KLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVUFSVF9XQUtFVVBfRlJPTVNUT1BfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVUFSVF9XQUtFVVBfRlJPTVNUT1BfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgV2FrZS11cCBmcm9tIFN0b3AgbW9kZSBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IxICAgICAgICAgIFVFU00gICAgICAgICAgTExfVVNBUlRfRW5hYmxlSW5TdG9wTW9kZQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC01ODIsNyArNjAwLDcgQEAKIC8qKgogICAqIEBicmllZiAgVVNBUlQgZGlzYWJsZWQgaW4gU1RPUCBNb2RlLgogICAqIEBub3RlICAgV2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGRpc2FibGVkLCBVU0FSVCBpcyBub3QgYWJsZSB0byB3YWtlIHVwIHRoZSBNQ1UgZnJvbSBTdG9wIG1vZGUKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVUFSVF9XQUtFVVBfRlJPTVNUT1BfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVUFSVF9XQUtFVVBfRlJPTVNUT1BfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgV2FrZS11cCBmcm9tIFN0b3AgbW9kZSBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IxICAgICAgICAgIFVFU00gICAgICAgICAgTExfVVNBUlRfRGlzYWJsZUluU3RvcE1vZGUKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtNTk1LDcgKzYxMyw3IEBACiAKIC8qKgogICAqIEBicmllZiAgSW5kaWNhdGUgaWYgVVNBUlQgaXMgZW5hYmxlZCBpbiBTVE9QIE1vZGUgKGFibGUgdG8gd2FrZSB1cCBNQ1UgZnJvbSBTdG9wIG1vZGUgb3Igbm90KQotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX1dBS0VVUF9GUk9NU1RPUF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX1dBS0VVUF9GUk9NU1RPUF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBXYWtlLXVwIGZyb20gU3RvcCBtb2RlIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjEgICAgICAgICAgVUVTTSAgICAgICAgICBMTF9VU0FSVF9Jc0VuYWJsZWRJblN0b3BNb2RlCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTg3Niw3ICs4OTQsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIENvbmZpZ3VyZSBpZiBDbG9jayBwdWxzZSBvZiB0aGUgbGFzdCBkYXRhIGJpdCBpcyBvdXRwdXQgdG8gdGhlIFNDTEsgcGluIG9yIG5vdAotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VU0FSVF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VU0FSVF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTeW5jaHJvbm91cyBtb2RlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IyICAgICAgICAgIExCQ0wgICAgICAgICAgTExfVVNBUlRfU2V0TGFzdENsa1B1bHNlT3V0cHV0CiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTg5Myw3ICs5MTEsNyBAQAogLyoqCiAgICogQGJyaWVmICBSZXRyaWV2ZSBDbG9jayBwdWxzZSBvZiB0aGUgbGFzdCBkYXRhIGJpdCBvdXRwdXQgY29uZmlndXJhdGlvbgogICAqICAgICAgICAgKExhc3QgYml0IENsb2NrIHB1bHNlIG91dHB1dCB0byB0aGUgU0NMSyBwaW4gb3Igbm90KQotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VU0FSVF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VU0FSVF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTeW5jaHJvbm91cyBtb2RlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IyICAgICAgICAgIExCQ0wgICAgICAgICAgTExfVVNBUlRfR2V0TGFzdENsa1B1bHNlT3V0cHV0CiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTkwOCw3ICs5MjYsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIFNlbGVjdCB0aGUgcGhhc2Ugb2YgdGhlIGNsb2NrIG91dHB1dCBvbiB0aGUgU0NMSyBwaW4gaW4gc3luY2hyb25vdXMgbW9kZQotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VU0FSVF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VU0FSVF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTeW5jaHJvbm91cyBtb2RlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IyICAgICAgICAgIENQSEEgICAgICAgICAgTExfVVNBUlRfU2V0Q2xvY2tQaGFzZQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC05MjQsNyArOTQyLDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBSZXR1cm4gcGhhc2Ugb2YgdGhlIGNsb2NrIG91dHB1dCBvbiB0aGUgU0NMSyBwaW4gaW4gc3luY2hyb25vdXMgbW9kZQotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VU0FSVF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VU0FSVF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTeW5jaHJvbm91cyBtb2RlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IyICAgICAgICAgIENQSEEgICAgICAgICAgTExfVVNBUlRfR2V0Q2xvY2tQaGFzZQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC05MzksNyArOTU3LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBTZWxlY3QgdGhlIHBvbGFyaXR5IG9mIHRoZSBjbG9jayBvdXRwdXQgb24gdGhlIFNDTEsgcGluIGluIHN5bmNocm9ub3VzIG1vZGUKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVVNBUlRfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVVNBUlRfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU3luY2hyb25vdXMgbW9kZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMiAgICAgICAgICBDUE9MICAgICAgICAgIExMX1VTQVJUX1NldENsb2NrUG9sYXJpdHkKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtOTU1LDcgKzk3Myw3IEBACiAKIC8qKgogICAqIEBicmllZiAgUmV0dXJuIHBvbGFyaXR5IG9mIHRoZSBjbG9jayBvdXRwdXQgb24gdGhlIFNDTEsgcGluIGluIHN5bmNocm9ub3VzIG1vZGUKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVVNBUlRfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVVNBUlRfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU3luY2hyb25vdXMgbW9kZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMiAgICAgICAgICBDUE9MICAgICAgICAgIExMX1VTQVJUX0dldENsb2NrUG9sYXJpdHkKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtOTcwLDcgKzk4OCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgQ29uZmlndXJlIENsb2NrIHNpZ25hbCBmb3JtYXQgKFBoYXNlIFBvbGFyaXR5IGFuZCBjaG9pY2UgYWJvdXQgb3V0cHV0IG9mIGxhc3QgYml0IGNsb2NrIHB1bHNlKQotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VU0FSVF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VU0FSVF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTeW5jaHJvbm91cyBtb2RlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBub3RlICAgQ2FsbCBvZiB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gZm9sbG93aW5nIGZ1bmN0aW9uIGNhbGwgc2VxdWVuY2UgOgogICAqICAgICAgICAgLSBDbG9jayBQaGFzZSBjb25maWd1cmF0aW9uIHVzaW5nIEByZWYgTExfVVNBUlRfU2V0Q2xvY2tQaGFzZSgpIGZ1bmN0aW9uCkBAIC05OTgsNyArMTAxNiw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRW5hYmxlIENsb2NrIG91dHB1dCBvbiBTQ0xLIHBpbgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VU0FSVF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VU0FSVF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTeW5jaHJvbm91cyBtb2RlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IyICAgICAgICAgIENMS0VOICAgICAgICAgTExfVVNBUlRfRW5hYmxlU0NMS091dHB1dAogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0xMDExLDcgKzEwMjksNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIERpc2FibGUgQ2xvY2sgb3V0cHV0IG9uIFNDTEsgcGluCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1VTQVJUX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VTQVJUX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFN5bmNocm9ub3VzIG1vZGUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjIgICAgICAgICAgQ0xLRU4gICAgICAgICBMTF9VU0FSVF9EaXNhYmxlU0NMS091dHB1dAogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0xMDI0LDcgKzEwNDIsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEluZGljYXRlIGlmIENsb2NrIG91dHB1dCBvbiBTQ0xLIHBpbiBpcyBlbmFibGVkCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1VTQVJUX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VTQVJUX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFN5bmNocm9ub3VzIG1vZGUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjIgICAgICAgICAgQ0xLRU4gICAgICAgICBMTF9VU0FSVF9Jc0VuYWJsZWRTQ0xLT3V0cHV0CiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTEyNDMsNyArMTI2MSw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRW5hYmxlIEF1dG8gQmF1ZC1SYXRlIERldGVjdGlvbgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VU0FSVF9BVVRPQkFVRFJBVEVfREVURUNUSU9OX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VTQVJUX0FVVE9CQVVEUkFURV9ERVRFQ1RJT05fSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgQXV0byBCYXVkIFJhdGUgZGV0ZWN0aW9uIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjIgICAgICAgICAgQUJSRU4gICAgICAgICBMTF9VU0FSVF9FbmFibGVBdXRvQmF1ZFJhdGUKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMTI1Niw3ICsxMjc0LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBEaXNhYmxlIEF1dG8gQmF1ZC1SYXRlIERldGVjdGlvbgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VU0FSVF9BVVRPQkFVRFJBVEVfREVURUNUSU9OX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VTQVJUX0FVVE9CQVVEUkFURV9ERVRFQ1RJT05fSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgQXV0byBCYXVkIFJhdGUgZGV0ZWN0aW9uIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjIgICAgICAgICAgQUJSRU4gICAgICAgICBMTF9VU0FSVF9EaXNhYmxlQXV0b0JhdWRSYXRlCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTEyNjksNyArMTI4Nyw3IEBACiAKIC8qKgogICAqIEBicmllZiAgSW5kaWNhdGUgaWYgQXV0byBCYXVkLVJhdGUgRGV0ZWN0aW9uIG1lY2hhbmlzbSBpcyBlbmFibGVkCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1VTQVJUX0FVVE9CQVVEUkFURV9ERVRFQ1RJT05fSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVVNBUlRfQVVUT0JBVURSQVRFX0RFVEVDVElPTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBBdXRvIEJhdWQgUmF0ZSBkZXRlY3Rpb24gZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMiAgICAgICAgICBBQlJFTiAgICAgICAgIExMX1VTQVJUX0lzRW5hYmxlZEF1dG9CYXVkCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTEyODIsNyArMTMwMCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgU2V0IEF1dG8gQmF1ZC1SYXRlIG1vZGUgYml0cwotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VU0FSVF9BVVRPQkFVRFJBVEVfREVURUNUSU9OX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VTQVJUX0FVVE9CQVVEUkFURV9ERVRFQ1RJT05fSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgQXV0byBCYXVkIFJhdGUgZGV0ZWN0aW9uIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjIgICAgICAgICAgQUJSTU9ERSAgICAgICBMTF9VU0FSVF9TZXRBdXRvQmF1ZFJhdGVNb2RlCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTEzMDAsNyArMTMxOCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgUmV0dXJuIEF1dG8gQmF1ZC1SYXRlIG1vZGUKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVVNBUlRfQVVUT0JBVURSQVRFX0RFVEVDVElPTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VU0FSVF9BVVRPQkFVRFJBVEVfREVURUNUSU9OX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIEF1dG8gQmF1ZCBSYXRlIGRldGVjdGlvbiBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IyICAgICAgICAgIEFCUk1PREUgICAgICAgTExfVVNBUlRfR2V0QXV0b0JhdWRSYXRlTW9kZQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0xNDA3LDcgKzE0MjUsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEVuYWJsZSBSVFMgSFcgRmxvdyBDb250cm9sCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1VBUlRfSFdGTE9XX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VBUlRfSFdGTE9XX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIEhhcmR3YXJlIEZsb3cgY29udHJvbCBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IzICAgICAgICAgIFJUU0UgICAgICAgICAgTExfVVNBUlRfRW5hYmxlUlRTSFdGbG93Q3RybAogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0xNDIwLDcgKzE0MzgsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIERpc2FibGUgUlRTIEhXIEZsb3cgQ29udHJvbAotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0hXRkxPV19JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX0hXRkxPV19JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBIYXJkd2FyZSBGbG93IGNvbnRyb2wgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMyAgICAgICAgICBSVFNFICAgICAgICAgIExMX1VTQVJUX0Rpc2FibGVSVFNIV0Zsb3dDdHJsCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTE0MzMsNyArMTQ1MSw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRW5hYmxlIENUUyBIVyBGbG93IENvbnRyb2wKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVUFSVF9IV0ZMT1dfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVUFSVF9IV0ZMT1dfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgSGFyZHdhcmUgRmxvdyBjb250cm9sIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjMgICAgICAgICAgQ1RTRSAgICAgICAgICBMTF9VU0FSVF9FbmFibGVDVFNIV0Zsb3dDdHJsCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTE0NDYsNyArMTQ2NCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRGlzYWJsZSBDVFMgSFcgRmxvdyBDb250cm9sCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1VBUlRfSFdGTE9XX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VBUlRfSFdGTE9XX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIEhhcmR3YXJlIEZsb3cgY29udHJvbCBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IzICAgICAgICAgIENUU0UgICAgICAgICAgTExfVVNBUlRfRGlzYWJsZUNUU0hXRmxvd0N0cmwKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMTQ1OSw3ICsxNDc3LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBDb25maWd1cmUgSFcgRmxvdyBDb250cm9sIG1vZGUgKGJvdGggQ1RTIGFuZCBSVFMpCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1VBUlRfSFdGTE9XX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VBUlRfSFdGTE9XX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIEhhcmR3YXJlIEZsb3cgY29udHJvbCBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IzICAgICAgICAgIFJUU0UgICAgICAgICAgTExfVVNBUlRfU2V0SFdGbG93Q3RybFxuCiAgICogICAgICAgICBDUjMgICAgICAgICAgQ1RTRSAgICAgICAgICBMTF9VU0FSVF9TZXRIV0Zsb3dDdHJsCkBAIC0xNDc4LDcgKzE0OTYsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIFJldHVybiBIVyBGbG93IENvbnRyb2wgY29uZmlndXJhdGlvbiAoYm90aCBDVFMgYW5kIFJUUykKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVUFSVF9IV0ZMT1dfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVUFSVF9IV0ZMT1dfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgSGFyZHdhcmUgRmxvdyBjb250cm9sIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjMgICAgICAgICAgUlRTRSAgICAgICAgICBMTF9VU0FSVF9HZXRIV0Zsb3dDdHJsXG4KICAgKiAgICAgICAgIENSMyAgICAgICAgICBDVFNFICAgICAgICAgIExMX1VTQVJUX0dldEhXRmxvd0N0cmwKQEAgLTE1NjEsOSArMTU3OSwxMCBAQAogfQogCiAjaWYgZGVmaW5lZChVU0FSVF9DUjFfVUVTTSkKKyNpZiBkZWZpbmVkKFVTQVJUX0NSM19XVVMpCiAvKioKICAgKiBAYnJpZWYgIFNlbGVjdCBldmVudCB0eXBlIGZvciBXYWtlIFVQIEludGVycnVwdCBGbGFnIChXVVNbMTowXSBiaXRzKQotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX1dBS0VVUF9GUk9NU1RPUF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX1dBS0VVUF9GUk9NU1RPUF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBXYWtlLXVwIGZyb20gU3RvcCBtb2RlIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjMgICAgICAgICAgV1VTICAgICAgICAgICBMTF9VU0FSVF9TZXRXS1VQVHlwZQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0xNTgwLDcgKzE1OTksNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIFJldHVybiBldmVudCB0eXBlIGZvciBXYWtlIFVQIEludGVycnVwdCBGbGFnIChXVVNbMTowXSBiaXRzKQotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX1dBS0VVUF9GUk9NU1RPUF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX1dBS0VVUF9GUk9NU1RPUF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBXYWtlLXVwIGZyb20gU3RvcCBtb2RlIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjMgICAgICAgICAgV1VTICAgICAgICAgICBMTF9VU0FSVF9HZXRXS1VQVHlwZQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0xNTk0LDYgKzE2MTMsNyBAQAogICByZXR1cm4gKHVpbnQzMl90KShSRUFEX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX1dVUykpOwogfQogCisjZW5kaWYgLyogVVNBUlRfQ1IzX1dVUyAqLwogI2VuZGlmIC8qIFVTQVJUX0NSMV9VRVNNICovCiAvKioKICAgKiBAYnJpZWYgIENvbmZpZ3VyZSBVU0FSVCBCUlIgcmVnaXN0ZXIgZm9yIGFjaGlldmluZyBleHBlY3RlZCBCYXVkIFJhdGUgdmFsdWUuCkBAIC0xNjE1LDcgKzE2MzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQmF1ZFJhdGUpCiB7CiAgIHVpbnQzMl90IHVzYXJ0ZGl2OwotICByZWdpc3RlciB1aW50MzJfdCBicnJ0ZW1wOworICB1aW50MzJfdCBicnJ0ZW1wOwogCiAgIGlmIChPdmVyU2FtcGxpbmcgPT0gTExfVVNBUlRfT1ZFUlNBTVBMSU5HXzgpCiAgIHsKQEAgLTE2NDUsOCArMTY2NSw4IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdWludDMyX3QgTExfVVNBUlRfR2V0QmF1ZFJhdGUoVVNBUlRfVHlwZURlZiAqVVNBUlR4LCB1aW50MzJfdCBQZXJpcGhDbGssIHVpbnQzMl90IE92ZXJTYW1wbGluZykKIHsKLSAgcmVnaXN0ZXIgdWludDMyX3QgdXNhcnRkaXY7Ci0gIHJlZ2lzdGVyIHVpbnQzMl90IGJycnJlc3VsdCA9IDB4MFU7CisgIHVpbnQzMl90IHVzYXJ0ZGl2OworICB1aW50MzJfdCBicnJyZXN1bHQgPSAweDBVOwogCiAgIHVzYXJ0ZGl2ID0gVVNBUlR4LT5CUlI7CiAKQEAgLTE3MjgsNyArMTc0OCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRW5hYmxlIElyREEgbW9kZQotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19JUkRBX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX0lSREFfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgSXJEQSBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IzICAgICAgICAgIElSRU4gICAgICAgICAgTExfVVNBUlRfRW5hYmxlSXJkYQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0xNzQxLDcgKzE3NjEsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIERpc2FibGUgSXJEQSBtb2RlCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX0lSREFfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfSVJEQV9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBJckRBIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjMgICAgICAgICAgSVJFTiAgICAgICAgICBMTF9VU0FSVF9EaXNhYmxlSXJkYQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0xNzU0LDcgKzE3NzQsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEluZGljYXRlIGlmIElyREEgbW9kZSBpcyBlbmFibGVkCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX0lSREFfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfSVJEQV9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBJckRBIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjMgICAgICAgICAgSVJFTiAgICAgICAgICBMTF9VU0FSVF9Jc0VuYWJsZWRJcmRhCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTE3NjcsNyArMTc4Nyw3IEBACiAKIC8qKgogICAqIEBicmllZiAgQ29uZmlndXJlIElyREEgUG93ZXIgTW9kZSAoTm9ybWFsIG9yIExvdyBQb3dlcikKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfSVJEQV9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19JUkRBX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIElyREEgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMyAgICAgICAgICBJUkxQICAgICAgICAgIExMX1VTQVJUX1NldElyZGFQb3dlck1vZGUKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMTc4Myw3ICsxODAzLDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBSZXRyaWV2ZSBJckRBIFBvd2VyIE1vZGUgY29uZmlndXJhdGlvbiAoTm9ybWFsIG9yIExvdyBQb3dlcikKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfSVJEQV9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19JUkRBX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIElyREEgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMyAgICAgICAgICBJUkxQICAgICAgICAgIExMX1VTQVJUX0dldElyZGFQb3dlck1vZGUKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMTc5OSw3ICsxODE5LDcgQEAKIC8qKgogICAqIEBicmllZiAgU2V0IElyZGEgcHJlc2NhbGVyIHZhbHVlLCB1c2VkIGZvciBkaXZpZGluZyB0aGUgVVNBUlQgY2xvY2sgc291cmNlCiAgICogICAgICAgICB0byBhY2hpZXZlIHRoZSBJcmRhIExvdyBQb3dlciBmcmVxdWVuY3kgKDggYml0cyB2YWx1ZSkKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfSVJEQV9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19JUkRBX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIElyREEgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIEdUUFIgICAgICAgICBQU0MgICAgICAgICAgIExMX1VTQVJUX1NldElyZGFQcmVzY2FsZXIKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMTgxNCw3ICsxODM0LDcgQEAKIC8qKgogICAqIEBicmllZiAgUmV0dXJuIElyZGEgcHJlc2NhbGVyIHZhbHVlLCB1c2VkIGZvciBkaXZpZGluZyB0aGUgVVNBUlQgY2xvY2sgc291cmNlCiAgICogICAgICAgICB0byBhY2hpZXZlIHRoZSBJcmRhIExvdyBQb3dlciBmcmVxdWVuY3kgKDggYml0cyB2YWx1ZSkKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfSVJEQV9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19JUkRBX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIElyREEgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIEdUUFIgICAgICAgICBQU0MgICAgICAgICAgIExMX1VTQVJUX0dldElyZGFQcmVzY2FsZXIKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMTgzNSw3ICsxODU1LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBFbmFibGUgU21hcnRjYXJkIE5BQ0sgdHJhbnNtaXNzaW9uCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19TTUFSVENBUkRfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU21hcnRjYXJkIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjMgICAgICAgICAgTkFDSyAgICAgICAgICBMTF9VU0FSVF9FbmFibGVTbWFydGNhcmROQUNLCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTE4NDgsNyArMTg2OCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRGlzYWJsZSBTbWFydGNhcmQgTkFDSyB0cmFuc21pc3Npb24KLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTbWFydGNhcmQgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMyAgICAgICAgICBOQUNLICAgICAgICAgIExMX1VTQVJUX0Rpc2FibGVTbWFydGNhcmROQUNLCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTE4NjEsNyArMTg4MSw3IEBACiAKIC8qKgogICAqIEBicmllZiAgSW5kaWNhdGUgaWYgU21hcnRjYXJkIE5BQ0sgdHJhbnNtaXNzaW9uIGlzIGVuYWJsZWQKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTbWFydGNhcmQgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMyAgICAgICAgICBOQUNLICAgICAgICAgIExMX1VTQVJUX0lzRW5hYmxlZFNtYXJ0Y2FyZE5BQ0sKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMTg3NCw3ICsxODk0LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBFbmFibGUgU21hcnRjYXJkIG1vZGUKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTbWFydGNhcmQgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMyAgICAgICAgICBTQ0VOICAgICAgICAgIExMX1VTQVJUX0VuYWJsZVNtYXJ0Y2FyZAogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0xODg3LDcgKzE5MDcsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIERpc2FibGUgU21hcnRjYXJkIG1vZGUKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTbWFydGNhcmQgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMyAgICAgICAgICBTQ0VOICAgICAgICAgIExMX1VTQVJUX0Rpc2FibGVTbWFydGNhcmQKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMTkwMCw3ICsxOTIwLDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBJbmRpY2F0ZSBpZiBTbWFydGNhcmQgbW9kZSBpcyBlbmFibGVkCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19TTUFSVENBUkRfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU21hcnRjYXJkIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjMgICAgICAgICAgU0NFTiAgICAgICAgICBMTF9VU0FSVF9Jc0VuYWJsZWRTbWFydGNhcmQKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMTkxMyw3ICsxOTMzLDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBTZXQgU21hcnRjYXJkIEF1dG8tUmV0cnkgQ291bnQgdmFsdWUgKFNDQVJDTlRbMjowXSBiaXRzKQotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19TTUFSVENBUkRfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNtYXJ0Y2FyZCBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBub3RlICAgVGhpcyBiaXQtZmllbGQgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgcmV0cmllcyBpbiB0cmFuc21pdCBhbmQgcmVjZWl2ZSwgaW4gU21hcnRjYXJkIG1vZGUuCiAgICogICAgICAgICBJbiB0cmFuc21pc3Npb24gbW9kZSwgaXQgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYXV0b21hdGljIHJldHJhbnNtaXNzaW9uIHJldHJpZXMsIGJlZm9yZQpAQCAtMTkzMiw3ICsxOTUyLDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBSZXR1cm4gU21hcnRjYXJkIEF1dG8tUmV0cnkgQ291bnQgdmFsdWUgKFNDQVJDTlRbMjowXSBiaXRzKQotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19TTUFSVENBUkRfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNtYXJ0Y2FyZCBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IzICAgICAgICAgIFNDQVJDTlQgICAgICAgTExfVVNBUlRfR2V0U21hcnRjYXJkQXV0b1JldHJ5Q291bnQKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMTk0Niw3ICsxOTY2LDcgQEAKIC8qKgogICAqIEBicmllZiAgU2V0IFNtYXJ0Y2FyZCBwcmVzY2FsZXIgdmFsdWUsIHVzZWQgZm9yIGRpdmlkaW5nIHRoZSBVU0FSVCBjbG9jawogICAqICAgICAgICAgc291cmNlIHRvIHByb3ZpZGUgdGhlIFNNQVJUQ0FSRCBDbG9jayAoNSBiaXRzIHZhbHVlKQotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19TTUFSVENBUkRfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNtYXJ0Y2FyZCBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgR1RQUiAgICAgICAgIFBTQyAgICAgICAgICAgTExfVVNBUlRfU2V0U21hcnRjYXJkUHJlc2NhbGVyCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTE5NjEsNyArMTk4MSw3IEBACiAvKioKICAgKiBAYnJpZWYgIFJldHVybiBTbWFydGNhcmQgcHJlc2NhbGVyIHZhbHVlLCB1c2VkIGZvciBkaXZpZGluZyB0aGUgVVNBUlQgY2xvY2sKICAgKiAgICAgICAgIHNvdXJjZSB0byBwcm92aWRlIHRoZSBTTUFSVENBUkQgQ2xvY2sgKDUgYml0cyB2YWx1ZSkKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTbWFydGNhcmQgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIEdUUFIgICAgICAgICBQU0MgICAgICAgICAgIExMX1VTQVJUX0dldFNtYXJ0Y2FyZFByZXNjYWxlcgogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0xOTc1LDcgKzE5OTUsNyBAQAogLyoqCiAgICogQGJyaWVmICBTZXQgU21hcnRjYXJkIEd1YXJkIHRpbWUgdmFsdWUsIGV4cHJlc3NlZCBpbiBuYiBvZiBiYXVkIGNsb2NrcyBwZXJpb2RzCiAgICogICAgICAgICAoR1RbNzowXSBiaXRzIDogR3VhcmQgdGltZSB2YWx1ZSkKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTbWFydGNhcmQgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIEdUUFIgICAgICAgICBHVCAgICAgICAgICAgIExMX1VTQVJUX1NldFNtYXJ0Y2FyZEd1YXJkVGltZQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0xOTkwLDcgKzIwMTAsNyBAQAogLyoqCiAgICogQGJyaWVmICBSZXR1cm4gU21hcnRjYXJkIEd1YXJkIHRpbWUgdmFsdWUsIGV4cHJlc3NlZCBpbiBuYiBvZiBiYXVkIGNsb2NrcyBwZXJpb2RzCiAgICogICAgICAgICAoR1RbNzowXSBiaXRzIDogR3VhcmQgdGltZSB2YWx1ZSkKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTbWFydGNhcmQgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIEdUUFIgICAgICAgICBHVCAgICAgICAgICAgIExMX1VTQVJUX0dldFNtYXJ0Y2FyZEd1YXJkVGltZQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0yMDExLDcgKzIwMzEsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEVuYWJsZSBTaW5nbGUgV2lyZSBIYWxmLUR1cGxleCBtb2RlCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1VBUlRfSEFMRkRVUExFWF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX0hBTEZEVVBMRVhfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgSGFsZi1EdXBsZXggbW9kZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMyAgICAgICAgICBIRFNFTCAgICAgICAgIExMX1VTQVJUX0VuYWJsZUhhbGZEdXBsZXgKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMjAyNCw3ICsyMDQ0LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBEaXNhYmxlIFNpbmdsZSBXaXJlIEhhbGYtRHVwbGV4IG1vZGUKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVUFSVF9IQUxGRFVQTEVYX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VBUlRfSEFMRkRVUExFWF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBIYWxmLUR1cGxleCBtb2RlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IzICAgICAgICAgIEhEU0VMICAgICAgICAgTExfVVNBUlRfRGlzYWJsZUhhbGZEdXBsZXgKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMjAzNyw3ICsyMDU3LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBJbmRpY2F0ZSBpZiBTaW5nbGUgV2lyZSBIYWxmLUR1cGxleCBtb2RlIGlzIGVuYWJsZWQKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVUFSVF9IQUxGRFVQTEVYX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VBUlRfSEFMRkRVUExFWF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBIYWxmLUR1cGxleCBtb2RlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IzICAgICAgICAgIEhEU0VMICAgICAgICAgTExfVVNBUlRfSXNFbmFibGVkSGFsZkR1cGxleAogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0yMDU4LDcgKzIwNzgsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIFNldCBMSU4gQnJlYWsgRGV0ZWN0aW9uIExlbmd0aAotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0xJTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX0xJTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBMSU4gZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMiAgICAgICAgICBMQkRMICAgICAgICAgIExMX1VTQVJUX1NldExJTkJya0RldGVjdGlvbkxlbgogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0yMDc0LDcgKzIwOTQsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIFJldHVybiBMSU4gQnJlYWsgRGV0ZWN0aW9uIExlbmd0aAotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0xJTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX0xJTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBMSU4gZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMiAgICAgICAgICBMQkRMICAgICAgICAgIExMX1VTQVJUX0dldExJTkJya0RldGVjdGlvbkxlbgogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0yMDg5LDcgKzIxMDksNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEVuYWJsZSBMSU4gbW9kZQotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0xJTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX0xJTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBMSU4gZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMiAgICAgICAgICBMSU5FTiAgICAgICAgIExMX1VTQVJUX0VuYWJsZUxJTgogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0yMTAyLDcgKzIxMjIsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIERpc2FibGUgTElOIG1vZGUKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVUFSVF9MSU5fSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVUFSVF9MSU5fSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgTElOIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjIgICAgICAgICAgTElORU4gICAgICAgICBMTF9VU0FSVF9EaXNhYmxlTElOCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTIxMTUsNyArMjEzNSw3IEBACiAKIC8qKgogICAqIEBicmllZiAgSW5kaWNhdGUgaWYgTElOIG1vZGUgaXMgZW5hYmxlZAotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0xJTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX0xJTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBMSU4gZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMiAgICAgICAgICBMSU5FTiAgICAgICAgIExMX1VTQVJUX0lzRW5hYmxlZExJTgogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0yMTM2LDcgKzIxNTYsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIFNldCBERURUIChEcml2ZXIgRW5hYmxlIERlLUFzc2VydGlvbiBUaW1lKSwgVGltZSB2YWx1ZSBleHByZXNzZWQgb24gNSBiaXRzIChbNDowXSBiaXRzKS4KLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVUFSVF9EUklWRVJfRU5BQkxFX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VBUlRfRFJJVkVSX0VOQUJMRV9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBEcml2ZXIgRW5hYmxlIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjEgICAgICAgICAgREVEVCAgICAgICAgICBMTF9VU0FSVF9TZXRERURlYXNzZXJ0aW9uVGltZQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0yMTUwLDcgKzIxNzAsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIFJldHVybiBERURUIChEcml2ZXIgRW5hYmxlIERlLUFzc2VydGlvbiBUaW1lKQotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0RSSVZFUl9FTkFCTEVfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVUFSVF9EUklWRVJfRU5BQkxFX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIERyaXZlciBFbmFibGUgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMSAgICAgICAgICBERURUICAgICAgICAgIExMX1VTQVJUX0dldERFRGVhc3NlcnRpb25UaW1lCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTIxNjMsNyArMjE4Myw3IEBACiAKIC8qKgogICAqIEBicmllZiAgU2V0IERFQVQgKERyaXZlciBFbmFibGUgQXNzZXJ0aW9uIFRpbWUpLCBUaW1lIHZhbHVlIGV4cHJlc3NlZCBvbiA1IGJpdHMgKFs0OjBdIGJpdHMpLgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0RSSVZFUl9FTkFCTEVfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVUFSVF9EUklWRVJfRU5BQkxFX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIERyaXZlciBFbmFibGUgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMSAgICAgICAgICBERUFUICAgICAgICAgIExMX1VTQVJUX1NldERFQXNzZXJ0aW9uVGltZQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0yMTc3LDcgKzIxOTcsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIFJldHVybiBERUFUIChEcml2ZXIgRW5hYmxlIEFzc2VydGlvbiBUaW1lKQotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0RSSVZFUl9FTkFCTEVfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVUFSVF9EUklWRVJfRU5BQkxFX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIERyaXZlciBFbmFibGUgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMSAgICAgICAgICBERUFUICAgICAgICAgIExMX1VTQVJUX0dldERFQXNzZXJ0aW9uVGltZQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0yMTkwLDcgKzIyMTAsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEVuYWJsZSBEcml2ZXIgRW5hYmxlIChERSkgTW9kZQotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0RSSVZFUl9FTkFCTEVfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVUFSVF9EUklWRVJfRU5BQkxFX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIERyaXZlciBFbmFibGUgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMyAgICAgICAgICBERU0gICAgICAgICAgIExMX1VTQVJUX0VuYWJsZURFTW9kZQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0yMjAzLDcgKzIyMjMsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIERpc2FibGUgRHJpdmVyIEVuYWJsZSAoREUpIE1vZGUKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVUFSVF9EUklWRVJfRU5BQkxFX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VBUlRfRFJJVkVSX0VOQUJMRV9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBEcml2ZXIgRW5hYmxlIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjMgICAgICAgICAgREVNICAgICAgICAgICBMTF9VU0FSVF9EaXNhYmxlREVNb2RlCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTIyMTYsNyArMjIzNiw3IEBACiAKIC8qKgogICAqIEBicmllZiAgSW5kaWNhdGUgaWYgRHJpdmVyIEVuYWJsZSAoREUpIE1vZGUgaXMgZW5hYmxlZAotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0RSSVZFUl9FTkFCTEVfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVUFSVF9EUklWRVJfRU5BQkxFX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIERyaXZlciBFbmFibGUgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMyAgICAgICAgICBERU0gICAgICAgICAgIExMX1VTQVJUX0lzRW5hYmxlZERFTW9kZQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0yMjI5LDcgKzIyNDksNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIFNlbGVjdCBEcml2ZXIgRW5hYmxlIFBvbGFyaXR5Ci0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1VBUlRfRFJJVkVSX0VOQUJMRV9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX0RSSVZFUl9FTkFCTEVfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgRHJpdmVyIEVuYWJsZSBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IzICAgICAgICAgIERFUCAgICAgICAgICAgTExfVVNBUlRfU2V0REVTaWduYWxQb2xhcml0eQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0yMjQ1LDcgKzIyNjUsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIFJldHVybiBEcml2ZXIgRW5hYmxlIFBvbGFyaXR5Ci0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1VBUlRfRFJJVkVSX0VOQUJMRV9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX0RSSVZFUl9FTkFCTEVfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgRHJpdmVyIEVuYWJsZSBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IzICAgICAgICAgIERFUCAgICAgICAgICAgTExfVVNBUlRfR2V0REVTaWduYWxQb2xhcml0eQogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0yMzA5LDcgKzIzMjksNyBAQAogICAqICAgICAgICAgICAtIElSRU4gYml0IGluIHRoZSBVU0FSVF9DUjMgcmVnaXN0ZXIsCiAgICogICAgICAgICAgIC0gSERTRUwgYml0IGluIHRoZSBVU0FSVF9DUjMgcmVnaXN0ZXIuCiAgICogICAgICAgICBUaGlzIGZ1bmN0aW9uIGFsc28gc2V0cyB0aGUgVVNBUlQgaW4gU3luY2hyb25vdXMgbW9kZS4KLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVVNBUlRfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVVNBUlRfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU3luY2hyb25vdXMgbW9kZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAbm90ZSAgIENhbGwgb2YgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGZvbGxvd2luZyBmdW5jdGlvbiBjYWxsIHNlcXVlbmNlIDoKICAgKiAgICAgICAgIC0gQ2xlYXIgTElORU4gaW4gQ1IyIHVzaW5nIEByZWYgTExfVVNBUlRfRGlzYWJsZUxJTigpIGZ1bmN0aW9uCkBAIC0yMzQ4LDcgKzIzNjgsNyBAQAogICAqICAgICAgICAgICAtIElSRU4gYml0IGluIHRoZSBVU0FSVF9DUjMgcmVnaXN0ZXIsCiAgICogICAgICAgICAgIC0gSERTRUwgYml0IGluIHRoZSBVU0FSVF9DUjMgcmVnaXN0ZXIuCiAgICogICAgICAgICBUaGlzIGZ1bmN0aW9uIGFsc28gc2V0IHRoZSBVQVJUL1VTQVJUIGluIExJTiBtb2RlLgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0xJTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX0xJTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBMSU4gZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAbm90ZSAgIENhbGwgb2YgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGZvbGxvd2luZyBmdW5jdGlvbiBjYWxsIHNlcXVlbmNlIDoKICAgKiAgICAgICAgIC0gQ2xlYXIgQ0xLRU4gaW4gQ1IyIHVzaW5nIEByZWYgTExfVVNBUlRfRGlzYWJsZVNDTEtPdXRwdXQoKSBmdW5jdGlvbgpAQCAtMjM4OSw3ICsyNDA5LDcgQEAKICAgKiAgICAgICAgICAgLSBTQ0VOIGJpdCBpbiB0aGUgVVNBUlRfQ1IzIHJlZ2lzdGVyLAogICAqICAgICAgICAgICAtIElSRU4gYml0IGluIHRoZSBVU0FSVF9DUjMgcmVnaXN0ZXIsCiAgICogICAgICAgICBUaGlzIGZ1bmN0aW9uIGFsc28gc2V0cyB0aGUgVUFSVC9VU0FSVCBpbiBIYWxmIER1cGxleCBtb2RlLgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0hBTEZEVVBMRVhfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVUFSVF9IQUxGRFVQTEVYX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIEhhbGYtRHVwbGV4IG1vZGUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQG5vdGUgICBDYWxsIG9mIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBmb2xsb3dpbmcgZnVuY3Rpb24gY2FsbCBzZXF1ZW5jZSA6CiAgICogICAgICAgICAtIENsZWFyIExJTkVOIGluIENSMiB1c2luZyBAcmVmIExMX1VTQVJUX0Rpc2FibGVMSU4oKSBmdW5jdGlvbgpAQCAtMjQyOSw3ICsyNDQ5LDcgQEAKICAgKiAgICAgICAgIFRoaXMgZnVuY3Rpb24gYWxzbyBjb25maWd1cmVzIFN0b3AgYml0cyB0byAxLjUgYml0cyBhbmQKICAgKiAgICAgICAgIHNldHMgdGhlIFVTQVJUIGluIFNtYXJ0Y2FyZCBtb2RlIChTQ0VOIGJpdCkuCiAgICogICAgICAgICBDbG9jayBPdXRwdXQgaXMgYWxzbyBlbmFibGVkIChDTEtFTikuCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19TTUFSVENBUkRfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU21hcnRjYXJkIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQG5vdGUgICBDYWxsIG9mIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBmb2xsb3dpbmcgZnVuY3Rpb24gY2FsbCBzZXF1ZW5jZSA6CiAgICogICAgICAgICAtIENsZWFyIExJTkVOIGluIENSMiB1c2luZyBAcmVmIExMX1VTQVJUX0Rpc2FibGVMSU4oKSBmdW5jdGlvbgpAQCAtMjQ3Miw3ICsyNDkyLDcgQEAKICAgKiAgICAgICAgICAgLSBTQ0VOIGJpdCBpbiB0aGUgVVNBUlRfQ1IzIHJlZ2lzdGVyLAogICAqICAgICAgICAgICAtIEhEU0VMIGJpdCBpbiB0aGUgVVNBUlRfQ1IzIHJlZ2lzdGVyLgogICAqICAgICAgICAgVGhpcyBmdW5jdGlvbiBhbHNvIHNldHMgdGhlIFVBUlQvVVNBUlQgaW4gSVJEQSBtb2RlIChJUkVOIGJpdCkuCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX0lSREFfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfSVJEQV9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBJckRBIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQG5vdGUgICBDYWxsIG9mIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBmb2xsb3dpbmcgZnVuY3Rpb24gY2FsbCBzZXF1ZW5jZSA6CiAgICogICAgICAgICAtIENsZWFyIExJTkVOIGluIENSMiB1c2luZyBAcmVmIExMX1VTQVJUX0Rpc2FibGVMSU4oKSBmdW5jdGlvbgpAQCAtMjY0MCw3ICsyNjYwLDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBDaGVjayBpZiB0aGUgVVNBUlQgTElOIEJyZWFrIERldGVjdGlvbiBGbGFnIGlzIHNldCBvciBub3QKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVUFSVF9MSU5fSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVUFSVF9MSU5fSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgTElOIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBJU1IgICAgICAgICAgTEJERiAgICAgICAgICBMTF9VU0FSVF9Jc0FjdGl2ZUZsYWdfTEJECiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTI2NTMsNyArMjY3Myw3IEBACiAKIC8qKgogICAqIEBicmllZiAgQ2hlY2sgaWYgdGhlIFVTQVJUIENUUyBpbnRlcnJ1cHQgRmxhZyBpcyBzZXQgb3Igbm90Ci0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1VBUlRfSFdGTE9XX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VBUlRfSFdGTE9XX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIEhhcmR3YXJlIEZsb3cgY29udHJvbCBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgSVNSICAgICAgICAgIENUU0lGICAgICAgICAgTExfVVNBUlRfSXNBY3RpdmVGbGFnX25DVFMKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMjY2Niw3ICsyNjg2LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBDaGVjayBpZiB0aGUgVVNBUlQgQ1RTIEZsYWcgaXMgc2V0IG9yIG5vdAotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0hXRkxPV19JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX0hXRkxPV19JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBIYXJkd2FyZSBGbG93IGNvbnRyb2wgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIElTUiAgICAgICAgICBDVFMgICAgICAgICAgIExMX1VTQVJUX0lzQWN0aXZlRmxhZ19DVFMKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMjY5MCw3ICsyNzEwLDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBDaGVjayBpZiB0aGUgVVNBUlQgRW5kIE9mIEJsb2NrIEZsYWcgaXMgc2V0IG9yIG5vdAotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19TTUFSVENBUkRfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNtYXJ0Y2FyZCBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgSVNSICAgICAgICAgIEVPQkYgICAgICAgICAgTExfVVNBUlRfSXNBY3RpdmVGbGFnX0VPQgogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0yNzAzLDcgKzI3MjMsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIENoZWNrIGlmIHRoZSBVU0FSVCBBdXRvLUJhdWQgUmF0ZSBFcnJvciBGbGFnIGlzIHNldCBvciBub3QKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVVNBUlRfQVVUT0JBVURSQVRFX0RFVEVDVElPTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VU0FSVF9BVVRPQkFVRFJBVEVfREVURUNUSU9OX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIEF1dG8gQmF1ZCBSYXRlIGRldGVjdGlvbiBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgSVNSICAgICAgICAgIEFCUkUgICAgICAgICAgTExfVVNBUlRfSXNBY3RpdmVGbGFnX0FCUkUKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMjcxNiw3ICsyNzM2LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBDaGVjayBpZiB0aGUgVVNBUlQgQXV0by1CYXVkIFJhdGUgRmxhZyBpcyBzZXQgb3Igbm90Ci0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1VTQVJUX0FVVE9CQVVEUkFURV9ERVRFQ1RJT05fSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVVNBUlRfQVVUT0JBVURSQVRFX0RFVEVDVElPTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBBdXRvIEJhdWQgUmF0ZSBkZXRlY3Rpb24gZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIElTUiAgICAgICAgICBBQlJGICAgICAgICAgIExMX1VTQVJUX0lzQWN0aXZlRmxhZ19BQlIKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMjc3Miw5ICsyNzkyLDEwIEBACiB9CiAKICNpZiBkZWZpbmVkKFVTQVJUX0NSMV9VRVNNKQorI2lmIGRlZmluZWQoVVNBUlRfQ1IzX1dVRklFKQogLyoqCiAgICogQGJyaWVmICBDaGVjayBpZiB0aGUgVVNBUlQgV2FrZSBVcCBmcm9tIHN0b3AgbW9kZSBGbGFnIGlzIHNldCBvciBub3QKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVUFSVF9XQUtFVVBfRlJPTVNUT1BfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVUFSVF9XQUtFVVBfRlJPTVNUT1BfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgV2FrZS11cCBmcm9tIFN0b3AgbW9kZSBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgSVNSICAgICAgICAgIFdVRiAgICAgICAgICAgTExfVVNBUlRfSXNBY3RpdmVGbGFnX1dLVVAKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMjc4NSw2ICsyODA2LDcgQEAKICAgcmV0dXJuICgoUkVBRF9CSVQoVVNBUlR4LT5JU1IsIFVTQVJUX0lTUl9XVUYpID09IChVU0FSVF9JU1JfV1VGKSkgPyAxVUwgOiAwVUwpOwogfQogCisjZW5kaWYgLyogVVNBUlRfQ1IzX1dVRklFICovCiAjZW5kaWYgLyogVVNBUlRfQ1IxX1VFU00gKi8KIC8qKgogICAqIEBicmllZiAgQ2hlY2sgaWYgdGhlIFVTQVJUIFRyYW5zbWl0IEVuYWJsZSBBY2tub3dsZWRnZSBGbGFnIGlzIHNldCBvciBub3QKQEAgLTI5MDYsNyArMjkyOCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgQ2xlYXIgTElOIEJyZWFrIERldGVjdGlvbiBGbGFnCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1VBUlRfTElOX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VBUlRfTElOX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIExJTiBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgSUNSICAgICAgICAgIExCRENGICAgICAgICAgTExfVVNBUlRfQ2xlYXJGbGFnX0xCRAogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0yOTE5LDcgKzI5NDEsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIENsZWFyIENUUyBJbnRlcnJ1cHQgRmxhZwotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0hXRkxPV19JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX0hXRkxPV19JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBIYXJkd2FyZSBGbG93IGNvbnRyb2wgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIElDUiAgICAgICAgICBDVFNDRiAgICAgICAgIExMX1VTQVJUX0NsZWFyRmxhZ19uQ1RTCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTI5NDMsNyArMjk2NSw3IEBACiAKIC8qKgogICAqIEBicmllZiAgQ2xlYXIgRW5kIE9mIEJsb2NrIEZsYWcKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTbWFydGNhcmQgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIElDUiAgICAgICAgICBFT0JDRiAgICAgICAgIExMX1VTQVJUX0NsZWFyRmxhZ19FT0IKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMjk2Niw5ICsyOTg4LDEwIEBACiB9CiAKICNpZiBkZWZpbmVkKFVTQVJUX0NSMV9VRVNNKQorI2lmIGRlZmluZWQoVVNBUlRfQ1IzX1dVRklFKQogLyoqCiAgICogQGJyaWVmICBDbGVhciBXYWtlIFVwIGZyb20gc3RvcCBtb2RlIEZsYWcKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVUFSVF9XQUtFVVBfRlJPTVNUT1BfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVUFSVF9XQUtFVVBfRlJPTVNUT1BfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgV2FrZS11cCBmcm9tIFN0b3AgbW9kZSBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgSUNSICAgICAgICAgIFdVQ0YgICAgICAgICAgTExfVVNBUlRfQ2xlYXJGbGFnX1dLVVAKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMjk3OSw2ICszMDAyLDcgQEAKICAgV1JJVEVfUkVHKFVTQVJUeC0+SUNSLCBVU0FSVF9JQ1JfV1VDRik7CiB9CiAKKyNlbmRpZiAvKiBVU0FSVF9DUjNfV1VGSUUgKi8KICNlbmRpZiAvKiBVU0FSVF9DUjFfVUVTTSAqLwogLyoqCiAgICogQH0KQEAgLTMwNjcsNyArMzA5MSw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRW5hYmxlIEVuZCBPZiBCbG9jayBJbnRlcnJ1cHQKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTbWFydGNhcmQgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMSAgICAgICAgICBFT0JJRSAgICAgICAgIExMX1VTQVJUX0VuYWJsZUlUX0VPQgogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0zMDgwLDcgKzMxMDQsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEVuYWJsZSBMSU4gQnJlYWsgRGV0ZWN0aW9uIEludGVycnVwdAotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0xJTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX0xJTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBMSU4gZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMiAgICAgICAgICBMQkRJRSAgICAgICAgIExMX1VTQVJUX0VuYWJsZUlUX0xCRAogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0zMTA4LDcgKzMxMzIsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIEVuYWJsZSBDVFMgSW50ZXJydXB0Ci0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1VBUlRfSFdGTE9XX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VBUlRfSFdGTE9XX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIEhhcmR3YXJlIEZsb3cgY29udHJvbCBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IzICAgICAgICAgIENUU0lFICAgICAgICAgTExfVVNBUlRfRW5hYmxlSVRfQ1RTCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTMxMjAsOSArMzE0NCwxMCBAQAogfQogCiAjaWYgZGVmaW5lZChVU0FSVF9DUjFfVUVTTSkKKyNpZiBkZWZpbmVkKFVTQVJUX0NSM19XVUZJRSkKIC8qKgogICAqIEBicmllZiAgRW5hYmxlIFdha2UgVXAgZnJvbSBTdG9wIE1vZGUgSW50ZXJydXB0Ci0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1VBUlRfV0FLRVVQX0ZST01TVE9QX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VBUlRfV0FLRVVQX0ZST01TVE9QX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFdha2UtdXAgZnJvbSBTdG9wIG1vZGUgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMyAgICAgICAgICBXVUZJRSAgICAgICAgIExMX1VTQVJUX0VuYWJsZUlUX1dLVVAKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMzEzMywxMiArMzE1OCwxMyBAQAogICBTRVRfQklUKFVTQVJUeC0+Q1IzLCBVU0FSVF9DUjNfV1VGSUUpOwogfQogCisjZW5kaWYgLyogVVNBUlRfQ1IzX1dVRklFICovCiAjZW5kaWYgLyogVVNBUlRfQ1IxX1VFU00gKi8KICNpZiBkZWZpbmVkKFVTQVJUX1RDQkdUX1NVUFBPUlQpCiAvKiBGdW5jdGlvbiBhdmFpbGFibGUgb25seSBvbiBkZXZpY2VzIHN1cHBvcnRpbmcgVHJhbnNtaXQgQ29tcGxldGUgYmVmb3JlIEd1YXJkIFRpbWUgZmVhdHVyZSAqLwogLyoqCiAgICogQGJyaWVmICBFbmFibGUgU21hcnRjYXJkIFRyYW5zbWlzc2lvbiBDb21wbGV0ZSBCZWZvcmUgR3VhcmQgVGltZSBJbnRlcnJ1cHQKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTbWFydGNhcmQgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMyAgICAgICAgICBUQ0JHVElFICAgICAgIExMX1VTQVJUX0VuYWJsZUlUX1RDQkdUCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTMyMjksNyArMzI1NSw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRGlzYWJsZSBFbmQgT2YgQmxvY2sgSW50ZXJydXB0Ci0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19TTUFSVENBUkRfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgU21hcnRjYXJkIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjEgICAgICAgICAgRU9CSUUgICAgICAgICBMTF9VU0FSVF9EaXNhYmxlSVRfRU9CCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTMyNDIsNyArMzI2OCw3IEBACiAKIC8qKgogICAqIEBicmllZiAgRGlzYWJsZSBMSU4gQnJlYWsgRGV0ZWN0aW9uIEludGVycnVwdAotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0xJTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX0xJTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBMSU4gZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMiAgICAgICAgICBMQkRJRSAgICAgICAgIExMX1VTQVJUX0Rpc2FibGVJVF9MQkQKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMzI3MCw3ICszMjk2LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBEaXNhYmxlIENUUyBJbnRlcnJ1cHQKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfVUFSVF9IV0ZMT1dfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfVUFSVF9IV0ZMT1dfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgSGFyZHdhcmUgRmxvdyBjb250cm9sIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjMgICAgICAgICAgQ1RTSUUgICAgICAgICBMTF9VU0FSVF9EaXNhYmxlSVRfQ1RTCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTMyODIsOSArMzMwOCwxMCBAQAogfQogCiAjaWYgZGVmaW5lZChVU0FSVF9DUjFfVUVTTSkKKyNpZiBkZWZpbmVkKFVTQVJUX0NSM19XVUZJRSkKIC8qKgogICAqIEBicmllZiAgRGlzYWJsZSBXYWtlIFVwIGZyb20gU3RvcCBNb2RlIEludGVycnVwdAotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX1dBS0VVUF9GUk9NU1RPUF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX1dBS0VVUF9GUk9NU1RPUF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBXYWtlLXVwIGZyb20gU3RvcCBtb2RlIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBDUjMgICAgICAgICAgV1VGSUUgICAgICAgICBMTF9VU0FSVF9EaXNhYmxlSVRfV0tVUAogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0zMjk1LDEyICszMzIyLDEzIEBACiAgIENMRUFSX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX1dVRklFKTsKIH0KIAorI2VuZGlmIC8qIFVTQVJUX0NSM19XVUZJRSAqLwogI2VuZGlmIC8qIFVTQVJUX0NSMV9VRVNNICovCiAjaWYgZGVmaW5lZChVU0FSVF9UQ0JHVF9TVVBQT1JUKQogLyogRnVuY3Rpb24gYXZhaWxhYmxlIG9ubHkgb24gZGV2aWNlcyBzdXBwb3J0aW5nIFRyYW5zbWl0IENvbXBsZXRlIGJlZm9yZSBHdWFyZCBUaW1lIGZlYXR1cmUgKi8KIC8qKgogICAqIEBicmllZiAgRGlzYWJsZSBTbWFydGNhcmQgVHJhbnNtaXNzaW9uIENvbXBsZXRlIEJlZm9yZSBHdWFyZCBUaW1lIEludGVycnVwdAotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19TTUFSVENBUkRfSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAorICAqIEBub3RlICAgTWFjcm8gSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFNtYXJ0Y2FyZCBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IzICAgICAgICAgIFRDQkdUSUUgICAgICAgTExfVVNBUlRfRGlzYWJsZUlUX1RDQkdUCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTMzOTEsNyArMzQxOSw3IEBACiAKIC8qKgogICAqIEBicmllZiAgQ2hlY2sgaWYgdGhlIFVTQVJUIEVuZCBPZiBCbG9jayBJbnRlcnJ1cHQgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTbWFydGNhcmQgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMSAgICAgICAgICBFT0JJRSAgICAgICAgIExMX1VTQVJUX0lzRW5hYmxlZElUX0VPQgogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0zNDA0LDcgKzM0MzIsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIENoZWNrIGlmIHRoZSBVU0FSVCBMSU4gQnJlYWsgRGV0ZWN0aW9uIEludGVycnVwdCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VQVJUX0xJTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CisgICogQG5vdGUgICBNYWNybyBJU19VQVJUX0xJTl9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBMSU4gZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMiAgICAgICAgICBMQkRJRSAgICAgICAgIExMX1VTQVJUX0lzRW5hYmxlZElUX0xCRAogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCkBAIC0zNDI4LDcgKzM0NTYsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgIENoZWNrIGlmIHRoZSBVU0FSVCBDVFMgSW50ZXJydXB0IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1VBUlRfSFdGTE9XX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VBUlRfSFdGTE9XX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIEhhcmR3YXJlIEZsb3cgY29udHJvbCBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgVVNBUlR4IGluc3RhbmNlLgogICAqIEBybXRvbGwgQ1IzICAgICAgICAgIENUU0lFICAgICAgICAgTExfVVNBUlRfSXNFbmFibGVkSVRfQ1RTCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTM0NDAsOSArMzQ2OCwxMCBAQAogfQogCiAjaWYgZGVmaW5lZChVU0FSVF9DUjFfVUVTTSkKKyNpZiBkZWZpbmVkKFVTQVJUX0NSM19XVUZJRSkKIC8qKgogICAqIEBicmllZiAgQ2hlY2sgaWYgdGhlIFVTQVJUIFdha2UgVXAgZnJvbSBTdG9wIE1vZGUgSW50ZXJydXB0IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCi0gICogQG5vdGUgICBNYWNybyBAcmVmIElTX1VBUlRfV0FLRVVQX0ZST01TVE9QX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VBUlRfV0FLRVVQX0ZST01TVE9QX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKICAgKiAgICAgICAgIFdha2UtdXAgZnJvbSBTdG9wIG1vZGUgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMyAgICAgICAgICBXVUZJRSAgICAgICAgIExMX1VTQVJUX0lzRW5hYmxlZElUX1dLVVAKICAgKiBAcGFyYW0gIFVTQVJUeCBVU0FSVCBJbnN0YW5jZQpAQCAtMzQ1MywxMiArMzQ4MiwxMyBAQAogICByZXR1cm4gKChSRUFEX0JJVChVU0FSVHgtPkNSMywgVVNBUlRfQ1IzX1dVRklFKSA9PSAoVVNBUlRfQ1IzX1dVRklFKSkgPyAxVUwgOiAwVUwpOwogfQogCisjZW5kaWYgLyogVVNBUlRfQ1IzX1dVRklFICovCiAjZW5kaWYgLyogVVNBUlRfQ1IxX1VFU00gKi8KICNpZiBkZWZpbmVkKFVTQVJUX1RDQkdUX1NVUFBPUlQpCiAvKiBGdW5jdGlvbiBhdmFpbGFibGUgb25seSBvbiBkZXZpY2VzIHN1cHBvcnRpbmcgVHJhbnNtaXQgQ29tcGxldGUgYmVmb3JlIEd1YXJkIFRpbWUgZmVhdHVyZSAqLwogLyoqCiAgICogQGJyaWVmICBDaGVjayBpZiB0aGUgU21hcnRjYXJkIFRyYW5zbWlzc2lvbiBDb21wbGV0ZSBCZWZvcmUgR3VhcmQgVGltZSBJbnRlcnJ1cHQgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTbWFydGNhcmQgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIENSMyAgICAgICAgICBUQ0JHVElFICAgICAgIExMX1VTQVJUX0lzRW5hYmxlZElUX1RDQkdUCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTM1ODksNyArMzYxOSw3IEBACiAgICovCiBfX1NUQVRJQ19JTkxJTkUgdWludDMyX3QgTExfVVNBUlRfRE1BX0dldFJlZ0FkZHIoVVNBUlRfVHlwZURlZiAqVVNBUlR4LCB1aW50MzJfdCBEaXJlY3Rpb24pCiB7Ci0gIHJlZ2lzdGVyIHVpbnQzMl90IGRhdGFfcmVnX2FkZHI7CisgIHVpbnQzMl90IGRhdGFfcmVnX2FkZHI7CiAKICAgaWYgKERpcmVjdGlvbiA9PSBMTF9VU0FSVF9ETUFfUkVHX0RBVEFfVFJBTlNNSVQpCiAgIHsKQEAgLTM2NjksNyArMzY5OSw3IEBACiAKIC8qKgogICAqIEBicmllZiAgUmVxdWVzdCBhbiBBdXRvbWF0aWMgQmF1ZCBSYXRlIG1lYXN1cmVtZW50IG9uIG5leHQgcmVjZWl2ZWQgZGF0YSBmcmFtZQotICAqIEBub3RlICAgTWFjcm8gQHJlZiBJU19VU0FSVF9BVVRPQkFVRFJBVEVfREVURUNUSU9OX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1VTQVJUX0FVVE9CQVVEUkFURV9ERVRFQ1RJT05fSU5TVEFOQ0UoVVNBUlR4KSBjYW4gYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9yIG5vdAogICAqICAgICAgICAgQXV0byBCYXVkIFJhdGUgZGV0ZWN0aW9uIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBVU0FSVHggaW5zdGFuY2UuCiAgICogQHJtdG9sbCBSUVIgICAgICAgICAgQUJSUlEgICAgICAgICBMTF9VU0FSVF9SZXF1ZXN0QXV0b0JhdWRSYXRlCiAgICogQHBhcmFtICBVU0FSVHggVVNBUlQgSW5zdGFuY2UKQEAgLTM3MTcsNyArMzc0Nyw3IEBACiAKIC8qKgogICAqIEBicmllZiAgUmVxdWVzdCBhIFRyYW5zbWl0IGRhdGEgZmx1c2gKLSAgKiBAbm90ZSAgIE1hY3JvIEByZWYgSVNfU01BUlRDQVJEX0lOU1RBTkNFKFVTQVJUeCkgY2FuIGJlIHVzZWQgdG8gY2hlY2sgd2hldGhlciBvciBub3QKKyAgKiBAbm90ZSAgIE1hY3JvIElTX1NNQVJUQ0FSRF9JTlNUQU5DRShVU0FSVHgpIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgb3Igbm90CiAgICogICAgICAgICBTbWFydGNhcmQgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgdGhlIFVTQVJUeCBpbnN0YW5jZS4KICAgKiBAcm10b2xsIFJRUiAgICAgICAgICBUWEZSUSAgICAgICAgIExMX1VTQVJUX1JlcXVlc3RUeERhdGFGbHVzaAogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCmRpZmYgLS1naXQgYS9JbmMvc3RtMzJmN3h4X2xsX3VzYi5oIGIvSW5jL3N0bTMyZjd4eF9sbF91c2IuaAppbmRleCA2ZDM3NjljLi45NTA0MmIyIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2xsX3VzYi5oCisrKyBiL0luYy9zdG0zMmY3eHhfbGxfdXNiLmgKQEAgLTgxLDcgKzgxLDcgQEAKIH0gVVNCX09UR19IQ1N0YXRlVHlwZURlZjsKIAogLyoqCi0gICogQGJyaWVmICBVU0IgT1RHIEluaXRpYWxpemF0aW9uIFN0cnVjdHVyZSBkZWZpbml0aW9uCisgICogQGJyaWVmICBVU0IgSW5zdGFuY2UgSW5pdGlhbGl6YXRpb24gU3RydWN0dXJlIGRlZmluaXRpb24KICAgKi8KIHR5cGVkZWYgc3RydWN0CiB7CkBAIC05NCwxNCArOTQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIE1pbl9EYXRhID0gMSBhbmQgTWF4X0RhdGEgPSAxNSAqLwogCiAgIHVpbnQzMl90IHNwZWVkOyAgICAgICAgICAgICAgICAgICAvKiE8IFVTQiBDb3JlIHNwZWVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgVVNCX0NvcmVfU3BlZWRfICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBVU0JfQ29yZV9TcGVlZCAgICAgICAgICAgICAgICAgKi8KIAogICB1aW50MzJfdCBkbWFfZW5hYmxlOyAgICAgICAgICAgICAgLyohPCBFbmFibGUgb3IgZGlzYWJsZSBvZiB0aGUgVVNCIGVtYmVkZGVkIERNQSB1c2VkIG9ubHkgZm9yIE9URyBIUy4gICAgICAgICovCiAKICAgdWludDMyX3QgZXAwX21wczsgICAgICAgICAgICAgICAgIC8qITwgU2V0IHRoZSBFbmRwb2ludCAwIE1heCBQYWNrZXQgc2l6ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogCiAgIHVpbnQzMl90IHBoeV9pdGZhY2U7ICAgICAgICAgICAgICAvKiE8IFNlbGVjdCB0aGUgdXNlZCBQSFkgaW50ZXJmYWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgVVNCX0NvcmVfUEhZXyAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBVU0JfQ29yZV9QSFkgICAgICAgICAgICAgICAgICAgKi8KIAogICB1aW50MzJfdCBTb2ZfZW5hYmxlOyAgICAgICAgICAgICAgLyohPCBFbmFibGUgb3IgZGlzYWJsZSB0aGUgb3V0cHV0IG9mIHRoZSBTT0Ygc2lnbmFsLiAgICAgICAgICAgICAgICAgICAgICAgICovCiAKQEAgLTExNiw2ICsxMTYsNyBAQAogICB1aW50MzJfdCB1c2VfZGVkaWNhdGVkX2VwMTsgICAgICAgLyohPCBFbmFibGUgb3IgZGlzYWJsZSB0aGUgdXNlIG9mIHRoZSBkZWRpY2F0ZWQgRVAxIGludGVycnVwdC4gICAgICAgICAgICAgICovCiAKICAgdWludDMyX3QgdXNlX2V4dGVybmFsX3ZidXM7ICAgICAgIC8qITwgRW5hYmxlIG9yIGRpc2FibGUgdGhlIHVzZSBvZiB0aGUgZXh0ZXJuYWwgVkJVUy4gICAgICAgICAgICAgICAgICAgICAgICAqLworCiB9IFVTQl9PVEdfQ2ZnVHlwZURlZjsKIAogdHlwZWRlZiBzdHJ1Y3QKQEAgLTE4NSw2ICsxODYsOCBAQAogCiAgIHVpbnQ4X3QgICAqeGZlcl9idWZmOyAgICAgICAgIC8qITwgUG9pbnRlciB0byB0cmFuc2ZlciBidWZmZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAorICB1aW50MzJfdCAgWGZlclNpemU7ICAgICAgICAgICAgIC8qITwgT1RHIENoYW5uZWwgdHJhbnNmZXIgc2l6ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCiAgIHVpbnQzMl90ICB4ZmVyX2xlbjsgICAgICAgICAgIC8qITwgQ3VycmVudCB0cmFuc2ZlciBsZW5ndGguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAogICB1aW50MzJfdCAgeGZlcl9jb3VudDsgICAgICAgICAvKiE8IFBhcnRpYWwgdHJhbnNmZXIgbGVuZ3RoIGluIGNhc2Ugb2YgbXVsdGkgcGFja2V0IHRyYW5zZmVyLiAgICAgICAgICAgICAgICAgICovCkBAIC0xOTcsMTMgKzIwMCwxMyBAQAogCiAgIHVpbnQzMl90ICBkbWFfYWRkcjsgICAgICAgICAgIC8qITwgMzIgYml0cyBhbGlnbmVkIHRyYW5zZmVyIGJ1ZmZlciBhZGRyZXNzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAotICB1aW50MzJfdCAgRXJyQ250OyAgICAgICAgICAgICAvKiE8IEhvc3QgY2hhbm5lbCBlcnJvciBjb3VudC4qLworICB1aW50MzJfdCAgRXJyQ250OyAgICAgICAgICAgICAvKiE8IEhvc3QgY2hhbm5lbCBlcnJvciBjb3VudC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAKICAgVVNCX09UR19VUkJTdGF0ZVR5cGVEZWYgdXJiX3N0YXRlOyAgLyohPCBVUkIgc3RhdGUuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBVU0JfT1RHX1VSQlN0YXRlVHlwZURlZiAqLwogCiAgIFVTQl9PVEdfSENTdGF0ZVR5cGVEZWYgc3RhdGU7ICAgICAgIC8qITwgSG9zdCBDaGFubmVsIHN0YXRlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBVU0JfT1RHX0hDU3RhdGVUeXBlRGVmICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAcmVmIFVTQl9PVEdfSENTdGF0ZVR5cGVEZWYgICovCiB9IFVTQl9PVEdfSENUeXBlRGVmOwogI2VuZGlmIC8qIGRlZmluZWQgKFVTQl9PVEdfRlMpIHx8IGRlZmluZWQgKFVTQl9PVEdfSFMpICovCiAKQEAgLTMxOCwxMCArMzIxLDEwIEBACiAvKiogQGRlZmdyb3VwIFVTQl9MTF9FUDBfTVBTIFVTQiBMb3cgTGF5ZXIgRVAwIE1QUwogICAqIEB7CiAgICovCi0jZGVmaW5lIERFUDBDVExfTVBTXzY0ICAgICAgICAgICAgICAgICAgICAgICAgIDBVCi0jZGVmaW5lIERFUDBDVExfTVBTXzMyICAgICAgICAgICAgICAgICAgICAgICAgIDFVCi0jZGVmaW5lIERFUDBDVExfTVBTXzE2ICAgICAgICAgICAgICAgICAgICAgICAgIDJVCi0jZGVmaW5lIERFUDBDVExfTVBTXzggICAgICAgICAgICAgICAgICAgICAgICAgIDNVCisjZGVmaW5lIEVQX01QU182NCAgICAgICAgICAgICAgICAgICAgICAgIDBVCisjZGVmaW5lIEVQX01QU18zMiAgICAgICAgICAgICAgICAgICAgICAgIDFVCisjZGVmaW5lIEVQX01QU18xNiAgICAgICAgICAgICAgICAgICAgICAgIDJVCisjZGVmaW5lIEVQX01QU184ICAgICAgICAgICAgICAgICAgICAgICAgIDNVCiAvKioKICAgKiBAfQogICAqLwpAQCAtNDA4LDcgKzQxMSw3IEBACiAjZGVmaW5lIFVTQlBIWUMgICAgICAgICAoKFVTQlBIWUNfR2xvYmFsVHlwZURlZiAqKSgodWludDMyX3QgKVVTQl9QSFlfSFNfQ09OVFJPTExFUl9CQVNFKSkKICNlbmRpZiAvKiBkZWZpbmVkIChVU0JfT1RHX0ZTKSB8fCBkZWZpbmVkIChVU0JfT1RHX0hTKSAqLwogCi0jZGVmaW5lIEVQX0FERFJfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAweEZVCisjZGVmaW5lIEVQX0FERFJfTVNLICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RlUKIC8qKgogICAqIEB9CiAgICovCkBAIC00NDgsNyArNDUxLDkgQEAKIEhBTF9TdGF0dXNUeXBlRGVmIFVTQl9EZWFjdGl2YXRlRGVkaWNhdGVkRW5kcG9pbnQoVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4LCBVU0JfT1RHX0VQVHlwZURlZiAqZXApOwogSEFMX1N0YXR1c1R5cGVEZWYgVVNCX0VQU3RhcnRYZmVyKFVTQl9PVEdfR2xvYmFsVHlwZURlZiAqVVNCeCwgVVNCX09UR19FUFR5cGVEZWYgKmVwLCB1aW50OF90IGRtYSk7CiBIQUxfU3RhdHVzVHlwZURlZiBVU0JfRVAwU3RhcnRYZmVyKFVTQl9PVEdfR2xvYmFsVHlwZURlZiAqVVNCeCwgVVNCX09UR19FUFR5cGVEZWYgKmVwLCB1aW50OF90IGRtYSk7Ci1IQUxfU3RhdHVzVHlwZURlZiBVU0JfV3JpdGVQYWNrZXQoVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4LCB1aW50OF90ICpzcmMsIHVpbnQ4X3QgY2hfZXBfbnVtLCB1aW50MTZfdCBsZW4sIHVpbnQ4X3QgZG1hKTsKK0hBTF9TdGF0dXNUeXBlRGVmIFVTQl9Xcml0ZVBhY2tldChVU0JfT1RHX0dsb2JhbFR5cGVEZWYgKlVTQngsIHVpbnQ4X3QgKnNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGNoX2VwX251bSwgdWludDE2X3QgbGVuLCB1aW50OF90IGRtYSk7CisKIHZvaWQgICAgICAgICAgICAgKlVTQl9SZWFkUGFja2V0KFVTQl9PVEdfR2xvYmFsVHlwZURlZiAqVVNCeCwgdWludDhfdCAqZGVzdCwgdWludDE2X3QgbGVuKTsKIEhBTF9TdGF0dXNUeXBlRGVmIFVTQl9FUFNldFN0YWxsKFVTQl9PVEdfR2xvYmFsVHlwZURlZiAqVVNCeCwgVVNCX09UR19FUFR5cGVEZWYgKmVwKTsKIEhBTF9TdGF0dXNUeXBlRGVmIFVTQl9FUENsZWFyU3RhbGwoVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4LCBVU0JfT1RHX0VQVHlwZURlZiAqZXApOwpAQCAtNDc2LDcgKzQ4MSw5IEBACiBIQUxfU3RhdHVzVHlwZURlZiBVU0JfSENfSW5pdChVU0JfT1RHX0dsb2JhbFR5cGVEZWYgKlVTQngsIHVpbnQ4X3QgY2hfbnVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBlcG51bSwgdWludDhfdCBkZXZfYWRkcmVzcywgdWludDhfdCBzcGVlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZXBfdHlwZSwgdWludDE2X3QgbXBzKTsKLUhBTF9TdGF0dXNUeXBlRGVmIFVTQl9IQ19TdGFydFhmZXIoVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4LCBVU0JfT1RHX0hDVHlwZURlZiAqaGMsIHVpbnQ4X3QgZG1hKTsKK0hBTF9TdGF0dXNUeXBlRGVmIFVTQl9IQ19TdGFydFhmZXIoVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0JfT1RHX0hDVHlwZURlZiAqaGMsIHVpbnQ4X3QgZG1hKTsKKwogdWludDMyX3QgICAgICAgICAgVVNCX0hDX1JlYWRJbnRlcnJ1cHQoVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4KTsKIEhBTF9TdGF0dXNUeXBlRGVmIFVTQl9IQ19IYWx0KFVTQl9PVEdfR2xvYmFsVHlwZURlZiAqVVNCeCwgdWludDhfdCBoY19udW0pOwogSEFMX1N0YXR1c1R5cGVEZWYgVVNCX0RvUGluZyhVU0JfT1RHX0dsb2JhbFR5cGVEZWYgKlVTQngsIHVpbnQ4X3QgY2hfbnVtKTsKZGlmZiAtLWdpdCBhL0luYy9zdG0zMmY3eHhfbGxfdXRpbHMuaCBiL0luYy9zdG0zMmY3eHhfbGxfdXRpbHMuaAppbmRleCBlOWE4YjM0Li5mZGY5MjVjIDEwMDY0NAotLS0gYS9JbmMvc3RtMzJmN3h4X2xsX3V0aWxzLmgKKysrIGIvSW5jL3N0bTMyZjd4eF9sbF91dGlscy5oCkBAIC0yNzUsNiArMjc1LDcgQEAKICAgKi8KIAogdm9pZCAgICAgICAgTExfU2V0U3lzdGVtQ29yZUNsb2NrKHVpbnQzMl90IEhDTEtGcmVxdWVuY3kpOworRXJyb3JTdGF0dXMgTExfU2V0Rmxhc2hMYXRlbmN5KHVpbnQzMl90IEhDTEtfRnJlcXVlbmN5KTsKIEVycm9yU3RhdHVzIExMX1BMTF9Db25maWdTeXN0ZW1DbG9ja19IU0koTExfVVRJTFNfUExMSW5pdFR5cGVEZWYgKlVUSUxTX1BMTEluaXRTdHJ1Y3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMX1VUSUxTX0Nsa0luaXRUeXBlRGVmICpVVElMU19DbGtJbml0U3RydWN0KTsKIEVycm9yU3RhdHVzIExMX1BMTF9Db25maWdTeXN0ZW1DbG9ja19IU0UodWludDMyX3QgSFNFRnJlcXVlbmN5LCB1aW50MzJfdCBIU0VCeXBhc3MsCmRpZmYgLS1naXQgYS9MaWNlbnNlLm1kIGIvTGljZW5zZS5tZAppbmRleCBjYWRlYmVjLi4zM2YyZWZmIDEwMDY0NAotLS0gYS9MaWNlbnNlLm1kCisrKyBiL0xpY2Vuc2UubWQKQEAgLTEsMyArMSwzIEBACiAjIENvcHlyaWdodCAoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3MKIAotVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1RNaWNyb2VsZWN0cm9uaWNzIHVuZGVyIHRoZSAqKkJTRC0zLUNsYXVzZSoqIGxpY2Vuc2UuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGlzIGxpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgbGljZW5zZSBbaGVyZV0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UpLgorVGhpcyBzb2Z0d2FyZSBjb21wb25lbnQgaXMgbGljZW5zZWQgYnkgU1RNaWNyb2VsZWN0cm9uaWNzIHVuZGVyIHRoZSAqKkJTRC0zLUNsYXVzZSoqIGxpY2Vuc2UuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGlzIGxpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgbGljZW5zZSBbaGVyZV0oaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2UpLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAppbmRleCBmOTU1YzRmLi5jOGEyMDEyIDEwMDY0NAotLS0gYS9SRUFETUUubWQKKysrIGIvUkVBRE1FLm1kCkBAIC0zNiwxMCArMzYsMTEgQEAKIAogSXQgaXMgKipjcnVjaWFsKiogdGhhdCB5b3UgdXNlIGEgY29uc2lzdGVudCBzZXQgb2YgdmVyc2lvbnMgZm9yIHRoZSBDTVNJUyBDb3JlIC0gQ01TSVMgRGV2aWNlIC0gSEFMLCBhcyBtZW50aW9uZWQgaW4gdGhpcyB0YWJsZS4KIAotSEFMIERyaXZlciBGNyB8IENNU0lTIERldmljZSBGNyB8IENNU0lTIENvcmUgfCBXYXMgZGVsaXZlcmVkIGluIHRoZSBmdWxsIE1DVSBwYWNrYWdlCi0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRhZyB2MS4yLjcgfCBUYWcgdjEuMi40IHwgVGFnIHY1LjQuMF9jbTcgfCBUYWcgdjEuMTUuMCAoYW5kIGZvbGxvd2luZywgaWYgYW55LCB0aWxsIG5leHQgdGFnKQotVGFnIHYxLjIuOCB8IFRhZyB2MS4yLjUgfCBUYWcgdjUuNC4wX2NtNyB8IFRhZyB2MS4xNi4wIChhbmQgZm9sbG93aW5nLCBpZiBhbnksIHRpbGwgbmV4dCB0YWcpCitIQUwgRHJpdmVyIEY3ICB8IENNU0lTIERldmljZSBGNyB8IENNU0lTIENvcmUgICAgIHwgV2FzIGRlbGl2ZXJlZCBpbiB0aGUgZnVsbCBNQ1UgcGFja2FnZQorLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1RhZyB2MS4yLjcgICAgIHwgVGFnIHYxLjIuNCAgICAgIHwgVGFnIHY1LjQuMF9jbTcgfCBUYWcgdjEuMTUuMCAoYW5kIGZvbGxvd2luZywgaWYgYW55LCB0aWxsIG5leHQgdGFnKQorVGFnIHYxLjIuOCAgICAgfCBUYWcgdjEuMi41ICAgICAgfCBUYWcgdjUuNC4wX2NtNyB8IFRhZyB2MS4xNi4wIChhbmQgZm9sbG93aW5nLCBpZiBhbnksIHRpbGwgbmV4dCB0YWcpCitUYWcgdjEuMi45ICAgICB8IFRhZyB2MS4yLjYgICAgICB8IFRhZyB2NS40LjBfY203IHwgVGFnIHYxLjE2LjEgKGFuZCBmb2xsb3dpbmcsIGlmIGFueSwgdGlsbCBuZXh0IHRhZykKIAogVGhlIGZ1bGwgKipTVE0zMkN1YmVGNyoqIE1DVSBwYWNrYWdlIGlzIGF2YWlsYWJsZSBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL1NUTWljcm9lbGVjdHJvbmljcy9TVE0zMkN1YmVGNykuCiAKZGlmZiAtLWdpdCBhL1JlbGVhc2VfTm90ZXMuaHRtbCBiL1JlbGVhc2VfTm90ZXMuaHRtbAppbmRleCAyNjA4ZWQyLi44MTI0YTgzIDEwMDY0NAotLS0gYS9SZWxlYXNlX05vdGVzLmh0bWwKKysrIGIvUmVsZWFzZV9Ob3Rlcy5odG1sCkBAIC00LDE0MjAgKzQsNTE2OCBAQAogCiAKIAotCi0KLQotCi0KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+Ci08bGluayByZWw9IkZpbGUtTGlzdCIgaHJlZj0iUmVsZWFzZV9Ob3Rlc19mb3JfU1RNMzJGNDV4X1N0ZFBlcmlwaF9Ecml2ZXJfZmlsZXMvZmlsZWxpc3QueG1sIj4KLTxsaW5rIHJlbD0iRWRpdC1UaW1lLURhdGEiIGhyZWY9IlJlbGVhc2VfTm90ZXNfZm9yX1NUTTMyRjQ1eF9TdGRQZXJpcGhfRHJpdmVyX2ZpbGVzL2VkaXRkYXRhLm1zbyI+PCEtLVtpZiAhbXNvXT4gPHN0eWxlPiB2XDoqIHtiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKTt9IG9cOioge2JlaGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpO30gd1w6KiB7YmVoYXZpb3I6dXJsKCNkZWZhdWx0I1ZNTCk7fSAuc2hhcGUge2JlaGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpO30gPC9zdHlsZT4gPCFbZW5kaWZdLS0+PHRpdGxlPlJlbGVhc2UgTm90ZXMgZm9yIFNUTTMyRjd4eCBIQUwgRHJpdmVyczwvdGl0bGU+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+IDxvOkRvY3VtZW50UHJvcGVydGllcz4gPG86QXV0aG9yPlNUTWljcm9lbGVjdHJvbmljczwvbzpBdXRob3I+IDxvOkxhc3RBdXRob3I+UmFvdWYgSG9zbmk8L286TGFzdEF1dGhvcj4gPG86UmV2aXNpb24+Mzk8L286UmV2aXNpb24+IDxvOlRvdGFsVGltZT4xMzc8L286VG90YWxUaW1lPiA8bzpDcmVhdGVkPjIwMDktMDItMjdUMTk6MjY6MDBaPC9vOkNyZWF0ZWQ+IDxvOkxhc3RTYXZlZD4yMDEwLTEwLTE1VDExOjA3OjAwWjwvbzpMYXN0U2F2ZWQ+IDxvOlBhZ2VzPjM8L286UGFnZXM+IDxvOldvcmRzPjk3MzwvbzpXb3Jkcz4gPG86Q2hhcmFjdGVycz41NTQ4PC9vOkNoYXJhY3RlcnM+IDxvOkNvbXBhbnk+U1RNaWNyb2VsZWN0cm9uaWNzPC9vOkNvbXBhbnk+IDxvOkxpbmVzPjQ2PC9vOkxpbmVzPiA8bzpQYXJhZ3JhcGhzPjEzPC9vOlBhcmFncmFwaHM+IDxvOkNoYXJhY3RlcnNXaXRoU3BhY2VzPjY1MDg8L286Q2hhcmFjdGVyc1dpdGhTcGFjZXM+IDxvOlZlcnNpb24+MTIuMDA8L286VmVyc2lvbj4gPC9vOkRvY3VtZW50UHJvcGVydGllcz4gPC94bWw+PCFbZW5kaWZdLS0+Cis8bWV0YSBuYW1lPSJQcm9nSWQiIGNvbnRlbnQ9IldvcmQuRG9jdW1lbnQiPgorPG1ldGEgbmFtZT0iR2VuZXJhdG9yIiBjb250ZW50PSJNaWNyb3NvZnQgV29yZCAxNSI+Cis8bWV0YSBuYW1lPSJPcmlnaW5hdG9yIiBjb250ZW50PSJNaWNyb3NvZnQgV29yZCAxNSI+Cis8bGluayByZWw9IkZpbGUtTGlzdCIgaHJlZj0iUmVsZWFzZV9Ob3Rlc19maWxlcy9maWxlbGlzdC54bWwiPgorPGxpbmsgcmVsPSJFZGl0LVRpbWUtRGF0YSIgaHJlZj0iUmVsZWFzZV9Ob3Rlc19maWxlcy9lZGl0ZGF0YS5tc28iPjwhLS1baWYgIW1zb10+Cis8c3R5bGU+Cit2XDoqIHtiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKTt9CitvXDoqIHtiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKTt9Cit3XDoqIHtiZWhhdmlvcjp1cmwoI2RlZmF1bHQjVk1MKTt9Cisuc2hhcGUge2JlaGF2aW9yOnVybCgjZGVmYXVsdCNWTUwpO30KKzwvc3R5bGU+Cis8IVtlbmRpZl0tLT48dGl0bGU+UmVsZWFzZSBOb3RlcyBmb3IgU1RNMzJGN3h4IEhBTCBEcml2ZXJzPC90aXRsZT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KKyA8bzpEb2N1bWVudFByb3BlcnRpZXM+CisgIDxvOkF1dGhvcj5TYW1pciBCRU4gQUJJRDwvbzpBdXRob3I+CisgIDxvOkxhc3RBdXRob3I+U2FtaXIgQkVOIEFCSUQ8L286TGFzdEF1dGhvcj4KKyAgPG86UmV2aXNpb24+MzwvbzpSZXZpc2lvbj4KKyAgPG86VG90YWxUaW1lPjI8L286VG90YWxUaW1lPgorICA8bzpDcmVhdGVkPjIwMjEtMDItMTJUMTM6Mjk6MDBaPC9vOkNyZWF0ZWQ+CisgIDxvOkxhc3RTYXZlZD4yMDIxLTAyLTEyVDEzOjMxOjAwWjwvbzpMYXN0U2F2ZWQ+CisgIDxvOlBhZ2VzPjI5PC9vOlBhZ2VzPgorICA8bzpXb3Jkcz45NzU4PC9vOldvcmRzPgorICA8bzpDaGFyYWN0ZXJzPjU1NjI1PC9vOkNoYXJhY3RlcnM+CisgIDxvOkxpbmVzPjQ2MzwvbzpMaW5lcz4KKyAgPG86UGFyYWdyYXBocz4xMzA8L286UGFyYWdyYXBocz4KKyAgPG86Q2hhcmFjdGVyc1dpdGhTcGFjZXM+NjUyNTM8L286Q2hhcmFjdGVyc1dpdGhTcGFjZXM+CisgIDxvOlZlcnNpb24+MTYuMDA8L286VmVyc2lvbj4KKyA8L286RG9jdW1lbnRQcm9wZXJ0aWVzPgorIDxvOk9mZmljZURvY3VtZW50U2V0dGluZ3M+CisgIDxvOkFsbG93UE5HLz4KKyA8L286T2ZmaWNlRG9jdW1lbnRTZXR0aW5ncz4KKzwveG1sPjwhW2VuZGlmXS0tPgogCiAKIAotPGxpbmsgcmVsPSJ0aGVtZURhdGEiIGhyZWY9IlJlbGVhc2VfTm90ZXNfZm9yX1NUTTMyRjQ1eF9TdGRQZXJpcGhfRHJpdmVyX2ZpbGVzL3RoZW1lZGF0YS50aG14Ij4KLTxsaW5rIHJlbD0iY29sb3JTY2hlbWVNYXBwaW5nIiBocmVmPSJSZWxlYXNlX05vdGVzX2Zvcl9TVE0zMkY0NXhfU3RkUGVyaXBoX0RyaXZlcl9maWxlcy9jb2xvcnNjaGVtZW1hcHBpbmcueG1sIj48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4gPHc6V29yZERvY3VtZW50PiA8dzpab29tPjExMDwvdzpab29tPiA8dzpUcmFja01vdmVzPmZhbHNlPC93OlRyYWNrTW92ZXM+IDx3OlRyYWNrRm9ybWF0dGluZy8+IDx3OlZhbGlkYXRlQWdhaW5zdFNjaGVtYXMvPiA8dzpTYXZlSWZYTUxJbnZhbGlkPmZhbHNlPC93OlNhdmVJZlhNTEludmFsaWQ+IDx3Oklnbm9yZU1peGVkQ29udGVudD5mYWxzZTwvdzpJZ25vcmVNaXhlZENvbnRlbnQ+IDx3OkFsd2F5c1Nob3dQbGFjZWhvbGRlclRleHQ+ZmFsc2U8L3c6QWx3YXlzU2hvd1BsYWNlaG9sZGVyVGV4dD4gPHc6RG9Ob3RQcm9tb3RlUUYvPiA8dzpMaWRUaGVtZU90aGVyPkVOLVVTPC93OkxpZFRoZW1lT3RoZXI+IDx3OkxpZFRoZW1lQXNpYW4+WC1OT05FPC93OkxpZFRoZW1lQXNpYW4+IDx3OkxpZFRoZW1lQ29tcGxleFNjcmlwdD5YLU5PTkU8L3c6TGlkVGhlbWVDb21wbGV4U2NyaXB0PiA8dzpDb21wYXRpYmlsaXR5PiA8dzpCcmVha1dyYXBwZWRUYWJsZXMvPiA8dzpTbmFwVG9HcmlkSW5DZWxsLz4gPHc6V3JhcFRleHRXaXRoUHVuY3QvPiA8dzpVc2VBc2lhbkJyZWFrUnVsZXMvPiA8dzpEb250R3Jvd0F1dG9maXQvPiA8dzpTcGxpdFBnQnJlYWtBbmRQYXJhTWFyay8+IDx3OkRvbnRWZXJ0QWxpZ25DZWxsV2l0aFNwLz4gPHc6RG9udEJyZWFrQ29uc3RyYWluZWRGb3JjZWRUYWJsZXMvPiA8dzpEb250VmVydEFsaWduSW5UeGJ4Lz4gPHc6V29yZDExS2VybmluZ1BhaXJzLz4gPHc6Q2FjaGVkQ29sQmFsYW5jZS8+IDwvdzpDb21wYXRpYmlsaXR5PiA8dzpCcm93c2VyTGV2ZWw+TWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlcjQ8L3c6QnJvd3NlckxldmVsPiA8bTptYXRoUHI+IDxtOm1hdGhGb250IG06dmFsPSJDYW1icmlhIE1hdGgiLz4gPG06YnJrQmluIG06dmFsPSJiZWZvcmUiLz4gPG06YnJrQmluU3ViIG06dmFsPSImIzQ1Oy0iLz4gPG06c21hbGxGcmFjIG06dmFsPSJvZmYiLz4gPG06ZGlzcERlZi8+IDxtOmxNYXJnaW4gbTp2YWw9IjAiLz4gPG06ck1hcmdpbiBtOnZhbD0iMCIvPiA8bTpkZWZKYyBtOnZhbD0iY2VudGVyR3JvdXAiLz4gPG06d3JhcEluZGVudCBtOnZhbD0iMTQ0MCIvPiA8bTppbnRMaW0gbTp2YWw9InN1YlN1cCIvPiA8bTpuYXJ5TGltIG06dmFsPSJ1bmRPdnIiLz4gPC9tOm1hdGhQcj48L3c6V29yZERvY3VtZW50PiA8L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4gPHc6TGF0ZW50U3R5bGVzIERlZkxvY2tlZFN0YXRlPSJmYWxzZSIgRGVmVW5oaWRlV2hlblVzZWQ9ImZhbHNlIiBEZWZTZW1pSGlkZGVuPSJmYWxzZSIgRGVmUUZvcm1hdD0iZmFsc2UiIExhdGVudFN0eWxlQ291bnQ9IjI2NyI+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJOb3JtYWwiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgMSIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyAyIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDMiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDQiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDUiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDYiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDciLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDgiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDkiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJjYXB0aW9uIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJUaXRsZSIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjEiIE5hbWU9IkRlZmF1bHQgUGFyYWdyYXBoIEZvbnQiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlN1YnRpdGxlIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJTdHJvbmciLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFFGb3JtYXQ9InRydWUiIE5hbWU9IkVtcGhhc2lzIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOTkiIE5hbWU9Ik5vIExpc3QiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5OSIgU2VtaUhpZGRlbj0idHJ1ZSIgTmFtZT0iUGxhY2Vob2xkZXIgVGV4dCIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjEiIFFGb3JtYXQ9InRydWUiIE5hbWU9Ik5vIFNwYWNpbmciLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgMSIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCAxIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDEiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgMSIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCAxIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDEiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5OSIgU2VtaUhpZGRlbj0idHJ1ZSIgTmFtZT0iUmV2aXNpb24iLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzNCIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iTGlzdCBQYXJhZ3JhcGgiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIyOSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iUXVvdGUiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzMCIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iSW50ZW5zZSBRdW90ZSIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2VudCAxIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEgQWNjZW50IDEiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgMSIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCAxIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQgMSIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIEFjY2VudCAxIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVsIExpc3QgQWNjZW50IDEiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgMSIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCAyIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDIiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFtZT0iTGlnaHQgR3JpZCBBY2NlbnQgMiIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCAyIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDIiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgMiIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2VudCAyIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEgQWNjZW50IDIiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgMiIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCAyIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQgMiIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIEFjY2VudCAyIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVsIExpc3QgQWNjZW50IDIiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgMiIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCAzIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDMiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFtZT0iTGlnaHQgR3JpZCBBY2NlbnQgMyIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCAzIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDMiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgMyIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2VudCAzIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEgQWNjZW50IDMiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgMyIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCAzIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQgMyIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIEFjY2VudCAzIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVsIExpc3QgQWNjZW50IDMiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgMyIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCA0Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDQiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFtZT0iTGlnaHQgR3JpZCBBY2NlbnQgNCIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCA0Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDQiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgNCIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2VudCA0Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEgQWNjZW50IDQiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgNCIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCA0Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQgNCIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIEFjY2VudCA0Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVsIExpc3QgQWNjZW50IDQiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgNCIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCA1Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDUiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFtZT0iTGlnaHQgR3JpZCBBY2NlbnQgNSIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCA1Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDUiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgNSIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2VudCA1Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEgQWNjZW50IDUiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgNSIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCA1Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQgNSIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIEFjY2VudCA1Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVsIExpc3QgQWNjZW50IDUiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgNSIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYwIiBOYW1lPSJMaWdodCBTaGFkaW5nIEFjY2VudCA2Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjEiIE5hbWU9IkxpZ2h0IExpc3QgQWNjZW50IDYiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MiIgTmFtZT0iTGlnaHQgR3JpZCBBY2NlbnQgNiIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYzIiBOYW1lPSJNZWRpdW0gU2hhZGluZyAxIEFjY2VudCA2Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjQiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDIgQWNjZW50IDYiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NSIgTmFtZT0iTWVkaXVtIExpc3QgMSBBY2NlbnQgNiIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY2IiBOYW1lPSJNZWRpdW0gTGlzdCAyIEFjY2VudCA2Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjciIE5hbWU9Ik1lZGl1bSBHcmlkIDEgQWNjZW50IDYiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OCIgTmFtZT0iTWVkaXVtIEdyaWQgMiBBY2NlbnQgNiIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY5IiBOYW1lPSJNZWRpdW0gR3JpZCAzIEFjY2VudCA2Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzAiIE5hbWU9IkRhcmsgTGlzdCBBY2NlbnQgNiIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcxIiBOYW1lPSJDb2xvcmZ1bCBTaGFkaW5nIEFjY2VudCA2Ii8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzIiIE5hbWU9IkNvbG9yZnVsIExpc3QgQWNjZW50IDYiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MyIgTmFtZT0iQ29sb3JmdWwgR3JpZCBBY2NlbnQgNiIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjE5IiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJTdWJ0bGUgRW1waGFzaXMiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIyMSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iSW50ZW5zZSBFbXBoYXNpcyIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjMxIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJTdWJ0bGUgUmVmZXJlbmNlIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzIiIFFGb3JtYXQ9InRydWUiIE5hbWU9IkludGVuc2UgUmVmZXJlbmNlIi8+IDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzMiIFFGb3JtYXQ9InRydWUiIE5hbWU9IkJvb2sgVGl0bGUiLz4gPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzNyIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkJpYmxpb2dyYXBoeSIvPiA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iVE9DIEhlYWRpbmciLz4gPC93OkxhdGVudFN0eWxlcz4gPC94bWw+PCFbZW5kaWZdLS0+Cis8bGluayByZWw9InRoZW1lRGF0YSIgaHJlZj0iUmVsZWFzZV9Ob3Rlc19maWxlcy90aGVtZWRhdGEudGhteCI+Cis8bGluayByZWw9ImNvbG9yU2NoZW1lTWFwcGluZyIgaHJlZj0iUmVsZWFzZV9Ob3Rlc19maWxlcy9jb2xvcnNjaGVtZW1hcHBpbmcueG1sIj48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KKyA8dzpXb3JkRG9jdW1lbnQ+CisgIDx3OlZpZXc+UHJpbnQ8L3c6Vmlldz4KKyAgPHc6VHJhY2tNb3Zlcz5mYWxzZTwvdzpUcmFja01vdmVzPgorICA8dzpUcmFja0Zvcm1hdHRpbmcvPgorICA8dzpWYWxpZGF0ZUFnYWluc3RTY2hlbWFzLz4KKyAgPHc6U2F2ZUlmWE1MSW52YWxpZD5mYWxzZTwvdzpTYXZlSWZYTUxJbnZhbGlkPgorICA8dzpJZ25vcmVNaXhlZENvbnRlbnQ+ZmFsc2U8L3c6SWdub3JlTWl4ZWRDb250ZW50PgorICA8dzpBbHdheXNTaG93UGxhY2Vob2xkZXJUZXh0PmZhbHNlPC93OkFsd2F5c1Nob3dQbGFjZWhvbGRlclRleHQ+CisgIDx3OkRvTm90UHJvbW90ZVFGLz4KKyAgPHc6TGlkVGhlbWVPdGhlcj5FTi1VUzwvdzpMaWRUaGVtZU90aGVyPgorICA8dzpMaWRUaGVtZUFzaWFuPlgtTk9ORTwvdzpMaWRUaGVtZUFzaWFuPgorICA8dzpMaWRUaGVtZUNvbXBsZXhTY3JpcHQ+WC1OT05FPC93OkxpZFRoZW1lQ29tcGxleFNjcmlwdD4KKyAgPHc6Q29tcGF0aWJpbGl0eT4KKyAgIDx3OkJyZWFrV3JhcHBlZFRhYmxlcy8+CisgICA8dzpTcGxpdFBnQnJlYWtBbmRQYXJhTWFyay8+CisgIDwvdzpDb21wYXRpYmlsaXR5PgorICA8dzpCcm93c2VyTGV2ZWw+TWljcm9zb2Z0SW50ZXJuZXRFeHBsb3JlcjQ8L3c6QnJvd3NlckxldmVsPgorICA8bTptYXRoUHI+CisgICA8bTptYXRoRm9udCBtOnZhbD0iQ2FtYnJpYSBNYXRoIi8+CisgICA8bTpicmtCaW4gbTp2YWw9ImJlZm9yZSIvPgorICAgPG06YnJrQmluU3ViIG06dmFsPSImIzQ1Oy0iLz4KKyAgIDxtOnNtYWxsRnJhYyBtOnZhbD0ib2ZmIi8+CisgICA8bTpkaXNwRGVmLz4KKyAgIDxtOmxNYXJnaW4gbTp2YWw9IjAiLz4KKyAgIDxtOnJNYXJnaW4gbTp2YWw9IjAiLz4KKyAgIDxtOmRlZkpjIG06dmFsPSJjZW50ZXJHcm91cCIvPgorICAgPG06d3JhcEluZGVudCBtOnZhbD0iMTQ0MCIvPgorICAgPG06aW50TGltIG06dmFsPSJzdWJTdXAiLz4KKyAgIDxtOm5hcnlMaW0gbTp2YWw9InVuZE92ciIvPgorICA8L206bWF0aFByPjwvdzpXb3JkRG9jdW1lbnQ+Cis8L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KKyA8dzpMYXRlbnRTdHlsZXMgRGVmTG9ja2VkU3RhdGU9ImZhbHNlIiBEZWZVbmhpZGVXaGVuVXNlZD0iZmFsc2UiCisgIERlZlNlbWlIaWRkZW49ImZhbHNlIiBEZWZRRm9ybWF0PSJmYWxzZSIgRGVmUHJpb3JpdHk9Ijk5IgorICBMYXRlbnRTdHlsZUNvdW50PSIzNzYiPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjAiIFFGb3JtYXQ9InRydWUiIE5hbWU9Ik5vcm1hbCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iaGVhZGluZyA3Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJoZWFkaW5nIDgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImhlYWRpbmcgOSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJpbmRleCA3Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImluZGV4IDgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggOSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9InRvYyA3Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0idG9jIDgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzOSIgU2VtaUhpZGRlbj0idHJ1ZSIKKyAgIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIiBOYW1lPSJ0b2MgOSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJOb3JtYWwgSW5kZW50Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImZvb3Rub3RlIHRleHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iYW5ub3RhdGlvbiB0ZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImhlYWRlciIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJmb290ZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iaW5kZXggaGVhZGluZyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM1IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9ImNhcHRpb24iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0idGFibGUgb2YgZmlndXJlcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJlbnZlbG9wZSBhZGRyZXNzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImVudmVsb3BlIHJldHVybiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJmb290bm90ZSByZWZlcmVuY2UiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iYW5ub3RhdGlvbiByZWZlcmVuY2UiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0ibGluZSBudW1iZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0icGFnZSBudW1iZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iZW5kbm90ZSByZWZlcmVuY2UiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iZW5kbm90ZSB0ZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9InRhYmxlIG9mIGF1dGhvcml0aWVzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Im1hY3JvIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9InRvYSBoZWFkaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBCdWxsZXQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBOdW1iZXIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQnVsbGV0IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBCdWxsZXQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IEJ1bGxldCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQnVsbGV0IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBOdW1iZXIgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IE51bWJlciAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgTnVtYmVyIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBOdW1iZXIgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjEwIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJUaXRsZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJDbG9zaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlNpZ25hdHVyZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjEiIFNlbWlIaWRkZW49InRydWUiCisgICBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIgTmFtZT0iRGVmYXVsdCBQYXJhZ3JhcGggRm9udCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQm9keSBUZXh0IEluZGVudCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IENvbnRpbnVlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQ29udGludWUgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJMaXN0IENvbnRpbnVlIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTGlzdCBDb250aW51ZSA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikxpc3QgQ29udGludWUgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJNZXNzYWdlIEhlYWRlciIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjExIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJTdWJ0aXRsZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJTYWx1dGF0aW9uIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkRhdGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQm9keSBUZXh0IEZpcnN0IEluZGVudCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQgRmlyc3QgSW5kZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTm90ZSBIZWFkaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJvZHkgVGV4dCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJvZHkgVGV4dCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkJvZHkgVGV4dCBJbmRlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJCb2R5IFRleHQgSW5kZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQmxvY2sgVGV4dCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIeXBlcmxpbmsiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iRm9sbG93ZWRIeXBlcmxpbmsiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIyMiIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iU3Ryb25nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMjAiIFFGb3JtYXQ9InRydWUiIE5hbWU9IkVtcGhhc2lzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkRvY3VtZW50IE1hcCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJQbGFpbiBUZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkUtbWFpbCBTaWduYXR1cmUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBUb3Agb2YgRm9ybSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIEJvdHRvbSBvZiBGb3JtIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik5vcm1hbCAoV2ViKSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIEFjcm9ueW0iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBBZGRyZXNzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgQ2l0ZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJIVE1MIENvZGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBEZWZpbml0aW9uIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgS2V5Ym9hcmQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBQcmVmb3JtYXR0ZWQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBTYW1wbGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iSFRNTCBUeXBld3JpdGVyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IkhUTUwgVmFyaWFibGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iTm9ybWFsIFRhYmxlIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9ImFubm90YXRpb24gc3ViamVjdCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJObyBMaXN0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik91dGxpbmUgTGlzdCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik91dGxpbmUgTGlzdCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik91dGxpbmUgTGlzdCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFNpbXBsZSAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFNpbXBsZSAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIFNpbXBsZSAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENsYXNzaWMgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDbGFzc2ljIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ2xhc3NpYyAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENsYXNzaWMgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb2xvcmZ1bCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENvbG9yZnVsIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sb3JmdWwgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb2x1bW5zIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sdW1ucyAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIENvbHVtbnMgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb2x1bW5zIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgQ29sdW1ucyA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEdyaWQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgR3JpZCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEdyaWQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgR3JpZCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIEdyaWQgNyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBHcmlkIDgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgTGlzdCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBMaXN0IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgTGlzdCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBMaXN0IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgTGlzdCA3Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIExpc3QgOCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSAzRCBlZmZlY3RzIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgM0QgZWZmZWN0cyAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlRhYmxlIDNEIGVmZmVjdHMgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBDb250ZW1wb3JhcnkiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgRWxlZ2FudCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgU2VtaUhpZGRlbj0idHJ1ZSIgVW5oaWRlV2hlblVzZWQ9InRydWUiCisgICBOYW1lPSJUYWJsZSBQcm9mZXNzaW9uYWwiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgU3VidGxlIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgU3VidGxlIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgV2ViIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgV2ViIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgV2ViIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iQmFsbG9vbiBUZXh0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iMzkiIE5hbWU9IlRhYmxlIEdyaWQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVGFibGUgVGhlbWUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIE5hbWU9IlBsYWNlaG9sZGVyIFRleHQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxIiBRRm9ybWF0PSJ0cnVlIiBOYW1lPSJObyBTcGFjaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjYiIE5hbWU9Ik1lZGl1bSBMaXN0IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NyIgTmFtZT0iTWVkaXVtIEdyaWQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY4IiBOYW1lPSJNZWRpdW0gR3JpZCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjkiIE5hbWU9Ik1lZGl1bSBHcmlkIDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MCIgTmFtZT0iRGFyayBMaXN0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzEiIE5hbWU9IkNvbG9yZnVsIFNoYWRpbmciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MiIgTmFtZT0iQ29sb3JmdWwgTGlzdCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjczIiBOYW1lPSJDb2xvcmZ1bCBHcmlkIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjAiIE5hbWU9IkxpZ2h0IFNoYWRpbmcgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MSIgTmFtZT0iTGlnaHQgTGlzdCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYyIiBOYW1lPSJMaWdodCBHcmlkIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjMiIE5hbWU9Ik1lZGl1bSBTaGFkaW5nIDEgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NCIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMiBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY1IiBOYW1lPSJNZWRpdW0gTGlzdCAxIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBOYW1lPSJSZXZpc2lvbiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM0IiBRRm9ybWF0PSJ0cnVlIgorICAgTmFtZT0iTGlzdCBQYXJhZ3JhcGgiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIyOSIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iUXVvdGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzMCIgUUZvcm1hdD0idHJ1ZSIKKyAgIE5hbWU9IkludGVuc2UgUXVvdGUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MCIgTmFtZT0iTGlnaHQgU2hhZGluZyBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjYxIiBOYW1lPSJMaWdodCBMaXN0IEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjIiIE5hbWU9IkxpZ2h0IEdyaWQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2MyIgTmFtZT0iTWVkaXVtIFNoYWRpbmcgMSBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY0IiBOYW1lPSJNZWRpdW0gU2hhZGluZyAyIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjUiIE5hbWU9Ik1lZGl1bSBMaXN0IDEgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2NiIgTmFtZT0iTWVkaXVtIExpc3QgMiBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjY3IiBOYW1lPSJNZWRpdW0gR3JpZCAxIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNjgiIE5hbWU9Ik1lZGl1bSBHcmlkIDIgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI2OSIgTmFtZT0iTWVkaXVtIEdyaWQgMyBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcwIiBOYW1lPSJEYXJrIExpc3QgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI3MSIgTmFtZT0iQ29sb3JmdWwgU2hhZGluZyBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjcyIiBOYW1lPSJDb2xvcmZ1bCBMaXN0IEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNzMiIE5hbWU9IkNvbG9yZnVsIEdyaWQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIxOSIgUUZvcm1hdD0idHJ1ZSIKKyAgIE5hbWU9IlN1YnRsZSBFbXBoYXNpcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjIxIiBRRm9ybWF0PSJ0cnVlIgorICAgTmFtZT0iSW50ZW5zZSBFbXBoYXNpcyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjMxIiBRRm9ybWF0PSJ0cnVlIgorICAgTmFtZT0iU3VidGxlIFJlZmVyZW5jZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjMyIiBRRm9ybWF0PSJ0cnVlIgorICAgTmFtZT0iSW50ZW5zZSBSZWZlcmVuY2UiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSIzMyIgUUZvcm1hdD0idHJ1ZSIgTmFtZT0iQm9vayBUaXRsZSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM3IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIE5hbWU9IkJpYmxpb2dyYXBoeSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjM5IiBTZW1pSGlkZGVuPSJ0cnVlIgorICAgVW5oaWRlV2hlblVzZWQ9InRydWUiIFFGb3JtYXQ9InRydWUiIE5hbWU9IlRPQyBIZWFkaW5nIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDEiIE5hbWU9IlBsYWluIFRhYmxlIDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0MiIgTmFtZT0iUGxhaW4gVGFibGUgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQzIiBOYW1lPSJQbGFpbiBUYWJsZSAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDQiIE5hbWU9IlBsYWluIFRhYmxlIDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NSIgTmFtZT0iUGxhaW4gVGFibGUgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQwIiBOYW1lPSJHcmlkIFRhYmxlIExpZ2h0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiIE5hbWU9IkdyaWQgVGFibGUgMSBMaWdodCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJHcmlkIFRhYmxlIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iR3JpZCBUYWJsZSAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9IkdyaWQgVGFibGUgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJHcmlkIFRhYmxlIDUgRGFyayIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIiBOYW1lPSJHcmlkIFRhYmxlIDYgQ29sb3JmdWwiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJHcmlkIFRhYmxlIDEgTGlnaHQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iR3JpZCBUYWJsZSAyIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9IkdyaWQgVGFibGUgMyBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJHcmlkIFRhYmxlIDQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iR3JpZCBUYWJsZSA1IERhcmsgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9IkdyaWQgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iR3JpZCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiIE5hbWU9Ikxpc3QgVGFibGUgMSBMaWdodCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ3IiBOYW1lPSJMaXN0IFRhYmxlIDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0OCIgTmFtZT0iTGlzdCBUYWJsZSAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDkiIE5hbWU9Ikxpc3QgVGFibGUgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUwIiBOYW1lPSJMaXN0IFRhYmxlIDUgRGFyayIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUxIiBOYW1lPSJMaXN0IFRhYmxlIDYgQ29sb3JmdWwiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MiIgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDEiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAxIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDIiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAyIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDMiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgMyIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCAzIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDQiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNCIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA0Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDUiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNSIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA1Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDYiCisgICBOYW1lPSJMaXN0IFRhYmxlIDEgTGlnaHQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI0NyIgTmFtZT0iTGlzdCBUYWJsZSAyIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBQcmlvcml0eT0iNDgiIE5hbWU9Ikxpc3QgVGFibGUgMyBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjQ5IiBOYW1lPSJMaXN0IFRhYmxlIDQgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MCIgTmFtZT0iTGlzdCBUYWJsZSA1IERhcmsgQWNjZW50IDYiLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFByaW9yaXR5PSI1MSIKKyAgIE5hbWU9Ikxpc3QgVGFibGUgNiBDb2xvcmZ1bCBBY2NlbnQgNiIvPgorICA8dzpMc2RFeGNlcHRpb24gTG9ja2VkPSJmYWxzZSIgUHJpb3JpdHk9IjUyIgorICAgTmFtZT0iTGlzdCBUYWJsZSA3IENvbG9yZnVsIEFjY2VudCA2Ii8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ik1lbnRpb24iLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iU21hcnQgSHlwZXJsaW5rIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9Ikhhc2h0YWciLz4KKyAgPHc6THNkRXhjZXB0aW9uIExvY2tlZD0iZmFsc2UiIFNlbWlIaWRkZW49InRydWUiIFVuaGlkZVdoZW5Vc2VkPSJ0cnVlIgorICAgTmFtZT0iVW5yZXNvbHZlZCBNZW50aW9uIi8+CisgIDx3OkxzZEV4Y2VwdGlvbiBMb2NrZWQ9ImZhbHNlIiBTZW1pSGlkZGVuPSJ0cnVlIiBVbmhpZGVXaGVuVXNlZD0idHJ1ZSIKKyAgIE5hbWU9IlNtYXJ0IExpbmsiLz4KKyA8L3c6TGF0ZW50U3R5bGVzPgorPC94bWw+PCFbZW5kaWZdLS0+CiAKIDxzdHlsZT4KIDwhLS0KLS8qIEZvbnQgRGVmaW5pdGlvbnMgKi8KKyAvKiBGb250IERlZmluaXRpb25zICovCisgQGZvbnQtZmFjZQorCXtmb250LWZhbWlseTpIZWx2ZXRpY2E7CisJcGFub3NlLTE6MiAxMSA2IDQgMiAyIDIgMiAyIDQ7CisJbXNvLWZvbnQtY2hhcnNldDowOworCW1zby1nZW5lcmljLWZvbnQtZmFtaWx5OnN3aXNzOworCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOworCW1zby1mb250LXNpZ25hdHVyZTotNTM2ODU4ODgxIC0xMDczNzExMDEzIDkgMCA1MTEgMDt9CiBAZm9udC1mYWNlCi17Zm9udC1mYW1pbHk6IkNhbWJyaWEgTWF0aCI7Ci1wYW5vc2UtMToyIDQgNSAzIDUgNCA2IDMgMiA0OwotbXNvLWZvbnQtY2hhcnNldDoxOwotbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6cm9tYW47Ci1tc28tZm9udC1mb3JtYXQ6b3RoZXI7Ci1tc28tZm9udC1waXRjaDp2YXJpYWJsZTsKLW1zby1mb250LXNpZ25hdHVyZTowIDAgMCAwIDAgMDt9CisJe2ZvbnQtZmFtaWx5OldpbmdkaW5nczsKKwlwYW5vc2UtMTo1IDAgMCAwIDAgMCAwIDAgMCAwOworCW1zby1mb250LWNoYXJzZXQ6MjsKKwltc28tZ2VuZXJpYy1mb250LWZhbWlseTphdXRvOworCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOworCW1zby1mb250LXNpZ25hdHVyZTowIDI2ODQzNTQ1NiAwIDAgLTIxNDc0ODM2NDggMDt9CiBAZm9udC1mYWNlCi17Zm9udC1mYW1pbHk6Q2FsaWJyaTsKLXBhbm9zZS0xOjIgMTUgNSAyIDIgMiA0IDMgMiA0OwotbXNvLWZvbnQtY2hhcnNldDowOwotbXNvLWdlbmVyaWMtZm9udC1mYW1pbHk6c3dpc3M7Ci1tc28tZm9udC1waXRjaDp2YXJpYWJsZTsKLW1zby1mb250LXNpZ25hdHVyZTotMTYxMDYxMTk4NSAxMDczNzUwMTM5IDAgMCAxNTkgMDt9CisJe2ZvbnQtZmFtaWx5OiJDYW1icmlhIE1hdGgiOworCXBhbm9zZS0xOjIgNCA1IDMgNSA0IDYgMyAyIDQ7CisJbXNvLWZvbnQtY2hhcnNldDowOworCW1zby1nZW5lcmljLWZvbnQtZmFtaWx5OnJvbWFuOworCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOworCW1zby1mb250LXNpZ25hdHVyZTozIDAgMCAwIDEgMDt9CiBAZm9udC1mYWNlCi17Zm9udC1mYW1pbHk6VGFob21hOwotcGFub3NlLTE6MiAxMSA2IDQgMyA1IDQgNCAyIDQ7Ci1tc28tZm9udC1jaGFyc2V0OjA7Ci1tc28tZ2VuZXJpYy1mb250LWZhbWlseTpzd2lzczsKLW1zby1mb250LXBpdGNoOnZhcmlhYmxlOwotbXNvLWZvbnQtc2lnbmF0dXJlOjE2Mjc0MDA4MzkgLTIxNDc0ODM2NDggOCAwIDY2MDQ3IDA7fQorCXtmb250LWZhbWlseTpDYWxpYnJpOworCXBhbm9zZS0xOjIgMTUgNSAyIDIgMiA0IDMgMiA0OworCW1zby1mb250LWNoYXJzZXQ6MDsKKwltc28tZ2VuZXJpYy1mb250LWZhbWlseTpzd2lzczsKKwltc28tZm9udC1waXRjaDp2YXJpYWJsZTsKKwltc28tZm9udC1zaWduYXR1cmU6LTUzNjg1ODg4MSAtMTA3MzczMjQ4NSA5IDAgNTExIDA7fQogQGZvbnQtZmFjZQote2ZvbnQtZmFtaWx5OlZlcmRhbmE7Ci1wYW5vc2UtMToyIDExIDYgNCAzIDUgNCA0IDIgNDsKLW1zby1mb250LWNoYXJzZXQ6MDsKLW1zby1nZW5lcmljLWZvbnQtZmFtaWx5OnN3aXNzOwotbXNvLWZvbnQtcGl0Y2g6dmFyaWFibGU7Ci1tc28tZm9udC1zaWduYXR1cmU6NTM2ODcxNTU5IDAgMCAwIDQxNSAwO30KLS8qIFN0eWxlIERlZmluaXRpb25zICovCi1wLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFsLCBkaXYuTXNvTm9ybWFsCi17bXNvLXN0eWxlLXVuaGlkZTpubzsKLW1zby1zdHlsZS1xZm9ybWF0OnllczsKLW1zby1zdHlsZS1wYXJlbnQ6IiI7Ci1tYXJnaW46MGluOwotbWFyZ2luLWJvdHRvbTouMDAwMXB0OwotbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotZm9udC1zaXplOjEyLjBwdDsKLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iLCJzZXJpZiI7Ci1tc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9CisJe2ZvbnQtZmFtaWx5OlZlcmRhbmE7CisJcGFub3NlLTE6MiAxMSA2IDQgMyA1IDQgNCAyIDQ7CisJbXNvLWZvbnQtY2hhcnNldDowOworCW1zby1nZW5lcmljLWZvbnQtZmFtaWx5OnN3aXNzOworCW1zby1mb250LXBpdGNoOnZhcmlhYmxlOworCW1zby1mb250LXNpZ25hdHVyZTotMTYxMDYxMDk0NSAxMDczNzUwMTA3IDE2IDAgNDE1IDA7fQorQGZvbnQtZmFjZQorCXtmb250LWZhbWlseToiU2Vnb2UgVUkiOworCXBhbm9zZS0xOjIgMTEgNSAyIDQgMiA0IDIgMiAzOworCW1zby1mb250LWNoYXJzZXQ6MDsKKwltc28tZ2VuZXJpYy1mb250LWZhbWlseTpzd2lzczsKKwltc28tZm9udC1waXRjaDp2YXJpYWJsZTsKKwltc28tZm9udC1zaWduYXR1cmU6LTQ2OTc1MDAxNyAtMTA3MzY4MzMyOSA5IDAgNTExIDA7fQorIC8qIFN0eWxlIERlZmluaXRpb25zICovCisgcC5Nc29Ob3JtYWwsIGxpLk1zb05vcm1hbCwgZGl2Lk1zb05vcm1hbAorCXttc28tc3R5bGUtdW5oaWRlOm5vOworCW1zby1zdHlsZS1xZm9ybWF0OnllczsKKwltc28tc3R5bGUtcGFyZW50OiIiOworCW1hcmdpbjowaW47CisJbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOworCWZvbnQtc2l6ZToxMi4wcHQ7CisJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7CisJbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7CisJbXNvLWZhcmVhc3QtdGhlbWUtZm9udDptaW5vci1mYXJlYXN0O30KIGgxCi17bXNvLXN0eWxlLXVuaGlkZTpubzsKLW1zby1zdHlsZS1xZm9ybWF0OnllczsKLW1zby1zdHlsZS1saW5rOiJIZWFkaW5nIDEgQ2hhciI7Ci1tc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzsKLW1hcmdpbi1yaWdodDowaW47Ci1tc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0bzsKLW1hcmdpbi1sZWZ0OjBpbjsKLW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLW1zby1vdXRsaW5lLWxldmVsOjE7Ci1mb250LXNpemU6MjQuMHB0OwotZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsInNlcmlmIjsKLW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOwotbXNvLWZhcmVhc3QtdGhlbWUtZm9udDptaW5vci1mYXJlYXN0OwotZm9udC13ZWlnaHQ6Ym9sZDt9CisJe21zby1zdHlsZS1wcmlvcml0eTo5OworCW1zby1zdHlsZS11bmhpZGU6bm87CisJbXNvLXN0eWxlLXFmb3JtYXQ6eWVzOworCW1zby1zdHlsZS1saW5rOiJIZWFkaW5nIDEgQ2hhciI7CisJbXNvLW1hcmdpbi10b3AtYWx0OmF1dG87CisJbWFyZ2luLXJpZ2h0OjBpbjsKKwltc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0bzsKKwltYXJnaW4tbGVmdDowaW47CisJbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOworCW1zby1vdXRsaW5lLWxldmVsOjE7CisJZm9udC1zaXplOjI0LjBwdDsKKwlmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIixzZXJpZjsKKwltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKKwltc28tZmFyZWFzdC10aGVtZS1mb250Om1pbm9yLWZhcmVhc3Q7CisJZm9udC13ZWlnaHQ6Ym9sZDt9CiBoMgote21zby1zdHlsZS11bmhpZGU6bm87Ci1tc28tc3R5bGUtcWZvcm1hdDp5ZXM7Ci1tc28tc3R5bGUtbGluazoiSGVhZGluZyAyIENoYXIiOwotbXNvLXN0eWxlLW5leHQ6Tm9ybWFsOwotbWFyZ2luLXRvcDoxMi4wcHQ7Ci1tYXJnaW4tcmlnaHQ6MGluOwotbWFyZ2luLWJvdHRvbTozLjBwdDsKLW1hcmdpbi1sZWZ0OjBpbjsKLW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKLXBhZ2UtYnJlYWstYWZ0ZXI6YXZvaWQ7Ci1tc28tb3V0bGluZS1sZXZlbDoyOwotZm9udC1zaXplOjE0LjBwdDsKLWZvbnQtZmFtaWx5OiJBcmlhbCIsInNhbnMtc2VyaWYiOwotbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7Ci1tc28tZmFyZWFzdC10aGVtZS1mb250Om1pbm9yLWZhcmVhc3Q7Ci1mb250LXdlaWdodDpib2xkOwotZm9udC1zdHlsZTppdGFsaWM7fQorCXttc28tc3R5bGUtcHJpb3JpdHk6OTsKKwltc28tc3R5bGUtdW5oaWRlOm5vOworCW1zby1zdHlsZS1xZm9ybWF0OnllczsKKwltc28tc3R5bGUtbGluazoiSGVhZGluZyAyIENoYXIiOworCW1zby1tYXJnaW4tdG9wLWFsdDphdXRvOworCW1hcmdpbi1yaWdodDowaW47CisJbXNvLW1hcmdpbi1ib3R0b20tYWx0OmF1dG87CisJbWFyZ2luLWxlZnQ6MGluOworCW1zby1wYWdpbmF0aW9uOndpZG93LW9ycGhhbjsKKwltc28tb3V0bGluZS1sZXZlbDoyOworCWZvbnQtc2l6ZToxOC4wcHQ7CisJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7CisJbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7CisJbXNvLWZhcmVhc3QtdGhlbWUtZm9udDptaW5vci1mYXJlYXN0OworCWZvbnQtd2VpZ2h0OmJvbGQ7fQogaDMKLXttc28tc3R5bGUtdW5oaWRlOm5vOwotbXNvLXN0eWxlLXFmb3JtYXQ6eWVzOwotbXNvLXN0eWxlLWxpbms6IkhlYWRpbmcgMyBDaGFyIjsKLW1zby1tYXJnaW4tdG9wLWFsdDphdXRvOwotbWFyZ2luLXJpZ2h0OjBpbjsKLW1zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvOwotbWFyZ2luLWxlZnQ6MGluOwotbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotbXNvLW91dGxpbmUtbGV2ZWw6MzsKLWZvbnQtc2l6ZToxMy41cHQ7Ci1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIiwic2VyaWYiOwotbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7Ci1tc28tZmFyZWFzdC10aGVtZS1mb250Om1pbm9yLWZhcmVhc3Q7Ci1mb250LXdlaWdodDpib2xkO30KKwl7bXNvLXN0eWxlLXByaW9yaXR5Ojk7CisJbXNvLXN0eWxlLXVuaGlkZTpubzsKKwltc28tc3R5bGUtcWZvcm1hdDp5ZXM7CisJbXNvLXN0eWxlLWxpbms6IkhlYWRpbmcgMyBDaGFyIjsKKwltc28tbWFyZ2luLXRvcC1hbHQ6YXV0bzsKKwltYXJnaW4tcmlnaHQ6MGluOworCW1zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvOworCW1hcmdpbi1sZWZ0OjBpbjsKKwltc28tcGFnaW5hdGlvbjp3aWRvdy1vcnBoYW47CisJbXNvLW91dGxpbmUtbGV2ZWw6MzsKKwlmb250LXNpemU6MTMuNXB0OworCWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iLHNlcmlmOworCW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOworCW1zby1mYXJlYXN0LXRoZW1lLWZvbnQ6bWlub3ItZmFyZWFzdDsKKwlmb250LXdlaWdodDpib2xkO30KIGE6bGluaywgc3Bhbi5Nc29IeXBlcmxpbmsKLXttc28tc3R5bGUtdW5oaWRlOm5vOwotY29sb3I6Ymx1ZTsKLXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Ci10ZXh0LXVuZGVybGluZTpzaW5nbGU7fQorCXttc28tc3R5bGUtbm9zaG93OnllczsKKwltc28tc3R5bGUtcHJpb3JpdHk6OTk7CisJY29sb3I6Ymx1ZTsKKwl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOworCXRleHQtdW5kZXJsaW5lOnNpbmdsZTt9CiBhOnZpc2l0ZWQsIHNwYW4uTXNvSHlwZXJsaW5rRm9sbG93ZWQKLXttc28tc3R5bGUtdW5oaWRlOm5vOwotY29sb3I6Ymx1ZTsKLXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Ci10ZXh0LXVuZGVybGluZTpzaW5nbGU7fQorCXttc28tc3R5bGUtbm9zaG93OnllczsKKwltc28tc3R5bGUtcHJpb3JpdHk6OTk7CisJY29sb3I6Ymx1ZTsKKwl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOworCXRleHQtdW5kZXJsaW5lOnNpbmdsZTt9CiBwCi17bXNvLXN0eWxlLXVuaGlkZTpubzsKLW1zby1tYXJnaW4tdG9wLWFsdDphdXRvOwotbWFyZ2luLXJpZ2h0OjBpbjsKLW1zby1tYXJnaW4tYm90dG9tLWFsdDphdXRvOwotbWFyZ2luLWxlZnQ6MGluOwotbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotZm9udC1zaXplOjEyLjBwdDsKLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iLCJzZXJpZiI7Ci1tc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9Ci1wLk1zb0FjZXRhdGUsIGxpLk1zb0FjZXRhdGUsIGRpdi5Nc29BY2V0YXRlCi17bXNvLXN0eWxlLXVuaGlkZTpubzsKLW1zby1zdHlsZS1saW5rOiJCYWxsb29uIFRleHQgQ2hhciI7Ci1tYXJnaW46MGluOwotbWFyZ2luLWJvdHRvbTouMDAwMXB0OwotbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOwotZm9udC1zaXplOjguMHB0OwotZm9udC1mYW1pbHk6IlRhaG9tYSIsInNhbnMtc2VyaWYiOwotbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQorCXttc28tc3R5bGUtbm9zaG93OnllczsKKwltc28tc3R5bGUtcHJpb3JpdHk6OTk7CisJbXNvLW1hcmdpbi10b3AtYWx0OmF1dG87CisJbWFyZ2luLXJpZ2h0OjBpbjsKKwltc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0bzsKKwltYXJnaW4tbGVmdDowaW47CisJbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOworCWZvbnQtc2l6ZToxMi4wcHQ7CisJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7CisJbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7CisJbXNvLWZhcmVhc3QtdGhlbWUtZm9udDptaW5vci1mYXJlYXN0O30KIHNwYW4uSGVhZGluZzFDaGFyCi17bXNvLXN0eWxlLW5hbWU6IkhlYWRpbmcgMSBDaGFyIjsKLW1zby1zdHlsZS11bmhpZGU6bm87Ci1tc28tc3R5bGUtbG9ja2VkOnllczsKLW1zby1zdHlsZS1saW5rOiJIZWFkaW5nIDEiOwotbXNvLWFuc2ktZm9udC1zaXplOjE0LjBwdDsKLW1zby1iaWRpLWZvbnQtc2l6ZToxNC4wcHQ7Ci1mb250LWZhbWlseToiQ2FtYnJpYSIsInNlcmlmIjsKLW1zby1hc2NpaS1mb250LWZhbWlseTpDYW1icmlhOwotbXNvLWFzY2lpLXRoZW1lLWZvbnQ6bWFqb3ItbGF0aW47Ci1tc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKLW1zby1mYXJlYXN0LXRoZW1lLWZvbnQ6bWFqb3ItZmFyZWFzdDsKLW1zby1oYW5zaS1mb250LWZhbWlseTpDYW1icmlhOwotbXNvLWhhbnNpLXRoZW1lLWZvbnQ6bWFqb3ItbGF0aW47Ci1tc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKLW1zby1iaWRpLXRoZW1lLWZvbnQ6bWFqb3ItYmlkaTsKLWNvbG9yOiMzNjVGOTE7Ci1tc28tdGhlbWVjb2xvcjphY2NlbnQxOwotbXNvLXRoZW1lc2hhZGU6MTkxOwotZm9udC13ZWlnaHQ6Ym9sZDt9CisJe21zby1zdHlsZS1uYW1lOiJIZWFkaW5nIDEgQ2hhciI7CisJbXNvLXN0eWxlLXByaW9yaXR5Ojk7CisJbXNvLXN0eWxlLXVuaGlkZTpubzsKKwltc28tc3R5bGUtbG9ja2VkOnllczsKKwltc28tc3R5bGUtbGluazoiSGVhZGluZyAxIjsKKwltc28tYW5zaS1mb250LXNpemU6MTYuMHB0OworCW1zby1iaWRpLWZvbnQtc2l6ZToxNi4wcHQ7CisJZm9udC1mYW1pbHk6IkNhbGlicmkgTGlnaHQiLHNhbnMtc2VyaWY7CisJbXNvLWFzY2lpLWZvbnQtZmFtaWx5OiJDYWxpYnJpIExpZ2h0IjsKKwltc28tYXNjaWktdGhlbWUtZm9udDptYWpvci1sYXRpbjsKKwltc28tZmFyZWFzdC1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKKwltc28tZmFyZWFzdC10aGVtZS1mb250Om1ham9yLWZhcmVhc3Q7CisJbXNvLWhhbnNpLWZvbnQtZmFtaWx5OiJDYWxpYnJpIExpZ2h0IjsKKwltc28taGFuc2ktdGhlbWUtZm9udDptYWpvci1sYXRpbjsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjsKKwltc28tYmlkaS10aGVtZS1mb250Om1ham9yLWJpZGk7CisJY29sb3I6IzJGNTQ5NjsKKwltc28tdGhlbWVjb2xvcjphY2NlbnQxOworCW1zby10aGVtZXNoYWRlOjE5MTt9CiBzcGFuLkhlYWRpbmcyQ2hhcgote21zby1zdHlsZS1uYW1lOiJIZWFkaW5nIDIgQ2hhciI7Ci1tc28tc3R5bGUtdW5oaWRlOm5vOwotbXNvLXN0eWxlLWxvY2tlZDp5ZXM7Ci1tc28tc3R5bGUtbGluazoiSGVhZGluZyAyIjsKLW1zby1hbnNpLWZvbnQtc2l6ZToxMy4wcHQ7Ci1tc28tYmlkaS1mb250LXNpemU6MTMuMHB0OwotZm9udC1mYW1pbHk6IkNhbWJyaWEiLCJzZXJpZiI7Ci1tc28tYXNjaWktZm9udC1mYW1pbHk6Q2FtYnJpYTsKLW1zby1hc2NpaS10aGVtZS1mb250Om1ham9yLWxhdGluOwotbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7Ci1tc28tZmFyZWFzdC10aGVtZS1mb250Om1ham9yLWZhcmVhc3Q7Ci1tc28taGFuc2ktZm9udC1mYW1pbHk6Q2FtYnJpYTsKLW1zby1oYW5zaS10aGVtZS1mb250Om1ham9yLWxhdGluOwotbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7Ci1tc28tYmlkaS10aGVtZS1mb250Om1ham9yLWJpZGk7Ci1jb2xvcjojNEY4MUJEOwotbXNvLXRoZW1lY29sb3I6YWNjZW50MTsKLWZvbnQtd2VpZ2h0OmJvbGQ7fQorCXttc28tc3R5bGUtbmFtZToiSGVhZGluZyAyIENoYXIiOworCW1zby1zdHlsZS1ub3Nob3c6eWVzOworCW1zby1zdHlsZS1wcmlvcml0eTo5OworCW1zby1zdHlsZS11bmhpZGU6bm87CisJbXNvLXN0eWxlLWxvY2tlZDp5ZXM7CisJbXNvLXN0eWxlLWxpbms6IkhlYWRpbmcgMiI7CisJbXNvLWFuc2ktZm9udC1zaXplOjEzLjBwdDsKKwltc28tYmlkaS1mb250LXNpemU6MTMuMHB0OworCWZvbnQtZmFtaWx5OiJDYWxpYnJpIExpZ2h0IixzYW5zLXNlcmlmOworCW1zby1hc2NpaS1mb250LWZhbWlseToiQ2FsaWJyaSBMaWdodCI7CisJbXNvLWFzY2lpLXRoZW1lLWZvbnQ6bWFqb3ItbGF0aW47CisJbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7CisJbXNvLWZhcmVhc3QtdGhlbWUtZm9udDptYWpvci1mYXJlYXN0OworCW1zby1oYW5zaS1mb250LWZhbWlseToiQ2FsaWJyaSBMaWdodCI7CisJbXNvLWhhbnNpLXRoZW1lLWZvbnQ6bWFqb3ItbGF0aW47CisJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7CisJbXNvLWJpZGktdGhlbWUtZm9udDptYWpvci1iaWRpOworCWNvbG9yOiMyRjU0OTY7CisJbXNvLXRoZW1lY29sb3I6YWNjZW50MTsKKwltc28tdGhlbWVzaGFkZToxOTE7fQogc3Bhbi5IZWFkaW5nM0NoYXIKLXttc28tc3R5bGUtbmFtZToiSGVhZGluZyAzIENoYXIiOwotbXNvLXN0eWxlLXVuaGlkZTpubzsKLW1zby1zdHlsZS1sb2NrZWQ6eWVzOwotbXNvLXN0eWxlLWxpbms6IkhlYWRpbmcgMyI7Ci1tc28tYW5zaS1mb250LXNpemU6MTIuMHB0OwotbXNvLWJpZGktZm9udC1zaXplOjEyLjBwdDsKLWZvbnQtZmFtaWx5OiJDYW1icmlhIiwic2VyaWYiOwotbXNvLWFzY2lpLWZvbnQtZmFtaWx5OkNhbWJyaWE7Ci1tc28tYXNjaWktdGhlbWUtZm9udDptYWpvci1sYXRpbjsKLW1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOwotbXNvLWZhcmVhc3QtdGhlbWUtZm9udDptYWpvci1mYXJlYXN0OwotbXNvLWhhbnNpLWZvbnQtZmFtaWx5OkNhbWJyaWE7Ci1tc28taGFuc2ktdGhlbWUtZm9udDptYWpvci1sYXRpbjsKLW1zby1iaWRpLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iOwotbXNvLWJpZGktdGhlbWUtZm9udDptYWpvci1iaWRpOwotY29sb3I6IzRGODFCRDsKLW1zby10aGVtZWNvbG9yOmFjY2VudDE7Ci1mb250LXdlaWdodDpib2xkO30KLXNwYW4uQmFsbG9vblRleHRDaGFyCi17bXNvLXN0eWxlLW5hbWU6IkJhbGxvb24gVGV4dCBDaGFyIjsKLW1zby1zdHlsZS11bmhpZGU6bm87Ci1tc28tc3R5bGUtbG9ja2VkOnllczsKLW1zby1zdHlsZS1saW5rOiJCYWxsb29uIFRleHQiOwotbXNvLWFuc2ktZm9udC1zaXplOjguMHB0OwotbXNvLWJpZGktZm9udC1zaXplOjguMHB0OwotZm9udC1mYW1pbHk6IlRhaG9tYSIsInNhbnMtc2VyaWYiOwotbXNvLWFzY2lpLWZvbnQtZmFtaWx5OlRhaG9tYTsKLW1zby1oYW5zaS1mb250LWZhbWlseTpUYWhvbWE7Ci1tc28tYmlkaS1mb250LWZhbWlseTpUYWhvbWE7fQorCXttc28tc3R5bGUtbmFtZToiSGVhZGluZyAzIENoYXIiOworCW1zby1zdHlsZS1ub3Nob3c6eWVzOworCW1zby1zdHlsZS1wcmlvcml0eTo5OworCW1zby1zdHlsZS11bmhpZGU6bm87CisJbXNvLXN0eWxlLWxvY2tlZDp5ZXM7CisJbXNvLXN0eWxlLWxpbms6IkhlYWRpbmcgMyI7CisJbXNvLWFuc2ktZm9udC1zaXplOjEyLjBwdDsKKwltc28tYmlkaS1mb250LXNpemU6MTIuMHB0OworCWZvbnQtZmFtaWx5OiJDYWxpYnJpIExpZ2h0IixzYW5zLXNlcmlmOworCW1zby1hc2NpaS1mb250LWZhbWlseToiQ2FsaWJyaSBMaWdodCI7CisJbXNvLWFzY2lpLXRoZW1lLWZvbnQ6bWFqb3ItbGF0aW47CisJbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7CisJbXNvLWZhcmVhc3QtdGhlbWUtZm9udDptYWpvci1mYXJlYXN0OworCW1zby1oYW5zaS1mb250LWZhbWlseToiQ2FsaWJyaSBMaWdodCI7CisJbXNvLWhhbnNpLXRoZW1lLWZvbnQ6bWFqb3ItbGF0aW47CisJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7CisJbXNvLWJpZGktdGhlbWUtZm9udDptYWpvci1iaWRpOworCWNvbG9yOiMxRjM3NjM7CisJbXNvLXRoZW1lY29sb3I6YWNjZW50MTsKKwltc28tdGhlbWVzaGFkZToxMjc7fQorcC5tc29ub3JtYWwwLCBsaS5tc29ub3JtYWwwLCBkaXYubXNvbm9ybWFsMAorCXttc28tc3R5bGUtbmFtZTptc29ub3JtYWw7CisJbXNvLXN0eWxlLW5vc2hvdzp5ZXM7CisJbXNvLXN0eWxlLXByaW9yaXR5Ojk5OworCW1zby1zdHlsZS11bmhpZGU6bm87CisJbXNvLW1hcmdpbi10b3AtYWx0OmF1dG87CisJbWFyZ2luLXJpZ2h0OjBpbjsKKwltc28tbWFyZ2luLWJvdHRvbS1hbHQ6YXV0bzsKKwltYXJnaW4tbGVmdDowaW47CisJbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOworCWZvbnQtc2l6ZToxMi4wcHQ7CisJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7CisJbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7CisJbXNvLWZhcmVhc3QtdGhlbWUtZm9udDptaW5vci1mYXJlYXN0O30KK3NwYW4uZ3JhbWUKKwl7bXNvLXN0eWxlLW5hbWU6Z3JhbWU7CisJbXNvLXN0eWxlLXVuaGlkZTpubzt9CitzcGFuLmFwcGxlLWNvbnZlcnRlZC1zcGFjZQorCXttc28tc3R5bGUtbmFtZTphcHBsZS1jb252ZXJ0ZWQtc3BhY2U7CisJbXNvLXN0eWxlLXVuaGlkZTpubzt9CiAuTXNvQ2hwRGVmYXVsdAote21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5OwotbXNvLWRlZmF1bHQtcHJvcHM6eWVzOwotZm9udC1zaXplOjEwLjBwdDsKLW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7Ci1tc28tYmlkaS1mb250LXNpemU6MTAuMHB0O30KKwl7bXNvLXN0eWxlLXR5cGU6ZXhwb3J0LW9ubHk7CisJbXNvLWRlZmF1bHQtcHJvcHM6eWVzOworCWZvbnQtc2l6ZToxMC4wcHQ7CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwltc28tYmlkaS1mb250LXNpemU6MTAuMHB0O30KIEBwYWdlIFdvcmRTZWN0aW9uMQote3NpemU6OC41aW4gMTEuMGluOwotbWFyZ2luOjEuMGluIDEuMjVpbiAxLjBpbiAxLjI1aW47Ci1tc28taGVhZGVyLW1hcmdpbjouNWluOwotbXNvLWZvb3Rlci1tYXJnaW46LjVpbjsKLW1zby1wYXBlci1zb3VyY2U6MDt9CisJe3NpemU6NTk1LjNwdCA4NDEuOXB0OworCW1hcmdpbjo3MC44NXB0IDcwLjg1cHQgNzAuODVwdCA3MC44NXB0OworCW1zby1oZWFkZXItbWFyZ2luOi41aW47CisJbXNvLWZvb3Rlci1tYXJnaW46LjVpbjsKKwltc28tcGFwZXItc291cmNlOjA7fQogZGl2LldvcmRTZWN0aW9uMQote3BhZ2U6V29yZFNlY3Rpb24xO30KLS8qIExpc3QgRGVmaW5pdGlvbnMgKi8KLUBsaXN0IGwwCi17bXNvLWxpc3QtaWQ6NjIwNjczNTg7Ci1tc28tbGlzdC10ZW1wbGF0ZS1pZHM6LTE3NDk0MzA2Mjt9CisJe3BhZ2U6V29yZFNlY3Rpb24xO30KKyAvKiBMaXN0IERlZmluaXRpb25zICovCisgQGxpc3QgbDAKKwl7bXNvLWxpc3QtaWQ6MzU4NjI5MjM0OworCW1zby1saXN0LXR5cGU6aHlicmlkOworCW1zby1saXN0LXRlbXBsYXRlLWlkczotMTQxNTI5NzM5MiAtMTYzODIzODA3MCA2NzY5ODcxMyA2NzY5ODcxNSA2NzY5ODcwMyA2NzY5ODcxMyA2NzY5ODcxNSA2NzY5ODcwMyA2NzY5ODcxMyA2NzY5ODcxNTt9CiBAbGlzdCBsMDpsZXZlbDEKLXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7Ci1tc28tbGV2ZWwtdGV4dDpcRjBCNzsKLW1zby1sZXZlbC10YWItc3RvcDouNWluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluOwotbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKLWZvbnQtZmFtaWx5OlN5bWJvbDt9CisJe21zby1sZXZlbC10YWItc3RvcDpub25lOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6VmVyZGFuYTsKKwltc28tYmlkaS1mb250LWZhbWlseTpWZXJkYW5hO30KIEBsaXN0IGwwOmxldmVsMgote21zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmFscGhhLWxvd2VyOworCW1zby1sZXZlbC10YWItc3RvcDpub25lOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47fQogQGxpc3QgbDA6bGV2ZWwzCi17bXNvLWxldmVsLXRhYi1zdG9wOjEuNWluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6cm9tYW4tbG93ZXI7CisJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpyaWdodDsKKwl0ZXh0LWluZGVudDotOS4wcHQ7fQogQGxpc3QgbDA6bGV2ZWw0Ci17bXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjt9CiBAbGlzdCBsMDpsZXZlbDUKLXttc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDphbHBoYS1sb3dlcjsKKwltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluO30KIEBsaXN0IGwwOmxldmVsNgote21zby1sZXZlbC10YWItc3RvcDozLjBpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OnJvbWFuLWxvd2VyOworCW1zby1sZXZlbC10YWItc3RvcDpub25lOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246cmlnaHQ7CisJdGV4dC1pbmRlbnQ6LTkuMHB0O30KIEBsaXN0IGwwOmxldmVsNwote21zby1sZXZlbC10YWItc3RvcDozLjVpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC10YWItc3RvcDpub25lOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47fQogQGxpc3QgbDA6bGV2ZWw4Ci17bXNvLWxldmVsLXRhYi1zdG9wOjQuMGluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YWxwaGEtbG93ZXI7CisJbXNvLWxldmVsLXRhYi1zdG9wOm5vbmU7CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjt9CiBAbGlzdCBsMDpsZXZlbDkKLXttc28tbGV2ZWwtdGFiLXN0b3A6NC41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpyb21hbi1sb3dlcjsKKwltc28tbGV2ZWwtdGFiLXN0b3A6bm9uZTsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOnJpZ2h0OworCXRleHQtaW5kZW50Oi05LjBwdDt9CiBAbGlzdCBsMQote21zby1saXN0LWlkOjEyODAxNTk0MjsKLW1zby1saXN0LXRlbXBsYXRlLWlkczotOTA2ODEyMTQ7fQorCXttc28tbGlzdC1pZDo0MjkyMDE3NzM7CisJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOjcxOTcyMTI2ODt9CiBAbGlzdCBsMTpsZXZlbDEKLXttc28tbGV2ZWwtdGFiLXN0b3A6LjVpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBCNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6LjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6U3ltYm9sO30KIEBsaXN0IGwxOmxldmVsMgote21zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpvOworCW1zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IjsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9CiBAbGlzdCBsMTpsZXZlbDMKLXttc28tbGV2ZWwtdGFiLXN0b3A6MS41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjEuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDE6bGV2ZWw0Ci17bXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDoyLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGwxOmxldmVsNQote21zby1sZXZlbC10YWItc3RvcDoyLjVpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsMTpsZXZlbDYKLXttc28tbGV2ZWwtdGFiLXN0b3A6My4waW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDE6bGV2ZWw3Ci17bXNvLWxldmVsLXRhYi1zdG9wOjMuNWluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDozLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGwxOmxldmVsOAote21zby1sZXZlbC10YWItc3RvcDo0LjBpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsMTpsZXZlbDkKLXttc28tbGV2ZWwtdGFiLXN0b3A6NC41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjQuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDIKLXttc28tbGlzdC1pZDoyMTY1NTYwMDA7Ci1tc28tbGlzdC10ZW1wbGF0ZS1pZHM6OTI1OTI0NDEyO30KKwl7bXNvLWxpc3QtaWQ6NDY2MDQ3Mjg5OworCW1zby1saXN0LXRlbXBsYXRlLWlkczoxNjEwMzk0MzM0O30KIEBsaXN0IGwyOmxldmVsMQote21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKLW1zby1sZXZlbC10ZXh0OlxGMEI3OwotbXNvLWxldmVsLXRhYi1zdG9wOi41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47Ci1tc28tYW5zaS1mb250LXNpemU6MTAuMHB0OwotZm9udC1mYW1pbHk6U3ltYm9sO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEI3OworCW1zby1sZXZlbC10YWItc3RvcDouNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpTeW1ib2w7fQogQGxpc3QgbDI6bGV2ZWwyCi17bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OwotbXNvLWxldmVsLXRleHQ6XEYwQjc7Ci1tc28tbGV2ZWwtdGFiLXN0b3A6MS4waW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47Ci1tc28tYW5zaS1mb250LXNpemU6MTAuMHB0OwotZm9udC1mYW1pbHk6U3ltYm9sO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0Om87CisJbXNvLWxldmVsLXRhYi1zdG9wOjEuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseToiQ291cmllciBOZXciOworCW1zby1iaWRpLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KIEBsaXN0IGwyOmxldmVsMwote21zby1sZXZlbC10YWItc3RvcDoxLjVpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6MS41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsMjpsZXZlbDQKLXttc28tbGV2ZWwtdGFiLXN0b3A6Mi4waW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDI6bGV2ZWw1Ci17bXNvLWxldmVsLXRhYi1zdG9wOjIuNWluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDoyLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGwyOmxldmVsNgote21zby1sZXZlbC10YWItc3RvcDozLjBpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6My4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsMjpsZXZlbDcKLXttc28tbGV2ZWwtdGFiLXN0b3A6My41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDI6bGV2ZWw4Ci17bXNvLWxldmVsLXRhYi1zdG9wOjQuMGluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDo0LjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGwyOmxldmVsOQote21zby1sZXZlbC10YWItc3RvcDo0LjVpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsMwote21zby1saXN0LWlkOjU2MjQ0NjY5NDsKLW1zby1saXN0LXRlbXBsYXRlLWlkczo5MTM4OTgzNjY7fQorCXttc28tbGlzdC1pZDo1MzE1NzM3MzM7CisJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOjEyNDQ5MzkxNjg7fQogQGxpc3QgbDM6bGV2ZWwxCi17bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OwotbXNvLWxldmVsLXRleHQ6XEYwQjc7Ci1tc28tbGV2ZWwtdGFiLXN0b3A6LjVpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjsKLW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7Ci1mb250LWZhbWlseTpTeW1ib2w7fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQjc7CisJbXNvLWxldmVsLXRhYi1zdG9wOi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OlN5bWJvbDt9CiBAbGlzdCBsMzpsZXZlbDIKLXttc28tbGV2ZWwtdGFiLXN0b3A6MS4waW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6bzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6MS4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7CisJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQogQGxpc3QgbDM6bGV2ZWwzCi17bXNvLWxldmVsLXRhYi1zdG9wOjEuNWluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDoxLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGwzOmxldmVsNAote21zby1sZXZlbC10YWItc3RvcDoyLjBpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsMzpsZXZlbDUKLXttc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDM6bGV2ZWw2Ci17bXNvLWxldmVsLXRhYi1zdG9wOjMuMGluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDozLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGwzOmxldmVsNwote21zby1sZXZlbC10YWItc3RvcDozLjVpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6My41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsMzpsZXZlbDgKLXttc28tbGV2ZWwtdGFiLXN0b3A6NC4waW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjQuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDM6bGV2ZWw5Ci17bXNvLWxldmVsLXRhYi1zdG9wOjQuNWluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDo0LjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGw0Ci17bXNvLWxpc3QtaWQ6Nzk3ODAyMTMyOwotbXNvLWxpc3QtdGVtcGxhdGUtaWRzOi0xOTcxMTkxMzM2O30KKwl7bXNvLWxpc3QtaWQ6NTU2ODY2OTc1OworCW1zby1saXN0LXRlbXBsYXRlLWlkczo3MDc5MzMyNTA7fQogQGxpc3QgbDQ6bGV2ZWwxCi17bXNvLWxldmVsLXRhYi1zdG9wOi41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQjc7CisJbXNvLWxldmVsLXRhYi1zdG9wOi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OlN5bWJvbDt9CiBAbGlzdCBsNDpsZXZlbDIKLXttc28tbGV2ZWwtdGFiLXN0b3A6MS4waW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6bzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6MS4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7CisJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQogQGxpc3QgbDQ6bGV2ZWwzCi17bXNvLWxldmVsLXRhYi1zdG9wOjEuNWluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDoxLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGw0OmxldmVsNAote21zby1sZXZlbC10YWItc3RvcDoyLjBpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsNDpsZXZlbDUKLXttc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDQ6bGV2ZWw2Ci17bXNvLWxldmVsLXRhYi1zdG9wOjMuMGluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDozLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGw0OmxldmVsNwote21zby1sZXZlbC10YWItc3RvcDozLjVpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6My41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsNDpsZXZlbDgKLXttc28tbGV2ZWwtdGFiLXN0b3A6NC4waW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjQuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDQ6bGV2ZWw5Ci17bXNvLWxldmVsLXRhYi1zdG9wOjQuNWluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDo0LjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGw1Ci17bXNvLWxpc3QtaWQ6OTA3MzA0MDY2OwotbXNvLWxpc3QtdGVtcGxhdGUtaWRzOjE5Njk3ODE1MzI7fQorCXttc28tbGlzdC1pZDo2NDY1MTg5MjE7CisJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOjIwNjc2MzU4Mjt9CiBAbGlzdCBsNTpsZXZlbDEKLXttc28tbGV2ZWwtdGFiLXN0b3A6LjVpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBCNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6LjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6U3ltYm9sO30KIEBsaXN0IGw1OmxldmVsMgote21zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpvOworCW1zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IjsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9CiBAbGlzdCBsNTpsZXZlbDMKLXttc28tbGV2ZWwtdGFiLXN0b3A6MS41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjEuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDU6bGV2ZWw0Ci17bXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDoyLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGw1OmxldmVsNQote21zby1sZXZlbC10YWItc3RvcDoyLjVpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsNTpsZXZlbDYKLXttc28tbGV2ZWwtdGFiLXN0b3A6My4waW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDU6bGV2ZWw3Ci17bXNvLWxldmVsLXRhYi1zdG9wOjMuNWluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDozLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGw1OmxldmVsOAote21zby1sZXZlbC10YWItc3RvcDo0LjBpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsNTpsZXZlbDkKLXttc28tbGV2ZWwtdGFiLXN0b3A6NC41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjQuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDYKLXttc28tbGlzdC1pZDoxMDUwNjEzNjE2OwotbXNvLWxpc3QtdGVtcGxhdGUtaWRzOi0xMDA5ODg2NzQ4O30KKwl7bXNvLWxpc3QtaWQ6NjYzNzAzOTE1OworCW1zby1saXN0LXRlbXBsYXRlLWlkczoxNzQ1MjM3NDY4O30KIEBsaXN0IGw2OmxldmVsMQote21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKLW1zby1sZXZlbC10ZXh0OlxGMEI3OwotbXNvLWxldmVsLXRhYi1zdG9wOi41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47Ci1tc28tYW5zaS1mb250LXNpemU6MTAuMHB0OwotZm9udC1mYW1pbHk6U3ltYm9sO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEI3OworCW1zby1sZXZlbC10YWItc3RvcDouNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpTeW1ib2w7fQogQGxpc3QgbDY6bGV2ZWwyCi17bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OwotbXNvLWxldmVsLXRleHQ6XEYwQjc7Ci1tc28tbGV2ZWwtdGFiLXN0b3A6MS4waW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47Ci1tc28tYW5zaS1mb250LXNpemU6MTAuMHB0OwotZm9udC1mYW1pbHk6U3ltYm9sO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0Om87CisJbXNvLWxldmVsLXRhYi1zdG9wOjEuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseToiQ291cmllciBOZXciOworCW1zby1iaWRpLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KIEBsaXN0IGw2OmxldmVsMwote21zby1sZXZlbC10YWItc3RvcDoxLjVpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6MS41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsNjpsZXZlbDQKLXttc28tbGV2ZWwtdGFiLXN0b3A6Mi4waW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDY6bGV2ZWw1Ci17bXNvLWxldmVsLXRhYi1zdG9wOjIuNWluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDoyLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGw2OmxldmVsNgote21zby1sZXZlbC10YWItc3RvcDozLjBpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6My4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsNjpsZXZlbDcKLXttc28tbGV2ZWwtdGFiLXN0b3A6My41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDY6bGV2ZWw4Ci17bXNvLWxldmVsLXRhYi1zdG9wOjQuMGluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDo0LjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGw2OmxldmVsOQote21zby1sZXZlbC10YWItc3RvcDo0LjVpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsNwote21zby1saXN0LWlkOjEyMzQ5NzAxOTM7Ci1tc28tbGlzdC10ZW1wbGF0ZS1pZHM6MjA1NTkwNDAwMjt9CisJe21zby1saXN0LWlkOjgzMTQwODY5NTsKKwltc28tbGlzdC10ZW1wbGF0ZS1pZHM6LTQwNDk3NDA0ODt9CiBAbGlzdCBsNzpsZXZlbDEKLXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7Ci1tc28tbGV2ZWwtdGV4dDpcRjBCNzsKLW1zby1sZXZlbC10YWItc3RvcDouNWluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluOwotbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKLWZvbnQtZmFtaWx5OlN5bWJvbDt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBCNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6LjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6U3ltYm9sO30KIEBsaXN0IGw3OmxldmVsMgote21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKLW1zby1sZXZlbC10ZXh0OlxGMEI3OwotbXNvLWxldmVsLXRhYi1zdG9wOjEuMGluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluOwotbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKLWZvbnQtZmFtaWx5OlN5bWJvbDt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpvOworCW1zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IjsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9CiBAbGlzdCBsNzpsZXZlbDMKLXttc28tbGV2ZWwtdGFiLXN0b3A6MS41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjEuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDc6bGV2ZWw0Ci17bXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDoyLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGw3OmxldmVsNQote21zby1sZXZlbC10YWItc3RvcDoyLjVpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsNzpsZXZlbDYKLXttc28tbGV2ZWwtdGFiLXN0b3A6My4waW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDc6bGV2ZWw3Ci17bXNvLWxldmVsLXRhYi1zdG9wOjMuNWluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDozLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGw3OmxldmVsOAote21zby1sZXZlbC10YWItc3RvcDo0LjBpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsNzpsZXZlbDkKLXttc28tbGV2ZWwtdGFiLXN0b3A6NC41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjQuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDgKLXttc28tbGlzdC1pZDoxODQ2MDkyMjkwOwotbXNvLWxpc3QtdGVtcGxhdGUtaWRzOi03Njg1OTA4NDY7fQorCXttc28tbGlzdC1pZDo4NzgwMTA4MjE7CisJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOjEwMjM0NDUxMTg7fQogQGxpc3QgbDg6bGV2ZWwxCi17bXNvLWxldmVsLXN0YXJ0LWF0OjI7Ci1tc28tbGV2ZWwtdGFiLXN0b3A6LjVpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBCNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6LjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6U3ltYm9sO30KIEBsaXN0IGw4OmxldmVsMgote21zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpvOworCW1zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IjsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9CiBAbGlzdCBsODpsZXZlbDMKLXttc28tbGV2ZWwtdGFiLXN0b3A6MS41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjEuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDg6bGV2ZWw0Ci17bXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDoyLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGw4OmxldmVsNQote21zby1sZXZlbC10YWItc3RvcDoyLjVpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsODpsZXZlbDYKLXttc28tbGV2ZWwtdGFiLXN0b3A6My4waW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDg6bGV2ZWw3Ci17bXNvLWxldmVsLXRhYi1zdG9wOjMuNWluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDozLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGw4OmxldmVsOAote21zby1sZXZlbC10YWItc3RvcDo0LjBpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsODpsZXZlbDkKLXttc28tbGV2ZWwtdGFiLXN0b3A6NC41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjQuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDkKLXttc28tbGlzdC1pZDoxODk0NjU2NTY2OwotbXNvLWxpc3QtdGVtcGxhdGUtaWRzOjExOTk5ODM4MTI7fQorCXttc28tbGlzdC1pZDoxMTE1OTAwNjEzOworCW1zby1saXN0LXRlbXBsYXRlLWlkczoxNjA1NzczMTU2O30KIEBsaXN0IGw5OmxldmVsMQote21zby1sZXZlbC1zdGFydC1hdDoyOwotbXNvLWxldmVsLXRhYi1zdG9wOi41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQjc7CisJbXNvLWxldmVsLXRhYi1zdG9wOi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OlN5bWJvbDt9CiBAbGlzdCBsOTpsZXZlbDIKLXttc28tbGV2ZWwtdGFiLXN0b3A6MS4waW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6bzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6MS4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7CisJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQogQGxpc3QgbDk6bGV2ZWwzCi17bXNvLWxldmVsLXRhYi1zdG9wOjEuNWluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDoxLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGw5OmxldmVsNAote21zby1sZXZlbC10YWItc3RvcDoyLjBpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsOTpsZXZlbDUKLXttc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDk6bGV2ZWw2Ci17bXNvLWxldmVsLXRhYi1zdG9wOjMuMGluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDozLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KIEBsaXN0IGw5OmxldmVsNwote21zby1sZXZlbC10YWItc3RvcDozLjVpbjsKLW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKLXRleHQtaW5kZW50Oi0uMjVpbjt9CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6My41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CiBAbGlzdCBsOTpsZXZlbDgKLXttc28tbGV2ZWwtdGFiLXN0b3A6NC4waW47Ci1tc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7Ci10ZXh0LWluZGVudDotLjI1aW47fQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjQuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogQGxpc3QgbDk6bGV2ZWw5Ci17bXNvLWxldmVsLXRhYi1zdG9wOjQuNWluOwotbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OwotdGV4dC1pbmRlbnQ6LS4yNWluO30KKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDo0LjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwxMAorCXttc28tbGlzdC1pZDoxMjMwMTExMDIzOworCW1zby1saXN0LXRlbXBsYXRlLWlkczo0MzI5NTM4MjQ7fQorQGxpc3QgbDEwOmxldmVsMQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQjc7CisJbXNvLWxldmVsLXRhYi1zdG9wOi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OlN5bWJvbDt9CitAbGlzdCBsMTA6bGV2ZWwyCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpvOworCW1zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IjsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9CitAbGlzdCBsMTA6bGV2ZWwzCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6MS41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTA6bGV2ZWw0CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTA6bGV2ZWw1CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTA6bGV2ZWw2CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6My4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTA6bGV2ZWw3CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6My41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTA6bGV2ZWw4CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTA6bGV2ZWw5CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTEKKwl7bXNvLWxpc3QtaWQ6MTIzNDk2OTUxMjsKKwltc28tbGlzdC10ZW1wbGF0ZS1pZHM6NDUwNTM1MDU4O30KK0BsaXN0IGwxMTpsZXZlbDEKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEI3OworCW1zby1sZXZlbC10YWItc3RvcDouNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpTeW1ib2w7fQorQGxpc3QgbDExOmxldmVsMgorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6bzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6MS4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7CisJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQorQGxpc3QgbDExOmxldmVsMworCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjEuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDExOmxldmVsNAorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDExOmxldmVsNQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDExOmxldmVsNgorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDExOmxldmVsNworCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDExOmxldmVsOAorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjQuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDExOmxldmVsOQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjQuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDEyCisJe21zby1saXN0LWlkOjE0MjQ0OTc1NTM7CisJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOi0xOTU1MDY2NzA0O30KK0BsaXN0IGwxMjpsZXZlbDEKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEI3OworCW1zby1sZXZlbC10YWItc3RvcDouNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpTeW1ib2w7fQorQGxpc3QgbDEyOmxldmVsMgorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6bzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6MS4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7CisJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQorQGxpc3QgbDEyOmxldmVsMworCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjEuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDEyOmxldmVsNAorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDEyOmxldmVsNQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDEyOmxldmVsNgorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDEyOmxldmVsNworCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDEyOmxldmVsOAorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjQuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDEyOmxldmVsOQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjQuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDEzCisJe21zby1saXN0LWlkOjE1Mzg2NjM1NTg7CisJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOi05ODc3MDIxNzA7fQorQGxpc3QgbDEzOmxldmVsMQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQjc7CisJbXNvLWxldmVsLXRhYi1zdG9wOi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OlN5bWJvbDt9CitAbGlzdCBsMTM6bGV2ZWwyCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpvOworCW1zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IjsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9CitAbGlzdCBsMTM6bGV2ZWwzCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6MS41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTM6bGV2ZWw0CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTM6bGV2ZWw1CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTM6bGV2ZWw2CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6My4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTM6bGV2ZWw3CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6My41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTM6bGV2ZWw4CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTM6bGV2ZWw5CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTQKKwl7bXNvLWxpc3QtaWQ6MTU3NDAwNzgwOTsKKwltc28tbGlzdC10ZW1wbGF0ZS1pZHM6NTA1MTg2OTM2O30KK0BsaXN0IGwxNDpsZXZlbDEKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEI3OworCW1zby1sZXZlbC10YWItc3RvcDouNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpTeW1ib2w7fQorQGxpc3QgbDE0OmxldmVsMgorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6bzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6MS4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7CisJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQorQGxpc3QgbDE0OmxldmVsMworCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjEuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDE0OmxldmVsNAorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDE0OmxldmVsNQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDE0OmxldmVsNgorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDE0OmxldmVsNworCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDE0OmxldmVsOAorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjQuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDE0OmxldmVsOQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjQuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDE1CisJe21zby1saXN0LWlkOjE2MDIyOTc2NTQ7CisJbXNvLWxpc3QtdGVtcGxhdGUtaWRzOjU4NDA2MDUwODt9CitAbGlzdCBsMTU6bGV2ZWwxCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBCNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6LjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6U3ltYm9sO30KK0BsaXN0IGwxNTpsZXZlbDIKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0Om87CisJbXNvLWxldmVsLXRhYi1zdG9wOjEuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseToiQ291cmllciBOZXciOworCW1zby1iaWRpLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KK0BsaXN0IGwxNTpsZXZlbDMKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDoxLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwxNTpsZXZlbDQKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDoyLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwxNTpsZXZlbDUKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDoyLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwxNTpsZXZlbDYKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDozLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwxNTpsZXZlbDcKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDozLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwxNTpsZXZlbDgKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDo0LjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwxNTpsZXZlbDkKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDo0LjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwxNgorCXttc28tbGlzdC1pZDoxNjAyOTA3MDkxOworCW1zby1saXN0LXRlbXBsYXRlLWlkczotMTQxNTUyOTMwNjt9CitAbGlzdCBsMTY6bGV2ZWwxCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBCNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6LjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6U3ltYm9sO30KK0BsaXN0IGwxNjpsZXZlbDIKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0Om87CisJbXNvLWxldmVsLXRhYi1zdG9wOjEuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseToiQ291cmllciBOZXciOworCW1zby1iaWRpLWZvbnQtZmFtaWx5OiJUaW1lcyBOZXcgUm9tYW4iO30KK0BsaXN0IGwxNjpsZXZlbDMKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDoxLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwxNjpsZXZlbDQKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDoyLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwxNjpsZXZlbDUKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDoyLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwxNjpsZXZlbDYKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDozLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwxNjpsZXZlbDcKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDozLjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwxNjpsZXZlbDgKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDo0LjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwxNjpsZXZlbDkKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEE3OworCW1zby1sZXZlbC10YWItc3RvcDo0LjVpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6V2luZ2RpbmdzO30KK0BsaXN0IGwxNworCXttc28tbGlzdC1pZDoxNjExMjAzMzYzOworCW1zby1saXN0LXRlbXBsYXRlLWlkczoxMzYyNDAwMjI7fQorQGxpc3QgbDE3OmxldmVsMQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQjc7CisJbXNvLWxldmVsLXRhYi1zdG9wOi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OlN5bWJvbDt9CitAbGlzdCBsMTc6bGV2ZWwyCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpvOworCW1zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IjsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9CitAbGlzdCBsMTc6bGV2ZWwzCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6MS41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTc6bGV2ZWw0CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTc6bGV2ZWw1CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTc6bGV2ZWw2CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6My4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTc6bGV2ZWw3CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6My41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTc6bGV2ZWw4CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTc6bGV2ZWw5CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTgKKwl7bXNvLWxpc3QtaWQ6MTY2ODYzNDQ1ODsKKwltc28tbGlzdC10ZW1wbGF0ZS1pZHM6LTEwNzUxODIyODA7fQorQGxpc3QgbDE4OmxldmVsMQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQjc7CisJbXNvLWxldmVsLXRhYi1zdG9wOi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OlN5bWJvbDt9CitAbGlzdCBsMTg6bGV2ZWwyCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpvOworCW1zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IjsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9CitAbGlzdCBsMTg6bGV2ZWwzCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6MS41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTg6bGV2ZWw0CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTg6bGV2ZWw1CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTg6bGV2ZWw2CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6My4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTg6bGV2ZWw3CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6My41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTg6bGV2ZWw4CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTg6bGV2ZWw5CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTkKKwl7bXNvLWxpc3QtaWQ6MTc2MTgyNTY2OTsKKwltc28tbGlzdC10ZW1wbGF0ZS1pZHM6LTE1NzU1NzU5MDA7fQorQGxpc3QgbDE5OmxldmVsMQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQjc7CisJbXNvLWxldmVsLXRhYi1zdG9wOi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OlN5bWJvbDt9CitAbGlzdCBsMTk6bGV2ZWwyCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpvOworCW1zby1sZXZlbC10YWItc3RvcDoxLjBpbjsKKwltc28tbGV2ZWwtbnVtYmVyLXBvc2l0aW9uOmxlZnQ7CisJdGV4dC1pbmRlbnQ6LS4yNWluOworCW1zby1hbnNpLWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6IkNvdXJpZXIgTmV3IjsKKwltc28tYmlkaS1mb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIjt9CitAbGlzdCBsMTk6bGV2ZWwzCisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6MS41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTk6bGV2ZWw0CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTk6bGV2ZWw1CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6Mi41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTk6bGV2ZWw2CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6My4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTk6bGV2ZWw3CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6My41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTk6bGV2ZWw4CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMTk6bGV2ZWw5CisJe21zby1sZXZlbC1udW1iZXItZm9ybWF0OmJ1bGxldDsKKwltc28tbGV2ZWwtdGV4dDpcRjBBNzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6NC41aW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OldpbmdkaW5nczt9CitAbGlzdCBsMjAKKwl7bXNvLWxpc3QtaWQ6MTg5NTk3MTMxMzsKKwltc28tbGlzdC10ZW1wbGF0ZS1pZHM6NDU2MDYzMjg4O30KK0BsaXN0IGwyMDpsZXZlbDEKKwl7bXNvLWxldmVsLW51bWJlci1mb3JtYXQ6YnVsbGV0OworCW1zby1sZXZlbC10ZXh0OlxGMEI3OworCW1zby1sZXZlbC10YWItc3RvcDouNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpTeW1ib2w7fQorQGxpc3QgbDIwOmxldmVsMgorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6bzsKKwltc28tbGV2ZWwtdGFiLXN0b3A6MS4waW47CisJbXNvLWxldmVsLW51bWJlci1wb3NpdGlvbjpsZWZ0OworCXRleHQtaW5kZW50Oi0uMjVpbjsKKwltc28tYW5zaS1mb250LXNpemU6MTAuMHB0OworCWZvbnQtZmFtaWx5OiJDb3VyaWVyIE5ldyI7CisJbXNvLWJpZGktZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiI7fQorQGxpc3QgbDIwOmxldmVsMworCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjEuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDIwOmxldmVsNAorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDIwOmxldmVsNQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjIuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDIwOmxldmVsNgorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDIwOmxldmVsNworCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjMuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDIwOmxldmVsOAorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjQuMGluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQorQGxpc3QgbDIwOmxldmVsOQorCXttc28tbGV2ZWwtbnVtYmVyLWZvcm1hdDpidWxsZXQ7CisJbXNvLWxldmVsLXRleHQ6XEYwQTc7CisJbXNvLWxldmVsLXRhYi1zdG9wOjQuNWluOworCW1zby1sZXZlbC1udW1iZXItcG9zaXRpb246bGVmdDsKKwl0ZXh0LWluZGVudDotLjI1aW47CisJbXNvLWFuc2ktZm9udC1zaXplOjEwLjBwdDsKKwlmb250LWZhbWlseTpXaW5nZGluZ3M7fQogb2wKLXttYXJnaW4tYm90dG9tOjBpbjt9CisJe21hcmdpbi1ib3R0b206MGluO30KIHVsCi17bWFyZ2luLWJvdHRvbTowaW47fQorCXttYXJnaW4tYm90dG9tOjBpbjt9CiAtLT4KLTwvc3R5bGU+PCEtLVtpZiBndGUgbXNvIDEwXT4gPHN0eWxlPiAvKiBTdHlsZSBEZWZpbml0aW9ucyAqLyB0YWJsZS5Nc29Ob3JtYWxUYWJsZSB7bXNvLXN0eWxlLW5hbWU6IlRhYmxlIE5vcm1hbCI7IG1zby10c3R5bGUtcm93YmFuZC1zaXplOjA7IG1zby10c3R5bGUtY29sYmFuZC1zaXplOjA7IG1zby1zdHlsZS1ub3Nob3c6eWVzOyBtc28tc3R5bGUtcHJpb3JpdHk6OTk7IG1zby1zdHlsZS1xZm9ybWF0OnllczsgbXNvLXN0eWxlLXBhcmVudDoiIjsgbXNvLXBhZGRpbmctYWx0OjBpbiA1LjRwdCAwaW4gNS40cHQ7IG1zby1wYXJhLW1hcmdpbjowaW47IG1zby1wYXJhLW1hcmdpbi1ib3R0b206LjAwMDFwdDsgbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOyBmb250LXNpemU6MTAuMHB0OyBmb250LWZhbWlseToiVGltZXMgTmV3IFJvbWFuIiwic2VyaWYiO30gPC9zdHlsZT4gPCFbZW5kaWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+IDxvOnNoYXBlZGVmYXVsdHMgdjpleHQ9ImVkaXQiIHNwaWRtYXg9IjcxNzAiLz4gPC94bWw+PCFbZW5kaWZdLS0+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+IDxvOnNoYXBlbGF5b3V0IHY6ZXh0PSJlZGl0Ij4gPG86aWRtYXAgdjpleHQ9ImVkaXQiIGRhdGE9IjEiLz4gPC9vOnNoYXBlbGF5b3V0PjwveG1sPjwhW2VuZGlmXS0tPgotPG1ldGEgY29udGVudD0iTUNEIEFwcGxpY2F0aW9uIFRlYW0iIG5hbWU9ImF1dGhvciI+PC9oZWFkPgotPGJvZHkgbGluaz0iYmx1ZSIgdmxpbms9ImJsdWUiPgorPC9zdHlsZT48IS0tW2lmIGd0ZSBtc28gMTBdPgorPHN0eWxlPgorIC8qIFN0eWxlIERlZmluaXRpb25zICovCisgdGFibGUuTXNvTm9ybWFsVGFibGUKKwl7bXNvLXN0eWxlLW5hbWU6IlRhYmxlIE5vcm1hbCI7CisJbXNvLXRzdHlsZS1yb3diYW5kLXNpemU6MDsKKwltc28tdHN0eWxlLWNvbGJhbmQtc2l6ZTowOworCW1zby1zdHlsZS1ub3Nob3c6eWVzOworCW1zby1zdHlsZS1wcmlvcml0eTo5OTsKKwltc28tc3R5bGUtcGFyZW50OiIiOworCW1zby1wYWRkaW5nLWFsdDowaW4gNS40cHQgMGluIDUuNHB0OworCW1zby1wYXJhLW1hcmdpbjowaW47CisJbXNvLXBhZ2luYXRpb246d2lkb3ctb3JwaGFuOworCWZvbnQtc2l6ZToxMC4wcHQ7CisJZm9udC1mYW1pbHk6IlRpbWVzIE5ldyBSb21hbiIsc2VyaWY7fQorPC9zdHlsZT4KKzwhW2VuZGlmXS0tPgorCis8bWV0YSBjb250ZW50PSJNQ0QgQXBwbGljYXRpb24gVGVhbSIgbmFtZT0iYXV0aG9yIj48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KKyA8bzpzaGFwZWRlZmF1bHRzIHY6ZXh0PSJlZGl0IiBzcGlkbWF4PSIxMDI2Ii8+Cis8L3htbD48IVtlbmRpZl0tLT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KKyA8bzpzaGFwZWxheW91dCB2OmV4dD0iZWRpdCI+CisgIDxvOmlkbWFwIHY6ZXh0PSJlZGl0IiBkYXRhPSIxIi8+CisgPC9vOnNoYXBlbGF5b3V0PjwveG1sPjwhW2VuZGlmXS0tPjwvaGVhZD48Ym9keSBsYW5nPSJFTi1VUyIgbGluaz0iYmx1ZSIgdmxpbms9ImJsdWUiPgorCiA8ZGl2IGNsYXNzPSJXb3JkU2VjdGlvbjEiPgotPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgorCis8ZGl2PgorCis8ZGl2PgorCis8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJGUiI+PG86cD4mbmJzcDs8L286cD48L3NwYW4+PC9wPgorCiA8ZGl2IGFsaWduPSJjZW50ZXIiPgorCiA8dGFibGUgY2xhc3M9Ik1zb05vcm1hbFRhYmxlIiBzdHlsZT0id2lkdGg6IDY3NXB0OyIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSI5MDAiPgotPHRib2R5PgotPHRyPgotPHRkIHN0eWxlPSJwYWRkaW5nOiAwaW47IiB2YWxpZ249InRvcCI+Ci08dGFibGUgY2xhc3M9Ik1zb05vcm1hbFRhYmxlIiBzdHlsZT0id2lkdGg6IDY3NXB0OyIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSI5MDAiPgotPHRib2R5PgotPHRyIHN0eWxlPSIiPgotPHRkIHN0eWxlPSJwYWRkaW5nOiAwaW4gNS40cHQ7IiB2YWxpZ249InRvcCI+Ci08cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiA4cHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBjb2xvcjogYmx1ZTsiPjxhIGhyZWY9Ii4uLy4uL1JlbGVhc2VfTm90ZXMuaHRtbCI+QmFjayB0byBSZWxlYXNlIHBhZ2U8L2E+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+Ci08L3RkPgotPC90cj4KLTx0ciBzdHlsZT0iIj4KLTx0ZCBzdHlsZT0icGFkZGluZzogMS41cHQ7Ij4KLTxoMSBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMC4yNWluOyB0ZXh0LWFsaWduOiBjZW50ZXI7IiBhbGlnbj0iY2VudGVyIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAyMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBjb2xvcjogcmdiKDUxLCAxMDIsIDI1NSk7Ij5SZWxlYXNlCi1Ob3RlcyBmb3IgU1RNMzJGN3h4IEhBTCBEcml2ZXJzPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDIwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2gxPgotPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiIGFsaWduPSJjZW50ZXIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBjb2xvcjogYmxhY2s7Ij5Db3B5cmlnaHQKLTIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij48dTE6cD48L3UxOnA+PG86cD48L286cD48L3NwYW4+PC9wPgotPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiIGFsaWduPSJjZW50ZXIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBjb2xvcjogYmxhY2s7Ij48aW1nIHN0eWxlPSJib3JkZXI6IDBweCBzb2xpZCA7IHdpZHRoOiAxNzFweDsgaGVpZ2h0OiAxMjZweDsiIGFsdD0iIiBpZD0iX3gwMDAwX2kxMDI2IiBzcmM9Il9odG1yZXNjL3N0X2xvZ28ucG5nIj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KLTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+Ci08cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGRpc3BsYXk6IG5vbmU7Ij48bzpwPiZuYnNwOzwvbzpwPjwvc3Bhbj48c3BhbiBsYW5nPSJmciI+PGZvbnQgZmFjZT0iQXJpYWwiPlRoZSZuYnNwO2hhcmR3YXJlCi1hYnN0cmFjdGlvbiBsYXllciAoSEFMKSBwcm92aWRlcyBsb3cgbGV2ZWwgZHJpdmVycyBhbmQgdGhlIGhhcmR3YXJlCi1pbnRlcmZhY2luZyBtZXRob2RzIHRvIGludGVyYWN0IHdpdGggdXBwZXIgbGF5ZXIgKGFwcGxpY2F0aW9uLAotbGlicmFyaWVzIGFuZCBzdGFja3MpLiAmbmJzcDtJdCBpbmNsdWRlcyBhIGNvbXBsZXRlIHNldCBvZiByZWFkeS10by11c2UKLUFQSXMsIHRoYXQgYXJlIGZlYXR1cmUtb3JpZW50ZWQgaW5zdGVhZCBvZiBJUC1PcmllbnRlZCB0byBzaW1wbGlmeSB1c2VyCi1hcHBsaWNhdGlvbiBkZXZlbG9wbWVudC48L2ZvbnQ+IDwvc3Bhbj48L3A+Ci08dGFibGUgY2xhc3M9Ik1zb05vcm1hbFRhYmxlIiBzdHlsZT0id2lkdGg6IDY3NXB0OyIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjkwMCI+Ci08dGJvZHk+Ci08dHI+Ci08dGQgc3R5bGU9InBhZGRpbmc6IDBpbjsiIHZhbGlnbj0idG9wIj4KLTxoMiBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiBpbml0aWFsOyI+PGEgbmFtZT0iSGlzdG9yeSI+PC9hPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IGNvbG9yOiB3aGl0ZTsiPlVwZGF0ZSBIaXN0b3J5PC9zcGFuPgotICAgICAgICAgICAgPC9oMj48aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7IC1tb3otYmFja2dyb3VuZC1jbGlwOiBpbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiBpbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgd2lkdGg6IDI0MXB4OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IEFyaWFsOyBjb2xvcjogd2hpdGU7Ij5WMS4yLjgvIDEzLUZlYnJ1YXJ5LTIwMjA8L3NwYW4+PC9oMz4KLSAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBjbSA0LjVwdCAxOHB0OyI+PGI+PHU+PHNwYW4gc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPk1haW4gQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjwvcD4KLSAgICAgICAgICAgIDx1bCBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtaW5kZW50OiAwcHg7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG1hcmdpbi10b3A6IDBjbTsgbWFyZ2luLWJvdHRvbTogMGluOyB3b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsiIHR5cGU9InNxdWFyZSI+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5HZW5lcmFsIHVwZGF0ZXMgIHRvIGZpeCBrbm93biBkZWZlY3RzIGFuZCBlbmhhbmNlbWVudHMgaW1wbGVtZW50YXRpb248L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTC9MTCBHUElPJm5ic3A7PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5VcGRhdGUmbmJzcDtHUElPCi0gICAgICBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZTxiPiZuYnNwOzwvYj50byBhdm9pZCB1bndhbnRlZCBwdWxzZSBvbiBHUElPIFBpbidzPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBJMkMmbmJzcDs8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tYm90dG9tOiAwLjAwMDFwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+VXBkYXRlCi0gICAgICBIQUxfSTJDX0VWX0lSUUhhbmRsZXIoKSBBUEkgdG8gZml4IEkyQyBzZW5kIGJyZWFrIGlzc3VlJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IiBsYW5nPSJFTi1VUyI+PG86cD48L286cD48L3NwYW4+PC9saT48L3VsPjx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0iZGlzYyI+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkFkZAotICAgICAgIGFkZGl0aW9uYWwgY2hlY2sgb24gaGkyYy0mZ3Q7aGRtYXR4LAotICAgICAgIGhkbWF0eC0mZ3Q7WGZlckNwbHRDYWxsYmFjaywmbmJzcDtoaTJjLSZndDtoZG1hcngsCi0gICAgICAgaGRtYXJ4LSZndDtYZmVyQ3BsdENhbGxiYWNrIGluIEkyQ19NYXN0ZXJfU0IoKSBBUEkgdG8KLSAgICAgICBhdm9pZCZuYnNwO2VuYWJsaW5nIERNQSByZXF1ZXN0Jm5ic3A7d2hlbiBJVCBtb2RlIGlzIHVzZWQuPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IiBsYW5nPSJFTi1VUyI+PG86cD48L286cD48L3NwYW4+PC9saT48L3VsPjwvdWw+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPlVwZGF0ZQotICAgICAgSEFMX0kyQ19FUl9JUlFIYW5kbGVyKCkgQVBJIHRvIGZpeCBhY2tub3dsZWRnZSBmYWlsdXJlIGlzc3VlIHdpdGgKLSAgICAgIEkyQyZuYnNwO21lbW9yeSBJVCBwcm9jZXNzZXM8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsiIGxhbmc9IkVOLVVTIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjwvdWw+PHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJkaXNjIj48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+Jm5ic3A7QWRkJm5ic3A7c3RvcAotICAgICAgIGNvbmRpdGlvbiBnZW5lcmF0aW9uJm5ic3A7d2hlbiZuYnNwO05BQ0sgb2NjdXJzLjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyIgbGFuZz0iRU4tVVMiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48L3VsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5VcGRhdGUmbmJzcDtIQUxfSTJDX0luaXQoKQotICAgICAgQVBJIHRvIGZvcmNlIHNvZnR3YXJlIHJlc2V0IGJlZm9yZSBzZXR0aW5nIG5ldyBJMkMgY29uZmlndXJhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyIgbGFuZz0iRU4tVVMiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+VXBkYXRlCi0gICAgICBIQUwgSTJDIHByb2Nlc3NlcyB0byByZXBvcnQgRXJyb3JDb2RlJm5ic3A7d2hlbiB3cm9uZyBJMkMgc3RhcnQgY29uZGl0aW9uCi0gICAgICBvY2N1cnM8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsiIGxhbmc9IkVOLVVTIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjwvdWw+PHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJkaXNjIj48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+Jm5ic3A7QWRkCi0gICAgICAgbmV3Jm5ic3A7RXJyb3JDb2RlIGRlZmluZTogSEFMX0kyQ19XUk9OR19TVEFSVDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyIgbGFuZz0iRU4tVVMiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+Jm5ic3A7U2V0Jm5ic3A7RXJyb3JDb2RlCi0gICAgICAgcGFyYW1ldGVyIGluJm5ic3A7STJDIGhhbmRsZSB0byZuYnNwO0hBTF9JMkNfV1JPTkdfU1RBUlQ8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsiIGxhbmc9IkVOLVVTIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjwvdWw+PC91bD48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+VXBkYXRlJm5ic3A7STJDX0RNQVhmZXJDcGx0KCksCi0gICAgICBJMkNfRE1BRXJyb3IoKSBhbmQgSTJDX0RNQUFib3J0KCkgQVBJcyB0byBmaXggaGFyZGZhdWx0IGlzc3VlIHdoZW4gaGRtYXR4Ci0gICAgICBhbmQgaGRtYXJ4Jm5ic3A7cGFyYW1ldGVycyBpbiBpMmMgaGFuZGxlIGFyZW4ndCBpbml0aWFsaXplZCAoTlVMTCBwb2ludGVyKS48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsiIGxhbmc9IkVOLVVTIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjwvdWw+PHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJkaXNjIj48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+QWRkCi0gICAgICAgYWRkaXRpb25hbCBjaGVjayBvbiBoaTJjLSZndDtoZG10eCBhbmQgaGkyYy0mZ3Q7aGRtYXJ4IGJlZm9yZQotICAgICAgIHJlc2V0dGluZyZuYnNwO0RNQSBUeC9SeCBjb21wbGV0ZSBjYWxsYmFjazwvc3Bhbj48L2xpPjwvdWw+PC91bD48L3VsPgotCi08dWwgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWluZGVudDogMHB4OyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBtYXJnaW4tdG9wOiAwY207IG1hcmdpbi1ib3R0b206IDBpbjsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IiB0eXBlPSJzcXVhcmUiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIEFEQyA8L3NwYW4+VXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+QWRkICJBRENfSU5URVJOQUxfTk9ORSIgY2hhbm5lbCB0byBkaXNhYmxlIHRoZSBWQkFUICZhbXA7IFRTVlJFRkUgY2hhbm5lbC48L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIERDTUkgPC9zcGFuPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBEQ01JX1N5bmNVbm1hc2tUeXBlRGVmIHN0cnVjdHVyZSBhbmQgSEFMX0RDTUlfQ29uZmlnU3luY1VubWFzaygpIEFQSSB0byBtYW5hZ2UgZW1iZWRkZWQgc3luY2hyb25pemF0aW9uIGRlbGltaXRlcnMgdW5tYXNrczwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgRVhUSTwvc3Bhbj4gdXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+R2VuZXJhbCB1cGRhdGUgdG8gZW5oYW5jZSBIQUwgRVhUSSBkcml2ZXIgcm9idXN0bmVzcyZuYnNwOzwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBhZGRpdGlvbmFsIGFzc2VydCBjaGVjayBvbiBFWFRJIGNvbmZpZyBsaW5lczwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIHRvIGNvbXB1dGUgRVhUSSBsaW5lIG1hc2sgYmVmb3JlIHJlYWQvd3JpdGUgYWNjZXNzIHRvIEVYVEkgcmVnaXN0ZXJzPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSBFWFRJIGNhbGxiYWNrcyBtYW5hZ2VtZW50IHRvIGJlIGNvbXBsaWFudCB3aXRoIHJlZmVyZW5jZSBtYW51YWw6IG9ubHkgb25lIFBSIHJlZ2lzdGVyIGZvciByaXNpbmcgYW5kIGZhbGxpbmcgaW50ZXJydXB0cy48L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUKLXBhcmFtZXRlcnMgaW4gRVhUSV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZTogbWVyZ2UgSEFMIEVYVEkKLVJpc2luZ0NhbGxiYWNrIGFuZCBGYWxsaW5nQ2FsbGJhY2sgaW4gb25seSBvbmUgUGVuZGluZ0NhbGxiYWNrLjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+UmVtb3ZlIEhBTF9FWFRJX1JJU0lOR19DQl9JRCBhbmQgSEFMX0VYVElfRkFMTElOR19DQl9JRCB2YWx1ZXMgZnJvbSBFWFRJX0NhbGxiYWNrSURUeXBlRGVmIGVudW1lcmF0aW9uLjwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgSEFMX0VYVElfSVJRSGFuZGxlcigpIEFQSSB0byBzZXJ2ZSBpbnRlcnJ1cHRzIGNvcnJlY3RseS48L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgdG8gY29tcHV0ZSBFWFRJIGxpbmUgbWFzayBiZWZvcmUgaGFuZGxlIEVYVEkgaW50ZXJydXB0Ljwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgdG8gc3VwcG9ydCBHUElPIHBvcnQgaW50ZXJydXB0czo8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgbmV3ICJHUElPU2VsIiBwYXJhbWV0ZXIgaW4gRVhUSV9Db25maWdUeXBlRGVmIHN0cnVjdHVyZTwvc3Bhbj48L2xpPjwvdWw+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBIQVNIJm5ic3A7PC9zcGFuPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjwvc3Bhbj5OdWxsIHBvaW50ZXIgb24gaGFuZGxlciAiaGhhc2giIGlzIG5vdyBjaGVja2VkIGJlZm9yZSBhY2Nlc3Npbmcgc3RydWN0dXJlIG1lbWJlciAiaGhhc2gtJmd0O0luaXQuRGF0YVR5cGUiIGluIHRoZSBmb2xsb3dpbmcgQVBJOjwvc3Bhbj48L2xpPjwvdWw+PHVsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9IQVNIX0luaXQoKTwvc3Bhbj48L2xpPjwvdWw+PC91bD48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5Gb2xsb3dpbmcgPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+aW50ZXJydXB0LWJhc2VkPC9zcGFuPgotQVBJcyBoYXZlIGJlZW4gYWRkZWQuIEludGVycnVwdCBtb2RlIGNvdWxkIGFsbG93IHRoZSBNQ1UgdG8gZW50ZXIKLSJTbGVlcCIgbW9kZSB3aGlsZSBhIGRhdGEgYmxvY2sgaXMgYmVpbmcgcHJvY2Vzc2VkLiBQbGVhc2UgcmVmZXIgdG8gdGhlCi0iIyMjIyMgSG93IHRvIHVzZSB0aGlzIGRyaXZlciAjIyMjIyIgc2VjdGlvbiBmb3IgZGV0YWlscyBhYm91dCB0aGVpcgotdXNlLjwvc3Bhbj48L2xpPjwvdWw+PHVsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9IQVNIX1NIQTFfQWNjbWx0X0lUKCk8L3NwYW4+PC9saT48L3VsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9IQVNIX01ENV9BY2NtbHRfSVQoKTwvc3Bhbj48L2xpPjwvdWw+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0hBU0hFeF9TSEEyMjRfQWNjbWx0X0lUKCk8L3NwYW4+PC9saT48L3VsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9IQVNIRXhfU0hBMjU2X0FjY21sdF9JVCgpPC9zcGFuPjwvbGk+PC91bD48L3VsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkZvbGxvd2luZyA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5hbGlhc2VzPC9zcGFuPiBoYXZlIGJlZW4gYWRkZWQgKGp1c3QgPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+Zm9yIGNsYXJpdHkgc2FrZTwvc3Bhbj4pIGFzIHRoZXkgc2hhbGwgYmUgdXNlZCBhdCB0aGUgPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+ZW5kPC9zcGFuPiBvZiB0aGUgY29tcHV0YXRpb24gb2YgYSBtdWx0aS1idWZmZXJzIG1lc3NhZ2UgYW5kIG5vdCBhdCB0aGUgc3RhcnQ6PC9zcGFuPjwvbGk+PC91bD48dWw+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0hBU0hfU0hBMV9BY2NtbHRfRW5kKCkgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIEhBTF9IQVNIX1NIQTFfU3RhcnQoKTwvc3Bhbj48L2xpPjwvdWw+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0hBU0hfTUQ1X0FjY21sdF9FbmQoKSB0byBiZSB1c2VkIGluc3RlYWQgb2YgSEFMX0hBU0hfTUQ1X1N0YXJ0KCk8L3NwYW4+PC9saT48L3VsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9IQVNIX1NIQTFfQWNjbWx0X0VuZF9JVCgpIHRvIGJlIHVzZWQgaW5zdGVhZCBvZiBIQUxfSEFTSF9TSEExX1N0YXJ0X0lUKCk8L3NwYW4+PC9saT48L3VsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9IQVNIX01ENV9BY2NtbHRfRW5kX0lUKCkgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIEhBTF9IQVNIX01ENV9TdGFydF9JVCgpPC9zcGFuPjwvbGk+PC91bD48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfSEFTSEV4X1NIQTIyNF9BY2NtbHRfRW5kKCkgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIEhBTF9IQVNIRXhfU0hBMjI0X1N0YXJ0KCk8L3NwYW4+PC9saT48L3VsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9IQVNIRXhfU0hBMjU2X0FjY21sdF9FbmQoKSB0byBiZSB1c2VkIGluc3RlYWQgb2YgSEFMX0hBU0hFeF9TSEEyNTZfU3RhcnQoKTwvc3Bhbj48L2xpPjwvdWw+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0hBU0hFeF9TSEEyMjRfQWNjbWx0X0VuZF9JVCgpIHRvIGJlIHVzZWQgaW5zdGVhZCBvZiBIQUxfSEFTSEV4X1NIQTIyNF9TdGFydF9JVCgpPC9zcGFuPjwvbGk+PC91bD48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfSEFTSEV4X1NIQTI1Nl9BY2NtbHRfRW5kX0lUKCkgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIEhBTF9IQVNIRXhfU0hBMjU2X1N0YXJ0X0lUKCk8L3NwYW4+PC9saT48L3VsPjwvdWw+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+TUlTUkFDLTIwMTIKLXJ1bGUgUi41LjEgKGlkZW50aWZpZXJzIHNoYWxsIGJlIGRpc3RpbmN0IGluIHRoZSBmaXJzdCAzMSBjaGFyYWN0ZXJzKQotY29uc3RyYWluZWQgdGhlIG5hbWluZyBvZiB0aGUgYWJvdmUgbGlzdGVkIGFsaWFzZXMgKGUuZy4KLUhBTF9IQVNIRXhfU0hBMjU2XzxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkFjY21sdDwvc3Bhbj5fRW5kKCkgY291bGQgbm90IGJlIG5hbWVkIEhBTF9IQVNIRXhfU0hBMjU2XzxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkFjY3VtdWxhdGU8L3NwYW4+X0VuZCgpLiBPdGhlcndpc2UgdGhlIG5hbWUgd291bGQgaGF2ZSBjb25mbGljdGVkIHdpdGggSEFMX0hBU0hFeF9TSEEyNTZfPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+QWNjdW11bGF0ZTwvc3Bhbj5fRW5kX0lUKCkpLiBJbiBvcmRlciB0byBoYXZlIGFsaWduZWQgbmFtZXMgZm9sbG93aW5nIEFQSXMgaGF2ZSBiZWVuIHJlbmFtZWQ6PC9zcGFuPjwvbGk+PC91bD48dWw+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0hBU0hfTUQ1X0FjY3VtdWxhdGUoKSByZW5hbWVkIEhBTF9IQVNIX01ENV9BY2NtbHQoKTwvc3Bhbj48L2xpPjwvdWw+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0hBU0hfU0hBMV9BY2N1bXVsYXRlKCkgcmVuYW1lZCBIQUxfSEFTSF9TSEExX0FjY21sdCgpPC9zcGFuPjwvbGk+PC91bD48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfSEFTSEV4X1NIQTIyNF9BY2N1bXVsYXRlKCkgcmVuYW1lZCBIQUxfSEFTSEV4X1NIQTIyNF9BY2NtbHQoKTwvc3Bhbj48L2xpPjwvdWw+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0hBU0hFeF9TSEEyNTZfQWNjdW11bGF0ZSgpIHJlbmFtZWQgSEFMX0hBU0hFeF9TSEEyNTZfQWNjbWx0KCk8L3NwYW4+PC9saT48L3VsPjwvdWw+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFTSCA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5oYW5kbGVyPC9zcGFuPiBzdGF0ZSBpcyA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5ubyBtb3JlPC9zcGFuPiByZXNldCB0byBIQUxfSEFTSF9TVEFURV9SRUFEWSA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5vbmNlIERNQSBoYXMgYmVlbiBzdGFydGVkPC9zcGFuPiBpbiB0aGUgZm9sbG93aW5nIEFQSXM6PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0hBU0hfTUQ1X1N0YXJ0X0RNQSgpPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfSE1BQ19NRDVfU3RhcnRfRE1BKCk8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9IQVNIX1NIQTFfU3RhcnRfRE1BKCk8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9ITUFDX1NIQTFfU3RhcnRfRE1BKCk8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFTSCA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5waGFzZTwvc3Bhbj4gc3RhdGUgaXMgbm93IHNldCB0byBIQUxfSEFTSF9QSEFTRV9SRUFEWTxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPiBvbmNlIHRoZSBkaWdlc3QgaGFzIGJlZW4gcmVhZDwvc3Bhbj4gaW4gdGhlIGZvbGxvd2luZyBBUElzOjwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBU0hfSVQoKTwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SE1BQ19Qcm9jZXNzaW5nKCk8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBU0hfU3RhcnQoKTwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFTSF9GaW5pc2goKTwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5DYXNlIG9mIGEgbGFyZ2UgYnVmZmVyIHNjYXR0ZXJlZCBhcm91bmQgaW4gbWVtb3J5IGVhY2ggcGllY2Ugb2Ygd2hpY2ggaXMgPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+bm90PC9zcGFuPiBuZWNlc3NhcmlseSBhIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPm11bHRpcGxlIG9mIDQ8L3NwYW4+IGJ5dGVzIGluIGxlbmd0aC48L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5Jbgotc2VjdGlvbiAiIyMjIyMgSG93IHRvIHVzZSB0aGlzIGRyaXZlciAjIyMjIyIsIHN1Yi1zZWN0aW9uICIqKiogUmVtYXJrcwotb24gbWVzc2FnZSBsZW5ndGggKioqIiBhZGRlZCB0byBwcm92aWRlIHJlY29tbWVuZGF0aW9ucyB0byBmb2xsb3cgaW4KLXN1Y2ggY2FzZS48L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPk5vIG1vZGlmaWNhdGlvbiBvZiB0aGUgZHJpdmVyIGFzIHRoZSByb290LWNhdXNlIGlzIGF0IGRlc2lnbi1sZXZlbC48YnI+PC9zcGFuPjwvbGk+PC91bD48L3VsPjwvdWw+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj48dWwgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWluZGVudDogMHB4OyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBtYXJnaW4tdG9wOiAwY207IG1hcmdpbi1ib3R0b206IDBpbjsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IiB0eXBlPSJzcXVhcmUiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBTRE1NQyZuYnNwOzwvc3Bhbj48L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+Rml4Jm5ic3A7dHlwbyBpbiAiRmlsZUZvcm1hdEdyb3VwIiBwYXJhbWV0ZXIgaW4gdGhlIEhBTF9NTUNfQ2FyZENTRFR5cGVEZWYgYW5kIEhBTF9TRF9DYXJkQ1NEVHlwZURlZiBzdHJ1Y3R1cmVzLjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+Rml4IGFuIGltcHJvdmUgaGFuZGxlIHN0YXRlIGFuZCBlcnJvciBtYW5hZ2VtZW50PC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5SZW5hbWUgdGhlIGRlZmluZWQgTU1DIGNhcmQgY2FwYWNpdHkgdHlwZSB0byBiZSBtb3JlIG1lYW5pbmdmdWw6PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPk1NQ19ISUdIX1ZPTFRBR0VfQ0FSRDwvc3Bhbj4gdG8gPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+TU1DIExPV19DQVBBQ0lUWV9DQVJEPC9zcGFuPjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPk1NQ19EVUFMX1ZPTFRBR0VfQ1JBRDwvc3Bhbj4gdG8gPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+TU1DX0hJR0hfQ0FQQUNJVFlfQ0FSRDwvc3Bhbj48L3NwYW4+PC9saT48L3VsPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgUVNQSSA8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+UmVtb3ZlIExvY2sgbWVjaGFuaXNtIGZyb20gSEFMX1FTUElfSW5pdCgpIGFuZCBIQUxfUVNQSV9EZUluaXQoKSBBUElzPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGIgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7Ij5IQUwgTFBUSU08c3Bhbj4mbmJzcDs8L3NwYW4+PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsiPkFkZCBhIHBvbGxpbmcgbWVjaGFuaXNtIHRvIGNoZWNrIG9uJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+TFBUSU1fRkxBR19YWE9LPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7Ij48c3Bhbj4mbmJzcDs8L3NwYW4+ZmxhZ3MgaW4gZGlmZmVyZW50IEFQSSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyI+PC9zcGFuPjwvbGk+PHVsIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7Ij5BZGQmbmJzcDtMUFRJTV9XYWl0Rm9yRmxhZygpPHNwYW4+Jm5ic3A7PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyI+QVBJPHNwYW4+Jm5ic3A7PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyI+dG8gd2FpdCBmb3IgZmxhZyBzZXQuPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyI+UGVyZm9ybSBuZXcgY2hlY2tzIG9uIEhBTF9MUFRJTV9TVEFURV9USU1FT1VULjwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyI+V29ya2Fyb3VuZCB0byBmaXggTUNVIHNsYWNrIGluIHNsZWVwIG1vZGU8YnI+PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsiPlVwZGF0ZSBfX0hBTF9MUFRJTV9ESVNBQkxFICgpIG1hY3JvIHVzZWQgdG8gZGlzYWJsZSBMUFRJTSBIVyBpbnN0YW5jZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7Ij5SZW1vdmUgdGhlIExQVElNX0NSX0VOQUJMRSBiaXQgY2xlYXIuPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyI+QWRkIGEgbmV3IEFQSSZuYnNwOyBMUFRJTV9EaXNhYmxlKCkgZGVmaW5lZCBpbiZuYnNwOyBoYWxfbHB0aW0uYzwvc3Bhbj48L2xpPjwvdWw+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7Ij5VcGRhdGUgX19IQUxfTFBUSU1fUkVTRVRfSEFORExFX1NUQVRFKF9fSEFORExFX18pIG1hY3JvIGJ5IGFkZGluZyBhIHNwZWNpZmljIC4uLi4gd2hlbiB1c2luZyBjYWxsYmFjayByZWdpc3Rlcjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsiPl9fSEFMX0xQVElNX0VOQUJMRTwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsiPlJlbW92ZSB1c3NlbGVzcyBjaGVjayBvbiBMUFRJTTIgaW4gdGhlIExMIGRyaXZlciBzaW5jZSBGNyBzdXBwb3J0IG9ubHkgb25lIGluc3RhbmNlIG9mIExQVElNLjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsiPlVwZGF0ZSB0aGUmbmJzcDsgTExfTFBUSU1fRElTQUJMRSgpIEFQSSB1c2VkIHRvIGRpc2FibGUgTFBUSU0gSFcgaW5zdGFuY2U8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyI+TW92ZSBBUEkgZGVmaW5pdGlvbiB0byBsbF9scHRpbS5jPC9zcGFuPjwvbGk+PC91bD48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PGIgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7Ij5IQUwmbmJzcDtUSU08c3Bhbj4mbmJzcDs8L3NwYW4+PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsiPkFkZCBuZXcgbWFjcm9zIHRvIGVuYWJsZSBhbmQgZGlzYWJsZSB0aGUgZmFzdCBtb2RlIHdoZW4gdXNpbmcgdGhlIG9uZSBwdWxzZSBtb2RlIHRvIG91dHB1dCBhIHdhdmVmb3JtIHdpdGggYSBtaW5pbXVtIGRlbGF5PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsiPl88L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTMuMzMzM3B4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IGxlZnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyBkaXNwbGF5OiBpbmxpbmUgISBpbXBvcnRhbnQ7IGZsb2F0OiBub25lOyI+X0hBTF9USU1fRU5BQkxFX09DeEZBU1QoKSBhbmQgX19IQUxfVElNX0RJU0FCTEVfT0N4RkFTVCgpLjwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMy4zMzMzcHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IGRpc3BsYXk6IGlubGluZSAhIGltcG9ydGFudDsgZmxvYXQ6IG5vbmU7Ij5VPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IGxlZnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyBmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7Ij5wZGF0ZSBFbmNvZGVyIGludGVyZmFjZSBtb2RlIHRvIGtlZXAmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IGZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsiPlRJTV9DQ0VSX0NDeE5QIGJpdHMgbG93PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsiPkFkZCZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyI+VElNX0VOQ09ERVJJTlBVVFBPTEFSSVRZX1JJU0lORyBhbmQgVElNX0VOQ09ERVJJTlBVVFBPTEFSSVRZX0ZBTExJTkc8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsiPjxzcGFuPiZuYnNwOzwvc3Bhbj5kZWZpbml0aW9ucyB0byBkZXRlcm1pbmUgZW5jb2RlciBpbnB1dCBwb2xhcml0eS48L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7Ij5BZGQ8c3Bhbj4mbmJzcDs8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7Ij5JU19USU1fRU5DT0RFUklOUFVUX1BPTEFSSVRZKCk8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsiPjxzcGFuPiZuYnNwOzwvc3Bhbj5tYWNybyB0byBjaGVjayZuYnNwO3RoZSBlbmNvZGVyIGlucHV0IHBvbGFyaXR5Ljwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfVElNX0VuY29kZXJfSW5pdCgpIEFQSSZuYnNwOzwvc3Bhbj48L2xpPjx1bCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyI+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyI+UmVwbGFjZSBJU19USU1fSUNfUE9MQVJJVFkoKSBtYWNybyBieSBJU19USU1fRU5DT0RFUklOUFVUX1BPTEFSSVRZKCkgbWFjcm8uPC9zcGFuPjwvbGk+PC91bD48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q29ycmVjdCB3cm9uZwotICAgICAgaW5zdGFuY2UgcGFyYW1ldGVyIGNoZWNrIGluIGVuY29kZXIgbW9kZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVwbGFjZQotICAgICAgICBJU19USU1fQ0MyX0lOU1RBTkNFIGJ5IElTX1RJTV9FTkNPREVSX0lOVEVSRkFDRV9JTlNUQU5DRSBpbiBlbmNvZGVyCi0gICAgICAgIGludGVyZmFjZSA6Jm5ic3A7PG86cD48L286cD48L3NwYW4+PC9saT48L3VsPjx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0iZGlzYyI+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1RJTV9FbmNvZGVyX1N0YXJ0KCk8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjwvdWw+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1RJTV9FbmNvZGVyX1N0b3AoKTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfVElNX0VuY29kZXJfU3RhcnRfSVQoKTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfVElNX0VuY29kZXJfU3RvcF9JVCgpPG86cD48L286cD48L3NwYW4+PC9saT48L3VsPjwvdWw+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVwbGFjZQotICAgICAgICBJU19USU1fRE1BX0NDX0lOU1RBTkNFIGJ5IElTX1RJTV9FTkNPREVSX0lOVEVSRkFDRV9JTlNUQU5DRSBpbiBlbmNvZGVyCi0gICAgICAgIGludGVyZmFjZSBpbiBETUEgbW9kZSA6Jm5ic3A7PG86cD48L286cD48L3NwYW4+PC9saT48L3VsPjx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0iZGlzYyI+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1RJTV9FbmNvZGVyX1N0YXJ0X0RNQSgpPG86cD48L286cD48L3NwYW4+PC9saT48L3VsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9USU1fRW5jb2Rlcl9TdG9wX0RNQSgpPG86cD48L286cD48L3NwYW4+PC9saT48L3VsPjwvdWw+PC91bD48L3VsPgotCi08dWw+PHVsPjxsaT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCi0gICAgICBIQUxfVElNRXhfTWFzdGVyQ29uZmlnU3luY2hyb25pemF0aW9uKCkgQVBJIHRvIGF2b2lkIGZ1bmN0aW9uYWwgZXJyb3JzCi0gICAgICBhbmQmbmJzcDthc3NlcnQgZmFpbHMgd2hlbiB1c2luZyBzb21lIFRJTSBpbnN0YW5jZXMgYXMgaW5wdXQgdHJpZ2dlci48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjwvdWw+PC91bD48dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBjbTsiIHR5cGU9ImRpc2MiPjx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0iZGlzYyI+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVwbGFjZSZuYnNwO0lTX1RJTV9TWU5DSFJPX0lOU1RBTkNFKCkKLSAgICAgICBtYWNybyBieSBJU19USU1fTUFTVEVSX0lOU1RBTkNFKCkgbWFjcm8uJm5ic3A7PG86cD48L286cD48L3NwYW4+PC9saT48L3VsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCZuYnNwO0lTX1RJTV9TTEFWRV9JTlNUQU5DRSgpCi0gICAgICAgbWFjcm8gdG8mbmJzcDtjaGVjayBvbiBUSU1fU01DUl9NU00gYml0LjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48L3VsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlByb3ZpZGUgbmV3Ci0gICAgICBBUEkmbmJzcDt0byBzZXQgYW5kIGNsZWFyIFVJRlJFTUFQPG86cD48L286cD48L3NwYW4+PC9saT48L3VsPjx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0iZGlzYyI+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldwotICAgICAgIGRlZmluaXRpb24gZm9yIFRJTSBVcGRhdGUgSW50ZXJydXB0IEZsYWcgUmVtYXA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjwvdWw+PHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJkaXNjIj48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5USU1fVUlGUkVNQVBfRElTQUJMRTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5USU1fVUlGUkVNQVBfRU5BQkxFPG86cD48L286cD48L3NwYW4+PC9saT48L3VsPjwvdWw+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBtYWNybwotICAgICAgIGluIEhBTCBkcml2ZXIgdG8gZW5hYmxlIGFuZCBkZXNhYmxlIHRoZSZuYnNwOyBVcGRhdGUgSW50ZXJydXB0IEZsYWcKLSAgICAgICBSZW1hcDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBjbTsiIHR5cGU9ImRpc2MiPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO19fSEFMX1RJTV9VSUZSRU1BUF9FTkFCTEUoKTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5fX0hBTF9USU1fVUlGUkVNQVBfRElTQUJMRSgpL19fSEFMX1RJTV9HRVRfVUlGQ1BZCi0gICAgICAgIG1hY3JvPG86cD48L286cD48L3NwYW4+PC9saT48L3VsPjwvdWw+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldwotICAgICAgIG1lY2FuaXNtIHRvIGNoZWNrIHdoZXRoZXIgdGhlJm5ic3A7dXBkYXRlIGludGVycnVwdCBmbGFnIChVSUYpIGNvcHkgaXMKLSAgICAgICBzZXQgb3Igbm90Jm5ic3A7PG86cD48L286cD48L3NwYW4+PC9saT48L3VsPjx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0iZGlzYyI+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIHRoZQotICAgICAgICBfX0hBTF9USU1fR0VUX1VJRkNQWSgpIG1hY3JvIGluIHRoZSBIQUwgZHJpdmVyPG86cD48L286cD48L3NwYW4+PC9saT48L3VsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZAotICAgICAgICBMTF9USU1fSXNBY3RpdmVVSUZDUFkoKSBBUEkgaW4gdGhlIExMIGRyaXZlcjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48L3VsPjwvdWw+PHVsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgbWFjcm8KLSAgICAgICB0byBjaGVjayBvbiB0aGUmbmJzcDtVcGRhdGUgSW50ZXJydXB0IEZsYWcgUmVtYXAgbW9kZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48L3VsPjx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0iZGlzYyI+PHVsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPklTX1RJTV9VSUZSRU1BUF9NT0RFKCk8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjwvdWw+PC91bD48L3VsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbW92ZSB1c3NlbGVzcwotICAgICAgZGVmaW5lIGluIHRoZSBMTCBkcml2ZXImbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjwvdWw+PHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJkaXNjIj48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5USU14X0FGMV9CS0lORQotICAgICAgIC8gVElNeF9BRjFfQktERkJLRSAvICZuYnNwO1RJTXhfQUYyX0JLMklORSAvICZuYnNwO1RJTXhfQUYyX0JLMkRGQktFIC8KLSAgICAgICAmbmJzcDtUSU14X0FGMl9CSzJJTlA8L3NwYW4+PC9saT48L3VsPjwvdWw+PC91bD48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyI+PC9zcGFuPjx1bCBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtaW5kZW50OiAwcHg7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG1hcmdpbi10b3A6IDBjbTsgbWFyZ2luLWJvdHRvbTogMGluOyB3b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsiIHR5cGU9InNxdWFyZSI+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48YiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IGxlZnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsiPkhBTCZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgbGluZS1oZWlnaHQ6IDEwNiU7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5TTUFSVENBUkQ8L3NwYW4+IHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyI+PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBsaW5lLWhlaWdodDogMTA2JTsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBTTUFSVENBUkRfU2V0Q29uZmlnKCkgQVBJLjwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGxpbmUtaGVpZ2h0OiAxMDYlOyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+U3BsaXQgSEFMX1JDQ19HZXRQQ0xLMUZyZXEoKSBhbmQKLUhBTF9SQ0NfR2V0UENMSzJGcmVxKCkgbWFjcm9zIGZyb20gdGhlIEJSUiBjYWxjdWxhdGlvbi48L3NwYW4+PC9saT48L3VsPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtd2VpZ2h0OiBib2xkOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgbGluZS1oZWlnaHQ6IDEwNiU7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwmbmJzcDs8L3NwYW4+PGIgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7Ij48L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGxpbmUtaGVpZ2h0OiAxMDYlOyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SVJEQSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsiPnVwZGF0ZTwvc3Bhbj48L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBsaW5lLWhlaWdodDogMTA2JTsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBJUkRBX1NldENvbmZpZygpIEFQSSZuYnNwOzwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGxpbmUtaGVpZ2h0OiAxMDYlOyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+U3BsaXQgSEFMX1JDQ19HZXRQQ0xLMUZyZXEoKSBhbmQKLUhBTF9SQ0NfR2V0UENMSzJGcmVxKCkgbWFjcm9zIGZyb20gdGhlIElSREFfRElWX1NBTVBMSU5HMTYoKSBtYWNyby48L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgbGluZS1oZWlnaHQ6IDEwNiU7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgc29tZSBBUEkgZGVzY2lwdGlvbjwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGxpbmUtaGVpZ2h0OiAxMDYlOyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0lSREFfVHJhbnNtaXQoKSAvJm5ic3A7SEFMX0lSREFfVHJhbnNtaXRfSVQoKTwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgbGluZS1oZWlnaHQ6IDEwNiU7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+SEFMX0lSREFfUmVjZWl2ZSgpIC8mbmJzcDtIQUxfSVJEQV9SZWNlaXZlX0lUKCk8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGxpbmUtaGVpZ2h0OiAxMDYlOyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0lSREFfVHJhbnNtaXRfRE1BKCkgLyBIQUxfSVJEQV9SZWNlaXZlX0RNQSgpPC9zcGFuPjwvbGk+PC91bD48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgbGluZS1oZWlnaHQ6IDEwNiU7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgUkNDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgbGluZS1oZWlnaHQ6IDEwNiU7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBsaW5lLWhlaWdodDogMTA2JTsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0aGUgSEFMX1JDQ19DbG9ja0NvbmZpZygpIGFuZCBIQUxfUkNDX0RlSW5pdCgpIEFQSSB0byBkb24ndCBvdmVyd3JpdGUgdGhlIGN1c3RvbSB0aWNrIHByaW9yaXR5PC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBsaW5lLWhlaWdodDogMTA2JTsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfUkNDX09zY0NvbmZpZygpIEFQSSB0byBkb24ndCByZXR1cm4gSEFMX0VSUk9SIGlmIHJlcXVlc3QgcmVwZWF0cyB0aGUgY3VycmVudCBQTEwgY29uZmlndXJhdGlvbjwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBsaW5lLWhlaWdodDogMTA2JTsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTC9MTCBVU0FSVDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgbGluZS1oZWlnaHQ6IDEwNiU7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDt1cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBsaW5lLWhlaWdodDogMTA2JTsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBzdXBwb3J0IHRvIHRoZSBSZWNlaXZlciBUaW1lb3V0IEludGVycnVwdCBpbiB0aGUKLUhBTF9VU0FSVF9JUlFIYW5kbGVyPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBsaW5lLWhlaWdodDogMTA2JTsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBzb21lIEFQSSBkZXNjaXB0aW9uJm5ic3A7PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+Ci0KLTxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDJwdCAwY207IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkhBTF9VU0FSVF9UcmFuc21pdCgpIC8mbmJzcDtIQUxfVVNBUlRfVHJhbnNtaXRfSVQoKSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPgotCi0KLQotPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogMnB0IDBjbSAycHQgMThwdDsgdGV4dC1pbmRlbnQ6IC0xOHB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5IQUxfVVNBUlRfUmVjZWl2ZSgpIC8mbmJzcDtIQUxfVVNBUlRfUmVjZWl2ZV9JVCgpJm5ic3A7PC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+Ci0KLTxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDJwdCAwY20gMnB0IDE4cHQ7IHRleHQtaW5kZW50OiAtMThwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+SEFMX1VTQVJUX1RyYW5zbWl0UmVjZWl2ZSgpIC8mbmJzcDtIQUxfVVNBUlRfVHJhbnNtaXRSZWNlaXZlX0lUKCkmbmJzcDs8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiAycHQgMGNtIDJwdCAxOHB0OyB0ZXh0LWluZGVudDogLTE4cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkhBTF9VU0FSVF9UcmFuc21pdF9ETUEoKSAvIEhBTF9VU0FSVF9SZWNlaXZlX0RNQSgpIC8gSEFMX1VTQVJUX1RyYW5zbWl0UmVjZWl2ZV9ETUEoKTwvc3Bhbj48L3A+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgbGluZS1oZWlnaHQ6IDEwNiU7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgVVNBUlRfU2V0Q29uZmlnKCkgQVBJJm5ic3A7PC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBsaW5lLWhlaWdodDogMTA2JTsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlNwbGl0IEhBTF9SQ0NfR2V0UENMSzFGcmVxKCkgYW5kCi1IQUxfUkNDX0dldFBDTEsyRnJlcSgpIG1hY3JvcyBmcm9tIHRoZSBVU0FSVF9ESVZfU0FNUExJTkc4KCkgbWFjcm88L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGxpbmUtaGVpZ2h0OiAxMDYlOyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+U3VwcG9ydCBTdG9wIE1vZGUgZnVuY3Rpb25hbGl0aWVzIGluIHRoZSBVU0FSVAotZHJpdmVyJm5ic3A7Jm5ic3A7PC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBsaW5lLWhlaWdodDogMTA2JTsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCAmbmJzcDtkZWZpbml0aW9uIG9mIFVTQVJUX0lTUl9SRUFDSyBVU0FSVCwmbmJzcDsKLXJlY2VpdmUgZW5hYmxlIGFja25vd2xlZGdlIGZsYWcgaW4gdGhlIEhBTCBkcml2ZXI8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGxpbmUtaGVpZ2h0OiAxMDYlOyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBmbGFnIGRlZmluaXRpb24gaW4gdGhlIExMIGRyaXZlciZuYnNwOzwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPgotCi0KLQotPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogMnB0IDBjbSAycHQgMThwdDsgdGV4dC1pbmRlbnQ6IC0xOHB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5MTF9VU0FSVF9JQ1JfV1VDRiZuYnNwOyBXYWtldXAgZnJvbSBTdG9wIG1vZGUgZmxhZyZuYnNwOzwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPgotCi08cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiAycHQgMGNtIDJwdCAxOHB0OyB0ZXh0LWluZGVudDogLTE4cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkxMX1VTQVJUX0lTUl9XVUYgV2FrZXVwIGZyb20gU3RvcCBtb2RlIGZsYWcmbmJzcDs8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij4KLQotPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogMnB0IDBjbSAycHQgMThwdDsgdGV4dC1pbmRlbnQ6IC0xOHB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5MTF9VU0FSVF9JU1JfUkVBQ0sgUmVjZWl2ZSBlbmFibGUgYWNrbm93bGVkZ2UgZmxhZyZuYnNwOzwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDJwdCAwY20gMnB0IDE4cHQ7IHRleHQtaW5kZW50OiAtMThwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+TExfVVNBUlRfQ1IzX1dVRklFIFdha2V1cCBmcm9tIFN0b3AgbW9kZSBpbnRlcnJ1cHQgZW5hYmxlPC9zcGFuPjwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBsaW5lLWhlaWdodDogMTA2JTsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgZGVmaW5pdGlvbiBvZiB0aGUgZGlmZmVyZW50IGV2ZW50IHdoaWNoCi1hY3RpdmF0ZXMgdGhlJm5ic3A7d2FrZXVwIGZyb20gU3RvcCBtb2RlIGZsYWc8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBsaW5lLWhlaWdodDogMTA2JTsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMXyA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgbGluZS1oZWlnaHQ6IDEwNiU7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+VVNBUlRfV0FLRVVQX09OX0FERFJFU1M8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPgotCi08cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiAycHQgMGNtIDJwdCAxOHB0OyB0ZXh0LWluZGVudDogLTE4cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkxMX1VTQVJUX1dBS0VVUF9PTl9TVEFSVEJJVDwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPgotCi08cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiAycHQgMGNtIDJwdCAxOHB0OyB0ZXh0LWluZGVudDogLTE4cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkxMX1VTQVJUX1dBS0VVUF9PTl9SWE5FPC9zcGFuPjwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij4KLQotPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogMnB0IDBjbSAycHQgMThwdDsgdGV4dC1pbmRlbnQ6IC0xOHB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5BZGQgbmV3IEFQSSBpbiBMTCBkcml2ZXIgdG8gc3VwcG9ydCBzdG9wIG1vZGU8L3NwYW4+PC9wPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+Ci0KLQotCi08cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiAycHQgMGNtIDJwdCAxOHB0OyB0ZXh0LWluZGVudDogLTE4cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkxMX1VTQVJUX0VuYWJsZUluU3RvcE1vZGUoKSB0byBlbmFibGUgdGhlIFVTQVJUIGluIHN0b3AgbW9kZTwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPgotCi08cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiAycHQgMGNtIDJwdCAxOHB0OyB0ZXh0LWluZGVudDogLTE4cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkxMX1VTQVJUX0Rpc2FibGVJblN0b3BNb2RlKCkgdG8gZGlzYWJsZSB0aGUgVVNBUlQgaW4gc3RvcCBtb2RlPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+Ci0KLTxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDJwdCAwY20gMnB0IDE4cHQ7IHRleHQtaW5kZW50OiAtMThwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+TExfVVNBUlRfSXNFbmFibGVkSW5TdG9wTW9kZSgpIHRvIGNoZWNrIGlmIHRoZSBVU0FSVCBpcyBlbmFibGVkIG9yIG5vdAotaW4gdGhlIHN0b3AgbW9kZTwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPgotCi08cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiAycHQgMGNtIDJwdCAxOHB0OyB0ZXh0LWluZGVudDogLTE4cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkxMX1VTQVJUX0VuYWJsZUNsb2NrSW5TdG9wTW9kZSgpIHRvIGVuYWJsZSB0aGUgVVNBUlQgY2xvY2sgaW4gdGhlIHN0b3AKLW1vZGU8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij4KLQotPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogMnB0IDBjbSAycHQgMThwdDsgdGV4dC1pbmRlbnQ6IC0xOHB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5MTF9VU0FSVF9EaXNhYmxlQ2xvY2tJblN0b3BNb2RlKCkgdG8gZGlzYWJsZSB0aGUgVVNBUlQgY2xvY2sgaW4gdGhlIHN0b3AKLW1vZGU8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiAycHQgMGNtIDJwdCAxOHB0OyB0ZXh0LWluZGVudDogLTE4cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkxMX1VTQVJUX0lzQ2xvY2tFbmFibGVkSW5TdG9wTW9kZSgpIHRvIGNoZWNrIHdoZXRoZXIgVVNBUlQgY2xvY2sgYXJlCi1lbmFibGVkIG9yIG5vdCBpbiB0aGUgc3RvcCBtb2RlPC9zcGFuPjwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij4KLQotPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogMnB0IDBjbSAycHQgMThwdDsgdGV4dC1pbmRlbnQ6IC0xOHB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5BZGQgbmV3IEFQSSBpbiBMTCBkcml2ZXIgdG8gbWFuYWdlIGV2ZW50IHJlbGlzdGVkIHRvIFdha2UgVVAgSW50ZXJydXB0Ci1GbGFnPC9zcGFuPjwvcD48L2xpPjwvdWw+PHVsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPgotCi0KLQotPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogMnB0IDBjbSAycHQgMThwdDsgdGV4dC1pbmRlbnQ6IC0xOHB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5MTF9VU0FSVF9TZXRXS1VQVHlwZSgpIHRvIHNlbGVjdCB0aGUgZXZlbnQgdHlwZSBmb3IgV2FrZSBVUCBJbnRlcnJ1cHQKLUZsYWc8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij4KLQotPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogMnB0IDBjbSAycHQgMThwdDsgdGV4dC1pbmRlbnQ6IC0xOHB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5MTF9VU0FSVF9HZXRXS1VQVHlwZSgpIHRvIGdldCZuYnNwOyB0aGUgZXZlbnQgdHlwZSBmb3IgV2FrZSBVUCBJbnRlcnJ1cHQKLUZsYWc8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij4KLQotPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogMnB0IDBjbSAycHQgMThwdDsgdGV4dC1pbmRlbnQ6IC0xOHB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5MTF9VU0FSVF9Jc0FjdGl2ZUZsYWdfV0tVUCgpIHRvIENoZWNrIGlmIHRoZSBVU0FSVCBXYWtlIFVwIGZyb20gc3RvcAotbW9kZSBGbGFnIGlzIHNldCBvciBub3Q8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij4KLQotPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogMnB0IDBjbSAycHQgMThwdDsgdGV4dC1pbmRlbnQ6IC0xOHB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5MTF9VU0FSVF9Jc0FjdGl2ZUZsYWdfUkVBQ0soKSB0byBDaGVjayBpZiB0aGUgVVNBUlQgUmVjZWl2ZSBFbmFibGUKLUFja25vd2xlZGdlIEZsYWcgaXMgc2V0IG9yIG5vdDwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDJwdCAwY20gMnB0IDE4cHQ7IHRleHQtaW5kZW50OiAtMThwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+TExfVVNBUlRfQ2xlYXJGbGFnX1dLVVAoKSBDbGVhciBXYWtlIFVwIGZyb20gc3RvcCBtb2RlIEZsYWc8L3NwYW4+PC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPgotCi08cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiAycHQgMGNtIDJwdCAxOHB0OyB0ZXh0LWluZGVudDogLTE4cHQ7IGxpbmUtaGVpZ2h0OiBub3JtYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkFkZCBuZXcgQVBJIGluIExMIGRyaXZlciB0byBtYW5hZ2Ugd2FrZSB1cCBmcm9tIHN0b3AgaW50ZXJydXB0aW9uPC9zcGFuPjwvcD48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPgotCi0KLQotPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogMnB0IDBjbSAycHQgMThwdDsgdGV4dC1pbmRlbnQ6IC0xOHB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5MTF9VU0FSVF9FbmFibGVJVF9XS1VQKCkgdG8gRW5hYmxlIFdha2UgVXAgZnJvbSBTdG9wIE1vZGUgSW50ZXJydXB0PC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+Ci0KLTxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDJwdCAwY20gMnB0IDE4cHQ7IHRleHQtaW5kZW50OiAtMThwdDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+TExfVVNBUlRfRGlzYWJsZUlUX1dLVVAoKSB0byBEaXNhYmxlIFdha2UgVXAgZnJvbSBTdG9wIE1vZGUgSW50ZXJydXB0PC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogMnB0IDBjbSAycHQgMThwdDsgdGV4dC1pbmRlbnQ6IC0xOHB0OyBsaW5lLWhlaWdodDogbm9ybWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5MTF9VU0FSVF9Jc0VuYWJsZWRJVF9XS1VQKCkgdG8gQ2hlY2sgaWYgdGhlIFVTQVJUIFdha2UgVXAgZnJvbSBTdG9wIE1vZGUKLUludGVycnVwdCBpcyBlbmFibGVkIG9yIG5vdDwvc3Bhbj48L3A+PC9saT48L3VsPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwvTEwgVVNCIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO0FkZCBoYW5kbGluZyBVU0IgaG9zdCBiYWJibGUgZXJyb3IgaW50ZXJydXB0PC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDtGaXggRW5hYmxpbmcgVUxQSSBpbnRlcmZhY2UgZm9yIHBsYXRmb3JtcyB0aGF0IGludGVncmF0ZXMgVVNCIEhTIFBIWTwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7Rml4IEhvc3QgZGF0YSB0b2dnbGluZyBmb3IgSU4gSXNvIHRyYW5zZmVyczwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7RW5zdXJlIHRvIGRpc2FibGUgVVNCIEVQIGR1cmluZyBlbmRwb2ludCBkZWFjdGl2YXRpb248L3NwYW4+PC9saT48L3VsPjwvdWw+Ci08YiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IGxlZnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsiPjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj48aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7IC1tb3otYmFja2dyb3VuZC1jbGlwOiBpbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiBpbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgd2lkdGg6IDI0MXB4OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IEFyaWFsOyBjb2xvcjogd2hpdGU7Ij5WMS4yLjcvIDA4LUZlYnJ1YXJ5LTIwMTk8L3NwYW4+PC9oMz4KLSAgICAgICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBjbSA0LjVwdCAxOHB0OyI+PGI+PHU+PHNwYW4gc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPk1haW4gQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjwvcD4KLSAgICAgICAgICAgIDx1bCBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtaW5kZW50OiAwcHg7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG1hcmdpbi10b3A6IDBjbTsgbWFyZ2luLWJvdHRvbTogMGluOyB3b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsiIHR5cGU9InNxdWFyZSI+Ci08bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkdlbmVyYWwgdXBkYXRlcyAgdG8gZml4IGtub3duIGRlZmVjdHMgYW5kIGVuaGFuY2VtZW50cyBpbXBsZW1lbnRhdGlvbjwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkdlbmVyYWwgdXBkYXRlcyAgdG8gZml4IENvZGVTb25hciBjb21waWxhdGlvbiB3YXJuaW5nczwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkdlbmVyYWwgdXBkYXRlcyAgdG8gZml4IFNXNFNUTTMyIGNvbXBpbGF0aW9uIGVycm9ycyB1bmRlciBMaW51eDwvc3Bhbj48L2xpPgotCi0gICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+R2VuZXJhbCB1cGRhdGVzIHRvIGZpeCB0aGUgdXNlciBtYW51YWwgLmNobSBmaWxlczwvc3Bhbj48L2xpPgotPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgc3VwcG9ydCBvZiBIQUwgY2FsbGJhY2sgcmVnaXN0cmF0aW9uIGZlYXR1cmU8L3NwYW4+PC9saT4KLSAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICA8Yj48dT48c3BhbiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjwvdT48L2I+ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgPHVsIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1pbmRlbnQ6IDBweDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbWFyZ2luLXRvcDogMGNtOyBtYXJnaW4tYm90dG9tOiAwaW47IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyIgdHlwZT0ic3F1YXJlIj4KLTxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGNvbG9yOiBibGFjazsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgZm9udC1zaXplOiAxMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBuZXc8c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj4gPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBFWFRJPC9zcGFuPjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiA8L3NwYW4+ZHJpdmVyPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgY29sb3I6IGJsYWNrOyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBmb250LXNpemU6IDEycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+VGhlIGZvbGxvd2luZyBjaGFuZ2VzIGRvbmUgb24gdGhlIEhBTCBkcml2ZXJzIHJlcXVpcmUgYW4gdXBkYXRlIG9uIHRoZSBhcHBsaWNhdGlvbiBjb2RlIGJhc2VkIG9uIG9sZGVyIEhBTCB2ZXJzaW9uczwvc3Bhbj48L3NwYW4+PC9saT48dWw+Ci0gICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+UmV3b3JrIG9mIEhBTCBDUllQIGRyaXZlcjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPiAoY29tcGF0aWJpbGl0eSBicmVhaykgPC9zcGFuPjwvc3Bhbj48YnI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj48L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgICA8dWw+Ci08bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5IQUwgQ1JZUCBkcml2ZXIgaGFzIGJlZW4gcmVkZXNpZ25lZCB3aXRoIG5ldyBBUEknPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+cywgdG8gYnlwYXNzIGxpbWl0YXRpb25zIG9uIGRhdGEgRW5jcnlwdGlvbi9EZWNyeXB0aW9uIG1hbmFnZW1lbnQgcHJlc2VudCB3aXRoIHByZXZpb3VzIEhBTCBDUllQIGRyaXZlciB2ZXJzaW9uLjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGNvbG9yOiBibGFjazsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgZm9udC1zaXplOiAxMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5UaGUKLW5ldyBIQUwgQ1JZUCBkcml2ZXIgaXMgdGhlIHJlY29tbWVuZGVkIHZlcnNpb24uIEl0IGlzIGxvY2F0ZWQgYXMgdXN1YWwKLWluIERyaXZlcnMvU1RNMzJGN3h4X0hBTF9Ecml2ZXIvU3JjIGFuZAotRHJpdmVycy9TVE0zMmY3eHhfSEFMX0RyaXZlci9JbmMgZm9sZGVycy4gSXQgY2FuIGJlIGVuYWJsZWQgdGhyb3VnaAotc3dpdGNoIEhBTF9DUllQX01PRFVMRV9FTkFCTEVEIGluIHN0bTMyZjd4eF9oYWxfY29uZi5oPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgY29sb3I6IGJsYWNrOyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBmb250LXNpemU6IDEycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPlRoZSBsZWdhY3kgSEFMIENSWVAgZHJpdmVyIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuPC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgICAgPC91bD4KLTwvdWw+Ci0gICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgPHVsIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1pbmRlbnQ6IDBweDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbWFyZ2luLXRvcDogMGNtOyBtYXJnaW4tYm90dG9tOiAwaW47IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyIgdHlwZT0ic3F1YXJlIj4KLTxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFML0xMIEdlbmVyaWMgPC9zcGFuPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBzdXBwb3J0IG9mIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBjYWxsYmFjayByZWdpc3RyYXRpb248L3NwYW4+IGZlYXR1cmU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5UaGUgZmVhdHVyZSBkaXNhYmxlZCBieSBkZWZhdWx0IGlzIGF2YWlsYWJsZSBmb3IgdGhlIGZvbGxvd2luZyBIQUwgZHJpdmVyczo8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7IGZvbnQtd2VpZ2h0OiBib2xkOyI+QURDLCBDQU4sIENFQywgQ1JZUCwgREFDLCBEQ01JLCBERlNETSwgRE1BMkQsIERTSSwgRVRILCBIQVNILCBIQ0QsIEkyQywgU01CVVMsIFVBUlQsCi1VU0FSVCwgSVJEQSwgSlBFRywgU01BUlRDQVJELCBMUFRJTSwgTFREQywgTURJT1MsIE1NQywgTkFORCwgTk9SLCBQQ0QsCi1RU1BJLCBSTkcsIFJUQywgU0FJLCBTRCwgU0RSQU0sIFNSQU0sIFNQRElGUlgsIFNQSSwgSTJTLCBUSU0gPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5hbmQ8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij4gV1dERzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyBmb250LXdlaWdodDogYm9sZDsiPjxicj48L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+VGhlIGZlYXR1cmUgbWF5IGJlIGVuYWJsZWQgaW5kaXZpZHVhbGx5IHBlciBIQUwgPHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPlBQUDwvc3Bhbj4gZHJpdmVyIGJ5IHNldHRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgZGVmaW5pdGlvbiBVU0VfSEFMXzxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7Ij5QUFA8L3NwYW4+X1JFR0lTVEVSX0NBTExCQUNLUwotdG8mbmJzcDsxVSBpbiBzdG0zMmY3eHhfaGFsX2NvbmYuaCBwcm9qZWN0IGNvbmZpZ3VyYXRpb24gZmlsZSAodGVtcGxhdGUKLWZpbGUgc3RtMzJmN3h4X2hhbF9jb25mX3RlbXBsYXRlLmggYXZhaWxhYmxlIGZyb20mbmJzcDsKLURyaXZlcnMvU1RNMzJGN3h4X0hBTF9Ecml2ZXIvSW5jKTwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+T25jZQotZW5hYmxlZCAsIHRoZSB1c2VyIGFwcGxpY2F0aW9uIG1heSByZXNvcnQgdG8gSEFMX1BQUF9SZWdpc3RlckNhbGxiYWNrKCkKLXRvIHJlZ2lzdGVyIHNwZWNpZmljIGNhbGxiYWNrIGZ1bmN0aW9uKHMpIGFuZCB1bnJlZ2lzdGVyIGl0KHRoZW0pIHdpdGgKLUhBTF88c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+UFBQPC9zcGFuPl9VblJlZ2lzdGVyQ2FsbGJhY2soKS48L3NwYW4+PC9saT48L3VsPgotICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+R2VuZXJhbCB1cGRhdGVzICB0byBmaXggTUlTUkEgMjAxMiBjb21waWxhdGlvbiBlcnJvcnM8L3NwYW4+PGJyPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij48L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgICA8dWw+Ci08bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9JU19CSVRfU0VUKCkvSEFMX0lTX0JJVF9DTFIoKSBtYWNyb3MgaW1wbGVtZW50YXRpb24gdXBkYXRlPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij4ic3RkaW8uaCIgaW5jbHVkZSB1cGRhdGVkIHdpdGggInN0ZGRlZi5oIjwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0KLSAgICAgICAgICAgICAgICAKLTwvdWw+Ci0gICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIEdQSU88L3NwYW4+IFVwZGF0ZTwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICA8dWw+Ci08bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9HUElPX1RvZ2dsZVBpbigpIEFQSSBpbXBsZW1lbnRhdGlvbiB1cGRhdGU6IHRvIGltcHJvdmUgcm9idXN0bmVzczxicj4KLTwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0dQSU9fRGVJbml0KCkgQVBJIHVwZGF0ZSB0byBlbnN1cmUgY2xlYXIgYWxsIEdQSU8gRVhUSSBwZW5kaW5nIGludGVycnVwdHMuPC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgIDwvdWw+Ci0KLQotICAgICAgICAgICAgPC91bD4KLQotICAgICAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDs7IGZvbnQtc2l6ZTogbWVkaXVtOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IG1hcmdpbi10b3A6IDBjbTsiIHR5cGU9InNxdWFyZSI+PC91bD48dWwgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBpbjsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OzsgZm9udC1zaXplOiBtZWRpdW07IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsgbWFyZ2luLXRvcDogMGNtOyIgdHlwZT0ic3F1YXJlIj4KLSAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgQ1JZUDwvc3Bhbj4gdXBkYXRlPC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgIDx1bD4KLTxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+VGhlIENSWVBfSW5pdFR5cGVEZWYgPC9zcGFuPmlzIG5vIG1vcmUgc3VwcG9ydGVkLCBjaGFuZ2VkIGJ5IDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkNSWVBfQ29uZmlnVHlwZWRlZjwvc3Bhbj4gdG8gYWxsb3cgY2hhbmdpbmcgcGFyYW1ldGVycyA8YnI+Ci11c2luZyBIQUxfQ1JZUF9zZXRDb25maWcoKSBBUEkgd2l0aG91dCByZWluaXRpYWxpemUgdGhlIENSWVAgSVAgdXNpbmcgdGhlIEhBTF9DUllQX0luaXQoKSBBUEk8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPk5ldyBwYXJhbWV0ZXJzIGFkZGVkIGluIHRoZSA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5DUllQX0NvbmZpZ1R5cGVEZWY8L3NwYW4+IHN0cnVjdHVyZTogPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+QjA8L3NwYW4+IGFuZCA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5EYXRhV2lkdGhVbml0PC9zcGFuPjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SW5wdXQgZGF0YSBzaXplIHBhcmFtZXRlciBpcyBhZGRlZCBpbiB0aGUgPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+Q1JZUF9IYW5kbGVUeXBlRGVmPC9zcGFuPiBzdHJ1Y3R1cmU8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij48L3NwYW4+PC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgbmV3IEFQSXMgdG8gbWFuYWdlIHRoZSBDUllQIGNvbmZpZ3VyYXRpb246PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfQ1JZUF9TZXRDb25maWcoKTwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0NSWVBfR2V0Q29uZmlnKCk8L3NwYW4+PC9saT48L3VsPgotICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgICA8dWw+Ci08bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBuZXcgQVBJcyB0byBtYW5hZ2UgdGhlIEtleSBkZXJpdmF0aW9uOjwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9DUllQRXhfRW5hYmxlQXV0b0tleURlcml2YXRpb24oKTwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0NSWVBFeF9EaXNhYmxlQXV0b0tleURlcml2YXRpb24oKTwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgbmV3IEFQSXMgdG8gZW5jcnlwdCBhbmQgZGVjcnlwdCBkYXRhOjwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9DUllQX0VuY3lwdCgpPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfQ1JZUF9EZWN5cHQoKTwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0NSWVBfRW5jeXB0X0lUKCk8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9DUllQX0RlY3lwdF9JVCgpPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfQ1JZUF9FbmN5cHRfRE1BKCk8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9DUllQX0RlY3lwdF9ETUEoKTwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgbmV3IEFQSXMgdG8gZ2VuZXJhdGUgVEFHOjwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9DUllQRXhfQUVTPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+R0NNPC9zcGFuPl9HZW5lcmF0ZUF1dGhUQUcoKTwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0NSWVBFeF9BRVM8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5DQ008L3NwYW4+X0dlbmVyYXRlQXV0aFRBRygpPC9zcGFuPjwvbGk+PC91bD4KLSAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgSTJDPC9zcGFuPiB1cGRhdGU8L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgPHVsPgotPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+STJDIEFQSSBjaGFuZ2VzIGZvciA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5NSVNSQS1DIDIwMTIgY29tcGxpYW5jeTo8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5SZW5hbWU8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij4gSEFMX0kyQ19NYXN0ZXJfU2VxdWVudGlhbF9UcmFuc21pdF9JVCgpIHRvIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9JMkNfTWFzdGVyX1NlcV9UcmFuc21pdF9JVCgpPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5SZW5hbWUgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0kyQ19NYXN0ZXJfU2VxdWVudGllbF9SZWNlaXZlX0lUKCkgdG8gPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0kyQ19NYXN0ZXJfU2VxX1JlY2VpdmVfSVQoKTwvc3Bhbj48YnI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij48L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPlJlbmFtZSA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfSTJDX1NsYXZlX1NlcXVlbnRpZWxfVHJhbnNtaXRfSVQoKSB0byA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfSTJDX1NsYXZlX1NlcV9UcmFuc21pdF9JVCgpIDwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+UmVuYW1lIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9JMkNfU2xhdmVfU2VxdWVudGllbF9SZWNlaXZlX0RNQSgpIHRvIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9JMkNfU2xhdmVfU2VxX1JlY2VpdmVfRE1BKCk8L3NwYW4+PC9saT48L3VsPjxsaT48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkFkZCBzdXBwb3J0IG9mIEkyQyByZXBlYXRlZCBzdGFydCBmZWF0dXJlIGluIERNQSBNb2RlOjwvc3Bhbj48L2xpPjx1bD48bGk+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5XaXRoIHRoZSBmb2xsb3dpbmcgbmV3IEFQSSdzPGJyPjwvc3Bhbj48L2xpPjwvdWw+PHVsPjx1bD48bGk+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5IQUxfSTJDX01hc3Rlcl9TZXFfVHJhbnNtaXRfRE1BKCk8L3NwYW4+PC9saT48L3VsPjx1bD48bGk+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj4gSEFMX0kyQ19NYXN0ZXJfU2VxX1JlY2VpdmVfRE1BKCk8L3NwYW4+PC9saT48L3VsPjx1bD48bGk+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5IQUxfSTJDX1NsYXZlX1NlcV9UcmFuc21pdF9ETUEoKTwvc3Bhbj48L2xpPjwvdWw+PHVsPjxsaT48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkhBTF9JMkNfU2xhdmVfU2VxX1JlY2VpdmVfRE1BKCk8L3NwYW4+PC9saT48L3VsPjwvdWw+PGxpPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+QWRkIG5ldyBJMkMgdHJhbnNmZXIgb3B0aW9ucyB0byBlYXN5IG1hbmFnZSB0aGUgc2VxdWVudGlhbCB0cmFuc2ZlcnM8YnI+PC9zcGFuPjwvbGk+PHVsPjxsaT48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkkyQ19PVEhFUl9GUkFNRTwvc3Bhbj48L2xpPjxsaT48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkkyQ19PVEhFUl9BTkRfTEFTVF9GUkFNRTwvc3Bhbj48L2xpPjwvdWw+Ci0gICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+TEwmbmJzcDsgUkNDIDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIExMX1JDQ19HZXRTQUlDbG9ja0ZyZXEoKSBBUEkgdG8gcmV0dXJuIHRoZSByaWdodCBmcmVxdWVuY3kgYWNjb3JkaW5nIHRvIHRoZSBTQUkgY2xvY2sgc291cmNlPC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIFJORyA8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgIDx1bD4KLTxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIHRvIG1hbmFnZSBSTkcgZXJyb3IgY29kZTogPC9zcGFuPjxicj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+QWRkIEVycm9yQ29kZSBwYXJhbWV0ZXIgaW4gSEFMIFJORyBIYW5kbGVyIHN0cnVjdHVyZTwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgSEFMX1JOR19HZXRFcnJvcigpIEFQSTxicj4KKyA8dGJvZHk+PHRyPgorICA8dGQgc3R5bGU9InBhZGRpbmc6IDBpbjsiIHZhbGlnbj0idG9wIj4KKyAgPHRhYmxlIGNsYXNzPSJNc29Ob3JtYWxUYWJsZSIgc3R5bGU9IndpZHRoOiA2NzVwdDsiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iOTAwIj4KKyAgIDx0Ym9keT48dHIgc3R5bGU9IiI+CisgICAgPHRkIHN0eWxlPSJwYWRkaW5nOiAwaW4gNS40cHQ7IiB2YWxpZ249InRvcCI+CisgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogOHB0OyBmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsdWU7Ij48YSBocmVmPSIuLi8uLi9SZWxlYXNlX05vdGVzLmh0bWwiPkJhY2sgdG8gUmVsZWFzZSBwYWdlPC9hPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+PG86cD48L286cD48L3NwYW4+PC9wPgorICAgIDwvdGQ+CisgICA8L3RyPgorICAgPHRyIHN0eWxlPSIiPgorICAgIDx0ZCBzdHlsZT0icGFkZGluZzogMS41cHQ7Ij4KKyAgICA8aDEgc3R5bGU9Im1hcmdpbi1ib3R0b206IDAuMjVpbjsgdGV4dC1hbGlnbjogY2VudGVyOyIgYWxpZ249ImNlbnRlciI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMjBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IHJnYig1MSwgMTAyLCAyNTUpOyI+UmVsZWFzZSBOb3RlcyBmb3IgU1RNMzJGN3h4IEhBTCBEcml2ZXJzPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDIwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2gxPgorICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IiBhbGlnbj0iY2VudGVyIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+Q29weXJpZ2h0IDIwMTcgU1RNaWNyb2VsZWN0cm9uaWNzPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij48dTE6cD48L3UxOnA+PG86cD48L286cD48L3NwYW4+PC9wPgorICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IiBhbGlnbj0iY2VudGVyIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+PGltZyBpZD0iX3gwMDAwX2kxMDQwIiBzcmM9Il9odG1yZXNjL3N0X2xvZ28ucG5nIiBib3JkZXI9IjAiIGhlaWdodD0iODEiIHdpZHRoPSIxMDkiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+PG86cD48L286cD48L3NwYW4+PC9wPgorICAgIDwvdGQ+CisgICA8L3RyPgorICA8L3Rib2R5PjwvdGFibGU+CisgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsiPlRoZSZuYnNwO2hhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyCisgIChIQUwpIHByb3ZpZGVzIGxvdyBsZXZlbCBkcml2ZXJzIGFuZCB0aGUgaGFyZHdhcmUgaW50ZXJmYWNpbmcgbWV0aG9kcyB0bworICBpbnRlcmFjdCB3aXRoIHVwcGVyIGxheWVyIChhcHBsaWNhdGlvbiwgbGlicmFyaWVzIGFuZCBzdGFja3MpLiAmbmJzcDtJdAorICBpbmNsdWRlcyBhIGNvbXBsZXRlIHNldCBvZiByZWFkeS10by11c2UgQVBJcywgdGhhdCBhcmUgZmVhdHVyZS1vcmllbnRlZAorICBpbnN0ZWFkIG9mIElQLU9yaWVudGVkIHRvIHNpbXBsaWZ5IHVzZXIgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQuPC9zcGFuPiA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGRpc3BsYXk6IG5vbmU7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CisgIDx0YWJsZSBjbGFzcz0iTXNvTm9ybWFsVGFibGUiIHN0eWxlPSJ3aWR0aDogNjc1cHQ7IG1hcmdpbi1sZWZ0OiAzMS41cHQ7IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iOTAwIj4KKyAgIDx0Ym9keT48dHIgc3R5bGU9IiI+CisgICAgPHRkIHN0eWxlPSJwYWRkaW5nOiAwaW47IiB2YWxpZ249InRvcCI+CisgICAgPGgyIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiAtbW96LWluaXRpYWw7Ij48YSBuYW1lPSJIaXN0b3J5Ij48L2E+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IHdoaXRlOyI+VXBkYXRlCisgICAgSGlzdG9yeTwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+IDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gyPgorICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiB3aGl0ZTsiPnYxLjIuOS8KKyAgICAxMi1GZWJydWFyeS0yMDIxPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+CisgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluIDQuNXB0IDAuMjVpbjsiPjxiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPk1haW4gQ2hhbmdlczxvOnA+PC9vOnA+PC9zcGFuPjwvdT48L2I+PC9wPgorICAgIDxwIHN0eWxlPSJtYXJnaW4tbGVmdDogMC41aW47IHRleHQtaW5kZW50OiAtMC4yNWluOyI+PCEtLVtpZiAhc3VwcG9ydExpc3RzXS0tPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBTeW1ib2w7IGNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iIj63PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDs7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGZvbnQtc2l6ZTogN3B0OyBsaW5lLWhlaWdodDogbm9ybWFsOyBmb250LXNpemUtYWRqdXN0OiBub25lOyBmb250LXN0cmV0Y2g6IG5vcm1hbDsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOworICAgIDwvc3Bhbj48L3NwYW4+PC9zcGFuPjwhLS1bZW5kaWZdLS0+PHNwYW4gZGlyPSJsdHIiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+R2VuZXJhbCB1cGRhdGVzIHRvIGZpeCBrbm93biBkZWZlY3RzIGFuZCBlbmhhbmNlbWVudHMKKyAgICBpbXBsZW1lbnRhdGlvbi48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CisgICAgPHVsIHR5cGU9ImRpc2MiPgorICAgICA8dWwgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgaGFsX2RlZi5oCisgICAgICAgICAgdG8gc3VwcG9ydCBuZXcgQVJNIGNvbXBpbGVyIEtlaWwgVjYuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IGRlZmluZXMKKyAgICAgICAgICBmb3IgQVJNIGNvbXBpbGVyIFY2OjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+X193ZWFrPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+X19wYWNrZWQ8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5fX05PSU5MSU5FPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTAorICAgICAgICAgIFRpbWVCYXNlIFRJTSwgUlRDIGFsYXJtIGFuZCBSVEMgV2FrZVVwIHRlbXBsYXRlcyBmb3IgbW9yZSByb2J1c3RuZXNzLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlZCBIYWxfSW5pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPlRpY2soPC9zcGFuPikgQVBJIHRvIHByb3Blcmx5IHN0b3JlIHRoZSBwcmlvcml0eSB3aGVuCisgICAgICAgICAgIHVzaW5nIHRoZSBub24tZGVmYXVsdCB0aW1lIGJhc2UuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+kXJlZ2lzdGVykiBrZXl3b3JkCisgICAgICAgICAgcmV0aXJlZCB0byBiZSBjb21wbGlhbnQgd2l0aCBDKysxNyAoYWxyZWFkeSBkZXByZWNhdGVkIGluIEMrKzExKS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBMaWNlbnNlLm1kCisgICAgICAgICAgYW5kIFJlYWRtZS5tZCBmaWxlcyByZXF1aXJlZCBmb3IgR2l0SHViIHB1YmxpY2F0aW9uLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3Ryb25nIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwvTEwKKyAgICAgICAgICBUSU08L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+U3VwcG9ydCBtdWx0aXBsZQorICAgICAgICAgICBzaW11bHRhbmVvdXMgRE1BIHJlcXVlc3RzIHdpdGggZGlmZmVyZW50IGNoYW5uZWxzOjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPHVsIHR5cGU9InNxdWFyZSI+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5JbXBsZW1lbnQgRE1BIGJ1cnN0IHN0YXRlIG1hbmFnZW1lbnQgbWVjaGFuaXNtLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5JbXBsZW1lbnQgVElNIGNoYW5uZWwgc3RhdGUgbWFuYWdlbWVudCBtZWNoYW5pc20uPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1RJTV9JQ19TdG9wX0RNQSBpbXBsZW1lbnRhdGlvbiB0byBkaXNhYmxlIHRoZSBUSU0gY2hhbm5lbCBiZWZvcmUKKyAgICAgICAgICAgZGlzYWJsaW5nIERNQSB0cmFuc2Zlci48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1RJTV94eHhfU3RhcnQtIGZ1bmN0aW9ucyB0byBzeXN0ZW1hdGljYWxseSBhY2Nlc3MgdG8gdGhlCisgICAgICAgICAgIFRJTXhfU01DUiByZWdpc3RlciBldmVuIGlmIHRoZSBUSU14IGluc3RhbmNlIGNhbm5vdCBiZSB1c2VkIGFzIHNsYXZlCisgICAgICAgICAgIHRpbWVyLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1ha2UKKyAgICAgICAgICAgVElNX0RNQURlbGF5UHVsc2VDcGx0IGNhbGxiYWNrIGFzIGEgcHJpdmF0ZSBmdW5jdGlvbi48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgSEFMX1RJTUV4X09uZVB1bHNlTl9TdGFydCBhbmQgSEFMX1RJTUV4X09uZVB1bHNlTl9TdG9wIChwb29saW5nIGFuZAorICAgICAgICAgICBJVCBtb2RlKSB0byB0YWtlIGludG8gY29uc2lkZXJhdGlvbiBhbGwgT3V0cHV0Q2hhbm5lbCBwYXJhbWV0ZXJzLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkNvcnJlY3RlCisgICAgICAgICAgIHJldmVyc2VkIGRlc2NyaXB0aW9uIG9mIFRJTV9MTF9FQ19PTkVQVUxTRU1PREUgT25lIFB1bHNlIE1vZGUuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIExMX1RJTV88c3BhbiBjbGFzcz0iZ3JhbWUiPkdldENvdW50ZXJNb2RlKDwvc3Bhbj4pIEFQSSB0byByZXR1cm4gdGhlIGNvcnJlY3QKKyAgICAgICAgICAgY291bnRlciBtb2RlLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHN0cm9uZyBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgTFBUSU08L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9MUFRJTV9Jbml0IGltcGxlbWVudGF0aW9uIHRvIGNvbmZpZ3VyZSBkaWdpdGFsIGZpbHRlciBmb3IKKyAgICAgICAgICAgZXh0ZXJuYWwgY2xvY2sgd2hlbiBMUFRJTSBpcyBjbG9ja2VkIGJ5IGFuIGludGVybmFsIGNsb2NrIHNvdXJjZS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzdHJvbmcgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgIFVBUlQ8L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmV3b3JrIEJSUgorICAgICAgICAgICByZWdpc3RlciBjYWxjdWxhdGlvbiBhbGdvcml0aG0gaW4gVUFSVF88c3BhbiBjbGFzcz0iZ3JhbWUiPlNldENvbmZpZyg8L3NwYW4+KQorICAgICAgICAgICB0byBvcHRpbWl6ZSBST00gc2l6ZS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1VBUlRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pIHRvIGhhbmRsZSByZWNlaXZlciB0aW1lb3V0CisgICAgICAgICAgIGludGVycnVwdGlvbi48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5FbmhhbmNlIHJlY2VwdGlvbgorICAgICAgICAgICBmb3IgaWRsZSBzZXJ2aWNlcyAoUmVjZXB0aW9uVG9JZGxlKTo8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIGEgbmV3IGZpZWxkIChIQUxfVUFSVF9SeFR5cGVUeXBlRGVmKSB0byB0aGUKKyAgICAgICAgICAgIFVBUlRfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdG8gaWRlbnRpZnkgdGhlIHR5cGUgb2Ygb25nb2luZworICAgICAgICAgICAgcmVjZXB0aW9uLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgVUFSVCBSZWNlcHRpb24gRXZlbnQgQ2FsbGJhY2sgcmVnaXN0cmF0aW9uLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPC91bD4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIHJlY2VwdGlvbgorICAgICAgICAgICBzcGVjaWZpYyBBUElzIHNwZWNpZmljIHRvIHJlY2VwdGlvbiBmb3IgSWRsZSB0cmFuc2ZlciBpbiBkaWZmZXJlbnQKKyAgICAgICAgICAgbW9kZXM6PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9VQVJURXhfPHNwYW4gY2xhc3M9ImdyYW1lIj5SZWNlaXZlVG9JZGxlKDwvc3Bhbj4pOgorICAgICAgICAgICAgUmVjZWl2ZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBibG9ja2luZyBtb2RlIHVudGlsIGVpdGhlciB0aGUKKyAgICAgICAgICAgIGV4cGVjdGVkIG51bWJlciBvZiBkYXRhIGlzIHJlY2VpdmVkIG9yIGFuIElETEUgZXZlbnQgb2NjdXJzLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfVUFSVEV4X1JlY2VpdmVUb0lkbGVfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KToKKyAgICAgICAgICAgIFJlY2VpdmUgYW4gYW1vdW50IG9mIGRhdGEgaW4gaW50ZXJydXB0IG1vZGUgdW50aWwgZWl0aGVyIHRoZQorICAgICAgICAgICAgZXhwZWN0ZWQgbnVtYmVyIG9mIGRhdGEgaXMgcmVjZWl2ZWQgb3IgYW4gSURMRSBldmVudCBvY2N1cnMuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9VQVJURXhfUmVjZWl2ZVRvSWRsZV88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KToKKyAgICAgICAgICAgIFJlY2VpdmUgYW4gYW1vdW50IG9mIGRhdGEgaW4gRE1BIG1vZGUgdW50aWwgZWl0aGVyIHRoZSBleHBlY3RlZAorICAgICAgICAgICAgbnVtYmVyIG9mIGRhdGEgaXMgcmVjZWl2ZWQgb3IgYW4gSURMRSBldmVudCBvY2N1cnMuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1VBUlRfPHNwYW4gY2xhc3M9ImdyYW1lIj5SZWNlaXZlKDwvc3Bhbj4pLCBIQUxfVUFSVF9SZWNlaXZlX0lUKCkgYW5kCisgICAgICAgICAgIEhBTF9VQVJUX1JlY2VpdmVfRE1BKCkgQVBJcyB0byBzdXBwb3J0IHRoZSBuZXcgZW5oYW5jZW1lbnQgb2YKKyAgICAgICAgICAgUmVjZXB0aW9uVG9JZGxlLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfVUFSVF88c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikgdG8gaGFuZGxlIHJlY2VpdmVyIHRpbWVvdXQKKyAgICAgICAgICAgaW50ZXJydXB0LjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBVQVJUCisgICAgICAgICAgIHJlY2VpdmUgcHJvY2Vzc2VzIChJVCBhbmQgRE1BKSB0byBoYW5kbGUgdGhlIFVBUlQgcmVjZWl2ZZJzIHRpbWVvdXQKKyAgICAgICAgICAgaW50ZXJydXB0LjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHN0cm9uZyBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgU01BUlRDQVJEPC9zcGFuPjwvc3Ryb25nPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDt1cGRhdGU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBzdXBwb3J0IGZvcgorICAgICAgICAgICBkYXRhIHJlLXRyYW5zbWlzc2lvbiB3aGVuIGEgTkFDSyBpcyByZWNlaXZlZCBpbiBTbWFydENhcmQgVD0wLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeCB0eXBvcyBpbgorICAgICAgICAgICB0aGUgU01BUlRDQVJEIFN0YXRlIGRlZmluaXRpb24gZGVzY3JpcHRpb24uPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3Ryb25nIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICBQV1I8L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIF9fSEFMX1BXUl9DTEVBUl9PRFJVRFJfPHNwYW4gY2xhc3M9ImdyYW1lIj5GTEFHKDwvc3Bhbj4pIG1hY3JvIGluCisgICAgICAgICAgIG9yZGVyIHRvIGJlIGFibGUgdG8gc2V0IHRoZSBFbmFibGUgSW50ZXJuYWwgV2FrZXVwIChFSVdVUCkgYml0LjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHN0cm9uZyBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgU1BJPC9zcGFuPjwvc3Ryb25nPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDt1cGRhdGU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBTUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUFSZWNlaXZlQ3BsdCg8L3NwYW4+KSBBUEkgdG8gaGFuZGxlIGVmZmljaWVudGx5IHRoZQorICAgICAgICAgICByZXBlYXRlZCB0cmFuc2ZlcnMuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkRpc2FibGUgVFggRE1BIHJlcXVlc3Qgb25seSBpbiBiaWRpcmVjdGlvbmFsIHJlY2VpdmUKKyAgICAgICAgICAgIG1vZGUuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1NQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikgQVBJOjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPHVsIHR5cGU9InNxdWFyZSI+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Bdm9pZCBzZXR0aW5nIHRoZSBCYXVkUmF0ZVByZXNjYWxlciBpbiBjYXNlIG9mIFNsYXZlCisgICAgICAgICAgICBNb3Rvcm9sYSBNb2RlLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Vc2UgdGhlIDxzcGFuIGNsYXNzPSJncmFtZSI+Yml0LW1hc2s8L3NwYW4+IGZvciBTUEkKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24uPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgVHJhbnNtaXQvUmVjZWl2ZSBwcm9jZXNzZXMgaW4gaGFsZi1kdXBsZXggbW9kZS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+RGlzYWJsZSB0aGUgU1BJIGluc3RhbmNlIGJlZm9yZSBzZXR0aW5nIEJESU9FIGJpdC48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDwvdWw+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeCB3cm9uZworICAgICAgICAgICB0aW1lb3V0IG1hbmFnZW1lbnQuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkNhbGN1bGF0ZSB0aGUgdGltZW91dCBiYXNlZCBvbiBhIHNvZnR3YXJlIGxvb3AgaW4gb3JkZXIKKyAgICAgICAgICAgIHRvIGF2b2lkIGEgYmxvY2tpbmcgaXNzdWUgaWYgc3lzdGljayBpcyBkaXNhYmxlZC48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDwvdWw+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHN0cm9uZyBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgUkNDPC9zcGFuPjwvc3Ryb25nPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDt1cGRhdGU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfUkNDRXhfPHNwYW4gY2xhc3M9ImdyYW1lIj5QZXJpcGhDTEtDb25maWcoPC9zcGFuPikgdG8gYWxsb3cgUExMSTJTCisgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaW5kZXBlbmRlbnRseSBmcm9tIHBlcmlwaGVyYWxzLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHN0cm9uZyBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgSVJEQTwvc3Bhbj48L3N0cm9uZz48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7dXBkYXRlPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXggdHlwb3MgaW4KKyAgICAgICAgICAgdGhlIElSREEgU3RhdGUgZGVmaW5pdGlvbiBkZXNjcmlwdGlvbi48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzdHJvbmcgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgIFJUQ19CS1A8L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TmV3IEFQSXMgdG8KKyAgICAgICAgICAgc3VidHJhY3Qgb3IgYWRkIG9uZSBob3VyIHRvIHRoZSBjYWxlbmRhciBpbiBvbmUgc2luZ2xlIG9wZXJhdGlvbgorICAgICAgICAgICB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIGluaXRpYWxpemF0aW9uIHByb2NlZHVyZSAoRGF5bGlnaHQKKyAgICAgICAgICAgU2F2aW5nKTo8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIEhBTF9SVENfRFNUX0FkZDE8c3BhbiBjbGFzcz0iZ3JhbWUiPkhvdXIoPC9zcGFuPik8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1JUQ19EU1RfU3ViMTxzcGFuIGNsYXNzPSJncmFtZSI+SG91cig8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfUlRDX0RTVF88c3BhbiBjbGFzcz0iZ3JhbWUiPlNldFN0b3JlT3BlcmF0aW9uKDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9SVENfRFNUXzxzcGFuIGNsYXNzPSJncmFtZSI+Q2xlYXJTdG9yZU9wZXJhdGlvbig8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfUlRDX0RTVF88c3BhbiBjbGFzcz0iZ3JhbWUiPlJlYWRTdG9yZU9wZXJhdGlvbig8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPC91bD4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3Ryb25nIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICBDUllQPC9zcGFuPjwvc3Ryb25nPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDt1cGRhdGU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfQ1JZUF88c3BhbiBjbGFzcz0iZ3JhbWUiPlNldENvbmZpZyg8L3NwYW4+KSBhbmQgSEFMX0NSWVBfR2V0Q29uZmlnKCkgQVBJcyB0byBzZXQvZ2V0CisgICAgICAgICAgIHRoZSBjb250aW5lbnQgb2YgS2V5SVZDb25maWdTa2lwIGNvcnJlY3RseS48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5TdXBwb3J0IG9mIG1lc3NhZ2UgaGVhZCBubyBtdWx0aXBsZSBvZiB3b3JkIGZvciBHQ00gYW5kIENDTSBhbGdvcml0aG1zLjxicj4KIDwvc3Bhbj48L2xpPgotPC91bD4KLSAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTCBMb2NrL1VubG9jayBtZWNhbmlzbSB1cGRhdGUgIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+TEwgQURDIDwvc3Bhbj51cGRhdGU8YnI+Ci0gICAgICAgICAgICAgICAgPC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgIDx1bD4KLTxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+Rml4IDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5WUkVGSU5UL1RFTVBTRU5TT1IgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5jYWxpYnJhdGlvbiBhZGRyZXNzIHJlZ2lzdGVycyBmb3IgU1RNMzJGNzR4Lzc1eC9GNzYvRjc3IGRldmljZXM8L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgICA8dWw+Ci0gICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPk5vdGU8L3NwYW4+OiBGb3IgU1RNMzJGNzIvRjczIHRoZSBpc3N1ZSB3aWxsIGJlIGZpeGVkIGluIG5leHQgcmVsZWFzZTxicj4KLTwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci08bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9BRENfU3RhcnQoKSwgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfQURDX1N0YXJ0X0lUKCkgYW5kIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0FEQ19TdGFydF9ETUEoKSB1cGRhdGUgdG8gcHJldmVudGlvbiBmcm9tIHN0YXJ0aW5nIEFEQzIgb3IgQURDMyBvbmNlIG11bHRpbW9kZSBpcyBlbmFibGVkPC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIERGU0RNJm5ic3A7IDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgPHVsPgotPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5HZW5lcmFsIHVwZGF0ZXMgdG8gYmUgY29tcGxpYW50IHdpdGggREZTRE0gYml0cyBuYW1pbmcgdXNlZCBpbiBDTVNJUyBmaWxlcy48L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgQ0FOJm5ic3A7IDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIHBvc3NpYmxlIHZhbHVlcyBsaXN0IGZvciBGaWx0ZXJBY3RpdmF0aW9uIHBhcmFtZXRlciBpbiBDQU5fRmlsdGVyVHlwZURlZiBzdHJ1Y3R1cmU8L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgICA8dWw+Ci08bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkNBTl9GSUxURVJfRU5BQkxFIGluc3RlYWQgb2YgRU5BQkxFPGJyPjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+Q0FOX0ZJTFRFUl9ESVNBQkxFPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij4gaW5zdGVhZCBvZiBESVNBQkxFPC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgQ0VDJm5ic3A7IDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgPHVsPgotPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgSEFMIENFQyBTdGF0ZSBtYW5hZ2VtZW50IG1ldGhvZDo8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5SZW1vdmUgSEFMX0NFQ19TdGF0ZVR5cGVEZWYgc3RydWN0dXJlIHBhcmFtZXRlcnM8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBuZXcgZGVmaW5lcyBmb3IgQ0VDIHN0YXRlczwvc3Bhbj48L2xpPjwvdWw+Ci0gICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIERNQTJEJm5ic3A7IDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgPHVsPgotPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5SZW1vdmUgdW51c2VkIERNQTJEX0NvbG9yVHlwZURlZiBzdHJ1Y3R1cmUgdG8gYmUgY29tcGxpYW50IHdpdGggTUlTUkFDIDIwMTIgUnVsZSAyLjM8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkdlbmVyYWwgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgdG8gdXNlIGRlZGljYXRlZCBkZWZpbmVzIGZvciBETUEyRF9CQUNLR1JPVU5EX0xBWUVSIGFuZCBETUEyRF9GT1JFR1JPVU5EX0xBWUVSIGluc3RlYWQgb2YgbnVtZXJpY2FsIHZhbHVlczogMC8xLjwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICA8L3VsPgotPHVsPjwvdWw+Ci0gICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj4KLSAgICAgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7OyBmb250LXNpemU6IG1lZGl1bTsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyBsaW5lLWhlaWdodDogbm9ybWFsOyBtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJzcXVhcmUiPgotICAgICAgICAgICAgICA8dWw+Ci0gICAgICAgICAgICAgIDwvdWw+PC91bD4KLSAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij48L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij48L3NwYW4+Ci0gICAgICAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBpbjsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OzsgZm9udC1zaXplOiBtZWRpdW07IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsgbWFyZ2luLXRvcDogMGNtOyIgdHlwZT0ic3F1YXJlIj48L3VsPgotICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPgotICAgICAgICAgICAgPHVsIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1pbmRlbnQ6IDBweDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbWFyZ2luLXRvcDogMGNtOyBtYXJnaW4tYm90dG9tOiAwaW47IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyIgdHlwZT0ic3F1YXJlIj48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTC9MTCBSVEM8L3NwYW4+IHVwZGF0ZTwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICA8dWw+Ci0gICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5IQUwvIExMIGRyaXZlcnMgb3B0aW1pemF0aW9uPC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5IQUwgZHJpdmVyOiByZW1vdmUgdW51c2VkIHZhcmlhYmxlczwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5MTCBkcml2ZXI6IGdldHRlciBBUElzIG9wdGltaXphdGlvbjwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIEpQRUcgPC9zcGFuPnVwZGF0ZTwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICA8dWw+Ci0gICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgcGFyYW1ldGVycyB0eXBlIGluIEpQRUdfQ29uZlR5cGVEZWYgc3RydWN0dXJlIHRvIGJlIGFsaWduZWQgd2l0aCAzMi1iaXRzPGJyPgotICAgICAgICAgICAgICAgICAgPC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgIDwvdWw+CiAKLSAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgU1BJIDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7Ij48L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+IDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPnVwZGF0ZTwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICA8dWw+Ci0gICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5PdmVyYWxsIHJld29yayBvZiB0aGUgZHJpdmVyIGZvciBhIG1vcmUgZWZmaWNpZW50Jm5ic3A7aW1wbGVtZW50YXRpb248L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+QWRkIHRoZSBmb2xsb3dpbmcgbmV3IG1hY3Jvczo8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5TUEk8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPl9DSEVDS19GTEFHKCkgPGJyPgotPC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+U1BJPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5fQ0hFQ0tfSVRfU09VUkNFKCkgPGJyPgotPC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgSEFMX1NQSUV4X0ZsdXNoUnhGaWZvKCkgQVBJIHRvIGZsdXNoIHRoZSBTUEkgRklGTyBSWC48YnI+Ci0gICAgICAgICAgICAgICAgICA8L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgSEFMX1NQSV9BYm9ydCgpIHRvIGZpeCBhYm9ydCBpc3N1ZSBpbiBTUEkgVFggb3IgUnggbW9kZSBvbmx5IDwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5TUEk8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5fVHJhbnNtaXQoKS88L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfU1BJPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+Xzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPlJlY2VpdmUoKTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPiBBUEkncyB0byBmaXggbWVtb3J5IG92ZXJmbG93IGlzc3VlLjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzdHJvbmcgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgIFNBSTwvc3Bhbj48L3N0cm9uZz48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7dXBkYXRlPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1NBSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikgQVBJIHRvIGNvcnJlY3QgdGhlIGZvcm11bGEgaW4gY2FzZSBvZgorICAgICAgICAgICBTUERJRiBpcyB3cm9uZy48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1NBSV88c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikgQVBJOjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPHVsIHR5cGU9InNxdWFyZSI+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5DbGVhciBpbnRlcnJ1cHQgZmxhZ3M6IEFGU0RFVCwgTEZTREVUIGFuZCBXQ0tDRkcuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUKKyAgICAgICAgICAgSEFMX1NBSV9SZWNlaXZlXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pIEFQSSB0byBmb2xsb3cgdGhlCisgICAgICAgICAgIHNlcXVlbmNlIGRlc2NyaWJlZCBpbiB0aGUgcmVmZXJlbmNlIG1hbnVhbC48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgdG8gYXZvaWQKKyAgICAgICAgICAgdGhlIGluY29ycmVjdCBsZWZ0L3JpZ2h0IHN5bmNocm9uaXphdGlvbi48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9TQUlfVHJhbnNtaXRfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPikKKyAgICAgICAgICAgIEFQSSB0byBmb2xsb3cgdGhlIHNlcXVlbmNlIGRlc2NyaWJlZCBpbiB0aGUgcmVmZXJlbmNlIG1hbnVhbCBmb3IKKyAgICAgICAgICAgIHNsYXZlIHRyYW5zbWl0dGVyIG1vZGUuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzdHJvbmcgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgIEdQSU88L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIExML0hBTAorICAgICAgICAgICBHUElPXzxzcGFuIGNsYXNzPSJncmFtZSI+VG9nZ2xlUGluKDwvc3Bhbj4pIEFQSXMgdG8gYWxsb3cgbXVsdGkgUGluknMKKyAgICAgICAgICAgdG9nZ2xpbmcuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3Ryb25nIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICBJMkM8L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIFNUTTMyRjc0NXh4LCBTVE0zMkY3NDZ4eCwgU1RNMzJGNzUweHgsIFNUTTMyRjc1Nnh4IGhlYWRlcnMgZmlsZXMgdG8KKyAgICAgICAgICAgc3VwcG9ydCBJMkMgRmFzdCBtb2RlIHBsdXMuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3Ryb25nIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgICBEQUM8L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9EQUNFeF88c3BhbiBjbGFzcz0iZ3JhbWUiPkR1YWxTdGFydCg8L3NwYW4+KSBBUEkgd2hlbiBjaGVja2luZyB0aGUKKyAgICAgICAgICAgc29mdHdhcmUgdHJpZ2dlciB3aXRoIHRoZSByaWdodCB2YWx1ZXM6PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkRBQ19UUklHR0VSX1NPRlRXQVJFIGluc3RlYWQgb2YgREFDX0NSX1RFTjEuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPihEQUNfVFJJR0dFUl9TT0ZUV0FSRSAmbHQ7Jmx0OyAoREFDX0NIQU5ORUxfMiAmYW1wOworICAgICAgICAgICAgMHgxMFVMKSkgaW5zdGVhZCBvZiBEQUNfQ1JfVEVOMi48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDwvdWw+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBkcml2ZXIgdG8KKyAgICAgICAgICAgc3VwcG9ydCBkdWFsIG1vZGUuIFR3byBuZXcgQVBJcyBhZGRlZDo8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0RBQ0V4XzxzcGFuIGNsYXNzPSJncmFtZSI+RHVhbFN0YXJ0KDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9EQUNFeF88c3BhbiBjbGFzcz0iZ3JhbWUiPkR1YWxTdG9wKDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzdHJvbmcgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTC9MTAorICAgICAgICAgIEFEQzwvc3Bhbj48L3N0cm9uZz48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7dXBkYXRlPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgdGhlCisgICAgICAgICAgIGZvbGxvd2luZyBBUElzIHRvIHNldCBzdGF0dXMgSEFMX0FEQ19TVEFURV9FUlJPUl9JTlRFUk5BTCBhbmQgZXJyb3IKKyAgICAgICAgICAgY29kZSBIQUxfQURDX0VSUk9SX0lOVEVSTkFMIHdoZW4gZXJyb3Igb2NjdXJzOjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPHVsIHR5cGU9InNxdWFyZSI+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfQURDXzxzcGFuIGNsYXNzPSJncmFtZSI+U3RhcnQoPC9zcGFuPik8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0FEQ19TdGFydF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9BRENfU3RhcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPik8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0FEQ0V4XzxzcGFuIGNsYXNzPSJncmFtZSI+SW5qZWN0ZWRTdGFydCg8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfQURDRXhfSW5qZWN0ZWRTdGFydF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9BRENFeF9NdWx0aU1vZGVTdGFydF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPC91bD4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICAgIEhBTF9BRENfU3RvcF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KSBBUEkgdG8gY2hlY2sgaWYgRE1BCisgICAgICAgICAgIHN0YXRlIGlzIEJ1c3kgYmVmb3JlIGNhbGxpbmcgSEFMX0RNQV9BYm9ydCgpIEFQSSB0byBhdm9pZCBETUEKKyAgICAgICAgICAgaW50ZXJuYWwgZXJyb3IuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIExMX0FEQ19SRUdfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pIEFQSSB0byBhdm9pZCBlbmFibGluZyBjb250aW51b3VzIG1vZGUgYW5kCisgICAgICAgICAgIGRpc2NvbnRpbnVvdXMgbW9kZSBzaW11bHRhbmVvdXNseS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzdHJvbmcgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgIEkyUzwvc3Bhbj48L3N0cm9uZz48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7dXBkYXRlPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX0kyU188c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQVN0b3AoPC9zcGFuPikgQVBJIHRvIGJlIG1vcmUgc2FmZS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIGEgY2hlY2sgb24gQlNZLCBUWEUgYW5kIFJYTkUgZmxhZ3MgYmVmb3JlIGRpc2FibGluZworICAgICAgICAgICAgdGhlIEkyUy48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDwvdWw+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfSTJTXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BU3RvcCg8L3NwYW4+KSBBUEkgdG8gZml4IG11bHRpLWNhbGwgdHJhbnNmZXIgaXNzdWUodG8KKyAgICAgICAgICAgYXZvaWQgcmUtaW5pdGlhbGl6aW5nIHRoZSBJMlMgZm9yIHRoZSBuZXh0IHRyYW5zZmVyKS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIF9fSEFMX0kyU0VYVF9GTFVTSF9SWF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRSKDwvc3Bhbj4pCisgICAgICAgICAgICBhbmQgX19IQUxfSTJTX0ZMVVNIX1JYX0RSKCkgbWFjcm9zIHRvIGZsdXNoIHRoZSByZW1haW5pbmcgZGF0YQorICAgICAgICAgICAgaW5zaWRlIERSIHJlZ2lzdGVycy48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBFcnJvckNvZGUgZGVmaW5lOiBIQUxfSTJTX0VSUk9SX0JVU1lfTElORV9SWC48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDwvdWw+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHN0cm9uZyBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgVVRJTFM8L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VVRJTFNfPHNwYW4gY2xhc3M9ImdyYW1lIj5TZXRGbGFzaExhdGVuY3koPC9zcGFuPikgQVBJIHJlbmFtZWQgdG8KKyAgICAgICAgICAgTExfU2V0Rmxhc2hMYXRlbmN5KCkgYW5kIG1hZGUgcHVibGljLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PHN0cm9uZyBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMCisgICAgICAgICAgV1dERzwvc3Bhbj48L3N0cm9uZz48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7dXBkYXRlPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMCisgICAgICAgICAgIGRyaXZlciBkZXNjcmlwdGlvbi48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxzdHJvbmcgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTAorICAgICAgICAgIElXREc8L3NwYW4+PC9zdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO3VwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0lXREdfREVGQVVMVF9USU1FT1VUCisgICAgICAgICAgIGhhcyBiZWNvbWUgY29uZmlndXJhYmxlIHZpYSBMU0lfVkFMVUUgKGRlZmluZWQgaW4KKyAgICAgICAgICAgc3RtMzJmN3h4X2hhbF9jb25mLmgpLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogcmdiKDE3LCAxNywgMTcpOyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBFWFRJPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+IHVwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIG1hY3JvcworICAgICAgICAgICB1c2luZyBfX0xJTkVfXyBhcyBhIG1hY3JvIHBhcmFtZXRlciBpbiBvcmRlciB0byB1c2UgRVhUSV9MSU5FCisgICAgICAgICAgIGluc3RlYWQgdG8gcmVzb2x2ZSBwYXJhbWV0ZXIgY29uZmxpY3RzIHdpdGggc3RhbmRhcmQgQyB1c2FnZS48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IHJnYigxNywgMTcsIDE3KTsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgVVNCPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+IHVwZGF0ZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+RW5oYW5jZSBIQUwgSENECisgICAgICAgICAgIGRyaXZlciB3aGVuIFVTQiBETUEgaXMgZW5hYmxlZDo8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIAorICAgICAgICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4IHBpbmcgYW5kCisgICAgICAgICAgIGRhdGEgdG9nZ2xlIGlzc3VlLjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgICAgICAgICAgICA8L3VsPgogCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIEkyUyA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPiA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj51cGRhdGU8L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgPHVsPgotPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5PdmVyYWxsIHJld29yayBvZiB0aGUgZHJpdmVyIGZvciBhIG1vcmUgZWZmaWNpZW50Jm5ic3A7aW1wbGVtZW50YXRpb248L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgPHVsPgotPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgdGhlIGZvbGxvd2luZyBuZXcgbWFjcm9zOjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5JMlM8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPl9DSEVDS19GTEFHKCk8L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5JMlM8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPl9DSEVDS19JVF9TT1VSQ0UoKTwvc3Bhbj48L2xpPgotPC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+SEFMXzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+STJTPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+X1RyYW5zbWl0KCkvPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+SEFMXzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+STJTPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+Xzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPlJlY2VpdmUoKTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPiBBUEkncyB0byBmaXggbWVtb3J5IG92ZXJmbG93IGlzc3VlLjwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICA8L3VsPgorICAgICAgIAorICAgICAgICAgICAgICAgICAgPHVsPgorICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoMTcsIDE3LCAxNyk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmV3b3JrIENoYW5uZWwKKyAgICAgICAgICAgZXJyb3IgcmVwb3J0IG1hbmFnZW1lbnQuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgICAgICAgICAgIDwvdWw+CiAKLSAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwvTEwgVElNIDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgPHVsPgotPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5Nb3ZlIHRoZSBmb2xsb3dpbmcgVElNIHN0cnVjdHVyZXMgZnJvbSA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPnN0bTMyZjR4eF9oYWxfdGltX2V4Lmg8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPiBpbnRvIHN0bTMyZjR4eF9oYWxfdGltLmg8YnI+PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+VElNX01hc3RlckNvbmZpZ1R5cGVEZWY8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPlRJTV9CcmVha0RlYWRUaW1lQ29uZmlnVHlwZURlZjwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgbmV3IFRJTSBDYWxsYmFja3MgQVBJJ3M6PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX1RJTV9QZXJpb2RFbGFwc2VkSGFsZkNwbHRDYWxsYmFjaygpPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfVElNX0lDX0NhcHR1cmVIYWxmQ3BsdENhbGxiYWNrKCk8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9USU1fUFdNX1B1bHNlRmluaXNoZWRIYWxmQ3BsdENhbGxiYWNrKCk8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9USU1fVHJpZ2dlckhhbGZDcGx0Q2FsbGJhY2soKTwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+VElNIEFQSSBjaGFuZ2VzIGZvciA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5NSVNSQS1DIDIwMTIgY29tcGxpYW5jeTo8L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgPHVsPgotPHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+UmVuYW1lPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+IDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9USU1fU2xhdmVDb25maWdTeW5jaHJvbml6YXRpb248L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij4gdG8gSEFMX1RJTV9TbGF2ZUNvbmZpZ1N5bmNocm88L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPlJlbmFtZTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPiA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfVElNX1NsYXZlQ29uZmlnU3luY2hyb25pemF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+X0lUIHRvIEhBTF9USU1fU2xhdmVDb25maWdTeW5jaHJvX0lUPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+UmVuYW1lIEhBTF9USU1FeF9Db25maWdDb21tdXRhdGlvbkV2ZW50IHRvIEhBTF9USU1FeF9Db25maWdDb21tdXRFdmVudDwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPlJlbmFtZSBIQUxfVElNRXhfQ29uZmlnQ29tbXV0YXRpb25FdmVudF9JVCB0byBIQUxfVElNRXhfQ29uZmlnQ29tbXV0RXZlbnRfSVQ8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5SZW5hbWUgSEFMX1RJTUV4X0NvbmZpZ0NvbW11dGF0aW9uRXZlbnRfRE1BIHRvIEhBTF9USU1FeF9Db25maWdDb21tdXRFdmVudF9ETUE8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5SZW5hbWUgSEFMX1RJTUV4X0NvbW11dGF0aW9uQ2FsbGJhY2sgdG8gSEFMX1RJTUV4X0NvbW11dENhbGxiYWNrPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+UmVuYW1lIEhBTF9USU1FeF9ETUFDb21tdXRhdGlvbkNwbHQgdG8gVElNRXhfRE1BQ29tbXV0YXRpb25DcGx0PC9zcGFuPjwvbGk+PC91bD4KLSAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgVUFSVCA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPiA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj51cGRhdGU8L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgPHVsPgotPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5PdmVyYWxsIHJld29yayBvZiB0aGUgZHJpdmVyIGZvciBhIG1vcmUgZWZmaWNpZW50Jm5ic3A7aW1wbGVtZW50YXRpb248L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgICAgPHVsPgotPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgdGhlIGZvbGxvd2luZyBVQVJUIEFQSSdzIGluIHN0bTMyZjd4eF9oYWxfdWFydF9leC5jOjwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+Jm5ic3A7SEFMX1JTNDg1RXhfSW5pdCgpPC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9NdWx0aVByb2Nlc3NvckV4X0FkZHJlc3NMZW5ndGhfU2V0KCk8YnI+Ci0gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFML0xMIFVTQjwvc3Bhbj4gdXBkYXRlPC9zcGFuPjwvbGk+Ci0KLSAgICAgICAgICAgICAgPHVsPgotPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5SZXdvcmsgVVNCIGludGVycnVwdCBoYW5kbGVyIGFuZCBpbXByb3ZlIEhTIERNQSBzdXBwb3J0IGluIERldmljZSBtb2RlPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5GaXggQkNEIGhhbmRsaW5nIGZvciBPVEcgaW5zdGFuY2UgaW4gZGV2aWNlIG1vZGU8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPmNsZWFudXAgcmVmZXJlbmNlIHRvIGxvdyBzcGVlZCBpbiBkZXZpY2UgbW9kZTwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+YWxsb3cgd3JpdGluZyBUWCBGSUZPIGluIGNhc2Ugb2YgdHJhbnNmZXIgbGVuZ3RoIGlzIGVxdWFsIHRvIGF2YWlsYWJsZSBzcGFjZSBpbiB0aGUgVFggRklGTzwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+Rml4IFRvZ2dsZSBPVVQgaW50ZXJydXB0IGNoYW5uZWwgaW4gaG9zdCBtb2RlPC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+TEwgSVdERyA8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+Ci0gICAgICAgICAgICAgIDx1bD4KLTxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIExMIGlubGluZSBtYWNyb3MgdG8gdXNlIElXREd4IHBhcmFtZXRlciBpbnN0ZWFkIG9mIElXREcgaW5zdGFuY2UgZGVmaW5lZCBpbiBDTVNJUyBkZXZpY2U8L3NwYW4+PC9saT4KLSAgICAgICAgICAgICAgPC91bD4KLQotPC91bD4KLSAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij48L3NwYW4+Ci08aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7IC1tb3otYmFja2dyb3VuZC1jbGlwOiBpbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiBpbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgd2lkdGg6IDI0MXB4OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IEFyaWFsOyBjb2xvcjogd2hpdGU7Ij5WMS4yLjYgLyAyOS1KdW5lLTIwMTg8L3NwYW4+PC9oMz48cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwY20gNC41cHQgMThwdDsgZm9udC1zaXplOiBtZWRpdW07IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyI+PGI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGNvbG9yOiBibGFjazsiPk1haW4gQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjwvcD48dWwgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBpbjsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OzsgZm9udC1zaXplOiBtZWRpdW07IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsgbWFyZ2luLXRvcDogMGNtOyIgdHlwZT0ic3F1YXJlIj48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgdG8gc3VwcG9ydCBTVE0zMkY3MzB4eCBhbmQgU1RNMzJGNzUweHggdmFsdWUgbGluZXM8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgRE1BPHNwYW4+Jm5ic3A7PC9zcGFuPjwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWwgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBpbjsiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkRNQV9DSEFOTkVMXzggdG8gRE1BX0NIQU5ORUxfMTUgYXJlIGFsc28gZGVmaW5lZCBpbiBjYXNlIG9mJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5TVE0zMkY3MzB4eCAoPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5zYW1lJm5ic3A7ZmVhdHVyZXMgYXMgU1RNMzJGNzMzeHggbGluZTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+KTwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIEZMQVNIPHNwYW4+Jm5ic3A7PC9zcGFuPjwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWwgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBpbjsiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBzdXBwb3J0IG9mPHNwYW4+Jm5ic3A7PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+U1RNMzJGNzMweHggd2l0aCA0IEZMYXNoIHNlY3RvcnMgb2YgMTZLQiBlYWNoPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij4uPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+QWRkIHN1cHBvcnQgb2Y8c3Bhbj4mbmJzcDs8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5TVE0zMkY3NTB4eCB3aXRoIDIgRkxhc2ggc2VjdG9ycyBvZiAzMktCIGVhY2g8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPi48L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBHUElPPHNwYW4+Jm5ic3A7PC9zcGFuPjwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWwgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBpbjsiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBzdXBwb3J0IG9mJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5TVE0zMkY3MzB4eCB2YWx1ZSBsaW5lIDogc2FtZSZuYnNwO2ZlYXR1cmVzIGFzIFNUTTMyRjczM3h4IGxpbmU8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgc3VwcG9ydCBvZiZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+U1RNMzJGNzUweHggdmFsdWUgbGluZSA6IHNhbWUmbmJzcDtmZWF0dXJlcyBhcyBTVE0zMkY3NTZ4eCZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+bGluZTwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIFJDQzxzcGFuPiZuYnNwOzwvc3Bhbj48L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgc3VwcG9ydCBvZiZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+U1RNMzJGNzMweHggdmFsdWUgbGluZSA6IHNhbWUmbmJzcDtmZWF0dXJlcyBhcyBTVE0zMkY3MzN4eCZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+bGluZTwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBzdXBwb3J0IG9mJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5TVE0zMkY3NTB4eCB2YWx1ZSBsaW5lIDogc2FtZSZuYnNwO2ZlYXR1cmVzIGFzIFNUTTMyRjc1Nnh4Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5saW5lPC9zcGFuPjwvbGk+PC91bD48L3VsPjxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiBpbml0aWFsOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyB3aWR0aDogMjQxcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiB3aGl0ZTsiPlYxLjIuNSAvIDAyLUZlYnJ1YXJ5LTIwMTg8L3NwYW4+PC9oMz4KLTxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBjbSA0LjVwdCAxOHB0OyI+PGIgc3R5bGU9IiI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGNvbG9yOiBibGFjazsiPk1haW4KLUNoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+PHVsIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgZm9udC1zaXplOiBtZWRpdW07IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IG1hcmdpbi10b3A6IDBjbTsiIHR5cGU9InNxdWFyZSI+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+R2VuZXJhbCB1cGRhdGVzIHRvIGZpeCBrbm93biBkZWZlY3RzIGFuZCBlbmhhbmNlbWVudHMgaW1wbGVtZW50YXRpb248L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwmbmJzcDs8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBuZXcgbWFjcm8gdG8gZ2V0IHZhcmlhYmxlIGFsaWduZWQgb24gMzItYnl0ZXMsIHJlcXVpcmVkIGZvciBjYWNoZSBtYWludGVuYW5jZSBwdXJwb3NlPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIFVOVVNFRCgpIG1hY3JvIGltcGxlbWVudGF0aW9uIHRvIGF2b2lkIEdDQyB3YXJuaW5nPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlRoZSB3YXJuaW5nIGlzIGRldGVjdGVkIHdoZW4gdGhlIFVOVVNFRCgpIG1hY3JvIGlzIGNhbGxlZCBmcm9tIEMrKyBmaWxlPC9zcGFuPjwvbGk+PC91bD48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBTQUkgPC9zcGFuPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgSEFMX1NBSV9ETUFTdG9wKCkgYW5kIEhBTF9TQUlfQWJvcnQoKSBwcm9jZXNzIHRvIGZpeCB0aGUgbG9jay91bmxvY2sgYXVkaW8gaXNzdWUgPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgUFdSIDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlCi1IQUxfUFdSX0VudGVyU0xFRVBNb2RlKCkgYW5kIEhBTF9QV1JfRW50ZXJTVE9QTW9kZSgpIEFQSXMgdG8gZW5zdXJlCi10aGF0IGFsbCBpbnN0cnVjdGlvbnMgZmluaXNoZWQgYmVmb3JlIGVudGVyaW5nIFNUT1AgbW9kZS4gPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgSENEIDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+QWRkIG5ldyBjYWxsYmFjayB0byBiZSB1c2VkIHRvIGhhbmRsZSB1c2IgZGV2aWNlIGNvbm5lY3Rpb24vZGlzY29ubmVjdGlvbjwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfSENEX1BvcnRFbmFibGVkX0NhbGxiYWNrKCk8L3NwYW4+PC9saT48L3VsPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfSENEX1BvcnREaXNhYmxlZF9DYWxsYmFjaygpPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgdG8gcHJldmVudCByZWFjdGl2YXRlIGhvc3QgaW50ZXJycnVwdCBjaGFubmVsPGJyPjwvc3Bhbj48L2xpPjwvdWw+PC91bD48aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7IC1tb3otYmFja2dyb3VuZC1jbGlwOiBpbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiBpbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgd2lkdGg6IDI0MXB4OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IEFyaWFsOyBjb2xvcjogd2hpdGU7Ij5WMS4yLjQgLyAyMi1EZWNlbWJlci0yMDE3PC9zcGFuPjwvaDM+Ci08cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwY20gNC41cHQgMThwdDsiPjxiIHN0eWxlPSIiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyBjb2xvcjogYmxhY2s7Ij5NYWluCi1DaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPjx1bCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IGZvbnQtc2l6ZTogbWVkaXVtOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyBtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJzcXVhcmUiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkdlbmVyYWwgdXBkYXRlcyB0byBmaXgga25vd24gZGVmZWN0cyBhbmQgZW5oYW5jZW1lbnRzIGltcGxlbWVudGF0aW9uPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+VGhlIGZvbGxvd2luZyBjaGFuZ2VzIGRvbmUgb24gdGhlIEhBTCBkcml2ZXJzIHJlcXVpcmUgYW4gdXBkYXRlIG9uIHRoZSBhcHBsaWNhdGlvbiBjb2RlIGJhc2VkIG9uIG9sZGVyIEhBTCB2ZXJzaW9uczwvc3Bhbj48L3NwYW4+PC9saT48dWwgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBpbjsiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXdlaWdodDogYm9sZDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyI+UmV3b3JrIG9mIEhBTCBDQU4gZHJpdmVyIChjb21wYXRpYmlsaXR5IGJyZWFrKSZuYnNwOzwvc3Bhbj48L2xpPjx1bCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyI+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsiPkEKLW5ldyBIQUwgQ0FOIGRyaXZlciBoYXMgYmVlbiByZWRlc2lnbmVkIHdpdGggbmV3IEFQSXMsIHRvIGJ5cGFzcwotbGltaXRhdGlvbnMgb24gQ0FOIFR4L1J4IEZJRk8gbWFuYWdlbWVudCBwcmVzZW50IHdpdGggcHJldmlvdXMgSEFMIENBTgotZHJpdmVyIHZlcnNpb24uPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsiPlRoZQotbmV3IEhBTCBDQU4gZHJpdmVyIGlzIHRoZSByZWNvbW1lbmRlZCB2ZXJzaW9uLiBJdCBpcyBsb2NhdGVkIGFzIHVzdWFsCi1pbiBEcml2ZXJzL1NUTTMyRjd4eF9IQUxfRHJpdmVyL1NyYyBhbmQKLURyaXZlcnMvU1RNMzJmN3h4X0hBTF9Ecml2ZXIvSW5jIGZvbGRlcnMuIEl0IGNhbiBiZSBlbmFibGVkIHRocm91Z2gKLXN3aXRjaCBIQUxfQ0FOX01PRFVMRV9FTkFCTEVEIGluIHN0bTMyZjd4eF9oYWxfY29uZi5oPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsiPlRoZQotbGVnYWN5IEhBTCBDQU4gZHJpdmVyIGlzIGFsc28gcHJlc2VudCBpbiB0aGUgcmVsZWFzZSBpbgotRHJpdmVycy9TVE0zMkY3eHhfSEFMX0RyaXZlci9TcmMvTGVnYWN5IGFuZAotRHJpdmVycy9TVE0zMkY3eHhfSEFMX0RyaXZlci9JbmMvTGVnYWN5IGZvbGRlcnMgZm9yIHNvZnR3YXJlCi1jb21wYXRpYmlsaXR5IHJlYXNvbnMuIEl0cyB1c2FnZSBpcyBub3QgcmVjb21tZW5kZWQgYXMgZGVwcmVjYXRlZC4mbmJzcDtJdAotY2FuIGhvd2V2ZXIgYmUgZW5hYmxlZCB0aHJvdWdoIHN3aXRjaCBIQUxfQ0FOX0xFR0FDWV9NT0RVTEVfRU5BQkxFRCBpbgotc3RtMzJmN3h4X2hhbF9jb25mLmg8L3NwYW4+PC9saT48L3VsPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMJm5ic3A7PC9zcGFuPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgSEFMIGRyaXZlciB0byBhbGxvdyB1c2VyIHRvIGNoYW5nZSBzeXN0aWNrIHBlcmlvZCB0byAxbXMgLCAxMCBtcyBvciAxMDAgbXMgOjwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgdGhlIGZvbGxvd2luZyBBUEkncyA6Jm5ic3A7Jm5ic3A7PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9HZXRUaWNrUHJpbygpIDogUmV0dXJucyBhIHRpY2sgcHJpb3JpdHkuPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX1NldFRpY2tGcmVxKCkgOiBTZXRzIG5ldyB0aWNrJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+ZnJlcXVlbmN5Ljwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9HZXRUaWNrRnJlcSgpIDogUmV0dXJucyB0aWNrIGZyZXF1ZW5jeS48L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBIQUxfVGlja0ZyZXFUeXBlRGVmIGVudW1lcmF0aW9uIGZvciB0aGUgZGlmZmVyZW50IFRpY2sgRnJlcXVlbmNpZXMgOiAxMCBIeiAsIDEwMCBIeiBhbmQgMUtIeiAoZGVmYXVsdCkuPC9zcGFuPjwvbGk+PC91bD48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBDQU4gPC9zcGFuPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5GaWVsZHMgb2YgQ0FOX0luaXRUeXBlRGVmIHN0cnVjdHVyZSBhcmUgcmV3b3JrZWQ6PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7Ij5TSlcKLXRvIFN5bmNKdW1wV2lkdGgsIEJTMSB0byBUaW1lU2VnMSwgQlMyIHRvIFRpbWVTZWcyLCBUVENNIHRvCi1UaW1lVHJpZ2dlcmVkTW9kZSwgQUJPTSB0byBBdXRvQnVzT2ZmLCBBV1VNIHRvIEF1dG9XYWtlVXAsIE5BUlQgdG8KLUF1dG9SZXRyYW5zbWlzc2lvbiAoaW52ZXJzZWQpLCBSRkxNIHRvIFJlY2VpdmVGaWZvTG9ja2VkIGFuZCBUWEZQIHRvCi1UcmFuc21pdEZpZm9Qcmlvcml0eTwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+SEFMX0NBTl9Jbml0KCkgaXMgc3BsaXQgaW50byBib3RoIEhBTF9DQU5fSW5pdCgpIGFuZCBIQUxfQ0FOX1N0YXJ0KCkgQVBJJ3M8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5IQUxfQ0FOX1RyYW5zbWl0KCkKLWlzIHJlcGxhY2VkIGJ5IEhBTF9DQU5fQWRkVHhNZXNzYWdlKCkgdG8gcGxhY2UgVHggUmVxdWVzdCwgdGhlbgotSEFMX0NBTl9HZXRUeE1haWxib3hlc0ZyZWVMZXZlbCgpIGZvciBwb2xsaW5nIHVudGlsIGNvbXBsZXRpb24uPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+SEFMX0NBTl9UcmFuc21pdF9JVCgpCi1pcyByZXBsYWNlZCBieSBIQUxfQ0FOX0FjdGl2YXRlTm90aWZpY2F0aW9uKCkgdG8gZW5hYmxlIHRyYW5zbWl0IElULCB0aGVuCi1IQUxfQ0FOXzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkFkZFR4TWVzc2FnZTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPigpIGZvciBwbGFjZSBUeCByZXF1ZXN0Ljwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkhBTF9DQU5fUmVjZWl2ZSgpCi1pcyByZXBsYWNlZCBieSBIQUxfQ0FOX0dldFJ4Rmlmb0ZpbGxMZXZlbCgpIGZvciBwb2xsaW5nIHVudGlsCi1yZWNlcHRpb24sIHRoZW4gSEFMX0NBTl9HZXRSeE1lc3NhZ2UoKSA8YnI+dG8gZ2V0IFJ4IG1lc3NhZ2UuPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+SEFMX0NBTl9SZWNlaXZlX0lUKCkKLWlzIHJlcGxhY2VkIGJ5IEhBTF9DQU5fPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+QWN0aXZhdGVOb3RpZmljYXRpb248L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj4oKSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPnRvIGVuYWJsZSByZWNlaXZlIElULCB0aGVuCi1IQUxfQ0FOPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+X0dldFJ4TWVzc2FnZSgpPGJyPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPiBpbiB0aGUgcmVjZWl2ZWNhbGxiYWNrIHRvIGdldCBSeCBtZXNzYWdlPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+SEFMX0NBTl9TbGVwcCgpIGlzIHJlbmFtZWQgYXMgSEFMX0NBTl9SZXF1ZXN0U2xlZXAoKTwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkhBTF9DQU5fVHhDcGx0Q2FsbGJhY2soKSBpcyBzcGxpdCBpbnRvIEhBTF9DQU5fVHhNYWlsYm94MENvbXBsZXRlQ2FsbGJhY2soKSwgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+SEFMX0NBTl9UeE1haWxib3gxQ29tcGxldGVDYWxsYmFjaygpIGFuZCZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkhBTF9DQU5fVHhNYWlsYm94MkNvbXBsZXRlQ2FsbGJhY2soKS48L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5IQUxfQ0FOX1J4Q3BsdENhbGxiYWNrIGlzIHNwbGl0IGludG8gSEFMX0NBTl9SeEZpZm8wTXNnUGVuZGluZ0NhbGxiYWNrKCkgYW5kIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkhBTF9DQU5fUnhGaWZvMU1zZ1BlbmRpbmdDYWxsYmFjaygpLjwvc3Bhbj48L2xpPjwvdWw+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPk1vcmUgY29tcGxldGUgIkhvdyB0byB1c2UgdGhlIG5ldyBkcml2ZXIiIGlzIGRldGFpbGVkIGluIHRoZSBkcml2ZXIgaGVhZGVyIHNlY3Rpb24gaXRzZWxmLjwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+SEFMIFJDQyZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsiIGxhbmc9IkVOLVVTIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0ic3F1YXJlIj48dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBjbTsiIHR5cGU9InNxdWFyZSI+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+QWRkIG5ldyBMTCBtYWNybyA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsiIGxhbmc9IkVOLVVTIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0ic3F1YXJlIj48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5MTF9SQ0NfUExMX1NldE1haW5Tb3VyY2UoKQotICAgICAgICBhbGxvd2luZyB0byBjb25maWd1cmUgUExMIGNsb2NrIHNvdXJjZTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyIgbGFuZz0iRU4tVVMiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5BZGQgbmV3IEhBTCBtYWNyb3M8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsiIGxhbmc9IkVOLVVTIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0ic3F1YXJlIj48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5fX0hBTF9SQ0NfR0VUX1JUQ19TT1VSQ0UoKQotICAgICAgICBhbGxvd2luZyB0byBnZXQgdGhlIFJUQyBjbG9jayBzb3VyY2U8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPl9fSEFMX1JDQ19HRVRfUlRDX0hTRV9QUkVTQ0FMRVIoKQotICAgICAgICBhbGxvd2luZyB0byBnZXQgdGhlIEhTRSBjbG9jayBkaXZpZGVyIGZvciBSVEMgcGVyaXBoZXJhbDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5FbnN1cmUgcmVzZXQgb2YgQ0lSIGFuZCBDU1IKLSAgICAgICByZWdpc3RlcnMgd2hlbiBpc3N1aW5nIEhBTF9SQ0NfRGVJbml0KCkvTExfUkNDX0RlSW5pdCBmdW5jdGlvbnM8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPlVwZGF0ZSBIQUxfUkNDX0dldFN5c0Nsb2NrRnJlcSgpCi0gICAgICAgdG8gYXZvaWQgcmlzayBvZiByb3VuZGluZyBlcnJvciB3aGljaCBtYXkgbGVhZHMgdG8gYSB3cm9uZyByZXR1cm5lZAotICAgICAgIHZhbHVlLjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiA3cHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IiBsYW5nPSJFTi1VUyI+Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IiBsYW5nPSJFTi1VUyI+PG86cD48L286cD48L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5VcGRhdGUgSEFMX1JDQ19EZUluaXQoKQotICAgICAgICZuYnNwO2FuZCBMTF9SQ0NfRGVJbml0KCkgQVBJcyB0bzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyIgbGFuZz0iRU4tVVMiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJzcXVhcmUiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkJlIGFibGUgdG8gcmV0dXJuIEhBTC9MTAotICAgICAgICBzdGF0dXM8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsiIGxhbmc9IkVOLVVTIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkFkZCBjaGVja3MgZm9yIEhTSSwgUExMIGFuZAotICAgICAgICBQTExJMlMgJm5ic3A7cmVhZHkgYmVmb3JlIG1vZGlmeWluZyBSQ0MgQ0ZHUiByZWdpc3RlcnM8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsiIGxhbmc9IkVOLVVTIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkNsZWFyIGFsbCBpbnRlcnJ1cHQgZmxhZ3M8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsiIGxhbmc9IkVOLVVTIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkluaXRpYWxpemUgc3lzdGljayBpbnRlcnJ1cHQKLSAgICAgICAgcGVyaW9kPC9zcGFuPjwvbGk+PC91bD48L3VsPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+SEFMIERNQSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBsYW5nPSJmciI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciIHNpemU9IjIiPjwvZm9udD48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5BZGQgY2xlYW4gb2YgY2FsbGJhY2tzIGluIEhBTF9ETUFfRGVJbml0KCkmbmJzcDtBUEk8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5GaXggd3JvbmcgRE1BX0ZMQUdfRkVJRk9fNCBhbmQgRE1BX0ZMQUdETUFFSUZPXzQgZGVmaW5lcyB2YWx1ZXMmbmJzcDs8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkhBTCBJMkMgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+VXBkYXRlIEludGVyZmFjZSBBUElzIGhlYWRlcnMgdG8gcmVtb3ZlIGNvbmZ1c2luZyBtZXNzYWdlIGFib3V0IGRldmljZSBhZGRyZXNzPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IiBsYW5nPSJFTi1VUyI+PG86cD48L286cD48L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+VXBkYXRlIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkkyQ19XYWl0T25SWE5FRmxhZ1VudGlsVGltZW91dCgpIHRvIHJlc29sdmUgYSByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIFNUT1BGIGFuZCBSWE5FIEZsYWdzPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IiBsYW5nPSJFTi1VUyI+PG86cD48L286cD48L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+VXBkYXRlJm5ic3A7STJDX1RyYW5zZmVyQ29uZmlnKCkgdG8gZml4IHdyb25nIGJpdCBtYW5hZ2VtZW50PC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5MTCBVU0FSVDxzcGFuPiZuYnNwOzwvc3Bhbj48L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgYXNzZXJ0IG1hY3JvcyB0byBjaGVjayBVU0FSVCBCYXVkUmF0ZSByZWdpc3Rlcjwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+SEFMIEVUSCA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkRvey4ufSBXaGlsZSgwKSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPmluc3VyZWQgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+aW4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5tdWx0aSBzdGF0ZW1lbnQgbWFjcm9zPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+IDo8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+X19IQUxfRVRIX1dBS0VVUF9FWFRJX0VOQUJMRV9GQUxMSU5HUklTSU5HX1RSSUdHRVIoKSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPl9fSEFMX0VUSF9XQUtFVVBfRVhUSV9ESVNBQkxFX0ZBTExJTkdSSVNJTkdfVFJJR0dFUigpPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+IDxicj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj48L3NwYW4+PC9saT48L3VsPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIEZMQVNIPHNwYW4+Jm5ic3A7PC9zcGFuPjwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWwgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBpbjsiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9GTEFTSF9VbmxvY2soKSB1cGRhdGUgdG8gcmV0dXJuIHN0YXRlIGVycm9yIHdoZW4gdGhlIEZMQVNIIGlzIGFscmVhZHkgdW5sb2NrZWQ8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBHUElPPHNwYW4+IDwvc3Bhbj48L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBtaXNzaW5nIGRlZmluZSBvZiBHUElPX1BJTl8yIGluIEdQSU9LX1BJTl9BVkFJTEFCTEUgbGlzdDwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIFBDRDxzcGFuPiA8L3NwYW4+PC9zcGFuPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+RG97Li59IFdoaWxlKDApICZuYnNwO2luc3VyZWQgaW4gbXVsdGkgc3RhdGVtZW50IG1hY3Jvczwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+TEwgVVRJTFM8c3Bhbj4gPC9zcGFuPjwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWwgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBpbjsiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5zdG0zMmY3eHhfPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5sbF91dGlscy5oIDogVXBkYXRlIExMX0dldFBhY2thZ2VUeXBlIGNvbW1hbmQgdG8gcmV0dXJuIHVpbnQzMl90IGluc3RlYWQgb2YgdWludDE2X3Q8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBUSU08c3Bhbj4gPC9zcGFuPjwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPnN0bTMyZjd4eF9oYWxfdGltX2V4LmMgOiBVcGRhdGUgSEFMX1RJTUV4X0NvbmZpZ0JyZWFrRGVhZFRpbWUgQVBJIHRvIGF2b2lkIHRvIGJsb2NrIHRpbWVyIGJlaGF2aW9yIHdoZW4gPGJyPnJlbWFpbnMgaW4gdGhlIHN0YXRlIEhBTF9USU1fU1RBVEVfQlVTWS48L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+c3RtMzJmN3h4X2hhbF90aW0uaCA6Jm5ic3A7PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5GaXggX19IQUxfVElNX1NFVF9QUkVTQ0FMRVIoKSBtYWNybzwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICZxdW90O1RpbWVzIE5ldyBSb21hbiZxdW90OyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5GaXggdHlwb3MgaW4gc29tZSBleHBvcnRlZCBtYWNyb3MgZGVzY3JpcHRpb24mbmJzcDs8L3NwYW4+PC9saT48L3VsPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+TEwgRk1DPHNwYW4+IDwvc3Bhbj48L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtUaW1lcyBOZXcgUm9tYW4mcXVvdDssc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfU0RSQU1fU2VuZENvbW1hbmQoKSBBUEk6IDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+UmVtb3ZlIHRoZSZuYnNwO3RpbWVvdXQ8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPiBjaGVjazwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIE5BTkQ8c3Bhbj4gPC9zcGFuPjwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJnF1b3Q7VGltZXMgTmV3IFJvbWFuJnF1b3Q7LHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkZpeCB3cm9uZyBjaGVjayBmb3IgTkFORCBzdGF0dXM8L3NwYW4+PC9saT48L3VsPjwvdWw+Ci08aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7IC1tb3otYmFja2dyb3VuZC1jbGlwOiBpbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiBpbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgd2lkdGg6IDIwMHB4OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IEFyaWFsOyBjb2xvcjogd2hpdGU7Ij5WMS4yLjMgLyAyNS1BdWd1c3QtMjAxNzwvc3Bhbj48L2gzPgotPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGNtIDQuNXB0IDE4cHQ7Ij48YiBzdHlsZT0iIj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsgY29sb3I6IGJsYWNrOyI+TWFpbgotQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjwvcD48dWwgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBpbjsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBmb250LXNpemU6IG1lZGl1bTsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsgbWFyZ2luLXRvcDogMGNtOyIgdHlwZT0ic3F1YXJlIj48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkdlbmVyYWwgdXBkYXRlcyAKLXRvIGZpeCBrbm93biBkZWZlY3RzIGFuZCBlbmhhbmNlbWVudHMgaW1wbGVtZW50YXRpb248L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPlJlbW92ZSBEYXRlIGFuZCBWZXJzaW9uIGZyb20gaGVhZGVyIGZpbGVzPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgSEFMIGRyaXZlcnMgdG8gcmVmZXIgdG8gdGhlIG5ldyZuYnNwO0NNU0lTIGJpdCBwb3NpdGlvbiBkZWZpbmVzIGluc3RlYWQgb2YgdXNhZ2UgdGhlIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+UE9TSVRJT05fVkFMKCkgbWFjcm88L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgQ0FOIDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+QWRkIG1pc3NpbmcgdW5sb2NrIGluIEhBTF9DQU5fUmVjZWl2ZV9JVCgpIHByb2Nlc3M8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBEQ01JIDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+SEFMIERDTUkgZHJpdmVyIGNsZWFuLXVwOiByZW1vdmUgbm9uIHJlZmVyZW5jZWQgY2FsbGJhY2sgQVBJczogSEFMX0RDTUlfVnN5bmNDYWxsYmFjaygpIGFuZCBIQUxfRENNSV9Ic3luY0NhbGxiYWNrKCk8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCZuYnNwO0RGU0RNIDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+Rml4IGNhc3QgaXNzdWUgb24gQVBJcyB0aGF0IHJldHVybiBzaWduZWQgaW50ZWdlciB2YWx1ZSAodWludDMyX3QpJm5ic3A7PC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgRE1BIDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+SEFMIERNQSBkcml2ZXIgY2xlYW4tdXA6IHJlbW92ZSBub24gcmVmZXJlbmNlZCBjYWxsYmFjayBBUElzOiBIQUxfRE1BX0NsZWFuQ2FsbGJhY2tzKCk8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBGTEFTSCA8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkZMQVNIX1Byb2dyYW1fRG91YmxlV29yZCgpIEFQSTogUmVwbGFjZSA2NC1iaXQgYWNjZXNzZXMgd2l0aCAyIGRvdWJsZSB3b3JkcyBvcGVyYXRpb25zPC9zcGFuPjwvbGk+PC91bD48L3VsPjx1bCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7IGZvbnQtc2l6ZTogbWVkaXVtOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyBtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJzcXVhcmUiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBHZW5lcmljIDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+VXBkYXRlIGFzc2VydF9wYXJhbSgpIG1hY3JvIGRlZmluaXRpb24gdG8gYmUgaW4gbGluZSB3aXRoIHN0bTMyX2xsX3V0aWxzLmMgZHJpdmVyPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgR1BJTyA8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkdQSU9LX1BJTl9BVkFJTEFCTEUoKSBhc3NlcnQgbWFjcm8gdXBkYXRlIHRvIGFsbG93IHBvc3NpYmlsaXR5IHRvIGNvbmZpZ3VyZSBHUElPX1BJTl8yPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgTFREQyA8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPlJlbmFtZSBIQUxfTFREQ19MaW5lRXZlbkNhbGxiYWNrKCkgQVBJIHRvJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+SEFMX0xURENfTGluZUV2ZW48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij50PC9zcGFuPkNhbGxiYWNrKCk8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBQQ0QgPC9zcGFuPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5VcGRhdGUgSEFMX1BDRF9JUlFIYW5kbGVyKCkgQVBJIHRvIGZpeCZuYnNwO3RyYW5zZmVyIGlzc3VlcyB3aGVuIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPlVTQiBIUyBpcyB1c2VkIHdpdGggRE1BJm5ic3A7ZW5hYmxlZDwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIFJDQyA8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPlVwZGF0ZSBIQUxfUkNDX0dldE9zY0NvbmZpZygpIEFQSSB0bzo8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+c2V0IFBMTFIgaW4gdGhlIFJDQ19Pc2NJbml0U3RydWN0PC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+Y2hlY2sgb24gbnVsbCBwb2ludGVyPGJyPjwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+VXBkYXRlIEhBTF9SQ0NfQ2xvY2tDb25maWcoKSBBUEkgdG86PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPmNoZWNrIG9uIG51bGwgcG9pbnRlcjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPm9wdGltaXplJm5ic3A7Y29kZSBzaXplIGJ5IHVwZGF0aW5nIHRoZSBoYW5kbGluZyBtZXRob2Qgb2YgdGhlIFNXUyBiaXRzPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+dXBkYXRlCi10byB1c2UmbmJzcDsgX19IQUxfRkxBU0hfR0VUX0xBVEVOQ1koKSBmbGFzaCBtYWNybyBpbnN0ZWFkIG9mIHVzaW5nCi1kaXJlY3QgcmVnaXN0ZXIgYWNjZXNzIHRvJm5ic3A7TEFURU5DWSBiaXRzIGluIEZMQVNIIEFDUiByZWdpc3Rlcjwvc3Bhbj48c3BhbiBsYW5nPSJmciI+LiA8L3NwYW4+PC9saT48L3VsPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIFNBSSA8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPlVwZGF0ZSBIQUxfU0FJX0RNQVN0b3AoKSBBUEkgdG8gZmx1c2ggZmlmbyBhZnRlciBkaXNhYmxpbmcmbmJzcDtTQUk8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBUSU0gPC9zcGFuPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgSEFMX1RJTUV4X0NvbmZpZ0JyZWFrSW5wdXQoKSBBUEkgdG8mbmJzcDtzdXBwb3J0IEJLSU5QL0JLSU4yUCBwb2xhcml0eSBiaXRzLjxicj48L3NwYW4+PC9saT48L3VsPjwvdWw+PHVsIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgZm9udC1zaXplOiBtZWRpdW07IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IG1hcmdpbi10b3A6IDBjbTsiIHR5cGU9InNxdWFyZSI+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+TEwgRE1BIDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+VXBkYXRlCi1TRVRfQklUKCkgYWNjZXNzIHRvIExJRkNSIGFuZCBISUZDUiByZWdpc3RlcnMgYnkgV1JJVEVfUkVHKCkgdG8gYXZvaWQKLXJlYWQgYWNjZXNzIHRoYXQgaXMgbm90IGFsbG93ZWQgd2hlbiBjbGVhcmluZyBETUEgZmxhZ3M8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkxMIEkyQyA8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPlVwZGF0ZSBMTF9JMkNfSW5pdCgpIEFQSSB0byBhdm9pZCBlbmFibGluZyBvd24gYWRkcmVzczEgd2hlbiBPd25BZGRyZXNzMSBwYXJhbWV0ZXIgdmFsdWUgaW4gdGhlIEkyQ19Jbml0U3RydWN0IGlzIGVxdWFsIHRvIDAuPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5MTCBUSU0gPC9zcGFuPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5VcGRhdGUgTExfVElNX0VuYWJsZVVwZGF0ZUV2ZW50KCkgQVBJIHRvIGNsZWFyIFVESVMgYml0IGluIENSMSByZWdpc3RlciBpbnN0ZWFkIG9mIHNldHRpbmcgaXQuPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+VXBkYXRlIExMX1RJTV9EaXNhYmxlVXBkYXRlRXZlbnQoKSBBUEkgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+dG8gc2V0IFVESVMgYml0IGluIENSMSByZWdpc3RlciBpbnN0ZWFkIG9mIGNsZWFyaW5nIGl0Ljwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+TEwgVVNCIDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+VXBkYXRlIFVTQl9FUDBTdGFydFhmZXIoKSBBUEkgdG8gZml4Jm5ic3A7dHJhbnNmZXIgaXNzdWVzIHdoZW4gPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+VVNCIEhTIGlzIHVzZWQgd2l0aCBETUEmbmJzcDtlbmFibGVkPC9zcGFuPjwvbGk+PC91bD48L3VsPjxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiBpbml0aWFsOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyB3aWR0aDogMjAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiB3aGl0ZTsiPlYxLjIuMiAvIDE0LUFwcmlsLTIwMTc8L3NwYW4+PC9oMz4KLTxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBjbSA0LjVwdCAxOHB0OyI+PGIgc3R5bGU9IiI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGNvbG9yOiBibGFjazsiPk1haW4KLUNoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+PHVsIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgZm9udC1zaXplOiBtZWRpdW07IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IG1hcmdpbi10b3A6IDBjbTsiIHR5cGU9InNxdWFyZSI+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5HZW5lcmFsIHVwZGF0ZXMgCi10byBmaXgga25vd24gZGVmZWN0cyBhbmQgZW5oYW5jZW1lbnRzIGltcGxlbWVudGF0aW9uPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIENBTiA8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyIgbGFuZz0iRU4tVVMiPkFkZAotICAgICAgbWFuYWdlbWVudCBvZiZuYnNwO292ZXJydW4gZXJyb3IuJm5ic3A7PC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+QWxsb3cKLSAgICAgIHBvc3NpYmlsaXR5IHRvIHJlY2VpdmUgbWVzc2FnZXMgZnJvbSB0aGUgMiBSWCBGSUZPcyBpbiBwYXJhbGxlbCB2aWEKLSAgICAgIGludGVycnVwdC48L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5GaXgmbmJzcDttZXNzYWdlCi0gICAgICBsb3N0IGlzc3VlIHdpdGggc3BlY2lmaWMgc2VxdWVuY2Ugb2YgdHJhbnNtaXQgcmVxdWVzdHMuPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+SGFuZGxlCi0gICAgICB0cmFuc21pc3Npb24gZmFpbHVyZSB3aXRoIGVycm9yIGNhbGxiYWNrLCB3aGVuIE5BUlQgaXMgZW5hYmxlZC48L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyIgbGFuZz0iRU4tVVMiPkFkZCBfX0hBTF9DQU5fQ0FOQ0VMX1RSQU5TTUlUKCkgY2FsbCB0byBhYm9ydCB0cmFuc21pc3Npb24gd2hlbgotICAgICAgdGltZW91dCBpcyByZWFjaGVkPC9zcGFuPjwvbGk+PC91bD48L3VsPjxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiBpbml0aWFsOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyB3aWR0aDogMjAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiB3aGl0ZTsiPlYxLjIuMSAvIDI0LU1hcmNoLTIwMTc8L3NwYW4+PC9oMz4KLTxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBjbSA0LjVwdCAxOHB0OyI+PGIgc3R5bGU9IiI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGNvbG9yOiBibGFjazsiPk1haW4KLUNoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+PHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJzcXVhcmUiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTMuMzMzM3B4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDogbm9ybWFsOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAxOyB3b3JkLXNwYWNpbmc6IDBweDsgZGlzcGxheTogaW5saW5lICEgaW1wb3J0YW50OyBmbG9hdDogbm9uZTsiPlVwZGF0ZSBDSE0gVXNlck1hbnVhbHMgdG8gc3VwcG9ydCBMTCBkcml2ZXJzPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5HZW5lcmFsIHVwZGF0ZXMgCi10byBmaXgga25vd24gZGVmZWN0cyBhbmQgZW5oYW5jZW1lbnRzIGltcGxlbWVudGF0aW9uPC9zcGFuPjwvbGk+PC91bD48dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBjbTsiIHR5cGU9InNxdWFyZSI+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIERNQSA8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSBIQUxfRE1BX0luaXQoKSBmdW5jdGlvbiB0byBhZGp1c3QgdGhlIGNvbXBhdGliaWxpdHkgY2hlY2sgYmV0d2VlbiBGSUZPIHRocmVzaG9sZCBhbmQgYnVyc3QgY29uZmlndXJhdGlvbjwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIE1NQyA8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSBIQUxfTU1DX0luaXRDYXJkKCkgZnVuY3Rpb24gd2l0aCBwcm9wZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYWRkaW5nIGEgZGVsYXkgYWZ0ZXIgTU1DIGNsb2NrIGVuYWJsZTwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSBNTUNfRE1BRXJyb3IoKSBmdW5jdGlvbiBpZ25vcmUgRE1BIEZJRk8gZXJyb3IgYXMgbm90IGltcGFjdGluZyB0aGUgZGF0YSB0cmFuc2Zlcjwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIFNEIDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIEhBTF9TRF9Jbml0Q2FyZCgpIGZ1bmN0aW9uIHdpdGggcHJvcGVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFkZGluZyBhIGRlbGF5IGFmdGVyIFNEIGNsb2NrIGVuYWJsZTwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSBTRF9ETUFFcnJvcigpIGZ1bmN0aW9uIGlnbm9yZSBETUEgRklGTyBlcnJvciBhcyBub3QgaW1wYWN0aW5nIHRoZSBkYXRhIHRyYW5zZmVyPGJyPjwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIE5BTkQgPC9zcGFuPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgSEFMX05BTkRfQWRkcmVzc19JbmMoKSBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgcHJvcGVyIHBsYW5lIG51bWJlciBjaGVjazwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkxMIFNETU1DIDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIFNETU1DX0RBVEFUSU1FT1VUIHZhbHVlIHdpdGggYXBwcm9wcmlhdGUgdmFsdWUgbmVlZGVkIGJ5IHJlYWRpbmcgYW5kIHdyaXRpbmcgb3BlcmF0aW9ucyBvZiBTRCBhbmQgTU1DIGNhcmRzPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUknOyBjb2xvcjogcmdiKDAsIDAsIDApOyBkaXJlY3Rpb246IGx0cjsiIGRpcj0ibHRyIj48L3NwYW4+PC9saT48L3VsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkxMIFJUQyA8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkxMX1JUQ19USU1FX0dldCgpIGFuZCBMTF9SVENfREFURV9HZXQoKSBpbmxpbmUgbWFjcm9zIG9wdGltaXphdGlvbjwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+TEwgQURDIDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+Rml4IHdyb25nIEFEQyBncm91cCBpbmplY3RlZCBzZXF1ZW5jZSBjb25maWd1cmF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkxMX0FEQ19JTkpfU2V0U2VxdWVuY2VyUmFua3MoKQotYW5kIExMX0FEQ19JTkpfR2V0U2VxdWVuY2VyUmFua3MoKSBBUEkncyB1cGRhdGUgdG8gdGFrZSBpbgotY29uc2lkZXJhdGlvbiB0aGUgQURDIG51bWJlciBvZiBjb252ZXJzaW9uczwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSB0aGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5kZWZpbmVkIHZhbHVlcyBmb3I8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij4gQURDIGdyb3VwIGluamVjdGVkIHNlcWVuY2VyIHJhbmtzJm5ic3A7PGJyPjwvc3Bhbj48L2xpPjwvdWw+PC91bD48L3VsPjxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiBpbml0aWFsOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyB3aWR0aDogMjAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiB3aGl0ZTsiPlYxLjIuMCAvIDMwLURlY2VtYmVyLTIwMTY8L3NwYW4+PC9oMz4KLTxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBjbSA0LjVwdCAxOHB0OyI+PGIgc3R5bGU9IiI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGNvbG9yOiBibGFjazsiPk1haW4KLUNoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+PHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJzcXVhcmUiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPk9mZmljaWFsIHJlbGVhc2UgdG8gYWRkIHRoZSBzdXBwb3J0IG9mIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPlNUTTMyRjcyMnh4LCBTVE0zMkY3MjN4eCwgU1RNMzJGNzMyeHg8L3NwYW4+IDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPmFuZCBTVE0zMkY3MzN4eDwvc3Bhbj4gZGV2aWNlczwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTMuMzMzM3B4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogYm9sZDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdpZG93czogMTsgd29yZC1zcGFjaW5nOiAwcHg7IGRpc3BsYXk6IGlubGluZSAhIGltcG9ydGFudDsgZmxvYXQ6IG5vbmU7Ij5BZGQgTG93IExheWVyIGRyaXZlcnMgYWxsb3dpbmcgcGVyZm9ybWFuY2UgYW5kIGZvb3RwcmludCBvcHRpbWl6YXRpb248L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1zaXplOiAxMnB0OyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyI+TG93Ci1MYXllciBkcml2ZXJzIEFQSXMgcHJvdmlkZSByZWdpc3RlciBsZXZlbCBwcm9ncmFtbWluZzogcmVxdWlyZSBkZWVwCi1rbm93bGVkZ2Ugb2YgcGVyaXBoZXJhbHMgZGVzY3JpYmVkIGluIFNUTTMyRjd4eCBSZWZlcmVuY2UgTWFudWFsczwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTMuMzMzM3B4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDogbm9ybWFsOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAxOyB3b3JkLXNwYWNpbmc6IDBweDsgZGlzcGxheTogaW5saW5lICEgaW1wb3J0YW50OyBmbG9hdDogbm9uZTsiPkxvdwotTGF5ZXIgZHJpdmVycyBhcmUgYXZhaWxhYmxlIGZvcjogQURDLCZuYnNwO0NvcnRleCwgQ1JDLCBEQUMsIERNQSwKLURNQTJELCBFWFRJLCBHUElPLCBJMkMsIElXREcsIExQVElNLCBQV1IsIFJDQywgUk5HLCBSVEMsIFNQSSwgVElNLAotVVNBUlQsIFdXREcgcGVyaXBoZXJhbHMgYW5kIGFkZGl0aW9ubmFsIExvdyBMZXZlbCBCdXMsIFN5c3RlbSBhbmQKLVV0aWxpdGllcyBBUElzLjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtc2l6ZTogMTJwdDsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsiPkxvdyBMYXllciBkcml2ZXJzIEFQSXMgYXJlIGltcGxlbWVudGVkIGFzIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24gaW4gbmV3PHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7Ij5JbmMvc3RtMzJmN3h4X2xsX3BwcC5oPC9zcGFuPjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiZuYnNwOzwvc3Bhbj5maWxlcyBmb3IgUFBQIHBlcmlwaGVyYWxzLCB0aGVyZSBpcyBubyBjb25maWd1cmF0aW9uIGZpbGUgYW5kIGVhY2g8c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyI+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPnN0bTMyZjd4eF9sbF9wcHAuaDwvc3Bhbj48c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+ZmlsZSBtdXN0IGJlIGluY2x1ZGVkIGluIHVzZXIgY29kZS48L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+R2VuZXJhbCB1cGRhdGVzIAotdG8gZml4IGtub3duIGRlZmVjdHMgYW5kIGVuaGFuY2VtZW50cyBpbXBsZW1lbnRhdGlvbjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+QWRkIG5ldyBIQUwgPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+TU1DPC9zcGFuPiBhbmQgPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+U01CVVM8L3NwYW4+IGRyaXZlcnM8L3NwYW4+PC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgQ29ydGV4PC9zcGFuPiB1cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+TW92ZSBIQUxfTVBVX0Rpc2FibGUoKSBhbmQgSEFMX01QVV9FbmFibGUoKSBmcm9tIHN0bTMyZjd4eF9oYWxfY29ydGV4LmggdG8gc3RtMzJmN3h4X2hhbF9jb3J0ZXguYzwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkNsZWFyIHRoZSB3aG9sZSBNUFUgY29udHJvbCByZWdpc3RlciBpbiZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9NUFVfRGlzYWJsZSgpIEFQSTwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIENSWVA8L3NwYW4+IHVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgc3VwcG9ydCBvZiBBRVM8L3NwYW4+PC9saT48L3VsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBETUE8L3NwYW4+IHVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgYSBjaGVjayBvbiBETUEgc3RyZWFtIGluc3RhbmNlIGluIEhBTF9ETUFfRGVJbml0KCkgQVBJPC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgRVRIPC9zcGFuPiB1cGRhdGUmbmJzcDs8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5GaXggd3JvbmcgZGVmaW5pdGlvbnMgaW4gZHJpdmVyIGhlYWRlciBmaWxlIHN0bTMyZjdfaGFsX2V0aC5oPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgRkxBU0g8L3NwYW4+IHVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5TdXBwb3J0IE9UUCBwcm9ncmFtIG9wZXJhdGlvbjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCB0aGUgc3VwcG9ydCBvZiBQQ1JPUCBmZWF0dXJlPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIHRoZSBjbGVhcmluZyBvZiBlcnJvciBmbGFnczwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIEkyQzwvc3Bhbj4gdXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkFsaWduIGRyaXZlciBzb3VyY2UgY29kZSB3aXRoIG90aGVyIFNUTTMyIGZhbWlsaWVzPGJyPjwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIEpQRUc8L3NwYW4+IHVwZGF0ZSZuYnNwOzwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSB0aGUgb3V0cHV0IGRhdGEgbWFuYWdlbWVudCB3aGVuJm5ic3A7SEFMX0pQRUdfUGF1c2UoKSBpcyBwZXJmb3JtZWQgZHVyaW5nIHRoZSBsYXN0IGRhdGEgc2VuZGluZzwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIFJDQyA8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkVuYWJsZSBQV1Igb25seSBpZiBuZWNlc3NhcnkgZm9yIExTRSBjb25maWd1cmF0aW9uIGluIEhBTF9SQ0NfT3NjQ29uZmlnKCkgQVBJPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+UmVuYW1lIFJDQ19MUFRJTTFDTEtTT1VSQ0VfUENMSyBkZWZpbmUgdG8gUkNDX0xQVElNMUNMS1NPVVJDRV9QQ0xLMTwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlJlbmFtZSBSQ0NfREZTRE0xQ0xLU09VUkNFX1BDTEsgZGVmaW5lIHRvIFJDQ19ERlNETTFDTEtTT1VSQ0VfUENMSzI8YnI+PC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgU1BJPC9zcGFuPiB1cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+Q2xlYXIgUlggRklGTyBhdCB0aGUgZW5kIG9mIGVhY2ggdHJhbnNhY3Rpb248L3NwYW4+PC9saT48L3VsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBVQVJUPC9zcGFuPiB1cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+UmVtb3ZlIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlVTQVJUX0NSMl9MSU5FTiBiaXQgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+Y2xlYXJpbmcmbmJzcDt3aGVuIGluaXRpYWxpemluZyBpbiBzeW5jaHJvbm91cyBtb2RlPC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgVVNCPC9zcGFuPiB1cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+QWRkIHN1cHBvcnQgb2YgZW1iZWRkZWQgVVNCIFBIWSBDb250cm9sbGVyPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+QWRkIHN1cHBvcnQgb2YgQmF0dGVyeSBDaGFyZ2luZyBEZXRlY3RvciAoQkNEKSBmZWF0dXJlPC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5MTCBTRE1NQzwvc3Bhbj4gdXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBuZXcgU0RNTUNfQ21kU0RFcmFzZVN0YXJ0QWRkLCBTRE1NQ19DbWRTREVyYXNlRW5kQWRkLCBTRE1NQ19DbWRPcENvbmRpdGlvbiBhbmQgU0RNTUNfQ21kU3dpdGNoIGZ1bmN0aW9uczwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+TEwgVVNCPC9zcGFuPiB1cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIFBFTkEgYml0IGNsZWFyaW5nIGluIE9UR19IUFJUMCByZWdpc3Rlcjwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5UaGUgZm9sbG93aW5nIGNoYW5nZXMgZG9uZSBvbiB0aGUgSEFMIGRyaXZlcnMgcmVxdWlyZSBhbiB1cGRhdGUgb24gdGhlIAotYXBwbGljYXRpb24gY29kZSBiYXNlZCBvbiBvbGRlciBIQUwgdmVyc2lvbnM8L3NwYW4+PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBTRDwvc3Bhbj4gdXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+T3ZlcmFsbCByZXdvcmsgb2YgdGhlIGRyaXZlciBmb3IgYSBtb3JlIGVmZmljaWVudCZuYnNwO2ltcGxlbWVudGF0aW9uPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+TW9kaWZ5IGluaXRpYWxpemF0aW9uIEFQSSBhbmQgc3RydWN0dXJlczwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+TW9kaWZ5IFJlYWQgLyBXcml0ZSBzZXF1ZW5jZXM6IHNlcGFyYXRlIHRyYW5zZmVyIHByb2Nlc3MgYW5kIFNEIENhcmRzIHN0YXRlIG1hbmFnZW1lbnQmbmJzcDs8L3NwYW4+PC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkFkZGluZyBpbnRlcnJ1cHQgbW9kZSBmb3IgUmVhZCAvIFdyaXRlIG9wZXJhdGlvbnM8L3NwYW4+PC9saT48L3VsPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPlVwZGF0ZSB0aGUgSEFMX1NEX0lSUUhhbmRsZXIgZnVuY3Rpb24gYnkgb3B0aW1pemluZyB0aGUgbWFuYWdlbWVudCBvZiBpbnRlcnJ1cHQgZXJyb3JzPGJyPjwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5SZWZlciB0byB0aGUgZm9sbG93aW5nIGV4YW1wbGUgdG8gaWRlbnRpZnkgdGhlIGNoYW5nZXM6IEJTUCBleGFtcGxlIGFuZCBVU0JfRGV2aWNlL01TQ19TdGFuZGFsb25lIGFwcGxpY2F0aW9uPC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgVElNPC9zcGFuPiB1cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+QWRkIG5ldyBBdXRvUmVsb2FkUHJlbG9hZCBmaWVsZCBpbiBUSU1fQmFzZV9Jbml0VHlwZURlZiBzdHJ1Y3R1cmU8L3NwYW4+PC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPlJlZmVyIHRvIHRoZSBUSU0gZXhhbXBsZXMgdG8gaWRlbnRpZnkgdGhlIGNoYW5nZXM8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij4mbmJzcDs8L3NwYW4+PC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgTkFORDwvc3Bhbj4gdXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPk1vZGlmeSBOQU5EX0FkZHJlc3NUeXBlRGVmLCBOQU5EX0RldmljZUNvbmZpZ1R5cGVEZWYgYW5kIE5BTkRfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmVzIGZpZWxkczwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBuZXcgSEFMX05BTkRfQ29uZmlnRGV2aWNlIEFQSTxicj48L3NwYW4+PC9saT48L3VsPjwvdWw+PC91bD48YiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAxOyB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEwcHQ7Ij48L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiBpbml0aWFsOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyB3aWR0aDogMjAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiB3aGl0ZTsiPlYxLjEuMSAvIDAxLUp1bHktMjAxNjwvc3Bhbj48L2gzPgotPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGNtIDQuNXB0IDE4cHQ7Ij48YiBzdHlsZT0iIj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsgY29sb3I6IGJsYWNrOyI+TWFpbgotQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjwvcD48dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBjbTsiIHR5cGU9InNxdWFyZSI+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIERNQTwvc3Bhbj4gdXBkYXRlJm5ic3A7PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIEhBTF9ETUFfUG9sbEZvclRyYW5zZmVyKCkgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24gdG8mbmJzcDthdm9pZCBlYXJseSBUSU1FT1VUIGVycm9yLjwvc3Bhbj4gPC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBKUEVHPC9zcGFuPiB1cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIEhBTF9KUEVHX0NvbmZpZ0VuY29kaW5nKCkgZnVuY3Rpb24gdG8gcHJvcGVybHkgc2V0IHRoZSBJbWFnZUhlaWdodCBhbmQgSW1hZ2VXaWR0aDwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIFNQSTwvc3Bhbj4gdXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSBTUElfRE1BVHJhbnNtaXRSZWNlaXZlQ3BsdCgpIGZ1bmN0aW9uIHRvIHByb3Blcmx5IGhhbmRsZSB0aGUgQ1JDIGFuZCBhdm9pZCBjb25kaXRpb25hbCBzdGF0ZW1lbnQgZHVwbGljYXRpb248YnI+PC9zcGFuPjwvbGk+PC91bD48L3VsPjxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiBpbml0aWFsOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyB3aWR0aDogMjAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiB3aGl0ZTsiPlYxLjEuMCAvIDIyLUFwcmlsLTIwMTY8L3NwYW4+PC9oMz4KLTxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBjbSA0LjVwdCAxOHB0OyI+PGIgc3R5bGU9IiI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGNvbG9yOiBibGFjazsiPk1haW4KLUNoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+PHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJzcXVhcmUiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPk9mZmljaWFsIHJlbGVhc2UgdG8gYWRkIHRoZSBzdXBwb3J0IG9mIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPlNUTTMyRjc2NXh4LCBTVE0zMkY3Njd4eCwgU1RNMzJGNzY4eHgsIFNUTTMyRjc2OXh4LCBTVE0zMkY3Nzd4eCwgU1RNMzJGNzc4eHg8L3NwYW4+IDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPmFuZCBTVE0zMkY3Nzl4eDwvc3Bhbj4gZGV2aWNlczxicj48L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkdlbmVyYWwgdXBkYXRlcyAKLXRvIGZpeCBrbm93biBkZWZlY3RzIGFuZCBlbmhhbmNlbWVudHMgaW1wbGVtZW50YXRpb248L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LXNpemU6IDEycHQ7IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsiPkFkZCBuZXcgSEFMIGRyaXZlcnMgZm9yPHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+IDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5ERlNETSwgRFNJPHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+LCBKUEVHIDwvc3Bhbj48L3NwYW4+YW5kPHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+IDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5NRElPUzxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiA8L3NwYW4+PC9zcGFuPnBlcmlwaGVyYWxzPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+RW5oYW5jZSBIQUwgZGVsYXkgYW5kIHRpbWViYXNlIGltcGxlbWVudGF0aW9uPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBuZXcgCi1kcml2ZXJzIHN0bTMyZjd4eF9oYWxfdGltZWJhc2VfdGltX3RlbXBsYXRlLmMsIHN0bTMyZjd4eF9oYWxfdGltZWJhc2VfcnRjX2FsYXJtX3RlbXBsYXRlLmMgYW5kIAotc3RtMzJmN3h4X2hhbF90aW1lYmFzZV9ydGNfd2FrZXVwX3RlbXBsYXRlLmMgd2hpY2ggb3ZlcnJpZGUgdGhlIG5hdGl2ZSBIQUwgdGltZSAKLWJhc2UgZnVuY3Rpb25zIChkZWZpbmVkIGFzIHdlYWspIHRvIGVpdGhlciB1c2UgdGhlIFRJTSBvciB0aGUgUlRDIGFzIHRpbWUgYmFzZSB0aWNrIHNvdXJjZS4gRm9yIAotbW9yZSBkZXRhaWxzIGFib3V0IHRoZSB1c2FnZSBvZiB0aGVzZSBkcml2ZXJzLCBwbGVhc2UgcmVmZXIgdG8gSEFMXEhBTF9UaW1lQmFzZSAKLWV4YW1wbGVzJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEzLjMzMzNweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdpZG93czogMTsgd29yZC1zcGFjaW5nOiAwcHg7IGRpc3BsYXk6IGlubGluZSAhIGltcG9ydGFudDsgZmxvYXQ6IG5vbmU7Ij5hbmQgRnJlZVJUT1MtYmFzZWQgYXBwbGljYXRpb25zPC9zcGFuPjwvbGk+PC91bD48L3VsPjx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0ic3F1YXJlIj48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPlRoZSBmb2xsb3dpbmcgY2hhbmdlcyBkb25lIG9uIHRoZSBIQUwgZHJpdmVycyByZXF1aXJlIGFuIHVwZGF0ZSBvbiB0aGUgCi1hcHBsaWNhdGlvbiBjb2RlIGJhc2VkIG9uIEhBTCBWMS4wLjQ8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPkhBTCBVQVJULCBVU0FSVCwgSVJEQSwgU01BUlRDQVJELCBTUEksIEkyQywmbmJzcDtRU1BJIDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7Ij48L3NwYW4+KHJlZmVyZW5jZWQgYXMgPHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPlBQUDwvc3Bhbj4gaGVyZSBiZWxvdyk8c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPiA8L3NwYW4+ZHJpdmVyczwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgUFBQIGVycm9yIG1hbmFnZW1lbnQgZHVyaW5nIERNQSBwcm9jZXNzLiBUaGlzIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgdXBkYXRlcyBvbiZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+dXNlciBhcHBsaWNhdGlvbjo8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5Db25maWd1cmUgYW5kIGVuYWJsZSAKLXRoZSBQUFAgSVJRIGluIEhBTF9QUFBfTXNwSW5pdCgpIGZ1bmN0aW9uPGJyPjwvc3Bhbj48L2xpPjwvdWw+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+SW4gPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5zdG0zMmY3eHhfaXQuYyBmaWxlLCAKLTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+UFBQX0lSUUhhbmRsZXIoKSAKLWZ1bmN0aW9uOiA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPmFkZCBhIGNhbGwgdG8gCi1IQUxfUFBQX0lSUUhhbmRsZXIoKSBmdW5jdGlvbjwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgYW5kIGN1c3RvbWl6ZSAKLXRoZSBFcnJvciBDYWxsYmFjayBBUEk6IEhBTF9QUFBfRXJyb3JDYWxsYmFjaygpPGJyPjwvc3Bhbj48L2xpPjwvdWw+PC91bD48L3VsPjwvdWw+Ci08dWw+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPkhBTCBJMkM8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7Ij48L3NwYW4+IChyZWZlcmVuY2VkIGFzIDxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7Ij5QUFA8L3NwYW4+IGhlcmUgYmVsb3cpPHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7Ij4gPC9zcGFuPmRyaXZlcnM6PC9zcGFuPgotPHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIHRvIGF2b2lkIHdhaXRpbmcgb24gPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5TVE9QRi9CVEYvQUYgZmxhZyB1bmRlciBETUEgSVNSIGJ5IHVzaW5nIHRoZSA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPlBQUCBlbmQgb2YgdHJhbnNmZXIgaW50ZXJydXB0IGluIHRoZSA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkRNQSB0cmFuc2ZlciBwcm9jZXNzLjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPiBUaGlzIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgdXBkYXRlcyBvbiZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+dXNlciBhcHBsaWNhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+Ojwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkNvbmZpZ3VyZSBhbmQgZW5hYmxlIAotdGhlIFBQUCBJUlEgaW4gSEFMX1BQUF9Nc3BJbml0KCkgZnVuY3Rpb248YnI+PC9zcGFuPjwvbGk+PC91bD48L3VsPgotPHVsPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkluIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+c3RtMzJmN3h4X2l0LmMgZmlsZSwgCi08L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPlBQUF9JUlFIYW5kbGVyKCkgCi1mdW5jdGlvbjogPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5hZGQgYSBjYWxsIHRvIAotSEFMX1BQUF9JUlFIYW5kbGVyKCkgZnVuY3Rpb248L3NwYW4+PC9saT48L3VsPjwvdWw+PC9saT48L3VsPjwvdWw+Ci08dWw+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPkhBTCBJV0RHPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPiA8L3NwYW4+ZHJpdmVyOiByZXdvcmsgb3ZlcmFsbCBkcml2ZXIgZm9yIGJldHRlciBpbXBsZW1lbnRhdGlvbjwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPlJlbW92ZSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+SEFMX0lXREdfU3RhcnQoKSwgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5IQUxfSVdER19Nc3BJbml0KCkgYW5kIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+SEFMX0lXREdfR2V0U3RhdGUoKSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+QVBJczwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+SEFMIFdXREc8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+IDwvc3Bhbj5kcml2ZXI6IHJld29yayBvdmVyYWxsIGRyaXZlciBmb3IgYmV0dGVyIGltcGxlbWVudGF0aW9uPC9zcGFuPgotPHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+UmVtb3ZlIEhBTF9XV0RHX1N0YXJ0KCksIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+SEFMX1dXREdfU3RhcnRfSVQoKSw8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPiAKLUhBTF9XV0RHX01zcERlSW5pdCgpIGFuZCA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkhBTF9XV0RHX0dldFN0YXRlKCkgQVBJcyZuYnNwOzwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5VcGRhdGUgdGhlJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ0NhbGlicmknLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTFwdDsiIGxhbmc9IkVOLVVTIj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnQ2FsaWJyaScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMXB0OyIgbGFuZz0iRU4tVVMiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdDYWxpYnJpJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDExcHQ7IiBsYW5nPSJFTi1VUyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnQ2FsaWJyaScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMXB0OyIgbGFuZz0iRU4tVVMiPkhBTF9XV0RHX1JlZnJlc2g8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnQ2FsaWJyaScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMXB0OyIgbGFuZz0iRU4tVVMiPihXV0RHX0hhbmRsZVR5cGVEZWYgKmh3d2RnLCB1aW50MzJfdCBjb3VudGVyKSAmbmJzcDtmdW5jdGlvbiBhbmQgQVBJICZuYnNwO2J5IHJlbW92aW5nIHRoZSAmbmJzcDsiY291bnRlciIgcGFyYW1ldGVyPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ0NhbGlicmknLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTFwdDsiIGxhbmc9IkVOLVVTIj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7Ij48L3NwYW4+PC9zcGFuPjwvbGk+PC91bD48L2xpPjwvdWw+PC91bD48dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBjbTsiIHR5cGU9InNxdWFyZSI+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPkhBTCBRU1BJIGRyaXZlcjogPC9zcGFuPiZuYnNwO0VuaGFuY2UgdGhlIERNQSB0cmFuc21pdCBwcm9jZXNzIGJ5Jm5ic3A7dXNpbmcmbmJzcDtQUFAgVEMgaW50ZXJydXB0IGluc3RlYWQgb2Ygd2FpdGluZyBvbiBUQyBmbGFnIHVuZGVyIERNQSBJU1IuJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VGhpcyByZXF1aXJlcyB0aGUgZm9sbG93aW5nIHVwZGF0ZXMgb24mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPnVzZXIgYXBwbGljYXRpb248L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjo8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5Db25maWd1cmUgYW5kIGVuYWJsZSAKLXRoZSBRU1BJJm5ic3A7SVJRIGluIEhBTF9RU1BJX01zcEluaXQoKSBmdW5jdGlvbjwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+SW4gPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5zdG0zMmY3eHhfaXQuYyBmaWxlLCA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPlFTUElfSVJRSGFuZGxlcigpIAotZnVuY3Rpb246IDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+YWRkIGEgY2FsbCB0byAKLUhBTF9RU1BJX0lSUUhhbmRsZXIoKSBmdW5jdGlvbjwvc3Bhbj48L2xpPjwvdWw+PC91bD48L3VsPgotPHVsIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47IGxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlOyI+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7Ij48L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+SEFMIENFQyBkcml2ZXI6IDwvc3Bhbj4mbmJzcDtPdmVyYWxsIGRyaXZlciByZXdvcmsgd2l0aCBjb21wYXRpYmlsaXR5IGJyZWFrIHZlcnN1cyBwcmV2aW91cyBIQUwgdmVyc2lvbjwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPlJlbW92ZSBIQUwgQ0VDIHBvbGxpbmcgUHJvY2VzcyBmdW5jdGlvbnM6IEhBTF9DRUNfVHJhbnNtaXQoKSBhbmQgSEFMX0NFQ19SZWNlaXZlKCk8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgZm9udC1zaXplOiAxMnB0OyIgbGFuZz0iRU4tVVMiPjxvOnA+PC9vOnA+PC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPlJlbW92ZQotSEFMIENFQyByZWNlaXZlIGludGVycnVwdCBwcm9jZXNzIGZ1bmN0aW9uJm5ic3A7SEFMX0NFQ19SZWNlaXZlX0lUKCkKLWFuZCBlbmFibGUgdGhlICJyZWNlaXZlIiAmbmJzcDttb2RlIGR1cmluZyB0aGUgSW5pdCBwaGFzZTwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5SZW5hbWUmbmJzcDtIQUxfQ0VDX0dldFJlY2VpdmVkRnJhbWVTaXplKCkgZnVudGlvbiB0byZuYnNwO0hBTF9DRUNfR2V0TGFzdFJlY2VpdmVkRnJhbWVTaXplKCk8YnI+PC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkFkZCBuZXcgSEFMIEFQSXM6IEhBTF9DRUNfU2V0RGV2aWNlQWRkcmVzcygpIGFuZCAgCi1IQUxfQ0VDX0NoYW5nZVJ4QnVmZmVyKCk8L3NwYW4+Ci08L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+UmVtb3ZlIHRoZSZuYnNwOzxzcGFuPjwvc3Bhbj4nSW5pdGlhdG9yQWRkcmVzcycgZmllbGQgZnJvbSB0aGUmbmJzcDtDRUNfSW5pdFR5cGVEZWYgCi1zdHJ1Y3R1cmUmbmJzcDthbmQgbWFuYWdlIGl0Jm5ic3A7YXMgYSBwYXJhbWV0ZXIgaW4gdGhlIEhBTF9DRUNfVHJhbnNtaXRfSVQoKSBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBmb250LXNpemU6IDEycHQ7IiBsYW5nPSJFTi1VUyI+PG86cD48L286cD48L3NwYW4+Ci08L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+QWRkIG5ldyBwYXJhbWV0ZXIgJ1J4RnJhbWVTaXplJyBpbiBIQUxfQ0VDX1J4Q3BsdENhbGxiYWNrKCkgZnVuY3Rpb248L3NwYW4+Ci08L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+TW92ZSBDRUMgUnggYnVmZmVyIHBvaW50ZXImbmJzcDtmcm9tIENFQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0byAKLUNFQ19Jbml0VHlwZURlZiBzdHJ1Y3R1cmU8L3NwYW4+PC9saT48L3VsPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIENBTjwvc3Bhbj4gdXBkYXRlJm5ic3A7PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCB0aGUgc3VwcG9ydCBvZiBDQU4zPC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgQ0VDPC9zcGFuPiB1cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5PdmVyYWxsIGRyaXZlciByZXdvcmsgd2l0aCZuYnNwO2JyZWFrIG9mIGNvbXBhdGliaWxpdHkgd2l0aCBIQUwgCi1WMS4wLjQ8YnI+PC9zcGFuPjwvbGk+PC91bD48dWw+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+UmVtb3ZlIHRoZSBIQUwgQ0VDIHBvbGxpbmcgUHJvY2VzczogSEFMX0NFQ19UcmFuc21pdCgpIGFuZCBIQUxfQ0VDX1JlY2VpdmUoKTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBmb250LXNpemU6IDEycHQ7IiBsYW5nPSJFTi1VUyI+PG86cD48L286cD48L3NwYW4+PC9saT48L3VsPjwvdWw+PC91bD4KLTx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0iZGlzYyI+PHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJjaXJjbGUiPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPlJlbW92ZSB0aGUgSEFMIENFQyByZWNlaXZlIGludGVycnVwdCBwcm9jZXNzIChIQUxfQ0VDX1JlY2VpdmVfSVQoKSkgYW5kIG1hbmFnZSB0aGUgIlJlY2VpdmUiIG1vZGUgZW5hYmxlIHdpdGhpbiB0aGUgSW5pdCBwaGFzZTwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5SZW5hbWUgSEFMX0NFQ19HZXRSZWNlaXZlZEZyYW1lU2l6ZSgpIGZ1bmN0aW9uIHRvJm5ic3A7SEFMX0NFQ19HZXRMYXN0UmVjZWl2ZWRGcmFtZVNpemUoKSBmdW5jdGlvbjxicj48L3NwYW4+PC9saT48L3VsPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkFkZCBuZXcgSEFMIEFQSXM6IEhBTF9DRUNfU2V0RGV2aWNlQWRkcmVzcygpIGFuZCAgCi1IQUxfQ0VDX0NoYW5nZVJ4QnVmZmVyKCk8L3NwYW4+PC9saT48L3VsPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPlJlbW92ZSB0aGUmbmJzcDs8c3Bhbj48L3NwYW4+J0luaXRpYXRvckFkZHJlc3MnIGZpZWxkIGZyb20gdGhlJm5ic3A7Q0VDX0luaXRUeXBlRGVmIAotc3RydWN0dXJlJm5ic3A7YW5kIG1hbmFnZSBpdCZuYnNwO2FzIGEgcGFyYW1ldGVyIGluIHRoZSBIQUxfQ0VDX1RyYW5zbWl0X0lUKCkgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPjwvc3Bhbj48L2xpPjwvdWw+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+QWRkIG5ldyBwYXJhbWV0ZXIgJ1J4RnJhbWVTaXplJyBpbiBIQUxfQ0VDX1J4Q3BsdENhbGxiYWNrKCkgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgZm9udC1zaXplOiAxMnB0OyIgbGFuZz0iRU4tVVMiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5Nb3ZlIENFQyBSeCBidWZmZXIgcG9pbnRlciZuYnNwO2Zyb20gQ0VDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRvIAotQ0VDX0luaXRUeXBlRGVmIHN0cnVjdHVyZTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48L3VsPjwvdWw+Ci08dWwgc3R5bGU9InRleHQtdHJhbnNmb3JtOiBub25lOyBtYXJnaW4tdG9wOiAwY207IHRleHQtaW5kZW50OiAwcHg7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJzsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgZm9udC1zaXplOiBtZWRpdW07IGxpbmUtaGVpZ2h0OiBub3JtYWw7IGZvbnQtc2l6ZS1hZGp1c3Q6IG5vbmU7IGZvbnQtc3RyZXRjaDogbm9ybWFsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBtYXJnaW4tYm90dG9tOiAwaW47IGNvbG9yOiByZ2IoMCwgMCwgMCk7IHdvcmQtc3BhY2luZzogMHB4OyIgdHlwZT0ic3F1YXJlIj48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIGRyaXZlciB0byBpbXBsZW1lbnQgdGhlIG5ldyBDRUMgc3RhdGUgbWFjaGluZTogPC9zcGFuPjwvbGk+PC91bD48dWw+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBuZXcmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij4icnhTdGF0ZSI8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij4gZmllbGQgaW4gCi1DRUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdG8gcHJvdmlkZSB0aGUgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+Q0VDIAotPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+c3RhdGUgCi1pbmZvcm1hdGlvbiByZWxhdGVkIHRvIFJ4IE9wZXJhdGlvbnM8L3NwYW4+PC9saT48L3VsPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5SZW5hbWUgInN0YXRlIiAKLWZpZWxkIGluIENFQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0byAiZ3N0YXRlIjogQ0VDIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPnN0YXRlIGluZm9ybWF0aW9uIAotcmVsYXRlZCB0byBnbG9iYWwgSGFuZGxlIG1hbmFnZW1lbnQgYW5kIFR4IE9wZXJhdGlvbnM8L3NwYW4+Ci08L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSBDRUMgcHJvY2VzcyAKLXRvIG1hbmFnZSB0aGUgbmV3IENFQyBzdGF0ZXMuPC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+VXBkYXRlIF9fSEFMX0NFQ19SRVNFVF9IQU5ETEVfU1RBVEUoKSBtYWNybyB0byBoYW5kbGUgdGhlIG5ldyBDRUMgCi1zdGF0ZSBwYXJhbWV0ZXJzIChnU3RhdGUsIHJ4U3RhdGUpPC9zcGFuPjxicj48L2xpPjwvdWw+PC91bD48L3VsPjx1bCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyBsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZTsiPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBETUE8L3NwYW4+IHVwZGF0ZSZuYnNwOzwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZAotbmV3IEFQSXMgSEFMX0RNQV9SZWdpc3RlckNhbGxiYWNrKCkgYW5kIEhBTF9ETUFfVW5SZWdpc3RlckNhbGxiYWNrIHRvCi1yZWdpc3Rlci91bnJlZ2lzdGVyIHRoZSBkaWZmZXJlbnQgY2FsbGJhY2tzIGlkZW50aWZpZWQgYnkKLXRoZSBlbnVtIHR5cGVkZWYgSEFMX0RNQV9DYWxsYmFja0lEVHlwZURlZjwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+QWRkIG5ldyBBUEkgSEFMX0RNQV9BYm9ydF9JVCgpIHRvIGFib3J0IERNQSB0cmFuc2ZlciB1bmRlciBpbnRlcnJ1cHQgY29udGV4dDxicj48L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5UaGUgbmV3IHJlZ2lzdGVyZWQgQWJvcnQgY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gRE1BIHRyYW5zZmVyIGFib3J0aW9uIGlzIGNvbXBsZXRlZDwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgdGhlIGNoZWNrIG9mIAotY29tcGF0aWJpbGl0eSBiZXR3ZWVuIEZJRk8gdGhyZXNob2xkIGxldmVsIGFuZCBzaXplIG9mIHRoZSBtZW1vcnkgYnVyc3QgaW4gdGhlIAotSEFMX0RNQV9Jbml0KCkgQVBJPC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBuZXcgRXJyb3IgQ29kZXM6IAotSEFMX0RNQV9FUlJPUl9QQVJBTSwgSEFMX0RNQV9FUlJPUl9OT19YRkVSIGFuZCAKLUhBTF9ETUFfRVJST1JfTk9UX1NVUFBPUlRFRDwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+UmVtb3ZlIGFsbCBETUEgc3RhdGVzIAotcmVsYXRlZCB0byBNRU0wL01FTTEgaW4gSEFMX0RNQV9TdGF0ZVR5cGVEZWY8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhJyxzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDk4LCA5OCwgOTgpOyBmb250LXNpemU6IDkuNXB0OyIgbGFuZz0iRU4tVVMiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgRE1BMkQ8L3NwYW4+IHVwZGF0ZSZuYnNwOzwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSB0aGUgCi1IQUxfRE1BMkRfRGVJbml0KCkgZnVuY3Rpb24gdG86PC9zcGFuPgotPHVsIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZTsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5BYm9ydCB0cmFuc2ZlciBpbiBjYXNlIAotb2Ygb25nb2luZyBETUEyRCB0cmFuc2Zlcjwvc3Bhbj48L2xpPjwvdWw+Ci08dWw+PGxpPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5SZXNldCBETUEyRCBjb250cm9sIAotcmVnaXN0ZXJzPC9zcGFuPjwvbGk+PC91bD48L2xpPjxsaT48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIAotSEFMX0RNQTJEX0Fib3J0KCkgdG8gZGlzYWJsZSBETUEyRCBpbnRlcnJ1cHRzIGFmdGVyIHN0b3BwaW5nIHRyYW5zZmVyPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5PcHRpbWl6ZSAKLUhBTF9ETUEyRF9JUlFIYW5kbGVyKCkgYnkgcmVhZGluZyBzdGF0dXMgcmVnaXN0ZXJzIG9ubHkgb25jZTwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgCi1IQUxfRE1BMkRfUHJvZ3JhbUxpbmVFdmVudCgpIGZ1bmN0aW9uIHRvOjwvc3Bhbj4KLTx1bCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyI+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5SZXR1cm4gSEFMIGVycm9yIHN0YXRlIAotaW4gY2FzZSBvZiB3cm9uZyBsaW5lIHZhbHVlPC9zcGFuPjwvbGk+PC91bD4KLTx1bCBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMGluOyI+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5FbmFibGUgbGluZSBpbnRlcnJ1cHQgCi1hZnRlciBzZXR0aW5nIHRoZSBsaW5lIHdhdGVybWFyayBjb25maWd1cmF0aW9uPC9zcGFuPjwvbGk+PC91bD48L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgbmV3IEhBTF9ETUEyRF9DTFVUTG9hZCgpIGFuZCA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfRE1BMkRfQ0xVVExvYWRfSVQoKTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+IAotZnVuY3Rpb25zIHRvIHN0YXJ0IERNQTJEIENMVVQgbG9hZGluZzwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0RNQTJEX0NMVVRMb2FkaW5nX0Fib3J0KCkgCi1mdW5jdGlvbiB0byBhYm9ydCB0aGUgRE1BMkQgQ0xVVCBsb2FkaW5nPC9zcGFuPjwvbGk+PC91bD48dWw+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9ETUEyRF9DTFVUTG9hZGluZ19TdXNwZW5kKCkgCi1mdW5jdGlvbiB0byBzdXNwZW5kIHRoZSBETUEyRCBDTFVUIGxvYWRpbmc8L3NwYW4+PC9saT48L3VsPjx1bD48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0RNQTJEX0NMVVRMb2FkaW5nX1Jlc3VtZSgpIAotZnVuY3Rpb24gdG8gcmVzdW1lIHRoZSBETUEyRCBDTFVUIGxvYWRpbmc8L3NwYW4+PC9saT48L3VsPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgbmV3IERNQTJEIGRlYWQgdGltZSAKLW1hbmFnZW1lbnQ6PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfRE1BMkRfRW5hYmxlRGVhZFRpbWUoKSAKLWZ1bmN0aW9uIHRvIGVuYWJsZSBETUEyRCBkZWFkIHRpbWUgZmVhdHVyZTwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfRE1BMkRfRGlzYWJsZURlYWRUaW1lKCkgCi1mdW5jdGlvbiB0byBkaXNhYmxlIERNQTJEIGRlYWQgdGltZSBmZWF0dXJlPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9ETUEyRF9Db25maWdEZWFkVGltZSgpIAotZnVuY3Rpb24gdG8gY29uZmlndXJlIGRlYWQgdGltZTwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSB0aGUgbmFtZSBvZiAKLURNQTJEIElucHV0L091dHB1dCBjb2xvciBtb2RlIGRlZmluZXMgdG8gYmUgbW9yZSBjbGVhciBmb3IgdXNlciAoRE1BMkRfSU5QVVRfWFhYIAotZm9yIGlucHV0IGxheWVycyBDb2xvcnMsIERNQTJEX09VVFBVVF9YWFggZm9yIG91dHB1dCBmcmFtZWJ1ZmZlciAKLUNvbG9ycyk8L3NwYW4+PC9saT48L3VsPjwvdWw+Ci0KLTx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0ic3F1YXJlIj48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgRENNSTwvc3Bhbj4gdXBkYXRlJm5ic3A7PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+UmVuYW1lIERDTUlfRE1BQ29udkNwbHQgCi10byBEQ01JX0RNQVhmZXJDcGx0PC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9EQ01JX1N0YXJ0X0RNQSgpIGZ1bmN0aW9uIHRvJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5FbmFibGUgdGhlIERDTUkgcGVyaXBoZXJhbDwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgbmV3IHRpbWVvdXQgCi1pbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBjcHUgY3ljbGVzIGZvciBEQ01JIHN0b3A8L3NwYW4+Ci08L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+QWRkIEhBTF9EQ01JX1N1c3BlbmQoKSAKLWZ1bmN0aW9uIHRvIHN1c3BlbmQgRENNSSBjYXB0dXJlPC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBIQUxfRENNSV9SZXN1bWUoKSAKLWZ1bmN0aW9uIHRvIHJlc3VtZSBjYXB0dXJlIGFmdGVyIERDTUkgc3VzcGVuZDwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgbG9jayBtZWNoYW5pc20gCi1mb3IgRENNSSBwcm9jZXNzPC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSBIQUxfRENNSV9JUlFIYW5kbGVyKCkgZnVuY3Rpb24gdG86PC9zcGFuPgotPHVsIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBlcnJvciBtYW5hZ2VtZW50IGluIAotY2FzZSBETUEgZXJyb3JzIHRocm91Z2ggWGZlckFib3J0Q2FsbGJhY2soKSBhbmQgCi1IQUxfRE1BX0Fib3J0X0lUKCk8L3NwYW4+PC9saT48L3VsPgotPHVsIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPk9wdGltaXplIGNvZGUgYnkgdXNpbmcgCi1kaXJlY3QgcmVnaXN0ZXIgcmVhZDwvc3Bhbj48L2xpPjwvdWw+PC9saT48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPk1vdmUKLXRoZSBjb250ZW50IG9mIHRoZSBzdG0zMmY3eHhfaGFsX2RjbWlfZXguYy8uaCBmaWxlcyB0byBjb21tb24gZHJpdmVyCi1maWxlcyAodGhlIGV4dGVuc2lvbiBmaWxlcyBhcmUga2VwdCBlbXB0eSBmb3IgcHJvamVjdHMgY29tcGF0aWJpbGl0eQotcmVhc29uKTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgRkxBU0g8L3NwYW4+IHVwZGF0ZSZuYnNwOzwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgdGhlIHN1cHBvcnQgb2YgRHVhbCBCQU5LIGZlYXR1cmU8L3NwYW4+PC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgX19IQUxfRkxBU0hfQ0FMQ19CT09UX0JBU0VfQURSKCkgbWFjcm8gdG8gY2FsY3VsYXRlIHRoZSBGTEFTSCBCb290IEJhc2UgQWRyZXNzPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+TW92ZSBGbGFzaCB0b3RhbCBzZWN0b3IgZGVmaW5lIHRvIENNU0lTIGhlYWRlciBmaWxlczwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIEZNQzwvc3Bhbj4gdXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSBGTUNfTk9SU1JBTV9Jbml0KCkgdG8gcmVtb3ZlIHRoZSBCdXJzdCBhY2Nlc3MgbW9kZSBjb25maWd1cmF0aW9uPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIEZNQ19TRFJBTV9UaW1pbmdfSW5pdCgpIHRvIGZpeCBpbml0aWFsaXphdGlvbiBpc3N1ZSB3aGVuIGNvbmZpZ3VyaW5nIDIgU0RSQU0gYmFua3M8YnI+PC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgSENEPC9zcGFuPiB1cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIEhDRF9Qb3J0X0lSUUhhbmRsZXIoKSB0byBiZSBjb21wbGlhbnQgd2l0aCBuZXcgVGltZSBiYXNlIGltcGxlbWVudGF0aW9uPC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkhBTCAKLUkyQzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7Ij48L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+IDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPnVwZGF0ZTwvc3Bhbj4KLTx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgdGhlIHN1cHBvcnQgb2YgSTJDIGZhc3QgbW9kZSBwbHVzIChGTSspPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij48L3NwYW4+PC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5VcGRhdGUgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IiBsYW5nPSJFTi1VUyI+UG9sbGluZyBtYW5hZ2VtZW50Ojwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiIGxhbmc9IkVOLVVTIj5UaGUgVGltZW91dCB2YWx1ZSBtdXN0IGJlIGVzdGltYXRlZCBmb3IgdGhlIG92ZXJhbGwgcHJvY2VzcyBkdXJhdGlvbjogdGhlIFRpbWVvdXQgbWVhc3VyZW1lbnQgaXMgY3VtdWxhdGl2ZTxicj48L3NwYW4+PC9saT48L3VsPjwvdWw+Ci08dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgdGhlIG1hbmFnZW1lbnQgb2YgQWJvcnQgc2VydmljZTombmJzcDtBYm9ydCBETUEgdHJhbnNmZXIgdGhyb3VnaCBpbnRlcnJ1cHQ8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5JbiB0aGUgY2FzZSBvZiBNYXN0ZXIgQWJvcnQgSVQgdHJhbnNmZXIgdXNhZ2U6PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+QWRkJm5ic3A7bmV3IHVzZXIgSEFMX0kyQ19BYm9ydENwbHRDYWxsYmFjaygpIHRvIGluZm9ybSB1c2VyIG9mIHRoZSBlbmQgb2YgYWJvcnQgcHJvY2Vzczwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+QSBuZXcgYWJvcnQgc3RhdGUgaXMgZGVmaW5lZCBpbiB0aGUgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfSTJDX1N0YXRlVHlwZURlZiA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPnN0cnVjdHVyZTwvc3Bhbj48L2xpPjwvdWw+PC91bD48L3VsPgotPHVsPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+QWRkIHRoZSBtYW5hZ2VtZW50IG9mIEkyQyBwZXJpcGhlcmFsIGVycm9ycywgQUNLCi1mYWlsdXJlIGFuZCBTVE9QIGNvbmRpdGlvbiBkZXRlY3Rpb24gZHVyaW5nIERNQSBwcm9jZXNzLiBUaGlzIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgdXBkYXRlcwotb24gdXNlciBhcHBsaWNhdGlvbjo8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5Db25maWd1cmUgYW5kIGVuYWJsZSB0aGUgSTJDIElSUSBpbiBIQUxfSTJDX01zcEluaXQoKSBmdW5jdGlvbjwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+SW4gc3RtMzJmN3h4X2l0LmMgZmlsZSwgSTJDX0lSUUhhbmRsZXIoKSBmdW5jdGlvbjogYWRkIGEgY2FsbCB0byBIQUxfSTJDX0lSUUhhbmRsZXIoKSBmdW5jdGlvbjwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+QWRkIGFuZCBjdXN0b21pemUgdGhlIEVycm9yIENhbGxiYWNrIEFQSTogSEFMX0kyQ19FcnJvckNhbGxiYWNrKCk8L3NwYW4+PC9saT48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPlJlZmVyIHRvIHRoZSBJMkNfRUVQUk9NIG9yIEkyQ19Ud29Cb2FyZHNfQ29tRE1BIHByb2plY3QgZXhhbXBsZXMgdXNhZ2Ugb2YgdGhlIEFQSTxicj48L3NwYW4+PC9saT48L3VsPjwvdWw+PHVsPjxsaT48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+QWRkIHRoZSBzdXBwb3J0IG9mJm5ic3A7STJDIHJlcGVhdGVkIHN0YXJ0IGZlYXR1cmU6PC9zcGFuPgotPHVsPjxsaT48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+V2l0aCB0aGUgZm9sbG93aW5nIG5ldyBBUElzPGJyPjwvc3Bhbj48L2xpPjwvdWw+Ci08dWw+PHVsPjxsaT48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+SEFMX0kyQ19NYXN0ZXJfU2VxdWVudGlhbF9UcmFuc21pdF9JVCgpPC9zcGFuPgotPC9saT48bGk+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkhBTF88L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+STJDX01hc3Rlcl9TZXF1ZW50aWFsX1JlY2VpdmVfSVQoKTwvc3Bhbj4KLTwvbGk+PGxpPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkhBTF88L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+STJDX01hc3Rlcl9BYm9ydF9JVCgpPC9zcGFuPgotPC9saT48bGk+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+SEFMXzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5JMkNfU2xhdmVfU2VxdWVudGlhbF9UcmFuc21pdF9JVCgpPC9zcGFuPgotPC9saT48bGk+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+SEFMXzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5JMkNfU2xhdmVfU2VxdWVudGlhbF9SZWNlaXZlX0lUKCk8L3NwYW4+Ci08L2xpPjxsaT48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5IQUxfPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkkyQ19FbmFibGVMaXN0ZW5fSVQoKTwvc3Bhbj4KLTwvbGk+PGxpPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkhBTF88L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+STJDX0Rpc2FibGVMaXN0ZW5fSVQoKTwvc3Bhbj48L2xpPjwvdWw+PC91bD4KLTx1bD48bGk+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkFkZCBuZXcgdXNlciBjYWxsYmFja3M6PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj48YnI+PC9zcGFuPjwvbGk+PC91bD4KLTx1bD48dWw+PGxpPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkhBTF88L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+STJDX0xpc3RlbkNwbHRDYWxsYmFjaygpPC9zcGFuPjwvbGk+PC91bD48dWw+PGxpPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5IQUxfPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkkyQ19BZGRyQ2FsbGJhY2soKTwvc3Bhbj48L2xpPjwvdWw+PC91bD4KLTwvbGk+PGxpPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+U2V2ZXJhbCAKLXVwZGF0ZXMgb24gSEFMIEkyQyBkcml2ZXIgdG8gaW1wbGVtZW50IHRoZSBuZXcgSTJDIHN0YXRlIG1hY2hpbmU6IDwvc3Bhbj4KLTx1bD48bGk+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkFkZCBuZXcgQVBJIHRvIGdldCB0aGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+STJDIG1vZGU6IAotSEFMXzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5JMkNfR2V0TW9kZSgpPC9zcGFuPgotPC9saT48bGk+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkkyQyBwcm9jZXNzIHRvIAotbWFuYWdlIHRoZSBuZXcmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkkyQyBzdGF0ZXM8L3NwYW4+PC9saT48L3VsPjwvbGk+PC91bD4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIElXREc8L3NwYW4+IHVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPk92ZXJhbGwgcmV3b3JrIG9mIHRoZSBkcml2ZXIgZm9yIGEgbW9yZSBlZmZpY2llbnQmbmJzcDtpbXBsZW1lbnRhdGlvbjwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPlJlbW92ZSB0aGUgZm9sbG93aW5nIEFQSXM6PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+SEFMX0lXREdfU3RhcnQoKTwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+SEFMX0lXREdfTXNwSW5pdCgpPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5IQUxfSVdER19HZXRTdGF0ZSgpPC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPlVwZGF0ZSBpbXBsZW1lbnRhdGlvbjo8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5IQUxfSVdER19Jbml0KCkgOiB0aGlzIGZ1bmN0aW9uIGluc3VyZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSBzdGFydCBvZiB0aGUgSVdERyBjb3VudGVyPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5IQUxfSVdER19SZWZyZXNoKCkgOiB0aGlzIGZ1bmN0aW9uIGluc3VyZXMgdGhlIHJlbG9hZCBvZiB0aGUgSVdERyBjb3VudGVyPC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPlJlZmVyIHRvIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSB0byBpZGVudGlmeSB0aGUgY2hhbmdlczogSVdER19FeGFtcGxlPGJyPjwvc3Bhbj48L2xpPjwvdWw+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgTFBUSU0gPC9zcGFuPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjwvc3Bhbj48L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+VXBkYXRlIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkhBTF9MUFRJTV9UaW1lT3V0X1N0YXJ0X0lUKCkgYW5kIEhBTF9MUFRJTV9Db3VudGVyX1N0YXJ0X0lUKCApIEFQSXMgCi10byBjb25maWd1cmUgV2FrZVVwIFRpbWVyIEVYVEkgaW50ZXJydXB0IHRvIGJlIGFibGUgdG8gd2FrZXVwIE1DVSBmcm9tIGxvdyBwb3dlciAKLW1vZGUgYnkgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+cHJlc3NpbmcgdGhlIEVYVEkgbGluZSA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj48L3NwYW4+Ci08L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPlVwZGF0ZSA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5IQUxfTFBUSU1fVGltZU91dF9TdG9wX0lUKCkgYW5kIEhBTF9MUFRJTV9Db3VudGVyX1N0b3BfSVQoICkgQVBJcyB0byAKLWRpc2FibGUgV2FrZVVwIFRpbWVyIEVYVEkgaW50ZXJydXB0IDwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIExUREMgPC9zcGFuPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSAKLUhBTF9MVERDX0lSUUhhbmRsZXIoKSB0byBtYW5hZ2UgdGhlIGNhc2Ugb2YgcmVsb2FkIGludGVycnVwdDwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBMVERDIGV4dGVuc2lvbiBkcml2ZXIgbmVlZGVkIHdpdGggRFNJPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+QWRkIEhBTF9MVERDX1NldFBpdGNoKCkgZnVuY3Rpb24gZm9yIHBpdGNoIHJlY29uZmlndXJhdGlvbjwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+QWRkIG5ldyBjYWxsYmFjayBBUEkgCi1IQUxfTFREQ19SZWxvYWRFdmVudENhbGxiYWNrKCk8L3NwYW4+Ci08L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+QWRkIEhBTF9MVERDX1JlbG9hZCgpIAotdG8gY29uZmlndXJlIExUREMgcmVsb2FkIGZlYXR1cmU8L3NwYW4+Ci08L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+QWRkIG5ldyBObyBSZWxvYWQgTFREQyAKLXZhcmlhbnQgQVBJczxicj48L3NwYW4+Ci08dWwgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBpbjsiPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0xURENfQ29uZmlnTGF5ZXJfTm9SZWxvYWQoKSAKLXRvIGNvbmZpZ3VyZSB0aGUgTFREQyBMYXllciBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCB3aXRob3V0IHJlbG9hZGluZzwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfTFREQ19TZXRXaW5kb3dTaXplX05vUmVsb2FkKCkgCi10byBzZXQgdGhlIExUREMgd2luZG93IHNpemUgd2l0aG91dCByZWxvYWRpbmc8L3NwYW4+Ci08L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0xURENfU2V0V2luZG93UG9zaXRpb25fTm9SZWxvYWQoKSAKLXRvIHNldCB0aGUgTFREQyB3aW5kb3cgcG9zaXRpb24gd2l0aG91dCByZWxvYWRpbmc8L3NwYW4+Ci08L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0xURENfU2V0UGl4ZWxGb3JtYXRfTm9SZWxvYWQoKSAKLXRvIHJlY29uZmlndXJlIHRoZSBwaXhlbCBmb3JtYXQgd2l0aG91dCByZWxvYWRpbmc8L3NwYW4+Ci08L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0xURENfU2V0QWxwaGFfTm9SZWxvYWQoKSAKLXRvIHJlY29uZmlndXJlIHRoZSBsYXllciBhbHBoYSB2YWx1ZSB3aXRob3V0IHJlbG9hZGluZzwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfTFREQ19TZXRBZGRyZXNzX05vUmVsb2FkKCkgCi10byByZWNvbmZpZ3VyZSB0aGUgZnJhbWUgYnVmZmVyIEFkZHJlc3Mgd2l0aG91dCByZWxvYWRpbmc8L3NwYW4+Ci08L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0xURENfU2V0UGl0Y2hfTm9SZWxvYWQoKSAKLXRvIHJlY29uZmlndXJlIHRoZSBwaXRjaCBmb3Igc3BlY2lmaWMgY2FzZXM8L3NwYW4+Ci08L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+SEFMX0xURENfQ29uZmlnQ29sb3JLZXlpbmdfTm9SZWxvYWQoKSAKLXRvIGNvbmZpZ3VyZSB0aGUgY29sb3Iga2V5aW5nIHdpdGhvdXQgcmVsb2FkaW5nPC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9MVERDX0VuYWJsZUNvbG9yS2V5aW5nX05vUmVsb2FkKCkgCi10byBlbmFibGUgdGhlIGNvbG9yIGtleWluZyB3aXRob3V0IHJlbG9hZGluZzwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfTFREQ19EaXNhYmxlQ29sb3JLZXlpbmdfTm9SZWxvYWQoKSAKLXRvIGRpc2FibGUgdGhlIGNvbG9yIGtleWluZyB3aXRob3V0IHJlbG9hZGluZzwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfTFREQ19FbmFibGVDTFVUX05vUmVsb2FkKCkgCi10byBlbmFibGUgdGhlIGNvbG9yIGxvb2t1cCB0YWJsZSB3aXRob3V0IHJlbG9hZGluZzwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfTFREQ19EaXNhYmxlQ0xVVF9Ob1JlbG9hZCgpIAotdG8gZGlzYWJsZSB0aGUgY29sb3IgbG9va3VwIHRhYmxlIHdpdGhvdXQgCi1yZWxvYWRpbmc8L3NwYW4+PC9saT48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgZm9udC1zdHlsZTogaXRhbGljOyI+Tm90ZTo8L3NwYW4+Ci1WYXJpYW50IGZ1bmN0aW9ucyB3aXRoIJNfTm9SZWxvYWSUIHBvc3QgZml4IGFsbG93cyB0byBzZXQgdGhlIExUREMKLWNvbmZpZ3VyYXRpb24vc2V0dGluZ3Mgd2l0aG91dCBpbW1lZGlhdGUgcmVsb2FkLiBUaGlzIGlzIHVzZWZ1bCBpbiBjYXNlCi13aGVuIHRoZSBwcm9ncmFtIHJlcXVpcmVzIHRvIG1vZGlmeSBzZXZlcmFsIExUREMgc2V0dGluZ3MgKG9uIG9uZSBvcgotYm90aCBsYXllcnMpIHRoZW4gYXBwbHlpbmcgKHJlbG9hZCkgdGhlc2Ugc2V0dGluZ3MgaW4gb25lIHNob3QgYnkKLWNhbGxpbmcgdGhlIGZ1bmN0aW9uIJNIQUxfTFREQ19SZWxvYWSUPGJyPjwvc3Bhbj48L2xpPjwvdWw+PC9saT48L3VsPjwvdWw+Ci08dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBjbTsiIHR5cGU9InNxdWFyZSI+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIE5PUjwvc3Bhbj4gdXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+VXBkYXRlIE5PUl9BRERSX1NISUZUIG1hY3JvIGltcGxlbWVudGF0aW9uPC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgUENEPC9zcGFuPiB1cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIEhBTF9QQ0RfSVJRSGFuZGxlcigpIHRvIGdldCBIQ0xLIGZyZXF1ZW5jeSBiZWZvcmUgc2V0dGluZyBUUkRUIHZhbHVlPC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgUVNQSSA8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIHRvIG1hbmFnZSBRU1BJIGVycm9yIG1hbmFnZW1lbnQgZHVyaW5nIERNQSBwcm9jZXNzPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5JbXByb3ZlIHRoZSBETUEgdHJhbnNtaXQgcHJvY2VzcyBieSB1c2luZyBRU1BJIFRDIGludGVycnVwdCBpbnN0ZWFkIG9mIHdhaXRpbmcgbG9vcCBvbiBUQyBmbGFnIHVuZGVyIERNQSBJU1I8L3NwYW4+PC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPlRoZXNlIHR3byBpbXByb3ZlbWVudHMgcmVxdWlyZSB0aGUgZm9sbG93aW5nIHVwZGF0ZXMgb24gdXNlciBhcHBsaWNhdGlvbjo8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5Db25maWd1cmUgYW5kIGVuYWJsZSB0aGUgUVNQSSBJUlEgaW4gSEFMX1FTUElfTXNwSW5pdCgpIGZ1bmN0aW9uPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5JbiBzdG0zMmY3eHhfaXQuYyBmaWxlLCBRU1BJX0lSUUhhbmRsZXIoKSBmdW5jdGlvbjogYWRkIGEgY2FsbCB0byBIQUxfUVNQSV9JUlFIYW5kbGVyKCkgZnVuY3Rpb248L3NwYW4+PC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBhbmQgY3VzdG9taXplIHRoZSBFcnJvciBDYWxsYmFjayBBUEk6IEhBTF9RU1BJX0Vycm9yQ2FsbGJhY2soKTwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQKLXRoZSBtYW5hZ2VtZW50IG9mIG5vbi1ibG9ja2luZyB0cmFuc2ZlciBhYm9ydCBzZXJ2aWNlOiZuYnNwO0hBTF9RU1BJX0Fib3J0X0lUKCkuIEluCi10aGlzIGNhc2UgdGhlIHVzZXIgbXVzdDo8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgbmV3IGNhbGxiYWNrIEhBTF9RU1BJX0Fib3J0Q3BsdENhbGxiYWNrKCkgdG8gaW5mb3JtIHVzZXIgYXQgdGhlIGVuZCBvZiBhYm9ydCBwcm9jZXNzPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5BIG5ldyB2YWx1ZSBvZiBTdGF0ZSBpbiB0aGUgSEFMX1FTUElfU3RhdGVUeXBlRGVmIHByb3ZpZGVzIHRoZSBjdXJyZW50IHN0YXRlIGR1cmluZyB0aGUgYWJvcnQgcGhhc2U8L3NwYW4+PC9saT48L3VsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+UG9sbGluZyBtYW5hZ2VtZW50IHVwZGF0ZTo8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5UaGUgVGltZW91dCB2YWx1ZSB1c2VyIG11c3QgYmUgZXN0aW1hdGVkIGZvciB0aGUgb3ZlcmFsbCBwcm9jZXNzIGR1cmF0aW9uOiB0aGUgVGltZW91dCBtZWFzdXJlbWVudCBpcyBjdW11bGF0aXZlLiZuYnNwOzwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5SZWZlciB0byB0aGUgZm9sbG93aW5nIGV4YW1wbGVzLCB3aGljaCBkZXNjcmliZSB0aGUgY2hhbmdlczo8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5RU1BJX1JlYWRXcml0ZV9ETUE8L3NwYW4+PC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPlFTUElfTWVtb3J5TWFwcGVkPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5RU1BJX0V4ZWN1dGVJblBsYWNlPGJyPjwvc3Bhbj48L2xpPjwvdWw+PC91bD48L3VsPjx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0ic3F1YXJlIj48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5BZGQgdHdvIG5ldyBBUElzIGZvciB0aGUgUVNQSSBmaWZvIHRocmVzaG9sZDo8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgZm9udC1zaXplOiAxMnB0OyIgbGFuZz0iRU4tVVMiPjxvOnA+PC9vOnA+PC9zcGFuPgotPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJjaXJjbGUiPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+SEFMX1FTUElfU2V0Rmlmb1RocmVzaG9sZCgpOiBjb25maWd1cmUgdGhlIEZJRk8gdGhyZXNob2xkIG9mIAotdGhlIFFTUEk8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgZm9udC1zaXplOiAxMnB0OyIgbGFuZz0iRU4tVVMiPjxvOnA+PC9vOnA+PC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkhBTF9RU1BJX0dldEZpZm9UaHJlc2hvbGQoKTogZ2l2ZSB0aGUgY3VycmVudCBGSUZPIAotdGhyZXNob2xkPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsiIGxhbmc9IkVOLVVTIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPjwvdWw+Ci08L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+Rml4IHdyb25nIGRhdGEgc2l6ZSBtYW5hZ2VtZW50IGluIEhBTF9RU1BJX1JlY2VpdmVfRE1BKCk8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgZm9udC1zaXplOiAxMnB0OyIgbGFuZz0iRU4tVVMiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgUkNDIDwvc3Bhbj51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIEhBTF9SQ0NfUGVyaXBoQ0xLQ29uZmlnKCkgZnVuY3Rpb24gdG8gYWRqdXN0IHRoZSBTeXN0ZW1Db3JlQ2xvY2s8L3NwYW4+PC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5PcHRpbWl6ZSBIQUxfUkNDX0Nsb2NrQ29uZmlnKCkgZnVuY3Rpb24gY29kZTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+Tzwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPnB0aW1pemUgaW50ZXJuYWwgb3NjaWxsYXRvcnMgYW5kIFBMTCBzdGFydHVwIHRpbWVzPC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgUlRDIDwvc3Bhbj51cGRhdGUmbmJzcDs8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIEhBTF9SVENfR2V0VGltZSgpIHdpdGggcHJvcGVyICdTdWJTZWNvbmRzJyBhbmQgJ1NlY29uZEZyYWN0aW9uJyBtYW5hZ2VtZW50PC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgU0FJIDwvc3Bhbj51cGRhdGUmbmJzcDs8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgU0FJIHN0YXRlIGluIGNhc2Ugb2YgVElNRU9VVCBlcnJvciB3aXRoaW4gdGhlIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+SEFMX1NBSV9UcmFuc21pdCgpIC8gSEFMX1NBSV9SZWNlaXZlKCk8L3NwYW4+Ci08L2xpPjwvdWw+PHVsPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIEhBTF9TQUlfSVJRSGFuZGxlcjo8L3NwYW4+Ci08dWwgc3R5bGU9Im1hcmdpbi1ib3R0b206IDBpbjsiPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+QWRkIGVycm9yIG1hbmFnZW1lbnQgaW4gCi1jYXNlIERNQSBlcnJvcnMgdGhyb3VnaCBYZmVyQWJvcnRDYWxsYmFjaygpIGFuZCBIQUxfRE1BX0Fib3J0X0lUKCk8L3NwYW4+Ci08L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+QWRkIGVycm9yIG1hbmFnZW1lbnQgaW4gCi1jYXNlIG9mIElUPC9zcGFuPjwvbGk+PC91bD48L2xpPjwvdWw+PHVsIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPk1vdmUKLVNBSV9CbG9ja1N5bmNocm9Db25maWcoKSBhbmQgU0FJX0dldElucHV0Q2xvY2soKSBmdW5jdGlvbnMgdG8KLXN0bTMyZjd4eF9oYWxfc2FpLmMvLmggZmlsZXMgKGV4dGVuc2lvbiBmaWxlcyBhcmUga2VwdCBlbXB0eSBmb3IKLXByb2plY3RzIGNvbXBhdGliaWxpdHkgcmVhc29uKTwvc3Bhbj48L2xpPjwvdWw+PC91bD4KLTx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0ic3F1YXJlIj48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgU1BESUZSWCA8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPk92ZXJhbGwgZHJpdmVyIHVwZGF0ZSBmb3Igd2FpdCBvbiBmbGFnIG1hbmFnZW1lbnQgb3B0aW1pemF0aW9uIDxicj48L3NwYW4+PC9saT48L3VsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBTUEkgPC9zcGFuPnVwZGF0ZTwvc3Bhbj48Yj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+PC9zcGFuPjwvYj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPk92ZXJhbGwgZHJpdmVyIG9wdGltaXphdGlvbiB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIGluIHBvbGxpbmcvaW50ZXJydXB0IG1vZGUgdG8gcmVhY2ggbWF4aW11bSBwZXJpcGhlcmFsIGZyZXF1ZW5jeTwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPlBvbGxpbmcgbW9kZTo8L3NwYW4+Ci08L2xpPjx1bD48bGk+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPlJlcGxhY2UgdGhlIHVzZSBvZiBTUElfV2FpdE9uRmxhZ1VuaXRUaW1lb3V0KCkgZnVuY3Rpb24gYnkgImlmIiAKLXN0YXRlbWVudCB0byBjaGVjayBvbiBSWE5FL1RYRSBmbGFnZSB3aGlsZSB0cmFuc2ZlcnJpbmcgCi1kYXRhPC9zcGFuPjwvbGk+PC91bD48L3VsPjwvdWw+PC91bD4KLTx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0ic3F1YXJlIj48dWw+PHVsPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+Jm5ic3A7SW50ZXJydXB0IG1vZGU6PC9zcGFuPjwvbGk+PHVsPjxsaT48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+TWluaW1pemUgYWNjZXNzIG9uIFNQSSByZWdpc3RlcnM8L3NwYW4+Ci08L2xpPjwvdWw+PC91bD48dWw+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5BbGwgbW9kZXM6PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+QWRkIHRoZSBVU0VfU1BJX0NSQyBzd2l0Y2ggdG8gbWluaW1pemUgdGhlIG51bWJlciBvZiBzdGF0ZW1lbnRzIHdoZW4gQ1JDIGNhbGN1bGF0aW9uIGlzIGRpc2FibGVkPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUmbmJzcDt0aW1lb3V0IG1hbmFnZW1lbnQgdG8gY2hlY2sgb24gZ2xvYmFsIHByb2Nlc3Nlczwvc3Bhbj48L2xpPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIGVycm9yIGNvZGUgbWFuYWdlbWVudCBpbiBhbGwgcHJvY2Vzc2VzPC9zcGFuPjwvbGk+PC91bD48L3VsPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIERNQSBwcm9jZXNzOjxvOnA+PC9vOnA+PC9zcGFuPgotPHVsIHN0eWxlPSJtYXJnaW4tYm90dG9tOiAwaW47Ij48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCB0aGUgbWFuYWdlbWVudCBvZiBTUEkgcGVyaXBoZXJhbCBlcnJvcnMgZHVyaW5nIERNQSBwcm9jZXNzLiBUaGlzIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgdXBkYXRlcyBpbgotdGhlIHVzZXIgYXBwbGljYXRpb246PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW47IGZvbnQtZmFtaWx5OiAnVGltZXMgTmV3IFJvbWFuJyxzZXJpZjsgY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDEycHQ7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+Q29uZmlndXJlIGFuZCBlbmFibGUgdGhlIFNQSSBJUlEgaW4gSEFMX1NQSV9Nc3BJbml0KCkgZnVuY3Rpb248L3NwYW4+PC9saT48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkluIHN0bTMyZjd4eF9pdC5jIGZpbGUsIFNQSV9JUlFIYW5kbGVyKCkgZnVuY3Rpb246IGFkZCBhIGNhbGwgdG8gSEFMX1NQSV9JUlFIYW5kbGVyKCkgZnVuY3Rpb248L3NwYW4+PC9saT48bGkgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluOyBmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbicsc2VyaWY7IGNvbG9yOiBibGFjazsgZm9udC1zaXplOiAxMnB0OyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPkFkZCBhbmQgY3VzdG9taXplIHRoZSBFcnJvciBDYWxsYmFjayBBUEk6IEhBTF9TUElfRXJyb3JDYWxsYmFjaygpPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbjsgZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nLHNlcmlmOyBjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogMTJwdDsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5SZWZlciB0byB0aGUgZm9sbG93aW5nIGV4YW1wbGUgd2hpY2ggZGVzY3JpYmUgdGhlIGNoYW5nZXM6IFNQSV9GdWxsRHVwbGV4X0NvbURNQTxicj48L3NwYW4+PC9saT48L3VsPjwvdWw+Ci08L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIFRJTSA8L3NwYW4+dXBkYXRlJm5ic3A7PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSBIQUxfVElNX0NvbmZpZ09DcmVmQ2xlYXIoKSBmdW5jdGlvbiBmb3IgcHJvcGVyIGNvbmZpZ3VyYXRpb24gb2YgdGhlIFNNQ1IgcmVnaXN0ZXI8L3NwYW4+PC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5BZGQgbmV3IGZ1bmN0aW9uIEhBTF9USU1FeF9Db25maWdCcmVha0lucHV0KCkgdG8gY29uZmlndXJlIHRoZSBicmVhayBpbnB1dCBzb3VyY2U8L3NwYW4+PC9saT48L3VsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48Yj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJyxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+SEFMIFVBUlQsIFVTQVJULCBTTUFSVENBUkQgYW5kIElSREEgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7Ij48L3NwYW4+KHJlZmVyZW5jZWQgYXMgPHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPlBQUDwvc3Bhbj4gaGVyZSBiZWxvdyk8c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPiA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj51cGRhdGU8Yj48bzpwPjwvbzpwPjwvYj48L3NwYW4+IAotPC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5VcGRhdGUgUG9sbGluZyBtYW5hZ2VtZW50Ojwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPlRoZSB1c2VyIFRpbWVvdXQgdmFsdWUmbmJzcDttdXN0IGJlIGVzdGltYXRlZCBmb3IgdGhlIG92ZXJhbGwgcHJvY2VzcyBkdXJhdGlvbjogdGhlIFRpbWVvdXQgbWVhc3VyZW1lbnQgaXMgY3VtdWxhdGl2ZTwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgRE1BIHByb2Nlc3M6PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYSxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgdGhlIG08L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPmFuYWdlbWVudCBvZiBQUFAgcGVyaXBoZXJhbCBlcnJvcnMgZHVyaW5nIERNQSBwcm9jZXNzLiBUaGlzIHJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgdXBkYXRlcyBpbiB1c2VyIGFwcGxpY2F0aW9uOjwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPkNvbmZpZ3VyZSBhbmQgZW5hYmxlIHRoZSBQUFAgSVJRIGluIEhBTF9QUFBfTXNwSW5pdCgpIGZ1bmN0aW9uPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5JbiBzdG0zMmY3eHhfaXQuYyBmaWxlLCBQUFBfSVJRSGFuZGxlcigpIGZ1bmN0aW9uOiBhZGQgYSBjYWxsIHRvIEhBTF9QUFBfSVJRSGFuZGxlcigpIGZ1bmN0aW9uPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiIGxhbmc9IkVOLVVTIj5BZGQgYW5kIGN1c3RvbWl6ZSB0aGUgRXJyb3IgQ2FsbGJhY2sgQVBJOiBIQUxfUFBQX0Vycm9yQ2FsbGJhY2soKTxicj48L3NwYW4+PC9saT48L3VsPjwvdWw+PC91bD48L3VsPjx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0ic3F1YXJlIj48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgV1dERyA8L3NwYW4+dXBkYXRlJm5ic3A7PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPk92ZXJhbGwgcmV3b3JrIG9mIHRoZSBkcml2ZXIgZm9yIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlJlbW92ZSB0aGUgZm9sbG93aW5nIEFQSXM6PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9XV0RHX1N0YXJ0KCk8L3NwYW4+PC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfV1dER19TdGFydF9JVCgpPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX1dXREdfTXNwRGVJbml0KCk8L3NwYW4+PC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5IQUxfV1dER19HZXRTdGF0ZSgpPC9zcGFuPjwvbGk+PC91bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgaW1wbGVtZW50YXRpb246PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkhBTF9XV0RHX0luaXQoKTwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5BJm5ic3A7bmV3IHBhcmFtZXRlciBpbiB0aGUgSW5pdCBTdHJ1Y3R1cmU6Jm5ic3A7RVdJTW9kZTwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX1dXREdfTXNwSW5pdCgpPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX1dXREdfUmVmcmVzaCgpJm5ic3A7PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlRoaXMgZnVuY3Rpb24gaW5zdXJlcyB0aGUgcmVsb2FkIG9mIHRoZSBjb3VudGVyPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VGhlICJjb3VudGVyIiBwYXJhbWV0ZXIgaGFzIGJlZW4gcmVtb3ZlZDwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX1dXREdfSVJRSGFuZGxlcigpPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX1dXREdfRWFybHlXYWtldXBDYWxsYmFjaygpIGlzIHRoZSBuZXcgcHJvdG90eXBlIG9mIEhBTF9XV0RHX1dha2V1cENhbGxiYWNrKCk8YnI+PC9zcGFuPjwvbGk+PC91bD48L3VsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlJlZmVyIHRvIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSB0byBpZGVudGlmeSB0aGUgY2hhbmdlczogV1dER19FeGFtcGxlPC9zcGFuPjwvbGk+PC91bD48L3VsPjxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiBpbml0aWFsOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyB3aWR0aDogMTgwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiB3aGl0ZTsiPlYxLjAuNCAvIDA5LURlY2VtYmVyLTIwMTU8L3NwYW4+PC9oMz4KLTxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBjbSA0LjVwdCAxOHB0OyI+PGIgc3R5bGU9IiI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGNvbG9yOiBibGFjazsiPk1haW4KLUNoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+PHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJzcXVhcmUiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBHZW5lcmljIDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7IGZvbnQtd2VpZ2h0OiBub3JtYWw7Ij51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIEhBTCAKLXdlYWsgZW1wdHkgY2FsbGJhY2tzIHRvIHByZXZlbnQgdW51c2VkIGFyZ3VtZW50IGNvbXBpbGF0aW9uIHdhcm5pbmdzIHdpdGggc29tZSAKLWNvbXBpbGVycyBieSBjYWxsaW5nIHRoZSBmb2xsb3dpbmcgbGluZTo8L3NwYW4+Ci08L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5VTlVTRUQoaHBwcCk7PC9zcGFuPjwvbGk+PC91bD48L3VsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBFVEg8L3NwYW4+IHVwZGF0ZSZuYnNwOzwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgSEFMX0VUSF9Jbml0KCkgZnVuY3Rpb24gdG8gYWRkIHRpbWVvdXQgb24gdGhlIFNvZnR3YXJlIHJlc2V0IG1hbmFnZW1lbnQ8YnI+PC9zcGFuPjwvbGk+PC91bD48L3VsPjxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiBpbml0aWFsOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyB3aWR0aDogMTgwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiB3aGl0ZTsiPlYxLjAuMyAvIDEzLU5vdmVtYmVyLTIwMTU8L3NwYW4+PC9oMz4KLTxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBjbSA0LjVwdCAxOHB0OyI+PGIgc3R5bGU9IiI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGNvbG9yOiBibGFjazsiPk1haW4KLUNoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+PHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJzcXVhcmUiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+R2VuZXJhbCB1cGRhdGVzIAotdG8gZml4IGtub3duIGRlZmVjdHMgYW5kIGVuaGFuY2VtZW50cyBpbXBsZW1lbnRhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjwvc3Bhbj48L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPk9uZSBjaGFuZ2UgZG9uZSBvbiB0aGUgSEFMIENSWVAgcmVxdWlyZXMgYW4gdXBkYXRlIG9uIAotdGhlIGFwcGxpY2F0aW9uIGNvZGUgYmFzZWQgb24gSEFMIFYxLjAuMjwvc3Bhbj48L3NwYW4+Ci08L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgCi1IQUxfQ1JZUF9ERVNFQ0JfRGVjcnlwdCgpIEFQSSB0byBpbnZlcnQgcFBsYWluRGF0YSBhbmQgcEN5cGhlckRhdGEgCi1wYXJhbWV0ZXJzPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgR2VuZXJpYyA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyBmb250LXdlaWdodDogbm9ybWFsOyI+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSBIQUwgCi13ZWFrIGVtcHR5IGNhbGxiYWNrcyB0byBwcmV2ZW50IHVudXNlZCBhcmd1bWVudCBjb21waWxhdGlvbiB3YXJuaW5ncyB3aXRoIHNvbWUgCi1jb21waWxlcnMgYnkgY2FsbGluZyB0aGUgZm9sbG93aW5nIGxpbmU6PC9zcGFuPgotPC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VU5VU0VEKGhwcHApOzwvc3Bhbj48L2xpPjwvdWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+UmVtb3ZlIHJlZmVyZW5jZXMgdG8gU1RNMzJDdWJlTVggYW5kIE1pY3JvWHBsb3JlciBmcm9tIHN0bTMyZjd4eF9oYWxfbXNwX3RlbXBsYXRlLmMgZmlsZTxicj48L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBBREM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyBmb250LXdlaWdodDogbm9ybWFsOyI+IHVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7IGZvbnQtd2VpZ2h0OiBub3JtYWw7Ij5SZXBsYWNlIEFEQ19DSEFOTkVMX1RFTVBTRU5TT1IgZGVmaW5pdGlvbiBmcm9tIEFEQ19DSEFOTkVMXzE2IHRvIEFEQ19DSEFOTkVMXzE4IDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsiPiZuYnNwOzwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsiPlVwZGF0ZSBIQUwgQURDIGRyaXZlciBzdGF0ZSBtYWNoaW5lIGZvciBjb2RlIGVmZmljaWVuY3k8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7IiBsYW5nPSJFTi1VUyI+QWRkIG5ldyBsaXRlcmFsOiBBRENfSU5KRUNURURfU09GVFdBUkVfU1RBUlQgdG8gYmUgdXNlZCBhcyBwb3NzaWJsZSAKLXZhbHVlIGZvciB0aGUgRXh0ZXJuYWxUcmlnSW5qZWNDb252RWRnZSBwYXJhbWV0ZXIgaW4gdGhlIEFEQ19Jbml0VHlwZURlZiAKLXN0cnVjdHVyZSB0byBzZWxlY3QgdGhlIEFEQyBzb2Z0d2FyZSB0cmlnZ2VyIG1vZGUuPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgQ09SVEVYIDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGU8L3NwYW4+Ci08L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5SZW1vdmUgZHVwbGljYXRpb24gCi1mb3IgX19IQUxfQ09SVEVYX1NZU1RJQ0tDTEtfQ09ORklHKCkgbWFjcm88L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBDUllQIDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIEhBTF9DUllQX0RFU0VDQl9EZWNyeXB0KCkgQVBJIHRvIGZpeCB0aGUgaW52ZXJ0ZWQgcFBsYWluRGF0YSBhbmQgcEN5cGhlckRhdGEgcGFyYW1ldGVycyBpc3N1ZSA8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBGTEFTSCA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSBPQl9JV0RHX1NUT1BfQUNUSVZFIGRlZmluaXRpb248L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgT0JfUkRQX0xFVkVMX3ggZGVmaW5pdGlvbiBieSBwcm9wZXIgdmFsdWVzPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIEZMQVNIX01hc3NFcmFzZSgpIGZ1bmN0aW9uIHRvIGNvbnNpZGVyIHRoZSB2b2x0YWdlIHJhbmdlIHBhcmFtZXRlciBpbiB0aGUgbWFzcyBlcmFzZSBjb25maWd1cmF0aW9uIDxicj48L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBSQ0M8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyBmb250LXdlaWdodDogbm9ybWFsOyI+IHVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgdmFsdWVzIGZvciBMU0UgRHJpdmUgY2FwYWJpbGl0eSBkZWZpbmVzPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlIFBMTE4gbWluIHZhbHVlIDUwIGluc3RlYWQgb2YgMTAwPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+YWRkIFJDQ19QTExJMlNQX0RJVnggZGVmaW5lcyBmb3IgUExMSTJTUCBjbG9jayBkaXZpZGVyPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyIgbGFuZz0iRU4tVVMiPlVwZGF0ZSBfX0hBTF9SQ0NfVVNCX09UR19GU19DTEtfRElTQUJMRSgpIG1hY3JvIHRvIHJlbW92ZSB0aGUgZGlzYWJsZSBvZiB0aGUgU1lTQ0ZHPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+Jm5ic3A7PC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+VXBkYXRlIEhBTF9SQ0NFeF9HZXRQZXJpcGhDTEtGcmVxKCkgZnVuY3Rpb24gZm9yIHByb3BlciBTQUkgY2xvY2sgY29uZmlndXJhdGlvbjxicj48L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBTQUkgPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7IGZvbnQtd2VpZ2h0OiBub3JtYWw7Ij51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlIGZvciBwcm9wZXIgbWFuYWdlbWVudCBvZiB0aGUgZXh0ZXJuYWwgc3luY2hyb25pemF0aW9uIGlucHV0IHNlbGVjdGlvbjwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgb2YmbmJzcDtIQUxfU0FJX0luaXQgKCkgZnVuY2l0b248L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgZGVmaW5pdGlvbiBvZiBTQUlfQmxvY2tfU3luY0V4dCBhbmQgU0FJX0Jsb2NrX1N5bmNocm9uaXphdGlvbiBncm91cHM8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZSBTQUlfU0xPVEFDVElWRV9YICZuYnNwO2RlZmluZXMgdmFsdWVzPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+SEFMX1NBSV9Jbml0KCkgZnVuY3Rpb24gZm9yIHByb3BlciBjb21wYW5kaW5nIG1vZGUgbWFuYWdlbWVudDwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZSBTQUlfVHJhbnNtaXRfSVR4eEJpdCgpIGZ1bmN0aW9ucyB0byBhZGQgdGhlIGNoZWNrIG9uIHRyYW5zZmVyIGNvdW50ZXIgYmVmb3JlIHdyaXRpbmcgbmV3IGRhdGEgdG8gU0FJeF9EUiByZWdpc3RlcnM8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgU0FJX0ZpbGxGaWZvKCkgZnVuY3Rpb24gdG8gYXZvaWQgaXNzdWUgd2hlbiB0aGUgbnVtYmVyIG9mIGRhdGEgdG8gdHJhbnNtaXQgaXMgc21hbGxlciB0aGFuIHRoZSBGSUZPIHNpemU8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgSEFMX1NBSV9FbmFibGVSeE11dGVNb2RlKCkgZnVuY3Rpb24gZm9yIHByb3BlciBtdXRlIG1hbmFnZW1lbnQ8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgU0FJX0luaXRQQ00oKSBmdW5jdGlvbiB0byBzdXBwb3J0IDI0Yml0cyBjb25maWd1cmF0aW9uPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgU0QgPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7IGZvbnQtd2VpZ2h0OiBub3JtYWw7Ij51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyBmb250LXdlaWdodDogbm9ybWFsOyI+dXBkYXRlIEhBTF9TRF9HZXRfQ2FyZEluZm8oKSB0byBwcm9wZXJseSBzdXBwb3J0IGhpZ2ggY2FwYWNpdHkgY2FyZHM8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7IGZvbnQtd2VpZ2h0OiBub3JtYWw7Ij48YnI+PC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgU1BESUZSWCA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsiPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgU1BESUZSWF9ETUFSeENwbHQoKSBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiB0byZuYnNwO2NoZWNrIG9uIGNpcmN1bGFyIG1vZGUgYmVmb3JlIGRpc2FibGluZyB0aGUgRE1BPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgVElNIDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyBmb250LXdlaWdodDogbm9ybWFsOyI+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSBIQUxfVElNX0NvbmZpZ0Nsb2NrU291cmNlKCkgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24gZm9yIHByb3BlciBwYXJhbWV0ZXJzIGNoZWNrPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgVUFSVDwvc3Bhbj4gdXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSBfX0hBTF9VQVJUX0NMRUFSX0lUIG1hY3JvIGZvciBwcm9wZXIgZnVuY3Rpb25uaW5nJm5ic3A7PC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5sbCBGTUM8L3NwYW4+IHVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5hZGQgRk1DX1BBR0VfU0laRV81MTIgZGVmaW5lPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5sbCBTRE1NQzwvc3Bhbj4gdXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZSBTRE1NQ19TZXRTRE1NQ1JlYWRXYWl0TW9kZSgpIGZ1bmN0aW9uIGZvciBwcm9wZXIgZnVuY3Rpb25uaW5nPC9zcGFuPjwvbGk+PC91bD48L3VsPjxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IGluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiBpbml0aWFsOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyB3aWR0aDogMTgwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiB3aGl0ZTsiPlYxLjAuMiAvIDIxLVNlcHRlbWJlci0yMDE1PC9zcGFuPjwvaDM+Ci08cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwY20gNC41cHQgMThwdDsiPjxiIHN0eWxlPSIiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiBWZXJkYW5hOyBjb2xvcjogYmxhY2s7Ij5NYWluCi1DaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPjx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGNtOyIgdHlwZT0ic3F1YXJlIj48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgR2VuZXJpYyA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyBmb250LXdlaWdodDogbm9ybWFsOyI+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPnN0bTMyZjd4eF9oYWwuY29uZl90ZW1wbGF0ZS5oOiB1cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5IU0VfU1RBUlRVUF9USU1FT1VUPC9zcGFuPjwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+c3RtMzJmN3h4X2hhbF9kZWYuaDogdXBkYXRlIHRoZTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPiBxdW90YXRpb24gbWFya3MgdXNlZCBpbiAjZXJyb3IiVVNFX1JUT1Mgc2hvdWxkIGJlIDAgaW4gdGhlIGN1cnJlbnQgSEFMIHJlbGVhc2UiPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgRE1BPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsiPiB1cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+T3ZlcmFsbCAKLWRyaXZlciB1cGRhdGUgZm9yIGNvZGUgb3B0aW1pemF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPmFkZCAKLVN0cmVhbUJhc2VBZGRyZXNzIGFuZCBTdHJlYW1JbmRleCBuZXcgZmllbGRzIGluIHRoZSBETUFfSGFuZGxlVHlwZURlZiAKLXN0cnVjdHVyZTwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+YWRkIAotRE1BX0Jhc2VfUmVnaXN0ZXJzIHByaXZhdGUgc3RydWN0dXJlPC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5hZGQgc3RhdGljIGZ1bmN0aW9uIAotRE1BX0NhbGNCYXNlQW5kQml0c2hpZnQoKTwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlIAotSEFMX0RNQV9Jbml0KCkgZnVuY3Rpb24gdG8gdXNlIHRoZSBuZXcgYWRkZWQgc3RhdGljIGZ1bmN0aW9uPC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgCi1IQUxfRE1BX0RlSW5pdCgpIGZ1bmN0aW9uIHRvIG9wdGltaXplIGNsZWFyIGZsYWcgb3BlcmF0aW9uczwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlIAotSEFMX0RNQV9TdGFydF9JVCgpIGZ1bmN0aW9uIHRvIG9wdGltaXplIGludGVycnVwdHMgZW5hYmxlPC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgCi1IQUxfRE1BX1BvbGxGb3JUcmFuc2ZlcigpIGZ1bmN0aW9uIHRvIG9wdGltaXplIGNoZWNrIG9uIGZsYWdzPC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgCi1IQUxfRE1BX0lSUUhhbmRsZXIoKSBmdW5jdGlvbiB0byBvcHRpbWl6ZSBpbnRlcnJ1cHQgZmxhZyBtYW5hZ2VtZW50PC9zcGFuPjwvbGk+PC91bD48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBFVEgmbmJzcDs8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsiPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5yZW1vdmUgZHVwbGljYXRlZCBtYWNybyBJU19FVEhfUlhfTU9ERSgpPC9zcGFuPjxzbWFsbD48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+PC9zcGFuPjwvc21hbGw+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBHUElPIDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyBmb250LXdlaWdodDogbm9ybWFsOyI+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlJlbmFtZSAKLUdQSU9fU1BFRURfTE9XIGRlZmluZSB0byBHUElPX1NQRUVEX0ZSRVFfTE9XPC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5SZW5hbWUgCi1HUElPX1NQRUVEX01FRElVTSBkZWZpbmUgdG8gR1BJT19TUEVFRF9GUkVRX01FRElVTTwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+UmVuYW1lIAotR1BJT19TUEVFRF9GQVNUIGRlZmluZSB0byBHUElPX1NQRUVEX0ZSRVFfSElHSDwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+UmVuYW1lIAotR1BJT19TUEVFRF9ISUdIIGRlZmluZSB0byBHUElPX1NQRUVEX0ZSRVFfVkVSWV9ISUdIPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgSEFTSCA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsiPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5SZW5hbWUgCi1IQUxfSEFTSF9TVEFURVR5cGVEZWYgdG8gSEFMX0hBU0hfU3RhdGVUeXBlRGVmPC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5SZW5hbWUgCi1IQUxfSEFTSF9QaGFzZVR5cGVEZWYgdG8gSEFMX0hBU0hQaGFzZVR5cGVEZWY8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBSQ0MgPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7IGZvbnQtd2VpZ2h0OiBub3JtYWw7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZSB2YWx1ZXMgZm9yIExTRSBEcml2ZSBjYXBhYmlsaXR5IGRlZmluZXM8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgUExMTi9QTExJMlNOL1BMTFNBSSBWQ08gbWluIHZhbHVlIDEwME1IeiBpbnN0ZWFkIG9mIDE5Mk1Iejwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPmFkZCBfX0hBTF9SQ0NfTUNPMV9DT05GSUcoKSBhbmQgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+X19IQUxfUkNDX01DTzJfQ09ORklHKCkgbWFjcm9zPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjwvbGk+PC91bD48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlIEhBTF9SQ0NFeF9QZXJpcGhDTEtDb25maWcoKSBmdW5jdGlvbiB0byByZXNldCB0aGUgQmFja3VwIGRvbWFpbiBvbmx5IGlmIHRoZSBSVEMgQ2xvY2sgc291cmNlIHNlbGVjdGlvbiBpcyBtb2RpZmllZCZuYnNwOzwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIFRJTTwvc3Bhbj4gdXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgX19IQUxfVElNX1NFVF9DT01QQVJFKCkgbWFjcm88L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5yZW1vdmUgdXNlbGVzcyBhc3NlcnQoKSBpbiZuYnNwO0hBTF9USU1fUFdNX0NvbmZpZ0NoYW5uZWwoKSwgVElNX09DMl9TZXRDb25maWcoKSBhbmQgSEFMX1RJTV9QV01fQ29uZmlnQ2hhbm5lbCgpIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPmZ1bmN0aW9uczwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIENBTjwvc3Bhbj4gdXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPmFkZCB0aGUgY2xlYXIgZmxhZyBFUlJJIGJpdCBpbiBIQUxfQ0FOX0lSUUhhbmRsZXIoKTwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIEkyUzwvc3Bhbj4gdXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZSBJMlMgSEFMX0kyU19UcmFuc21pdCgpIEFQSSZuYnNwO3RvIGtlZXAgdGhlIGNoZWNrIG9uIGJ1c3kgZmxhZyBvbmx5IGZvciB0aGUgc2xhdmU8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBRU1BJPC9zcGFuPiB1cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+QWRkIF9fSEFMX1FTUElfQ0xFQVJfRkxBRygpIGJlZm9yZSBRU1BJX0NvbmZpZygpPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgVUFSVDwvc3Bhbj4gdXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPlJlbW92ZQotZW5hYmxpbmcgb2YgRVJSIElUIHNvdXJjZSBhbmQgUEUgc291cmNlIGZyb20gSEFMX1VBUlRfVHJhbnNtaXRfSVQoKSBhbmQKLXJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBkaXNhYmxpbmcgRVJSL1BFIElUIGZyb20gVUFSVF9FbmRUcmFuc21pdF9JVCgpPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgUENEPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPiB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+Jm5ic3A7PC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPkNsZWFuIHN0YXR1cyBwaGFzZSByZWNlaXZlZCBpbnRlcnJ1cHQgd2hlbiBETUEgbW9kZSBlbmFibGVkJm5ic3A7PC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgSENEIDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij48L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgdG8gdXNlIGxvY2FsIAotdmFyaWFibGUgaW4gVVNCIEhvc3QgY2hhbm5lbCByZS1hY3RpdmF0aW9uPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5sbCBGTUM8L3NwYW4+IHVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgdGhlIGRlZmluZSBGTUMgV3JpdGUgRklGTyBEaXNhYmxlL0VuYWJsZTogRk1DX1dSSVRFX0ZJRk9fRElTQUJMRSBhbmQgRk1DX1dSSVRFX0ZJRk9fRU5BQkxFPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+cmVtb3ZlIHJldHVybiBIQUxfRVJST1IgZnJvbSBGTUNfU0RSQU1fU2VuZENvbW1hbmQoKSBmdW5jdGlvbjwvc3Bhbj48L2xpPjwvdWw+PC91bD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj48aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7IC1tb3otYmFja2dyb3VuZC1jbGlwOiBpbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiBpbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgd2lkdGg6IDE4MHB4OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IEFyaWFsOyBjb2xvcjogd2hpdGU7Ij5WMS4wLjEgLyAyNS1KdW5lLTIwMTU8L3NwYW4+PC9oMz4KLTxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBjbSA0LjVwdCAxOHB0OyI+PGIgc3R5bGU9IiI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7IGNvbG9yOiBibGFjazsiPk1haW4KLUNoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+PHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwY207IiB0eXBlPSJzcXVhcmUiPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmEsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMHB0OyI+R2VuZXJhbCB1cGRhdGVzIAotdG8gZml4IGtub3duIGRlZmVjdHMgYW5kIGVuaGFuY2VtZW50cyBpbXBsZW1lbnRhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBDUkMmbmJzcDs8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZSBfX0hBTF9DUkNfU0VUX0lEUigpIG1hY3JvIGltcGxlbWVudGF0aW9uIHRvIHVzZSBXUklURV9SRUcoKSBpbnN0ZWFkIG9mIE1PRElGWV9SRUcoKTxicj48L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBDRUMmbmJzcDs8L3NwYW4+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZSB0aW1lb3V0IG1hbmFnZW1lbnQgaW4gSEFMX0NFQ19UcmFuc21pdCgpIGFuZCBIQUxfQ0VDX1JlY2VpdmUoKSBmdW5jdGlvbnM8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBDb3J0ZXggPC9zcGFuPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgSEFMX01QVV9Db25maWdSZWdpb24oKSBmdW5jdGlvbiB0byBiZSBtaXNyYSBjb21wbGlhbnQ8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBFVEggPC9zcGFuPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5SZW1vdmUgCi1kdXBsaWNhdGVkIElTX0VUSF9EVVBMRVhfTU9ERSgpIGFuZCBJU19FVEhfUlhfTU9ERSgpIG1hY3Jvczwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlJlbW92ZSAKLWlsbGVnYWwgc3BhY2UgRVRIX01BQ19SRUFEQ09OVFJPTExFUl9GTFVTSElORyBtYWNybzwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlVwZGF0ZSAKLUVUSF9NQUNfUkVBRENPTlRST0xMRVJfWFhYIGRlZmluZWQgdmFsdWVzIChYWFggY2FuIGJlIElETEUsIFJFQURJTkdfREFUQSBhbmQgCi1SRUFESU5HX1NUQVRVUyk8L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBGTEFTSCA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZSBGTEFTSF9PQl9HZXRSRFAoKSBmdW5jdGlvbiB0byByZXR1cm4gdWludDhfdCAmbmJzcDtpbnN0ZWFkIG9mIEZsYWdTdGF0dXM8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgT0JfUkRQX0xFVkVMeCBkZWZpbml0aW9uPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+YWRkIF9fSEFMX0ZMQVNIX0dFVF9MQVRFTkNZKCkgbWFjcm88L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBIQVNIIDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij48L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlCi1IQVNIX0RNQVhmZXJDcGx0KCkgYW5kIEhBU0hFeF9ETUFYZmVyQ3BsdCgpIGZ1bmN0aW9ucyB0byBwcm9wZXJseQotY29uZmlndXJlIHRoZSBudW1iZXIgb2YgdmFsaWQgYml0cyBpbiBsYXN0IHdvcmQgb2YgdGhlIG1lc3NhZ2U8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgSEFMX0hBU0hfU0hBMV9BY2N1bXVsYXRlKCkgZnVuY3Rpb24gdG8gY2hlY2sgb24gdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgYnVmZmVyPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlCi1IQUxfSEFTSF88c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc3R5bGU6IGl0YWxpYzsiPk1PREU8L3NwYW4+X1N0YXJ0X0lUKCkgZnVuY3Rpb25zICg8c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+TW9kZSA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjwvc3Bhbj5zdGFuZHMgZm9yIE1ENSwgU0hBMSwgU0hBMjI0IGFuZCBTSEEyNTY8c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+IDwvc3Bhbj48L3NwYW4+KSB0byA6PC9zcGFuPjwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPkZpeCBwcm9jZXNzaW5nIAotZmFpbCBmb3Igc21hbGwgaW5wdXQgYnVmZmVyczwvc3Bhbj4KLTwvbGk+PGxpIHN0eWxlPSJtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7IGNvbG9yOiBibGFjazsiIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+dG8gdW5sb2NrIAotdGhlIHByb2Nlc3MgYW5kIGNhbGwgcmV0dXJuIEhBTF9PSyBhdCB0aGUgZW5kIG9mIEhBU0ggcHJvY2Vzc2luZyB0byBhdm9pZCAKLWluY29ycmVjdCByZXBlYXRpbmcgc29mdHdhcmU8L3NwYW4+Ci08L2xpPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPnByb3Blcmx5IHRvIG1hbmFnZSAKLXRoZSBIYXNoSVRDb3VudGVyIGVmZmljaWVuY3kgPC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgdG8gY2FsbCB0aGUgCi1IQUxfSEFTSF9JbkNwbHRDYWxsYmFjaygpIGF0IHRoZSBlbmQgb2YgdGhlIGNvbXBsZXRlIGJ1ZmZlciBpbnN0ZWFkIAotb2Y8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij4gCi1ldmVyeSBlYWNoIDUxMiBiaXRzIDwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlIEhBU0hfSVRfRElOSSBhbmQgSEFTSF9JVF9EQ0kgZGVmaW5pdGlvbjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZSBfX0hBTF9IQVNIX0dFVF9GTEFHKCkgbWFjcm8gZGVmaW5pdGlvbjxicj48L3NwYW4+PC9saT48L3VsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPkhBTCBJMlMgPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZTwvc3Bhbj48L2xpPjx1bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgSEFMX0kyU19UcmFuc21pdCgpIGZ1bmN0aW9uIHRvIGVuc3VyZSB0aGUgd2FpdGluZyBvbiBCdXN5IGZsYWcgaW4gY2FzZSBvZiBzbGF2ZSBtb2RlIHNlbGVjdGlvbjwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIFJUQyA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZSBIQUxfUlRDRXhfU2V0V2FrZVVwVGltZXIoKSBhbmQgSEFMX1JUQ0V4X1NldFdha2VVcFRpbWVyX0lUKCkgZnVuY3Rpb25zIHRvIHByb3Blcmx5IGNoZWNrIG9uIFdVVFdGIGZsYWc8L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5yZW5hbWUgUlRDX1RJTUVTVEFNUFBJTl9QSTggZGVmaW5lIHRvIFJUQ19USU1FU1RBTVBQSU5fUE9TMTwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPnJlbmFtZSBSVENfVElNRVNUQU1QUElOX1BDMSBkZWZpbmUgdG8gUlRDX1RJTUVTVEFNUFBJTl9QT1MyPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlIF9fSEFMX1JUQ19XQUtFVVBUSU1FUl9DTEVBUl9GTEFHKCkgbWFjcm8gZGVmaW5pdGlvbjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZSBfX0hBTF9SVENfVEFNUEVSX0dFVF9JVCgpIG1hY3JvIGRlZmluaXRpb248L3NwYW4+PC9saT48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGUgX19IQUxfUlRDX1RBTVBFUl9DTEVBUl9GTEFHKCkgbWFjcm8gZGVmaW5pdGlvbjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZSBfX0hBTF9SVENfVElNRVNUQU1QX0NMRUFSX0ZMQUcoKSBtYWNybyBkZWZpbml0aW9uPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlIF9fSEFMX1JUQ19UQU1QRVJfVElNRVNUQU1QX0VYVElfR0VUX0ZMQUcoKSBtYWNybyBkZWZpbml0aW9uPC9zcGFuPjwvbGk+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+YWRkIFJUQ19UQU1QQ1JfVEFNUFhFIGFuZCBSVENfVEFNUENSX1RBTVBYSUUgZGVmaW5lczwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIFNNQVJUQ0FSRCA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPmFkZCBTTUFSVENBUkRfRkxBR19JRExFLCBTTUFSVENBUkRfSVRfSURMRSBhbmQmbmJzcDsgU01BUlRDQVJEX0NMRUFSX0lETEVGIGRlZmluZXM8YnI+PC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5IQUwgVUFSVCA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlPC9zcGFuPjwvbGk+PHVsPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZSBIQUxfVUFSVF9ETUFSZXN1bWUoKSBmdW5jdGlvbiB0byBjbGVhciBvdmVycnVuIGZsYWcgYmVmb3JlIHJlc3VtaW5nIHRoZSBSeCB0cmFuc2Zlcjwvc3Bhbj48L2xpPjxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZSBVQVJUX0ZMQUdfU0JLRiBkZWZpbml0aW9uPGJyPjwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+SEFMIFVTQVJUIDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlIEhBTF9VU0FSVF9ETUFSZXN1bWUoKSBmdW5jdGlvbiB0byA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5jbGVhciBvdmVycnVuIGZsYWcgYmVmb3JlIHJlc3VtaW5nIHRoZSBSeCB0cmFuc2Zlcjwvc3Bhbj48L2xpPjwvdWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJ1ZlcmRhbmEnLCdzYW5zLXNlcmlmJzsgZm9udC1zaXplOiAxMHB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+TEwgRk1DIDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij51cGRhdGU8L3NwYW4+PC9saT48dWw+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+dXBkYXRlIE5BTkQgdGltaW5nIG1heGltdW0gdmFsdWVzPC9zcGFuPjwvbGk+PC91bD48bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5MTCBVU0IgPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPnVwZGF0ZTwvc3Bhbj4KLTwvbGk+PHVsPjxsaSBzdHlsZT0ibWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyBjb2xvcjogYmxhY2s7IiBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICdWZXJkYW5hJywnc2Fucy1zZXJpZic7IGZvbnQtc2l6ZTogMTBwdDsiPlVTQl9GbHVzaFR4RmlmbyBBUEk6IAotdXBkYXRlIHRvIGZsdXNoIGFsbCBUeCBGSUZPPC9zcGFuPgotPC9saT48bGkgc3R5bGU9Im1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsgY29sb3I6IGJsYWNrOyIgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAnVmVyZGFuYScsJ3NhbnMtc2VyaWYnOyBmb250LXNpemU6IDEwcHQ7Ij5VcGRhdGUgdG8gdXNlIGxvY2FsIAotdmFyaWFibGUgaW4gVVNCIEhvc3QgY2hhbm5lbCByZS1hY3RpdmF0aW9uPC9zcGFuPjwvbGk+PC91bD48L3VsPgotPGI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgY29sb3I6IGJsYWNrOyI+PC9zcGFuPjwvdT48L2I+Ci08aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7IC1tb3otYmFja2dyb3VuZC1jbGlwOiBpbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiBpbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogaW5pdGlhbDsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgd2lkdGg6IDE4MHB4OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6IEFyaWFsOyBjb2xvcjogd2hpdGU7Ij5WMS4wLjAgLyAxMi1NYXktMjAxNTwvc3Bhbj48L2gzPgotPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGNtIDQuNXB0IDE4cHQ7Ij48YiBzdHlsZT0iIj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogVmVyZGFuYTsgY29sb3I6IGJsYWNrOyI+TWFpbgotQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjwvcD48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPjwvc3Bhbj48dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBjbTsiIHR5cGU9InNxdWFyZSI+PGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogVmVyZGFuYTsgZm9udC1zaXplOiAxMHB0OyI+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Ij48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBWZXJkYW5hOyBmb250LXNpemU6IDEwcHQ7Ij5GaXJzdCBvZmZpY2lhbCByZWxlYXNlIGZvcjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IFZlcmRhbmE7IGZvbnQtc2l6ZTogMTBwdDsiPjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7IGZvbnQtd2VpZ2h0OiBib2xkOyI+IFNUTTMyRjc1Nnh4Lzc0Nnh4Lzc0NXh4PC9zcGFuPiAKLWRldmljZXM8L3NwYW4+PC9saT48L3VsPgotPGI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgY29sb3I6IGJsYWNrOyI+PC9zcGFuPjwvdT48L2I+Ci08aDIgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7IC1tb3otYmFja2dyb3VuZC1jbGlwOiBpbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiBpbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogaW5pdGlhbDsiPjxhIG5hbWU9IkxpY2Vuc2UiPjwvYT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB0OyBjb2xvcjogd2hpdGU7Ij5MaWNlbnNlPG86cD48L286cD48L3NwYW4+PC9oMj4KLTxkaXYgc3R5bGU9InRleHQtYWxpZ246IGp1c3RpZnk7Ij4KLTxkaXYgc3R5bGU9InRleHQtYWxpZ246IGp1c3RpZnk7Ij48Zm9udCBzaXplPSItMSI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Ij5SZWRpc3RyaWJ1dGlvbgotYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6PC9zcGFuPjxicj4KLTwvZm9udD4KLTxvbD4KLTxsaT48Zm9udCBzaXplPSItMSI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Ij5SZWRpc3RyaWJ1dGlvbnMKLW9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YKLWNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Ij48L3NwYW4+PC9mb250PjwvbGk+Ci08bGk+PGZvbnQgc2l6ZT0iLTEiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyI+UmVkaXN0cmlidXRpb25zCi1pbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mCi1jb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyI+dGhlCi1kb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsiPjwvc3Bhbj48L2ZvbnQ+PC9saT4KLTxsaT48Zm9udCBzaXplPSItMSI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Ij5OZWl0aGVyIHRoZQotbmFtZSBvZiBTVE1pY3JvZWxlY3Ryb25pY3Mgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZQotdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCA8L3NwYW4+PGJyPgotPC9mb250PiA8L2xpPgotPC9vbD4KLTxmb250IHNpemU9Ii0xIj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOwotZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLjwvc3Bhbj48YnI+Ci08c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsiPjwvc3Bhbj48YnI+Ci08c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsiPlRISVMKLVNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKLUFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyI+IFdBUlJBTlRJRVMsCi1JTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgotTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsiPlBBUlRJQ1VMQVIKLVBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCi1DT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyI+RElSRUNULAotSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0oSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsiPlBST0NVUkVNRU5UIE9GCi1TVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKLUJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsiPiBDQVVTRUQgQU5EIE9OCi1BTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsiPk9USEVSV0lTRSkKLUFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLVRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS48L3NwYW4+PC9mb250PiA8L2Rpdj4KLTxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyI+PC9zcGFuPjwvZGl2PgotPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgY29sb3I6IGJsYWNrOyI+PC9zcGFuPgotPGRpdiBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyIgYWxpZ249ImNlbnRlciI+PHNwYW4gc3R5bGU9ImNvbG9yOiBibGFjazsiPgotPGhyIGFsaWduPSJjZW50ZXIiIHNpemU9IjIiIHdpZHRoPSIxMDAlIj48L3NwYW4+PC9kaXY+Ci08cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW4gNC41cHQgMC4yNWluOyB0ZXh0LWFsaWduOiBjZW50ZXI7IiBhbGlnbj0iY2VudGVyIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OywmcXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBjb2xvcjogYmxhY2s7Ij5Gb3IKLWNvbXBsZXRlIGRvY3VtZW50YXRpb24gb24gPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7Ij5TVE0zMjxzcGFuIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij4gTWljcm9jb250cm9sbGVycyB2aXNpdCA8L3NwYW4+PHU+PHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+PGEgaHJlZj0iaHR0cDovL3d3dy5zdC5jb20vaW50ZXJuZXQvbWN1L2ZhbWlseS8xNDEuanNwIiB0YXJnZXQ9Il9ibGFuayI+d3d3LnN0LmNvbS9TVE0zMjwvYT48L3NwYW4+PC91Pjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PG86cD48L286cD48L3NwYW4+PC9wPgorICAgICAgPC91bD4KKyAgICAgPC91bD4KKyAgICA8L3VsPgorICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiB3aGl0ZTsiPlYxLjIuOC8gMTMtRmVicnVhcnktMjAyMDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgorICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+CisgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsIHVwZGF0ZXMgdG8gZml4IGtub3duIGRlZmVjdHMgYW5kCisgICAgICAgICBlbmhhbmNlbWVudHMgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwvTEwgR1BJTyZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSZuYnNwO0dQSU8gaW5pdGlhbGl6YXRpb24gc2VxdWVuY2U8Yj4mbmJzcDs8L2I+dG8KKyAgICAgICAgICBhdm9pZCB1bndhbnRlZCBwdWxzZSBvbiBHUElPIDxzcGFuIGNsYXNzPSJncmFtZSI+UGluJ3M8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEkyQyZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfSTJDX0VWXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KQorICAgICAgICAgIEFQSSB0byBmaXggSTJDIHNlbmQgYnJlYWsgaXNzdWUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBhZGRpdGlvbmFsIGNoZWNrIG9uIGhpMmMtJmd0O2hkbWF0eCwKKyAgICAgICAgICAgaGRtYXR4LSZndDtYZmVyQ3BsdENhbGxiYWNrLCZuYnNwO2hpMmMtJmd0O2hkbWFyeCwgaGRtYXJ4LSZndDtYZmVyQ3BsdENhbGxiYWNrCisgICAgICAgICAgIGluIEkyQ19NYXN0ZXJfPHNwYW4gY2xhc3M9ImdyYW1lIj5TQig8L3NwYW4+KSBBUEkgdG8KKyAgICAgICAgICAgYXZvaWQmbmJzcDtlbmFibGluZyBETUEgcmVxdWVzdCZuYnNwO3doZW4gSVQgbW9kZSBpcyB1c2VkLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9JMkNfRVJfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCisgICAgICAgICAgQVBJIHRvIGZpeCBhY2tub3dsZWRnZSBmYWlsdXJlIGlzc3VlIHdpdGggSTJDJm5ic3A7bWVtb3J5IElUCisgICAgICAgICAgcHJvY2Vzc2VzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDtBZGQmbmJzcDtzdG9wIGNvbmRpdGlvbgorICAgICAgICAgICBnZW5lcmF0aW9uJm5ic3A7d2hlbiZuYnNwO05BQ0sgb2NjdXJzLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlJm5ic3A7SEFMX0kyQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikKKyAgICAgICAgICBBUEkgdG8gZm9yY2Ugc29mdHdhcmUgcmVzZXQgYmVmb3JlIHNldHRpbmcgbmV3IEkyQyBjb25maWd1cmF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUwgSTJDIHByb2Nlc3NlcyB0byByZXBvcnQKKyAgICAgICAgICBFcnJvckNvZGUmbmJzcDt3aGVuIHdyb25nIEkyQyBzdGFydCBjb25kaXRpb24gPHNwYW4gY2xhc3M9ImdyYW1lIj5vY2N1cnM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDtBZGQgbmV3Jm5ic3A7RXJyb3JDb2RlIGRlZmluZToKKyAgICAgICAgICAgSEFMX0kyQ19XUk9OR19TVEFSVDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7U2V0Jm5ic3A7RXJyb3JDb2RlIHBhcmFtZXRlciBpbiZuYnNwO0kyQworICAgICAgICAgICBoYW5kbGUgdG8mbmJzcDtIQUxfSTJDX1dST05HX1NUQVJUPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUmbmJzcDtJMkNfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUFYZmVyQ3BsdCg8L3NwYW4+KSwKKyAgICAgICAgICBJMkNfRE1BRXJyb3IoKSBhbmQgSTJDX0RNQUFib3J0KCkgQVBJcyB0byBmaXggaGFyZGZhdWx0IGlzc3VlIHdoZW4KKyAgICAgICAgICBoZG1hdHggYW5kIGhkbWFyeCZuYnNwO3BhcmFtZXRlcnMgaW4gaTJjIGhhbmRsZSBhcmVuJ3QgaW5pdGlhbGl6ZWQKKyAgICAgICAgICAoTlVMTCBwb2ludGVyKS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBhZGRpdGlvbmFsIGNoZWNrIG9uIGhpMmMtJmd0O2hkbXR4IGFuZAorICAgICAgICAgICBoaTJjLSZndDtoZG1hcnggYmVmb3JlIHJlc2V0dGluZyZuYnNwO0RNQSBUeC9SeCBjb21wbGV0ZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmNhbGxiYWNrPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgQURDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCAiQURDX0lOVEVSTkFMX05PTkUiIGNoYW5uZWwgdG8KKyAgICAgICAgICBkaXNhYmxlIHRoZSBWQkFUICZhbXA7IFRTVlJFRkUgY2hhbm5lbC48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRENNSSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgRENNSV9TeW5jVW5tYXNrVHlwZURlZiBzdHJ1Y3R1cmUgYW5kIEhBTF9EQ01JXzxzcGFuIGNsYXNzPSJncmFtZSI+Q29uZmlnU3luY1VubWFzayg8L3NwYW4+KSBBUEkgdG8gbWFuYWdlIGVtYmVkZGVkCisgICAgICAgICAgc3luY2hyb25pemF0aW9uIGRlbGltaXRlcnMgdW5tYXNrczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBFWFRJPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsIHVwZGF0ZSB0byBlbmhhbmNlIEhBTCBFWFRJIGRyaXZlciA8c3BhbiBjbGFzcz0iZ3JhbWUiPnJvYnVzdG5lc3M8L3NwYW4+Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgYWRkaXRpb25hbCBhc3NlcnQgY2hlY2sgb24gRVhUSSBjb25maWcgPHNwYW4gY2xhc3M9ImdyYW1lIj5saW5lczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0byBjb21wdXRlIEVYVEkgbGluZSBtYXNrIGJlZm9yZQorICAgICAgICAgICByZWFkL3dyaXRlIGFjY2VzcyB0byBFWFRJIDxzcGFuIGNsYXNzPSJncmFtZSI+cmVnaXN0ZXJzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEVYVEkgY2FsbGJhY2tzIG1hbmFnZW1lbnQgdG8gYmUgY29tcGxpYW50CisgICAgICAgICAgd2l0aCByZWZlcmVuY2UgbWFudWFsOiBvbmx5IG9uZSBQUiByZWdpc3RlciBmb3IgcmlzaW5nIGFuZCBmYWxsaW5nCisgICAgICAgICAgaW50ZXJydXB0cy48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBwYXJhbWV0ZXJzIGluIEVYVElfSGFuZGxlVHlwZURlZgorICAgICAgICAgICBzdHJ1Y3R1cmU6IG1lcmdlIEhBTCBFWFRJIFJpc2luZ0NhbGxiYWNrIGFuZCBGYWxsaW5nQ2FsbGJhY2sgaW4gb25seQorICAgICAgICAgICBvbmUgUGVuZGluZ0NhbGxiYWNrLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIEhBTF9FWFRJX1JJU0lOR19DQl9JRCBhbmQgSEFMX0VYVElfRkFMTElOR19DQl9JRAorICAgICAgICAgICB2YWx1ZXMgZnJvbSBFWFRJX0NhbGxiYWNrSURUeXBlRGVmIGVudW1lcmF0aW9uLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9FWFRJXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KQorICAgICAgICAgIEFQSSB0byBzZXJ2ZSBpbnRlcnJ1cHRzIGNvcnJlY3RseS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0byBjb21wdXRlIEVYVEkgbGluZSBtYXNrIGJlZm9yZSBoYW5kbGUKKyAgICAgICAgICAgRVhUSSBpbnRlcnJ1cHQuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgdG8gc3VwcG9ydCBHUElPIHBvcnQgaW50ZXJydXB0czo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgIkdQSU9TZWwiIHBhcmFtZXRlciBpbgorICAgICAgICAgICBFWFRJX0NvbmZpZ1R5cGVEZWYgc3RydWN0dXJlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBIQVNIJm5ic3A7PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TnVsbCBwb2ludGVyIG9uIGhhbmRsZXIgImhoYXNoIiBpcyBub3cKKyAgICAgICAgICBjaGVja2VkIGJlZm9yZSBhY2Nlc3Npbmcgc3RydWN0dXJlIG1lbWJlcgorICAgICAgICAgICJoaGFzaC0mZ3Q7SW5pdC5EYXRhVHlwZSIgaW4gdGhlIGZvbGxvd2luZyBBUEk6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSF88c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZvbGxvd2luZyA8Yj5pbnRlcnJ1cHQtYmFzZWQ8L2I+IEFQSXMgaGF2ZSBiZWVuCisgICAgICAgICAgYWRkZWQuIEludGVycnVwdCBtb2RlIGNvdWxkIGFsbG93IHRoZSBNQ1UgdG8gZW50ZXIgIlNsZWVwIgorICAgICAgICAgIG1vZGUgd2hpbGUgYSBkYXRhIGJsb2NrIGlzIGJlaW5nIHByb2Nlc3NlZC4gUGxlYXNlIHJlZmVyIHRvIHRoZQorICAgICAgICAgICIjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjIiBzZWN0aW9uIGZvciBkZXRhaWxzCisgICAgICAgICAgYWJvdXQgdGhlaXIgdXNlLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hfU0hBMV9BY2NtbHRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hfTUQ1X0FjY21sdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSEV4X1NIQTIyNF9BY2NtbHRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hFeF9TSEEyNTZfQWNjbWx0XzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZvbGxvd2luZyA8Yj5hbGlhc2VzPC9iPiBoYXZlIGJlZW4gYWRkZWQgKGp1c3QgPGI+Zm9yCisgICAgICAgICAgY2xhcml0eSBzYWtlPC9iPikgYXMgdGhleSBzaGFsbCBiZSB1c2VkIGF0IHRoZSA8Yj5lbmQ8L2I+IG9mIHRoZQorICAgICAgICAgIGNvbXB1dGF0aW9uIG9mIGEgbXVsdGktYnVmZmVycyBtZXNzYWdlIGFuZCBub3QgYXQgdGhlIHN0YXJ0Ojwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hfU0hBMV9BY2NtbHRfPHNwYW4gY2xhc3M9ImdyYW1lIj5FbmQoPC9zcGFuPikKKyAgICAgICAgICAgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIEhBTF9IQVNIX1NIQTFfU3RhcnQoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hfTUQ1X0FjY21sdF88c3BhbiBjbGFzcz0iZ3JhbWUiPkVuZCg8L3NwYW4+KQorICAgICAgICAgICB0byBiZSB1c2VkIGluc3RlYWQgb2YgSEFMX0hBU0hfTUQ1X1N0YXJ0KCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9IQVNIX1NIQTFfQWNjbWx0X0VuZF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pCisgICAgICAgICAgIHRvIGJlIHVzZWQgaW5zdGVhZCBvZiBIQUxfSEFTSF9TSEExX1N0YXJ0X0lUKCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9IQVNIX01ENV9BY2NtbHRfRW5kXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikKKyAgICAgICAgICAgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIEhBTF9IQVNIX01ENV9TdGFydF9JVCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSEV4X1NIQTIyNF9BY2NtbHRfPHNwYW4gY2xhc3M9ImdyYW1lIj5FbmQoPC9zcGFuPikKKyAgICAgICAgICAgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIEhBTF9IQVNIRXhfU0hBMjI0X1N0YXJ0KCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9IQVNIRXhfU0hBMjU2X0FjY21sdF88c3BhbiBjbGFzcz0iZ3JhbWUiPkVuZCg8L3NwYW4+KQorICAgICAgICAgICB0byBiZSB1c2VkIGluc3RlYWQgb2YgSEFMX0hBU0hFeF9TSEEyNTZfU3RhcnQoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hBU0hFeF9TSEEyMjRfQWNjbWx0X0VuZF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pCisgICAgICAgICAgIHRvIGJlIHVzZWQgaW5zdGVhZCBvZiBIQUxfSEFTSEV4X1NIQTIyNF9TdGFydF9JVCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSEV4X1NIQTI1Nl9BY2NtbHRfRW5kXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikKKyAgICAgICAgICAgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIEhBTF9IQVNIRXhfU0hBMjU2X1N0YXJ0X0lUKCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1JU1JBQy0yMDEyIHJ1bGUgUi41LjEgKGlkZW50aWZpZXJzIHNoYWxsIGJlCisgICAgICAgICAgZGlzdGluY3QgaW4gdGhlIGZpcnN0IDMxIGNoYXJhY3RlcnMpIGNvbnN0cmFpbmVkIHRoZSBuYW1pbmcgb2YgdGhlCisgICAgICAgICAgYWJvdmUgbGlzdGVkIGFsaWFzZXMgKGUuZy4gSEFMX0hBU0hFeF9TSEEyNTZfPGI+QWNjbWx0PC9iPl88c3BhbiBjbGFzcz0iZ3JhbWUiPkVuZCg8L3NwYW4+KSBjb3VsZCBub3QgYmUgbmFtZWQgSEFMX0hBU0hFeF9TSEEyNTZfPGI+QWNjdW11bGF0ZTwvYj5fRW5kKCkuCisgICAgICAgICAgT3RoZXJ3aXNlIHRoZSBuYW1lIHdvdWxkIGhhdmUgY29uZmxpY3RlZCB3aXRoIEhBTF9IQVNIRXhfU0hBMjU2XzxiPkFjY3VtdWxhdGU8L2I+X0VuZF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pKS4gSW4gb3JkZXIgdG8gaGF2ZSBhbGlnbmVkIG5hbWVzIGZvbGxvd2luZworICAgICAgICAgIEFQSXMgaGF2ZSBiZWVuIHJlbmFtZWQ6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSF9NRDVfPHNwYW4gY2xhc3M9ImdyYW1lIj5BY2N1bXVsYXRlKDwvc3Bhbj4pCisgICAgICAgICAgIHJlbmFtZWQgSEFMX0hBU0hfTUQ1X0FjY21sdCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSF9TSEExXzxzcGFuIGNsYXNzPSJncmFtZSI+QWNjdW11bGF0ZSg8L3NwYW4+KQorICAgICAgICAgICByZW5hbWVkIEhBTF9IQVNIX1NIQTFfQWNjbWx0KCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9IQVNIRXhfU0hBMjI0XzxzcGFuIGNsYXNzPSJncmFtZSI+QWNjdW11bGF0ZSg8L3NwYW4+KQorICAgICAgICAgICByZW5hbWVkIEhBTF9IQVNIRXhfU0hBMjI0X0FjY21sdCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSEV4X1NIQTI1Nl88c3BhbiBjbGFzcz0iZ3JhbWUiPkFjY3VtdWxhdGUoPC9zcGFuPikKKyAgICAgICAgICAgcmVuYW1lZCBIQUxfSEFTSEV4X1NIQTI1Nl9BY2NtbHQoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFTSCA8Yj5oYW5kbGVyPC9iPiBzdGF0ZSBpcyA8Yj5ubyA8c3BhbiBjbGFzcz0iZ3JhbWUiPm1vcmU8L3NwYW4+PC9iPiByZXNldCB0byBIQUxfSEFTSF9TVEFURV9SRUFEWSA8Yj5vbmNlIERNQQorICAgICAgICAgIGhhcyBiZWVuIHN0YXJ0ZWQ8L2I+IGluIHRoZSBmb2xsb3dpbmcgQVBJczo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9IQVNIX01ENV9TdGFydF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0hNQUNfTUQ1X1N0YXJ0XzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSEFTSF9TSEExX1N0YXJ0XzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSE1BQ19TSEExX1N0YXJ0XzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQVNIIDxiPnBoYXNlPC9iPiBzdGF0ZSBpcyBub3cgc2V0IHRvCisgICAgICAgICAgSEFMX0hBU0hfUEhBU0VfUkVBRFk8Yj4gb25jZSB0aGUgZGlnZXN0IGhhcyBiZWVuIHJlYWQ8L2I+IGluIHRoZQorICAgICAgICAgIGZvbGxvd2luZyBBUElzOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFTSF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5ITUFDXzxzcGFuIGNsYXNzPSJncmFtZSI+UHJvY2Vzc2luZyg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFTSF88c3BhbiBjbGFzcz0iZ3JhbWUiPlN0YXJ0KDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQVNIXzxzcGFuIGNsYXNzPSJncmFtZSI+RmluaXNoKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5DYXNlIG9mIGEgbGFyZ2UgYnVmZmVyIHNjYXR0ZXJlZCBhcm91bmQgaW4gbWVtb3J5CisgICAgICAgICAgZWFjaCBwaWVjZSBvZiB3aGljaCBpcyA8Yj5ub3Q8L2I+IG5lY2Vzc2FyaWx5IGEgPGI+bXVsdGlwbGUgb2YgNDwvYj4KKyAgICAgICAgICBieXRlcyBpbiBsZW5ndGguPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5JbiBzZWN0aW9uICIjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyCisgICAgICAgICAgICMjIyMjIiwgc3ViLXNlY3Rpb24gIioqKiBSZW1hcmtzIG9uIG1lc3NhZ2UgbGVuZ3RoCisgICAgICAgICAgICoqKiIgYWRkZWQgdG8gcHJvdmlkZSByZWNvbW1lbmRhdGlvbnMgdG8gZm9sbG93IGluIHN1Y2ggY2FzZS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk5vIG1vZGlmaWNhdGlvbiBvZiB0aGUgZHJpdmVyIGFzIHRoZSByb290LWNhdXNlCisgICAgICAgICAgIGlzIGF0IGRlc2lnbi1sZXZlbC48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFNETU1DJm5ic3A7PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4Jm5ic3A7dHlwbyBpbiAiRmlsZUZvcm1hdEdyb3VwIgorICAgICAgICAgIHBhcmFtZXRlciBpbiB0aGUgSEFMX01NQ19DYXJkQ1NEVHlwZURlZiBhbmQgSEFMX1NEX0NhcmRDU0RUeXBlRGVmCisgICAgICAgICAgc3RydWN0dXJlcy48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4IGFuIGltcHJvdmUgaGFuZGxlIHN0YXRlIGFuZCBlcnJvciA8c3BhbiBjbGFzcz0iZ3JhbWUiPm1hbmFnZW1lbnQ8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSB0aGUgZGVmaW5lZCBNTUMgY2FyZCBjYXBhY2l0eSB0eXBlIHRvIGJlCisgICAgICAgICAgbW9yZSBtZWFuaW5nZnVsOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIDxiPk1NQ19ISUdIX1ZPTFRBR0VfQ0FSRDwvYj4gdG8gPGI+TU1DIExPV19DQVBBQ0lUWV9DQVJEPC9iPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIDxiPk1NQ19EVUFMX1ZPTFRBR0VfQ1JBRDwvYj4gdG8gPGI+TU1DX0hJR0hfQ0FQQUNJVFlfQ0FSRDwvYj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFFTUEkgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIExvY2sgbWVjaGFuaXNtIGZyb20gSEFMX1FTUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pIGFuZCBIQUxfUVNQSV9EZUluaXQoKSBBUElzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48YiBzdHlsZT0ib3JwaGFuczogMjsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwKKyAgICAgICAgIExQVElNJm5ic3A7PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0ib3JwaGFuczogMjsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIGEgcG9sbGluZyBtZWNoYW5pc20gdG8gY2hlY2sKKyAgICAgICAgICBvbiZuYnNwO0xQVElNX0ZMQUdfWFhPSyZuYnNwO2ZsYWdzIGluIGRpZmZlcmVudCA8c3BhbiBjbGFzcz0iZ3JhbWUiPkFQSTwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCZuYnNwO0xQVElNXzxzcGFuIGNsYXNzPSJncmFtZSI+V2FpdEZvckZsYWcoPC9zcGFuPikmbmJzcDtBUEkmbmJzcDt0bworICAgICAgICAgICB3YWl0IGZvciBmbGFnIHNldC48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlBlcmZvcm0gbmV3IGNoZWNrcyBvbiBIQUxfTFBUSU1fU1RBVEVfVElNRU9VVC48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPldvcmthcm91bmQgdG8gZml4IE1DVSBzbGFjayBpbiBzbGVlcCA8c3BhbiBjbGFzcz0iZ3JhbWUiPm1vZGU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgX19IQUxfTFBUSU1fRElTQUJMRSAoKSBtYWNybyB1c2VkIHRvCisgICAgICAgICAgIGRpc2FibGUgTFBUSU0gSFcgaW5zdGFuY2U8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIHRoZQorICAgICAgICAgICAgTFBUSU1fQ1JfRU5BQkxFIGJpdCBjbGVhci48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgYSBuZXcgPHNwYW4gY2xhc3M9ImdyYW1lIj5BUEkmbmJzcDsgTFBUSU08L3NwYW4+X0Rpc2FibGUoKSBkZWZpbmVkIGluJm5ic3A7CisgICAgICAgICAgICBoYWxfbHB0aW0uYzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDwvdWw+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgX19IQUxfTFBUSU1fUkVTRVRfSEFORExFX1NUQVRFKF9fSEFORExFX18pCisgICAgICAgICAgbWFjcm8gYnkgYWRkaW5nIGEgc3BlY2lmaWMgLi4uLiB3aGVuIHVzaW5nIGNhbGxiYWNrIHJlZ2lzdGVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPl9fSEFMX0xQVElNX0VOQUJMRTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgdXNzZWxlc3MgY2hlY2sgb24gTFBUSU0yIGluIHRoZSBMTCBkcml2ZXIKKyAgICAgICAgICBzaW5jZSBGNyBzdXBwb3J0IG9ubHkgb25lIGluc3RhbmNlIG9mIExQVElNLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgPHNwYW4gY2xhc3M9ImdyYW1lIj50aGUmbmJzcDsgTEw8L3NwYW4+X0xQVElNX0RJU0FCTEUoKQorICAgICAgICAgIEFQSSB1c2VkIHRvIGRpc2FibGUgTFBUSU0gSFcgaW5zdGFuY2U8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1vdmUgQVBJIGRlZmluaXRpb24gdG8gbGxfbHB0aW0uYzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiIHN0eWxlPSJvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCZuYnNwO1RJTSZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9Im9ycGhhbnM6IDI7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgbWFjcm9zIHRvIGVuYWJsZSBhbmQgZGlzYWJsZSB0aGUgZmFzdCBtb2RlCisgICAgICAgICAgd2hlbiB1c2luZyB0aGUgb25lIHB1bHNlIG1vZGUgdG8gb3V0cHV0IGEgd2F2ZWZvcm0gd2l0aCBhIG1pbmltdW0gPHNwYW4gY2xhc3M9ImdyYW1lIj5kZWxheTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPl88c3BhbiBzdHlsZT0ib3JwaGFuczogMjsgd2lkb3dzOiAyOyBmbG9hdDogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7Ij5fSEFMX1RJTV9FTkFCTEVfPHNwYW4gY2xhc3M9ImdyYW1lIj5PQ3hGQVNUKDwvc3Bhbj4pCisgICAgICAgICAgIGFuZCBfX0hBTF9USU1fRElTQUJMRV9PQ3hGQVNUKCkuPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0ib3JwaGFuczogMjsgd2lkb3dzOiAyOyBmbG9hdDogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEVuY29kZXIgaW50ZXJmYWNlIG1vZGUgdG8ga2VlcCZuYnNwOzxzcGFuIHN0eWxlPSJvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyI+VElNX0NDRVJfQ0N4TlAgYml0cyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmxvdzwvc3Bhbj48L3NwYW4+PG86cD48L286cD48L3NwYW4+PC9zcGFuPjwvbGk+CisgICAgICAKKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCZuYnNwO1RJTV9FTkNPREVSSU5QVVRQT0xBUklUWV9SSVNJTkcgYW5kCisgICAgICAgICAgIFRJTV9FTkNPREVSSU5QVVRQT0xBUklUWV9GQUxMSU5HJm5ic3A7ZGVmaW5pdGlvbnMgdG8gZGV0ZXJtaW5lCisgICAgICAgICAgIGVuY29kZXIgaW5wdXQgcG9sYXJpdHkuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQmbmJzcDtJU19USU1fRU5DT0RFUklOUFVUXzxzcGFuIGNsYXNzPSJncmFtZSI+UE9MQVJJVFkoPC9zcGFuPikmbmJzcDttYWNybworICAgICAgICAgICB0byBjaGVjayZuYnNwO3RoZSBlbmNvZGVyIGlucHV0IHBvbGFyaXR5Ljwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9USU1fRW5jb2Rlcl88c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikKKyAgICAgICAgICAgQVBJJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlcGxhY2UgSVNfVElNX0lDXzxzcGFuIGNsYXNzPSJncmFtZSI+UE9MQVJJVFkoPC9zcGFuPikgbWFjcm8gYnkKKyAgICAgICAgICAgIElTX1RJTV9FTkNPREVSSU5QVVRfUE9MQVJJVFkoKSBtYWNyby48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q29ycmVjdCB3cm9uZyBpbnN0YW5jZSBwYXJhbWV0ZXIgY2hlY2sgaW4gZW5jb2RlciA8c3BhbiBjbGFzcz0iZ3JhbWUiPm1vZGU8L3NwYW4+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlcGxhY2UgSVNfVElNX0NDMl9JTlNUQU5DRSBieQorICAgICAgICAgICBJU19USU1fRU5DT0RFUl9JTlRFUkZBQ0VfSU5TVEFOQ0UgaW4gZW5jb2RlciA8c3BhbiBjbGFzcz0iZ3JhbWUiPmludGVyZmFjZQorICAgICAgICAgICA6PC9zcGFuPiZuYnNwOzxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9USU1fRW5jb2Rlcl88c3BhbiBjbGFzcz0iZ3JhbWUiPlN0YXJ0KDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfVElNX0VuY29kZXJfPHNwYW4gY2xhc3M9ImdyYW1lIj5TdG9wKDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfVElNX0VuY29kZXJfU3RhcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1RJTV9FbmNvZGVyX1N0b3BfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPC91bD4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlcGxhY2UgSVNfVElNX0RNQV9DQ19JTlNUQU5DRSBieQorICAgICAgICAgICBJU19USU1fRU5DT0RFUl9JTlRFUkZBQ0VfSU5TVEFOQ0UgaW4gZW5jb2RlciBpbnRlcmZhY2UgaW4gRE1BIDxzcGFuIGNsYXNzPSJncmFtZSI+bW9kZSA6PC9zcGFuPiZuYnNwOzxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9USU1fRW5jb2Rlcl9TdGFydF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1RJTV9FbmNvZGVyX1N0b3BfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPik8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDwvdWw+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1RJTUV4XzxzcGFuIGNsYXNzPSJncmFtZSI+TWFzdGVyQ29uZmlnU3luY2hyb25pemF0aW9uKDwvc3Bhbj4pCisgICAgICAgICAgQVBJIHRvIGF2b2lkIGZ1bmN0aW9uYWwgZXJyb3JzIGFuZCZuYnNwO2Fzc2VydCBmYWlscyB3aGVuIHVzaW5nIHNvbWUKKyAgICAgICAgICBUSU0gaW5zdGFuY2VzIGFzIGlucHV0IHRyaWdnZXIuPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlcGxhY2UmbmJzcDtJU19USU1fU1lOQ0hST188c3BhbiBjbGFzcz0iZ3JhbWUiPklOU1RBTkNFKDwvc3Bhbj4pCisgICAgICAgICAgIG1hY3JvIGJ5IElTX1RJTV9NQVNURVJfSU5TVEFOQ0UoKSBtYWNyby4mbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkJm5ic3A7SVNfVElNX1NMQVZFXzxzcGFuIGNsYXNzPSJncmFtZSI+SU5TVEFOQ0UoPC9zcGFuPikKKyAgICAgICAgICAgbWFjcm8gdG8mbmJzcDtjaGVjayBvbiBUSU1fU01DUl9NU00gYml0LjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Qcm92aWRlIG5ldyBBUEkmbmJzcDt0byBzZXQgYW5kIGNsZWFyIDxzcGFuIGNsYXNzPSJncmFtZSI+VUlGUkVNQVA8L3NwYW4+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgZGVmaW5pdGlvbiBmb3IgVElNIFVwZGF0ZSBJbnRlcnJ1cHQgRmxhZworICAgICAgICAgICBSZW1hcDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRJTV9VSUZSRU1BUF9ESVNBQkxFPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5USU1fVUlGUkVNQVBfRU5BQkxFPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBtYWNybyBpbiBIQUwgZHJpdmVyIHRvIGVuYWJsZSBhbmQgZGVzYWJsZQorICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ3JhbWUiPnRoZSZuYnNwOyBVcGRhdGU8L3NwYW4+IEludGVycnVwdCBGbGFnIFJlbWFwPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7X19IQUxfVElNX1VJRlJFTUFQXzxzcGFuIGNsYXNzPSJncmFtZSI+RU5BQkxFKDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5fX0hBTF9USU1fVUlGUkVNQVBfPHNwYW4gY2xhc3M9ImdyYW1lIj5ESVNBQkxFKDwvc3Bhbj4pL19fSEFMX1RJTV9HRVRfVUlGQ1BZIG1hY3JvPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBtZWNhbmlzbSB0byBjaGVjayB3aGV0aGVyIHRoZSZuYnNwO3VwZGF0ZQorICAgICAgICAgICBpbnRlcnJ1cHQgZmxhZyAoVUlGKSBjb3B5IGlzIHNldCBvciA8c3BhbiBjbGFzcz0iZ3JhbWUiPm5vdDwvc3Bhbj4mbmJzcDs8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdGhlIF9fSEFMX1RJTV9HRVRfPHNwYW4gY2xhc3M9ImdyYW1lIj5VSUZDUFkoPC9zcGFuPikgbWFjcm8gaW4gdGhlIEhBTCBkcml2ZXI8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBMTF9USU1fPHNwYW4gY2xhc3M9ImdyYW1lIj5Jc0FjdGl2ZVVJRkNQWSg8L3NwYW4+KSBBUEkgaW4gdGhlIExMIGRyaXZlcjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPC91bD4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgbWFjcm8gdG8gY2hlY2sgb24gdGhlJm5ic3A7VXBkYXRlCisgICAgICAgICAgIEludGVycnVwdCBGbGFnIFJlbWFwIG1vZGU8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5JU19USU1fVUlGUkVNQVBfPHNwYW4gY2xhc3M9ImdyYW1lIj5NT0RFKDwvc3Bhbj4pPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIHVzc2VsZXNzIGRlZmluZSBpbiB0aGUgTEwgPHNwYW4gY2xhc3M9ImdyYW1lIj5kcml2ZXI8L3NwYW4+Jm5ic3A7PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRJTXhfQUYxX0JLSU5FIC8gVElNeF9BRjFfQktERkJLRSA8c3BhbiBjbGFzcz0iZ3JhbWUiPi8gJm5ic3A7VElNeDwvc3Bhbj5fQUYyX0JLMklORSAvICZuYnNwO1RJTXhfQUYyX0JLMkRGQktFCisgICAgICAgICAgIC8gJm5ic3A7VElNeF9BRjJfQksySU5QPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGIgc3R5bGU9Im9ycGhhbnM6IDI7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMJm5ic3A7U01BUlRDQVJEPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+IHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBTTUFSVENBUkRfPHNwYW4gY2xhc3M9ImdyYW1lIj5TZXRDb25maWcoPC9zcGFuPikKKyAgICAgICAgICBBUEkuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5TcGxpdCBIQUxfUkNDX0dldFBDTEsxPHNwYW4gY2xhc3M9ImdyYW1lIj5GcmVxKDwvc3Bhbj4pCisgICAgICAgICAgIGFuZCBIQUxfUkNDX0dldFBDTEsyRnJlcSgpIG1hY3JvcyBmcm9tIHRoZSBCUlIgY2FsY3VsYXRpb24uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCZuYnNwO0lSREEmbmJzcDs8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PGI+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9iPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIElSREFfPHNwYW4gY2xhc3M9ImdyYW1lIj5TZXRDb25maWcoPC9zcGFuPikKKyAgICAgICAgICBBUEkmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlNwbGl0IEhBTF9SQ0NfR2V0UENMSzE8c3BhbiBjbGFzcz0iZ3JhbWUiPkZyZXEoPC9zcGFuPikKKyAgICAgICAgICAgYW5kIEhBTF9SQ0NfR2V0UENMSzJGcmVxKCkgbWFjcm9zIGZyb20gdGhlIElSREFfRElWX1NBTVBMSU5HMTYoKQorICAgICAgICAgICBtYWNyby48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBzb21lIEFQSSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRlc2NpcHRpb248L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSVJEQV88c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0KDwvc3Bhbj4pCisgICAgICAgICAgIC8mbmJzcDtIQUxfSVJEQV9UcmFuc21pdF9JVCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSVJEQV88c3BhbiBjbGFzcz0iZ3JhbWUiPlJlY2VpdmUoPC9zcGFuPikKKyAgICAgICAgICAgLyZuYnNwO0hBTF9JUkRBX1JlY2VpdmVfSVQoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0lSREFfVHJhbnNtaXRfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPikKKyAgICAgICAgICAgLyBIQUxfSVJEQV9SZWNlaXZlX0RNQSgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBSQ0MgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIHRoZSBIQUxfUkNDXzxzcGFuIGNsYXNzPSJncmFtZSI+Q2xvY2tDb25maWcoPC9zcGFuPikKKyAgICAgICAgICBhbmQgSEFMX1JDQ19EZUluaXQoKSBBUEkgdG8gZG9uJ3Qgb3ZlcndyaXRlIHRoZSBjdXN0b20gdGljayBwcmlvcml0eTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1JDQ188c3BhbiBjbGFzcz0iZ3JhbWUiPk9zY0NvbmZpZyg8L3NwYW4+KQorICAgICAgICAgIEFQSSB0byBkb24ndCByZXR1cm4gSEFMX0VSUk9SIGlmIHJlcXVlc3QgcmVwZWF0cyB0aGUgY3VycmVudCBQTEwKKyAgICAgICAgICBjb25maWd1cmF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFML0xMIFVTQVJUPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIHN1cHBvcnQgdG8gdGhlIFJlY2VpdmVyIFRpbWVvdXQgSW50ZXJydXB0IGluCisgICAgICAgICAgdGhlIEhBTF9VU0FSVF9JUlFIYW5kbGVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBzb21lIEFQSSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRlc2NpcHRpb248L3NwYW4+Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9VU0FSVF88c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0KDwvc3Bhbj4pCisgICAgICAgICAgIC8mbmJzcDtIQUxfVVNBUlRfVHJhbnNtaXRfSVQoKSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfVVNBUlRfPHNwYW4gY2xhc3M9ImdyYW1lIj5SZWNlaXZlKDwvc3Bhbj4pCisgICAgICAgICAgIC8mbmJzcDtIQUxfVVNBUlRfUmVjZWl2ZV9JVCgpJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9VU0FSVF88c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0UmVjZWl2ZSg8L3NwYW4+KQorICAgICAgICAgICAvJm5ic3A7SEFMX1VTQVJUX1RyYW5zbWl0UmVjZWl2ZV9JVCgpJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9VU0FSVF9UcmFuc21pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KQorICAgICAgICAgICAvIEhBTF9VU0FSVF9SZWNlaXZlX0RNQSgpIC8gSEFMX1VTQVJUX1RyYW5zbWl0UmVjZWl2ZV9ETUEoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIFVTQVJUXzxzcGFuIGNsYXNzPSJncmFtZSI+U2V0Q29uZmlnKDwvc3Bhbj4pCisgICAgICAgICAgQVBJJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlNwbGl0IEhBTF9SQ0NfR2V0UENMSzE8c3BhbiBjbGFzcz0iZ3JhbWUiPkZyZXEoPC9zcGFuPikKKyAgICAgICAgICBhbmQgSEFMX1JDQ19HZXRQQ0xLMkZyZXEoKSBtYWNyb3MgZnJvbSB0aGUgVVNBUlRfRElWX1NBTVBMSU5HOCgpCisgICAgICAgICAgbWFjcm88L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+U3VwcG9ydCBTdG9wIE1vZGUgZnVuY3Rpb25hbGl0aWVzIGluIHRoZSBVU0FSVCA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRyaXZlcjwvc3Bhbj4mbmJzcDsmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBjbGFzcz0iZ3JhbWUiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgJm5ic3A7ZGVmaW5pdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiBvZiBVU0FSVF9JU1JfUkVBQ0sgVVNBUlQsJm5ic3A7IHJlY2VpdmUgZW5hYmxlCisgICAgICAgICAgYWNrbm93bGVkZ2UgZmxhZyBpbiB0aGUgSEFMIGRyaXZlcjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IGZsYWcgZGVmaW5pdGlvbiBpbiB0aGUgTEwgPHNwYW4gY2xhc3M9ImdyYW1lIj5kcml2ZXI8L3NwYW4+Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUX0lDUl88c3BhbiBjbGFzcz0iZ3JhbWUiPldVQ0YmbmJzcDsgV2FrZXVwPC9zcGFuPgorICAgICAgICAgICBmcm9tIFN0b3AgbW9kZSBmbGFnJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUX0lTUl9XVUYgV2FrZXVwIGZyb20gU3RvcCBtb2RlIDxzcGFuIGNsYXNzPSJncmFtZSI+ZmxhZzwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogMnB0OyBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfSVNSX1JFQUNLIFJlY2VpdmUgZW5hYmxlIGFja25vd2xlZGdlIDxzcGFuIGNsYXNzPSJncmFtZSI+ZmxhZzwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogMnB0OyBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfQ1IzX1dVRklFIFdha2V1cCBmcm9tIFN0b3AgbW9kZQorICAgICAgICAgICBpbnRlcnJ1cHQgPHNwYW4gY2xhc3M9ImdyYW1lIj5lbmFibGU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IGRlZmluaXRpb24gb2YgdGhlIGRpZmZlcmVudCBldmVudCB3aGljaAorICAgICAgICAgIGFjdGl2YXRlcyB0aGUmbmJzcDt3YWtldXAgZnJvbSBTdG9wIG1vZGUgPHNwYW4gY2xhc3M9ImdyYW1lIj5mbGFnPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfIFVTQVJUX1dBS0VVUF9PTl9BRERSRVNTPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUX1dBS0VVUF9PTl9TVEFSVEJJVDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF9XQUtFVVBfT05fUlhORTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IEFQSSBpbiBMTCBkcml2ZXIgdG8gc3VwcG9ydCBzdG9wIDxzcGFuIGNsYXNzPSJncmFtZSI+bW9kZTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogMnB0OyBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfPHNwYW4gY2xhc3M9ImdyYW1lIj5FbmFibGVJblN0b3BNb2RlKDwvc3Bhbj4pCisgICAgICAgICAgIHRvIGVuYWJsZSB0aGUgVVNBUlQgaW4gc3RvcCBtb2RlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUXzxzcGFuIGNsYXNzPSJncmFtZSI+RGlzYWJsZUluU3RvcE1vZGUoPC9zcGFuPikKKyAgICAgICAgICAgdG8gZGlzYWJsZSB0aGUgVVNBUlQgaW4gc3RvcCBtb2RlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUXzxzcGFuIGNsYXNzPSJncmFtZSI+SXNFbmFibGVkSW5TdG9wTW9kZSg8L3NwYW4+KQorICAgICAgICAgICB0byBjaGVjayBpZiB0aGUgVVNBUlQgaXMgZW5hYmxlZCBvciBub3QgaW4gdGhlIHN0b3AgbW9kZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF88c3BhbiBjbGFzcz0iZ3JhbWUiPkVuYWJsZUNsb2NrSW5TdG9wTW9kZSg8L3NwYW4+KQorICAgICAgICAgICB0byBlbmFibGUgdGhlIFVTQVJUIGNsb2NrIGluIHRoZSBzdG9wIG1vZGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogMnB0OyBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfPHNwYW4gY2xhc3M9ImdyYW1lIj5EaXNhYmxlQ2xvY2tJblN0b3BNb2RlKDwvc3Bhbj4pCisgICAgICAgICAgIHRvIGRpc2FibGUgdGhlIFVTQVJUIGNsb2NrIGluIHRoZSBzdG9wIG1vZGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogMnB0OyBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jc0Nsb2NrRW5hYmxlZEluU3RvcE1vZGUoPC9zcGFuPikKKyAgICAgICAgICAgdG8gY2hlY2sgd2hldGhlciBVU0FSVCBjbG9jayBhcmUgZW5hYmxlZCBvciBub3QgaW4gdGhlIHN0b3AgbW9kZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IEFQSSBpbiBMTCBkcml2ZXIgdG8gbWFuYWdlIGV2ZW50IHJlbGlzdGVkCisgICAgICAgICAgdG8gV2FrZSBVUCBJbnRlcnJ1cHQgRmxhZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF88c3BhbiBjbGFzcz0iZ3JhbWUiPlNldFdLVVBUeXBlKDwvc3Bhbj4pCisgICAgICAgICAgIHRvIHNlbGVjdCB0aGUgZXZlbnQgdHlwZSBmb3IgV2FrZSBVUCBJbnRlcnJ1cHQgRmxhZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF88c3BhbiBjbGFzcz0iZ3JhbWUiPkdldFdLVVBUeXBlKDwvc3Bhbj4pCisgICAgICAgICAgIHRvIGdldCZuYnNwOyB0aGUgZXZlbnQgdHlwZSBmb3IgV2FrZSBVUCBJbnRlcnJ1cHQgRmxhZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF9Jc0FjdGl2ZUZsYWdfPHNwYW4gY2xhc3M9ImdyYW1lIj5XS1VQKDwvc3Bhbj4pCisgICAgICAgICAgIHRvIENoZWNrIGlmIHRoZSBVU0FSVCBXYWtlIFVwIGZyb20gc3RvcCBtb2RlIEZsYWcgaXMgc2V0IG9yIG5vdDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF9Jc0FjdGl2ZUZsYWdfPHNwYW4gY2xhc3M9ImdyYW1lIj5SRUFDSyg8L3NwYW4+KQorICAgICAgICAgICB0byBDaGVjayBpZiB0aGUgVVNBUlQgUmVjZWl2ZSBFbmFibGUgQWNrbm93bGVkZ2UgRmxhZyBpcyBzZXQgb3Igbm90PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1VTQVJUX0NsZWFyRmxhZ188c3BhbiBjbGFzcz0iZ3JhbWUiPldLVVAoPC9zcGFuPikKKyAgICAgICAgICAgQ2xlYXIgV2FrZSBVcCBmcm9tIHN0b3AgbW9kZSBGbGFnPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDJwdDsgbWFyZ2luLWJvdHRvbTogMnB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgQVBJIGluIExMIGRyaXZlciB0byBtYW5hZ2Ugd2FrZSB1cCBmcm9tCisgICAgICAgICAgc3RvcCA8c3BhbiBjbGFzcz0iZ3JhbWUiPmludGVycnVwdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogMnB0OyBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfRW5hYmxlSVRfPHNwYW4gY2xhc3M9ImdyYW1lIj5XS1VQKDwvc3Bhbj4pCisgICAgICAgICAgIHRvIEVuYWJsZSBXYWtlIFVwIGZyb20gU3RvcCBNb2RlIEludGVycnVwdDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiAycHQ7IG1hcmdpbi1ib3R0b206IDJwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9VU0FSVF9EaXNhYmxlSVRfPHNwYW4gY2xhc3M9ImdyYW1lIj5XS1VQKDwvc3Bhbj4pCisgICAgICAgICAgIHRvIERpc2FibGUgV2FrZSBVcCBmcm9tIFN0b3AgTW9kZSBJbnRlcnJ1cHQ8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogMnB0OyBtYXJnaW4tYm90dG9tOiAycHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfVVNBUlRfSXNFbmFibGVkSVRfPHNwYW4gY2xhc3M9ImdyYW1lIj5XS1VQKDwvc3Bhbj4pCisgICAgICAgICAgIHRvIENoZWNrIGlmIHRoZSBVU0FSVCBXYWtlIFVwIGZyb20gU3RvcCBNb2RlIEludGVycnVwdCBpcyBlbmFibGVkIG9yCisgICAgICAgICAgIG5vdDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwvTEwgVVNCIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO0FkZCBoYW5kbGluZyBVU0IgaG9zdCBiYWJibGUgZXJyb3IgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbnRlcnJ1cHQ8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO0ZpeCBFbmFibGluZyBVTFBJIGludGVyZmFjZSBmb3IgcGxhdGZvcm1zCisgICAgICAgICAgdGhhdCBpbnRlZ3JhdGVzIFVTQiBIUyBQSFk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7Rml4IEhvc3QgZGF0YSB0b2dnbGluZyBmb3IgSU4gSXNvIHRyYW5zZmVyczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDtFbnN1cmUgdG8gZGlzYWJsZSBVU0IgRVAgZHVyaW5nIGVuZHBvaW50IDxzcGFuIGNsYXNzPSJncmFtZSI+ZGVhY3RpdmF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgIDwvdWw+CisgICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiAtbW96LWluaXRpYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IHdoaXRlOyI+VjEuMi43LworICAgIDA4LUZlYnJ1YXJ5LTIwMTk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9oMz4KKyAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPgorICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbCB1cGRhdGVzIHRvIGZpeCBrbm93biBkZWZlY3RzIGFuZAorICAgICAgICAgZW5oYW5jZW1lbnRzIDxzcGFuIGNsYXNzPSJncmFtZSI+aW1wbGVtZW50YXRpb248L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbCB1cGRhdGVzIHRvIGZpeCBDb2RlU29uYXIgY29tcGlsYXRpb24gPHNwYW4gY2xhc3M9ImdyYW1lIj53YXJuaW5nczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsIHVwZGF0ZXMgdG8gZml4IFNXNFNUTTMyIGNvbXBpbGF0aW9uIGVycm9ycworICAgICAgICAgdW5kZXIgPHNwYW4gY2xhc3M9ImdyYW1lIj5MaW51eDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsIHVwZGF0ZXMgdG8gZml4IHRoZSB1c2VyIG1hbnVhbCAuY2htIDxzcGFuIGNsYXNzPSJncmFtZSI+ZmlsZXM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIHN1cHBvcnQgb2YgSEFMIGNhbGxiYWNrIHJlZ2lzdHJhdGlvbiA8c3BhbiBjbGFzcz0iZ3JhbWUiPmZlYXR1cmU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldzxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiA8L3NwYW4+PGI+SEFMCisgICAgICAgICBFWFRJPC9iPjxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiA8L3NwYW4+ZHJpdmVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlIGZvbGxvd2luZyBjaGFuZ2VzIGRvbmUgb24gdGhlIEhBTCBkcml2ZXJzCisgICAgICAgICByZXF1aXJlIGFuIHVwZGF0ZSBvbiB0aGUgYXBwbGljYXRpb24gY29kZSBiYXNlZCBvbiBvbGRlciBIQUwgPHNwYW4gY2xhc3M9ImdyYW1lIj52ZXJzaW9uczwvc3Bhbj48L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmV3b3JrIG9mIEhBTCBDUllQIGRyaXZlcjxiPiAoY29tcGF0aWJpbGl0eSBicmVhaykKKyAgICAgICAgICA8L2I+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgQ1JZUCBkcml2ZXIgaGFzIGJlZW4gcmVkZXNpZ25lZCB3aXRoIG5ldworICAgICAgICAgICBBUEkncywgdG8gYnlwYXNzIGxpbWl0YXRpb25zIG9uIGRhdGEgRW5jcnlwdGlvbi9EZWNyeXB0aW9uIG1hbmFnZW1lbnQKKyAgICAgICAgICAgcHJlc2VudCB3aXRoIHByZXZpb3VzIEhBTCBDUllQIGRyaXZlciB2ZXJzaW9uLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlIG5ldyBIQUwgQ1JZUCBkcml2ZXIgaXMgdGhlIHJlY29tbWVuZGVkCisgICAgICAgICAgIHZlcnNpb24uIEl0IGlzIGxvY2F0ZWQgYXMgdXN1YWwgaW4gRHJpdmVycy9TVE0zMkY3eHhfSEFMX0RyaXZlci9TcmMKKyAgICAgICAgICAgYW5kIERyaXZlcnMvU1RNMzJmN3h4X0hBTF9Ecml2ZXIvSW5jIGZvbGRlcnMuIEl0IGNhbiBiZSBlbmFibGVkCisgICAgICAgICAgIHRocm91Z2ggc3dpdGNoIEhBTF9DUllQX01PRFVMRV9FTkFCTEVEIGluIHN0bTMyZjd4eF9oYWxfY29uZi5oPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUgbGVnYWN5IEhBTCBDUllQIGRyaXZlciBpcyBubyBsb25nZXIKKyAgICAgICAgICAgc3VwcG9ydGVkLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwvTEwgR2VuZXJpYyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgc3VwcG9ydCBvZiA8Yj5IQUwgY2FsbGJhY2sgcmVnaXN0cmF0aW9uPC9iPiA8c3BhbiBjbGFzcz0iZ3JhbWUiPmZlYXR1cmU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUgZmVhdHVyZSBkaXNhYmxlZCBieSBkZWZhdWx0IGlzIGF2YWlsYWJsZSBmb3IgdGhlCisgICAgICAgICAgIGZvbGxvd2luZyBIQUwgZHJpdmVyczo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QURDLCBDQU4sIENFQywgQ1JZUCwKKyAgICAgICAgICAgIERBQywgRENNSSwgREZTRE0sIERNQTJELCBEU0ksIEVUSCwgSEFTSCwgSENELCBJMkMsIFNNQlVTLCBVQVJULAorICAgICAgICAgICAgVVNBUlQsIElSREEsIEpQRUcsIFNNQVJUQ0FSRCwgTFBUSU0sIExUREMsIE1ESU9TLCBNTUMsIE5BTkQsIDxzcGFuIGNsYXNzPSJncmFtZSI+Tk9SLDwvc3Bhbj4gUENELCBRU1BJLCBSTkcsIFJUQywgU0FJLCBTRCwgU0RSQU0sIFNSQU0sCisgICAgICAgICAgICBTUERJRlJYLCBTUEksIEkyUywgVElNIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFuZDxiPgorICAgICAgICAgICAgV1dERzwvYj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlIGZlYXR1cmUgbWF5IGJlIGVuYWJsZWQgaW5kaXZpZHVhbGx5IHBlciBIQUwgPGk+UFBQPC9pPgorICAgICAgICAgICBkcml2ZXIgYnkgc2V0dGluZyB0aGUgY29ycmVzcG9uZGluZyBkZWZpbml0aW9uIFVTRV9IQUxfPGk+UFBQPC9pPl9SRUdJU1RFUl9DQUxMQkFDS1MKKyAgICAgICAgICAgdG8mbmJzcDsxVSBpbiBzdG0zMmY3eHhfaGFsX2NvbmYuaCBwcm9qZWN0IGNvbmZpZ3VyYXRpb24gZmlsZQorICAgICAgICAgICAodGVtcGxhdGUgZmlsZSBzdG0zMmY3eHhfaGFsX2NvbmZfdGVtcGxhdGUuaCBhdmFpbGFibGUgPHNwYW4gY2xhc3M9ImdyYW1lIj5mcm9tJm5ic3A7IERyaXZlcnM8L3NwYW4+L1NUTTMyRjd4eF9IQUxfRHJpdmVyL0luYyk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk9uY2UgPHNwYW4gY2xhc3M9ImdyYW1lIj5lbmFibGVkICw8L3NwYW4+IHRoZSB1c2VyCisgICAgICAgICAgIGFwcGxpY2F0aW9uIG1heSByZXNvcnQgdG8gSEFMX1BQUF9SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVnaXN0ZXIKKyAgICAgICAgICAgc3BlY2lmaWMgY2FsbGJhY2sgZnVuY3Rpb24ocykgYW5kIHVucmVnaXN0ZXIgaXQodGhlbSkgd2l0aCBIQUxfPGk+UFBQPC9pPl9VblJlZ2lzdGVyQ2FsbGJhY2soKS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkdlbmVyYWwgdXBkYXRlcyB0byBmaXggTUlTUkEgMjAxMiBjb21waWxhdGlvbiA8c3BhbiBjbGFzcz0iZ3JhbWUiPmVycm9yczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JU19CSVRfU0VUKCkvSEFMX0lTX0JJVF88c3BhbiBjbGFzcz0iZ3JhbWUiPkNMUig8L3NwYW4+KQorICAgICAgICAgICBtYWNyb3MgaW1wbGVtZW50YXRpb24gdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4ic3RkaW8uaCIgaW5jbHVkZSB1cGRhdGVkIHdpdGgKKyAgICAgICAgICAgInN0ZGRlZi48c3BhbiBjbGFzcz0iZ3JhbWUiPmg8L3NwYW4+Ijwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgR1BJTzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgVXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0dQSU9fPHNwYW4gY2xhc3M9ImdyYW1lIj5Ub2dnbGVQaW4oPC9zcGFuPikgQVBJCisgICAgICAgICAgaW1wbGVtZW50YXRpb24gdXBkYXRlOiB0byBpbXByb3ZlIHJvYnVzdG5lc3M8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0dQSU9fPHNwYW4gY2xhc3M9ImdyYW1lIj5EZUluaXQoPC9zcGFuPikgQVBJCisgICAgICAgICAgdXBkYXRlIHRvIGVuc3VyZSBjbGVhciBhbGwgR1BJTyBFWFRJIHBlbmRpbmcgaW50ZXJydXB0cy48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgQ1JZUDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlIENSWVBfSW5pdFR5cGVEZWYgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+aXMgbm8gbW9yZSBzdXBwb3J0ZWQsIGNoYW5nZWQgYnkgPGI+Q1JZUF9Db25maWdUeXBlZGVmPC9iPgorICAgICAgICAgIHRvIGFsbG93IGNoYW5naW5nIHBhcmFtZXRlcnMgPGJyPgorICAgICAgICAgIHVzaW5nIEhBTF9DUllQXzxzcGFuIGNsYXNzPSJncmFtZSI+c2V0Q29uZmlnKDwvc3Bhbj4pIEFQSSB3aXRob3V0IHJlaW5pdGlhbGl6ZQorICAgICAgICAgIHRoZSBDUllQIElQIHVzaW5nIHRoZSBIQUxfQ1JZUF9Jbml0KCkgQVBJPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk5ldyBwYXJhbWV0ZXJzIGFkZGVkIGluIHRoZSA8Yj5DUllQX0NvbmZpZ1R5cGVEZWY8L2I+CisgICAgICAgICAgc3RydWN0dXJlOiA8Yj5CMDwvYj4gYW5kIDxzcGFuIGNsYXNzPSJncmFtZSI+PGI+RGF0YVdpZHRoVW5pdDwvYj48L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPklucHV0IGRhdGEgc2l6ZSBwYXJhbWV0ZXIgaXMgYWRkZWQgaW4gdGhlIDxiPkNSWVBfSGFuZGxlVHlwZURlZjwvYj4KKyAgICAgICAgICBzdHJ1Y3R1cmU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBBUElzIHRvIG1hbmFnZSB0aGUgQ1JZUCBjb25maWd1cmF0aW9uOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7SEFMX0NSWVBfPHNwYW4gY2xhc3M9ImdyYW1lIj5TZXRDb25maWcoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DUllQXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0Q29uZmlnKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IEFQSXMgdG8gbWFuYWdlIHRoZSBLZXkgZGVyaXZhdGlvbjo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DUllQRXhfPHNwYW4gY2xhc3M9ImdyYW1lIj5FbmFibGVBdXRvS2V5RGVyaXZhdGlvbig8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NSWVBFeF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRpc2FibGVBdXRvS2V5RGVyaXZhdGlvbig8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBBUElzIHRvIGVuY3J5cHQgYW5kIGRlY3J5cHQgZGF0YTo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DUllQXzxzcGFuIGNsYXNzPSJncmFtZSI+RW5jeXB0KDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfQ1JZUF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRlY3lwdCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NSWVBfRW5jeXB0XzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DUllQX0RlY3lwdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfQ1JZUF9FbmN5cHRfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DUllQX0RlY3lwdF88c3BhbiBjbGFzcz0iZ3JhbWUiPkRNQSg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBBUElzIHRvIGdlbmVyYXRlIFRBRzo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DUllQRXhfQUVTPGI+R0NNPC9iPl88c3BhbiBjbGFzcz0iZ3JhbWUiPkdlbmVyYXRlQXV0aFRBRyg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NSWVBFeF9BRVM8Yj5DQ008L2I+XzxzcGFuIGNsYXNzPSJncmFtZSI+R2VuZXJhdGVBdXRoVEFHKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBJMkM8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkkyQyBBUEkgY2hhbmdlcyBmb3IgTUlTUkEtQyAyMDEyIGNvbXBsaWFuY3k6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgSEFMX0kyQ19NYXN0ZXJfU2VxdWVudGlhbF9UcmFuc21pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pIHRvIEhBTF9JMkNfTWFzdGVyX1NlcV9UcmFuc21pdF9JVCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgSEFMX0kyQ19NYXN0ZXJfU2VxdWVudGllbF9SZWNlaXZlXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikgdG8gSEFMX0kyQ19NYXN0ZXJfU2VxX1JlY2VpdmVfSVQoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVuYW1lIEhBTF9JMkNfU2xhdmVfU2VxdWVudGllbF9UcmFuc21pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pIHRvIEhBTF9JMkNfU2xhdmVfU2VxX1RyYW5zbWl0X0lUKCkgPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgSEFMX0kyQ19TbGF2ZV9TZXF1ZW50aWVsX1JlY2VpdmVfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPikgdG8gSEFMX0kyQ19TbGF2ZV9TZXFfUmVjZWl2ZV9ETUEoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBzdXBwb3J0IG9mIEkyQyByZXBlYXRlZCBzdGFydCBmZWF0dXJlIGluIERNQQorICAgICAgICAgIE1vZGU6PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgPC91bD4KKyAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDEuNWluOyB0ZXh0LWluZGVudDogLTAuMjVpbjsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+MS48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyBjb2xvcjogYmxhY2s7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPldpdGggdGhlIGZvbGxvd2luZyBuZXcgQVBJJ3M8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuNXB0OyBjb2xvcjogYmxhY2s7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CisgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAyaW47IHRleHQtaW5kZW50OiAtMC4yNWluOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuNXB0OyBjb2xvcjogYmxhY2s7Ij4xLjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiA3cHQ7IGNvbG9yOiBibGFjazsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+SEFMX0kyQ19NYXN0ZXJfU2VxX1RyYW5zbWl0XzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+PG86cD48L286cD48L3NwYW4+PC9wPgorICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMmluOyB0ZXh0LWluZGVudDogLTAuMjVpbjsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+Mi48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyBjb2xvcjogYmxhY2s7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPkhBTF9JMkNfTWFzdGVyX1NlcV9SZWNlaXZlXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+PG86cD48L286cD48L3NwYW4+PC9wPgorICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMmluOyB0ZXh0LWluZGVudDogLTAuMjVpbjsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+My48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyBjb2xvcjogYmxhY2s7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPkhBTF9JMkNfU2xhdmVfU2VxX1RyYW5zbWl0XzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+PG86cD48L286cD48L3NwYW4+PC9wPgorICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW4tbGVmdDogMmluOyB0ZXh0LWluZGVudDogLTAuMjVpbjsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+NC48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyBjb2xvcjogYmxhY2s7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPkhBTF9JMkNfU2xhdmVfU2VxX1JlY2VpdmVfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuNXB0OyBjb2xvcjogYmxhY2s7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CisgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAxaW47IHRleHQtaW5kZW50OiAtMC4yNWluOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuNXB0OyBjb2xvcjogYmxhY2s7Ij4zLjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiA3cHQ7IGNvbG9yOiBibGFjazsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+QWRkIG5ldyBJMkMgdHJhbnNmZXIgb3B0aW9ucyB0byBlYXN5IG1hbmFnZQorICAgIHRoZSBzZXF1ZW50aWFsIDxzcGFuIGNsYXNzPSJncmFtZSI+dHJhbnNmZXJzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy41cHQ7IGNvbG9yOiBibGFjazsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KKyAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDEuNWluOyB0ZXh0LWluZGVudDogLTAuMjVpbjsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+MS48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyBjb2xvcjogYmxhY2s7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPkkyQ19PVEhFUl9GUkFNRTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy41cHQ7IGNvbG9yOiBibGFjazsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KKyAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDEuNWluOyB0ZXh0LWluZGVudDogLTAuMjVpbjsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjVwdDsgY29sb3I6IGJsYWNrOyI+Mi48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyBjb2xvcjogYmxhY2s7Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPkkyQ19PVEhFUl9BTkRfTEFTVF9GUkFNRTwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy41cHQ7IGNvbG9yOiBibGFjazsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KKyAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImRpc2MiPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gY2xhc3M9ImdyYW1lIj48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwmbmJzcDsgUkNDPC9zcGFuPjwvYj48L3NwYW4+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgTExfUkNDXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0U0FJQ2xvY2tGcmVxKDwvc3Bhbj4pCisgICAgICAgICAgQVBJIHRvIHJldHVybiB0aGUgcmlnaHQgZnJlcXVlbmN5IGFjY29yZGluZyB0byB0aGUgU0FJIGNsb2NrIHNvdXJjZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBSTkcgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIHRvIG1hbmFnZSBSTkcgZXJyb3IgY29kZTogPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgRXJyb3JDb2RlIHBhcmFtZXRlciBpbiBIQUwgUk5HIEhhbmRsZXIKKyAgICAgICAgICAgc3RydWN0dXJlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgSEFMX1JOR188c3BhbiBjbGFzcz0iZ3JhbWUiPkdldEVycm9yKDwvc3Bhbj4pCisgICAgICAgICAgIEFQSTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIExvY2svVW5sb2NrIG1lY2FuaXNtIDxzcGFuIGNsYXNzPSJncmFtZSI+dXBkYXRlPC9zcGFuPgorICAgICAgICAgIDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMIEFEQyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXggVlJFRklOVC9URU1QU0VOU09SIGNhbGlicmF0aW9uIGFkZHJlc3MKKyAgICAgICAgICByZWdpc3RlcnMgZm9yIFNUTTMyRjc0eC83NXgvRjc2L0Y3NyBkZXZpY2VzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Ob3RlPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+OgorICAgICAgICAgICBGb3IgU1RNMzJGNzIvRjczIHRoZSBpc3N1ZSB3aWxsIGJlIGZpeGVkIGluIG5leHQgcmVsZWFzZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0FEQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlN0YXJ0KDwvc3Bhbj4pLAorICAgICAgICAgIEhBTF9BRENfU3RhcnRfSVQoKSBhbmQgSEFMX0FEQ19TdGFydF9ETUEoKSB1cGRhdGUgdG8gcHJldmVudGlvbiBmcm9tCisgICAgICAgICAgc3RhcnRpbmcgQURDMiBvciBBREMzIG9uY2UgbXVsdGltb2RlIGlzIGVuYWJsZWQ8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgPHNwYW4gY2xhc3M9ImdyYW1lIj5ERlNETSZuYnNwOyA8L3NwYW4+PC9zcGFuPjwvYj48c3BhbiBjbGFzcz0iZ3JhbWUiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbCB1cGRhdGVzIHRvIGJlIGNvbXBsaWFudCB3aXRoIERGU0RNIGJpdHMKKyAgICAgICAgICBuYW1pbmcgdXNlZCBpbiBDTVNJUyBmaWxlcy48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgPHNwYW4gY2xhc3M9ImdyYW1lIj5DQU4mbmJzcDsgPC9zcGFuPjwvc3Bhbj48L2I+PHNwYW4gY2xhc3M9ImdyYW1lIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBwb3NzaWJsZSB2YWx1ZXMgbGlzdCBmb3IgRmlsdGVyQWN0aXZhdGlvbgorICAgICAgICAgIHBhcmFtZXRlciBpbiBDQU5fRmlsdGVyVHlwZURlZiBzdHJ1Y3R1cmU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkNBTl9GSUxURVJfRU5BQkxFIGluc3RlYWQgb2YgPHNwYW4gY2xhc3M9ImdyYW1lIj5FTkFCTEU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5DQU5fRklMVEVSX0RJU0FCTEUgaW5zdGVhZCBvZiA8c3BhbiBjbGFzcz0iZ3JhbWUiPkRJU0FCTEU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCA8c3BhbiBjbGFzcz0iZ3JhbWUiPkNFQyZuYnNwOyA8L3NwYW4+PC9zcGFuPjwvYj48c3BhbiBjbGFzcz0iZ3JhbWUiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTCBDRUMgU3RhdGUgbWFuYWdlbWVudCBtZXRob2Q6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgSEFMX0NFQ19TdGF0ZVR5cGVEZWYgc3RydWN0dXJlIDxzcGFuIGNsYXNzPSJncmFtZSI+cGFyYW1ldGVyczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgZGVmaW5lcyBmb3IgQ0VDIDxzcGFuIGNsYXNzPSJncmFtZSI+c3RhdGVzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRE1BMjxzcGFuIGNsYXNzPSJncmFtZSI+RCZuYnNwOyA8L3NwYW4+PC9zcGFuPjwvYj48c3BhbiBjbGFzcz0iZ3JhbWUiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIHVudXNlZCBETUEyRF9Db2xvclR5cGVEZWYgc3RydWN0dXJlIHRvIGJlCisgICAgICAgICAgY29tcGxpYW50IHdpdGggTUlTUkFDIDIwMTIgUnVsZSAyLjM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbCB1cGRhdGUgdG8gdXNlIGRlZGljYXRlZCBkZWZpbmVzIGZvcgorICAgICAgICAgIERNQTJEX0JBQ0tHUk9VTkRfTEFZRVIgYW5kIERNQTJEX0ZPUkVHUk9VTkRfTEFZRVIgaW5zdGVhZCBvZgorICAgICAgICAgIG51bWVyaWNhbCB2YWx1ZXM6IDAvMS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwvTEwgUlRDPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwvIExMIDxzcGFuIGNsYXNzPSJncmFtZSI+ZHJpdmVyczwvc3Bhbj4KKyAgICAgICAgICBvcHRpbWl6YXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBkcml2ZXI6IHJlbW92ZSB1bnVzZWQgPHNwYW4gY2xhc3M9ImdyYW1lIj52YXJpYWJsZXM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTCBkcml2ZXI6IGdldHRlciBBUElzIG9wdGltaXphdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgSlBFRyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgcGFyYW1ldGVycyB0eXBlIGluIEpQRUdfQ29uZlR5cGVEZWYKKyAgICAgICAgICBzdHJ1Y3R1cmUgdG8gYmUgYWxpZ25lZCB3aXRoIDMyLTxzcGFuIGNsYXNzPSJncmFtZSI+Yml0czwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgU1BJIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk92ZXJhbGwgcmV3b3JrIG9mIHRoZSBkcml2ZXIgZm9yIGEgbW9yZQorICAgICAgICAgIGVmZmljaWVudCZuYnNwO2ltcGxlbWVudGF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCB0aGUgZm9sbG93aW5nIG5ldyBtYWNyb3M6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5TUElfQ0hFQ0tfPHNwYW4gY2xhc3M9ImdyYW1lIj5GTEFHKDwvc3Bhbj4pIDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+U1BJX0NIRUNLX0lUXzxzcGFuIGNsYXNzPSJncmFtZSI+U09VUkNFKDwvc3Bhbj4pIDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIEhBTF9TUElFeF88c3BhbiBjbGFzcz0iZ3JhbWUiPkZsdXNoUnhGaWZvKDwvc3Bhbj4pCisgICAgICAgICAgQVBJIHRvIGZsdXNoIHRoZSBTUEkgRklGTyBSWC48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9TUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5BYm9ydCg8L3NwYW4+KSB0bworICAgICAgICAgIGZpeCBhYm9ydCBpc3N1ZSBpbiBTUEkgVFggb3IgUnggbW9kZSBvbmx5IDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1NQSV9UcmFuc21pdCgpL0hBTF9TUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5SZWNlaXZlKDwvc3Bhbj4pIEFQSSdzIHRvIGZpeCBtZW1vcnkgb3ZlcmZsb3cgaXNzdWUuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEkyUyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PdmVyYWxsIHJld29yayBvZiB0aGUgZHJpdmVyIGZvciBhIG1vcmUKKyAgICAgICAgICBlZmZpY2llbnQmbmJzcDtpbXBsZW1lbnRhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdGhlIGZvbGxvd2luZyBuZXcgbWFjcm9zOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+STJTX0NIRUNLXzxzcGFuIGNsYXNzPSJncmFtZSI+RkxBRyg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+STJTX0NIRUNLX0lUXzxzcGFuIGNsYXNzPSJncmFtZSI+U09VUkNFKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX0kyU19UcmFuc21pdCgpL0hBTF9JMlNfPHNwYW4gY2xhc3M9ImdyYW1lIj5SZWNlaXZlKDwvc3Bhbj4pIEFQSSdzIHRvIGZpeCBtZW1vcnkgb3ZlcmZsb3cgaXNzdWUuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFML0xMIFRJTSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Nb3ZlIHRoZSBmb2xsb3dpbmcgVElNIHN0cnVjdHVyZXMgZnJvbQorICAgICAgICAgIHN0bTMyZjR4eF9oYWxfdGltX2V4LmggaW50byBzdG0zMmY0eHhfaGFsX3RpbS5oPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5USU1fTWFzdGVyQ29uZmlnVHlwZURlZjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VElNX0JyZWFrRGVhZFRpbWVDb25maWdUeXBlRGVmPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IFRJTSBDYWxsYmFja3MgQVBJJ3M6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfVElNXzxzcGFuIGNsYXNzPSJncmFtZSI+UGVyaW9kRWxhcHNlZEhhbGZDcGx0Q2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9USU1fSUNfPHNwYW4gY2xhc3M9ImdyYW1lIj5DYXB0dXJlSGFsZkNwbHRDYWxsYmFjayg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1RJTV9QV01fPHNwYW4gY2xhc3M9ImdyYW1lIj5QdWxzZUZpbmlzaGVkSGFsZkNwbHRDYWxsYmFjayg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1RJTV88c3BhbiBjbGFzcz0iZ3JhbWUiPlRyaWdnZXJIYWxmQ3BsdENhbGxiYWNrKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5USU0gQVBJIGNoYW5nZXMgZm9yIE1JU1JBLUMgMjAxMiBjb21wbGlhbmN5Ojwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVuYW1lIEhBTF9USU1fU2xhdmVDb25maWdTeW5jaHJvbml6YXRpb24gdG8KKyAgICAgICAgICAgSEFMX1RJTV9TbGF2ZUNvbmZpZ1N5bmNocm88L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSBIQUxfVElNX1NsYXZlQ29uZmlnU3luY2hyb25pemF0aW9uX0lUIHRvCisgICAgICAgICAgIEhBTF9USU1fU2xhdmVDb25maWdTeW5jaHJvX0lUPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgSEFMX1RJTUV4X0NvbmZpZ0NvbW11dGF0aW9uRXZlbnQgdG8KKyAgICAgICAgICAgSEFMX1RJTUV4X0NvbmZpZ0NvbW11dEV2ZW50PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgSEFMX1RJTUV4X0NvbmZpZ0NvbW11dGF0aW9uRXZlbnRfSVQgdG8KKyAgICAgICAgICAgSEFMX1RJTUV4X0NvbmZpZ0NvbW11dEV2ZW50X0lUPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgSEFMX1RJTUV4X0NvbmZpZ0NvbW11dGF0aW9uRXZlbnRfRE1BIHRvCisgICAgICAgICAgIEhBTF9USU1FeF9Db25maWdDb21tdXRFdmVudF9ETUE8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSBIQUxfVElNRXhfQ29tbXV0YXRpb25DYWxsYmFjayB0bworICAgICAgICAgICBIQUxfVElNRXhfQ29tbXV0Q2FsbGJhY2s8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSBIQUxfVElNRXhfRE1BQ29tbXV0YXRpb25DcGx0IHRvCisgICAgICAgICAgIFRJTUV4X0RNQUNvbW11dGF0aW9uQ3BsdDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgVUFSVCA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PdmVyYWxsIHJld29yayBvZiB0aGUgZHJpdmVyIGZvciBhIG1vcmUKKyAgICAgICAgICBlZmZpY2llbnQmbmJzcDtpbXBsZW1lbnRhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdGhlIGZvbGxvd2luZyBVQVJUIEFQSSdzIGluIHN0bTMyZjd4eF9oYWxfdWFydF9leC5jOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7SEFMX1JTNDg1RXhfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTXVsdGlQcm9jZXNzb3JFeF9BZGRyZXNzTGVuZ3RoXzxzcGFuIGNsYXNzPSJncmFtZSI+U2V0KDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTC9MTCBVU0I8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJld29yayBVU0IgaW50ZXJydXB0IGhhbmRsZXIgYW5kIGltcHJvdmUgSFMgRE1BCisgICAgICAgICAgc3VwcG9ydCBpbiBEZXZpY2UgPHNwYW4gY2xhc3M9ImdyYW1lIj5tb2RlPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXggQkNEIGhhbmRsaW5nIGZvciBPVEcgaW5zdGFuY2UgaW4gZGV2aWNlIDxzcGFuIGNsYXNzPSJncmFtZSI+bW9kZTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Y2xlYW51cCByZWZlcmVuY2UgdG8gbG93IHNwZWVkIGluIGRldmljZSBtb2RlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFsbG93IHdyaXRpbmcgVFggRklGTyBpbiBjYXNlIG9mIHRyYW5zZmVyIGxlbmd0aAorICAgICAgICAgIGlzIGVxdWFsIHRvIGF2YWlsYWJsZSBzcGFjZSBpbiB0aGUgVFggPHNwYW4gY2xhc3M9ImdyYW1lIj5GSUZPPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXggVG9nZ2xlIE9VVCBpbnRlcnJ1cHQgY2hhbm5lbCBpbiBob3N0IDxzcGFuIGNsYXNzPSJncmFtZSI+bW9kZTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTCBJV0RHIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBMTCBpbmxpbmUgbWFjcm9zIHRvIHVzZSBJV0RHeCBwYXJhbWV0ZXIKKyAgICAgICAgICBpbnN0ZWFkIG9mIElXREcgaW5zdGFuY2UgZGVmaW5lZCBpbiBDTVNJUyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRldmljZTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICA8L3VsPgorICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiB3aGl0ZTsiPlYxLjIuNiAvCisgICAgMjktSnVuZS0yMDE4PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+CisgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluIDQuNXB0IDAuMjVpbjsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogc3RhcnQ7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7Ij48Yj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy41cHQ7IGNvbG9yOiBibGFjazsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KKyAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImRpc2MiPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0byBzdXBwb3J0IFNUTTMyRjczMHh4IGFuZCBTVE0zMkY3NTB4eCB2YWx1ZQorICAgICAgICAgPHNwYW4gY2xhc3M9ImdyYW1lIj5saW5lczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRE1BJm5ic3A7PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+RE1BX0NIQU5ORUxfOCB0byBETUFfQ0hBTk5FTF8xNSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmFyZTwvc3Bhbj4KKyAgICAgICAgICBhbHNvIGRlZmluZWQgaW4gY2FzZSBvZiZuYnNwO1NUTTMyRjczMHh4IChzYW1lJm5ic3A7ZmVhdHVyZXMgYXMKKyAgICAgICAgICBTVE0zMkY3MzN4eCBsaW5lKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBGTEFTSCZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBzdXBwb3J0IG9mJm5ic3A7U1RNMzJGNzMweHggd2l0aCA0IEZMYXNoCisgICAgICAgICAgc2VjdG9ycyBvZiAxNktCIGVhY2guPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBzdXBwb3J0IG9mJm5ic3A7U1RNMzJGNzUweHggd2l0aCAyIEZMYXNoCisgICAgICAgICAgc2VjdG9ycyBvZiAzMktCIGVhY2guPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEdQSU8mbmJzcDs8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgc3VwcG9ydCBvZiZuYnNwO1NUTTMyRjczMHh4IHZhbHVlIDxzcGFuIGNsYXNzPSJncmFtZSI+bGluZSA6PC9zcGFuPiBzYW1lJm5ic3A7ZmVhdHVyZXMgYXMgU1RNMzJGNzMzeHggbGluZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgc3VwcG9ydCBvZiZuYnNwO1NUTTMyRjc1MHh4IHZhbHVlIDxzcGFuIGNsYXNzPSJncmFtZSI+bGluZSA6PC9zcGFuPiBzYW1lJm5ic3A7ZmVhdHVyZXMgYXMgU1RNMzJGNzU2eHgmbmJzcDtsaW5lPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFJDQyZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBzdXBwb3J0IG9mJm5ic3A7U1RNMzJGNzMweHggdmFsdWUgPHNwYW4gY2xhc3M9ImdyYW1lIj5saW5lIDo8L3NwYW4+IHNhbWUmbmJzcDtmZWF0dXJlcyBhcyBTVE0zMkY3MzN4eCZuYnNwO2xpbmU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIHN1cHBvcnQgb2YmbmJzcDtTVE0zMkY3NTB4eCB2YWx1ZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmxpbmUgOjwvc3Bhbj4gc2FtZSZuYnNwO2ZlYXR1cmVzIGFzIFNUTTMyRjc1Nnh4Jm5ic3A7bGluZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgIDwvdWw+CisgICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiAtbW96LWluaXRpYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IHdoaXRlOyI+VjEuMi41IC8KKyAgICAwMi1GZWJydWFyeS0yMDE4PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+CisgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluIDQuNXB0IDAuMjVpbjsiPjxiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPk1haW4gQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjwvcD4KKyAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImRpc2MiPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkdlbmVyYWwgdXBkYXRlcyB0byBmaXgga25vd24gZGVmZWN0cyBhbmQKKyAgICAgICAgIGVuaGFuY2VtZW50cyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmltcGxlbWVudGF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgbWFjcm8gdG8gZ2V0IHZhcmlhYmxlIGFsaWduZWQgb24gMzItYnl0ZXMsCisgICAgICAgICAgcmVxdWlyZWQgZm9yIGNhY2hlIG1haW50ZW5hbmNlIDxzcGFuIGNsYXNzPSJncmFtZSI+cHVycG9zZTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIDxzcGFuIGNsYXNzPSJncmFtZSI+VU5VU0VEKDwvc3Bhbj4pIG1hY3JvCisgICAgICAgICAgaW1wbGVtZW50YXRpb24gdG8gYXZvaWQgR0NDIHdhcm5pbmc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRoZSB3YXJuaW5nIGlzIGRldGVjdGVkIHdoZW4gdGhlIDxzcGFuIGNsYXNzPSJncmFtZSI+VU5VU0VEKDwvc3Bhbj4pIG1hY3JvIGlzIGNhbGxlZCBmcm9tIEMrKyBmaWxlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBTQUkgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9TQUlfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUFTdG9wKDwvc3Bhbj4pCisgICAgICAgICAgYW5kIEhBTF9TQUlfQWJvcnQoKSBwcm9jZXNzIHRvIGZpeCB0aGUgbG9jay91bmxvY2sgYXVkaW8gaXNzdWUgPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFBXUiA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1BXUl88c3BhbiBjbGFzcz0iZ3JhbWUiPkVudGVyU0xFRVBNb2RlKDwvc3Bhbj4pCisgICAgICAgICAgYW5kIEhBTF9QV1JfRW50ZXJTVE9QTW9kZSgpIEFQSXMgdG8gZW5zdXJlIHRoYXQgYWxsIGluc3RydWN0aW9ucworICAgICAgICAgIGZpbmlzaGVkIGJlZm9yZSBlbnRlcmluZyBTVE9QIG1vZGUuIDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBIQ0QgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBjYWxsYmFjayB0byBiZSB1c2VkIHRvIGhhbmRsZSB1c2IgZGV2aWNlCisgICAgICAgICAgY29ubmVjdGlvbi88c3BhbiBjbGFzcz0iZ3JhbWUiPmRpc2Nvbm5lY3Rpb248L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSENEX1BvcnRFbmFibGVkXzxzcGFuIGNsYXNzPSJncmFtZSI+Q2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9IQ0RfUG9ydERpc2FibGVkXzxzcGFuIGNsYXNzPSJncmFtZSI+Q2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0byBwcmV2ZW50IHJlYWN0aXZhdGUgaG9zdCBpbnRlcnJydXB0IDxzcGFuIGNsYXNzPSJncmFtZSI+Y2hhbm5lbDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICA8L3VsPgorICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiB3aGl0ZTsiPlYxLjIuNCAvCisgICAgMjItRGVjZW1iZXItMjAxNzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgorICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+CisgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsIHVwZGF0ZXMgdG8gZml4IGtub3duIGRlZmVjdHMgYW5kCisgICAgICAgICBlbmhhbmNlbWVudHMgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUgZm9sbG93aW5nIGNoYW5nZXMgZG9uZSBvbiB0aGUgSEFMIGRyaXZlcnMKKyAgICAgICAgIHJlcXVpcmUgYW4gdXBkYXRlIG9uIHRoZSBhcHBsaWNhdGlvbiBjb2RlIGJhc2VkIG9uIG9sZGVyIEhBTCA8c3BhbiBjbGFzcz0iZ3JhbWUiPnZlcnNpb25zPC9zcGFuPjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZXdvcmsgb2YgSEFMIENBTiBkcml2ZXIgKGNvbXBhdGliaWxpdHkKKyAgICAgICAgICBicmVhaykmbmJzcDs8L3NwYW4+PC9iPjxiPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvYj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QSBuZXcgSEFMIENBTiBkcml2ZXIgaGFzIGJlZW4gcmVkZXNpZ25lZCB3aXRoIG5ldworICAgICAgICAgICBBUElzLCB0byBieXBhc3MgbGltaXRhdGlvbnMgb24gQ0FOIFR4L1J4IEZJRk8gbWFuYWdlbWVudCBwcmVzZW50CisgICAgICAgICAgIHdpdGggcHJldmlvdXMgSEFMIENBTiBkcml2ZXIgdmVyc2lvbi48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRoZSBuZXcgSEFMIENBTiBkcml2ZXIgaXMgdGhlIHJlY29tbWVuZGVkCisgICAgICAgICAgIHZlcnNpb24uIEl0IGlzIGxvY2F0ZWQgYXMgdXN1YWwgaW4gRHJpdmVycy9TVE0zMkY3eHhfSEFMX0RyaXZlci9TcmMKKyAgICAgICAgICAgYW5kIERyaXZlcnMvU1RNMzJmN3h4X0hBTF9Ecml2ZXIvSW5jIGZvbGRlcnMuIEl0IGNhbiBiZSBlbmFibGVkCisgICAgICAgICAgIHRocm91Z2ggc3dpdGNoIEhBTF9DQU5fTU9EVUxFX0VOQUJMRUQgaW4gc3RtMzJmN3h4X2hhbF9jb25mLmg8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlRoZSBsZWdhY3kgSEFMIENBTiBkcml2ZXIgaXMgYWxzbyBwcmVzZW50IGluIHRoZQorICAgICAgICAgICByZWxlYXNlIGluIERyaXZlcnMvU1RNMzJGN3h4X0hBTF9Ecml2ZXIvU3JjL0xlZ2FjeSBhbmQKKyAgICAgICAgICAgRHJpdmVycy9TVE0zMkY3eHhfSEFMX0RyaXZlci9JbmMvTGVnYWN5IGZvbGRlcnMgZm9yIHNvZnR3YXJlCisgICAgICAgICAgIGNvbXBhdGliaWxpdHkgcmVhc29ucy4gSXRzIHVzYWdlIGlzIG5vdCByZWNvbW1lbmRlZCBhcworICAgICAgICAgICBkZXByZWNhdGVkLiZuYnNwO0l0IGNhbiBob3dldmVyIGJlIGVuYWJsZWQgdGhyb3VnaCBzd2l0Y2gKKyAgICAgICAgICAgSEFMX0NBTl9MRUdBQ1lfTU9EVUxFX0VOQUJMRUQgaW4gc3RtMzJmN3h4X2hhbF9jb25mLmg8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMJm5ic3A7PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTCBkcml2ZXIgdG8gYWxsb3cgdXNlciB0byBjaGFuZ2Ugc3lzdGljaworICAgICAgICAgIHBlcmlvZCB0byAxPHNwYW4gY2xhc3M9ImdyYW1lIj5tcyAsPC9zcGFuPiAxMCBtcyBvciAxMDAgbXMgOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIHRoZSBmb2xsb3dpbmcgPHNwYW4gY2xhc3M9ImdyYW1lIj5BUEkncyA6PC9zcGFuPiZuYnNwOyZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfPHNwYW4gY2xhc3M9ImdyYW1lIj5HZXRUaWNrUHJpbyg8L3NwYW4+KQorICAgICAgICAgICAgOiBSZXR1cm5zIGEgdGljayBwcmlvcml0eS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfPHNwYW4gY2xhc3M9ImdyYW1lIj5TZXRUaWNrRnJlcSg8L3NwYW4+KQorICAgICAgICAgICAgOiBTZXRzIG5ldyB0aWNrJm5ic3A7ZnJlcXVlbmN5Ljwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF88c3BhbiBjbGFzcz0iZ3JhbWUiPkdldFRpY2tGcmVxKDwvc3Bhbj4pCisgICAgICAgICAgICA6IFJldHVybnMgdGljayBmcmVxdWVuY3kuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPC91bD4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBIQUxfVGlja0ZyZXFUeXBlRGVmIGVudW1lcmF0aW9uIGZvciB0aGUKKyAgICAgICAgICAgZGlmZmVyZW50IFRpY2sgPHNwYW4gY2xhc3M9ImdyYW1lIj5GcmVxdWVuY2llcyA6PC9zcGFuPiAxMCBIeiAsIDEwMCBIegorICAgICAgICAgICBhbmQgMUtIeiAoZGVmYXVsdCkuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBDQU4gPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+RmllbGRzIG9mIENBTl9Jbml0VHlwZURlZiBzdHJ1Y3R1cmUgYXJlIHJld29ya2VkOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+U0pXIHRvIFN5bmNKdW1wV2lkdGgsIEJTMSB0byBUaW1lU2VnMSwgQlMyIHRvCisgICAgICAgICAgIFRpbWVTZWcyLCBUVENNIHRvIFRpbWVUcmlnZ2VyZWRNb2RlLCBBQk9NIHRvIEF1dG9CdXNPZmYsIEFXVU0gdG8KKyAgICAgICAgICAgQXV0b1dha2VVcCwgTkFSVCB0byBBdXRvUmV0cmFuc21pc3Npb24gKGludmVyc2VkKSwgUkZMTSB0bworICAgICAgICAgICBSZWNlaXZlRmlmb0xvY2tlZCBhbmQgVFhGUCB0byBUcmFuc21pdEZpZm9Qcmlvcml0eTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NBTl88c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikgaXMgc3BsaXQKKyAgICAgICAgICBpbnRvIGJvdGggSEFMX0NBTl9Jbml0KCkgYW5kIEhBTF9DQU5fU3RhcnQoKSBBUEknczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfQ0FOXzxzcGFuIGNsYXNzPSJncmFtZSI+VHJhbnNtaXQoPC9zcGFuPikgaXMKKyAgICAgICAgICByZXBsYWNlZCBieSBIQUxfQ0FOX0FkZFR4TWVzc2FnZSgpIHRvIHBsYWNlIFR4IFJlcXVlc3QsIHRoZW4KKyAgICAgICAgICBIQUxfQ0FOX0dldFR4TWFpbGJveGVzRnJlZUxldmVsKCkgZm9yIHBvbGxpbmcgdW50aWwgY29tcGxldGlvbi48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NBTl9UcmFuc21pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pIGlzCisgICAgICAgICAgcmVwbGFjZWQgYnkgSEFMX0NBTl9BY3RpdmF0ZU5vdGlmaWNhdGlvbigpIHRvIGVuYWJsZSB0cmFuc21pdCBJVCwKKyAgICAgICAgICB0aGVuIEhBTF9DQU5fQWRkVHhNZXNzYWdlKCkgZm9yIHBsYWNlIFR4IHJlcXVlc3QuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9DQU5fPHNwYW4gY2xhc3M9ImdyYW1lIj5SZWNlaXZlKDwvc3Bhbj4pIGlzCisgICAgICAgICAgcmVwbGFjZWQgYnkgSEFMX0NBTl9HZXRSeEZpZm9GaWxsTGV2ZWwoKSBmb3IgcG9sbGluZyB1bnRpbCByZWNlcHRpb24sCisgICAgICAgICAgdGhlbiBIQUxfQ0FOX0dldFJ4TWVzc2FnZSgpIDxicj4KKyAgICAgICAgICB0byBnZXQgUnggbWVzc2FnZS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NBTl9SZWNlaXZlXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikgaXMKKyAgICAgICAgICByZXBsYWNlZCBieSBIQUxfQ0FOX0FjdGl2YXRlTm90aWZpY2F0aW9uKCkmbmJzcDt0byBlbmFibGUgcmVjZWl2ZSBJVCwKKyAgICAgICAgICB0aGVuIEhBTF9DQU5fR2V0UnhNZXNzYWdlKCk8YnI+CisgICAgICAgICAgaW4gdGhlIHJlY2VpdmVjYWxsYmFjayB0byBnZXQgUnggbWVzc2FnZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfQ0FOXzxzcGFuIGNsYXNzPSJncmFtZSI+U2xlcHAoPC9zcGFuPikgaXMKKyAgICAgICAgICByZW5hbWVkIGFzIEhBTF9DQU5fUmVxdWVzdFNsZWVwKCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NBTl88c3BhbiBjbGFzcz0iZ3JhbWUiPlR4Q3BsdENhbGxiYWNrKDwvc3Bhbj4pCisgICAgICAgICAgaXMgc3BsaXQgaW50byBIQUxfQ0FOX1R4TWFpbGJveDBDb21wbGV0ZUNhbGxiYWNrKCksCisgICAgICAgICAgSEFMX0NBTl9UeE1haWxib3gxQ29tcGxldGVDYWxsYmFjaygpIGFuZCZuYnNwO0hBTF9DQU5fVHhNYWlsYm94MkNvbXBsZXRlQ2FsbGJhY2soKS48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0NBTl9SeENwbHRDYWxsYmFjayBpcyBzcGxpdCBpbnRvCisgICAgICAgICAgSEFMX0NBTl9SeEZpZm8wPHNwYW4gY2xhc3M9ImdyYW1lIj5Nc2dQZW5kaW5nQ2FsbGJhY2soPC9zcGFuPikgYW5kCisgICAgICAgICAgSEFMX0NBTl9SeEZpZm8xTXNnUGVuZGluZ0NhbGxiYWNrKCkuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1vcmUgY29tcGxldGUgIkhvdyB0byB1c2UgdGhlIG5ldworICAgICAgICAgIGRyaXZlciIgaXMgZGV0YWlsZWQgaW4gdGhlIGRyaXZlciBoZWFkZXIgc2VjdGlvbiBpdHNlbGYuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFJDQyZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IExMIDxzcGFuIGNsYXNzPSJncmFtZSI+bWFjcm88L3NwYW4+IDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTF9SQ0NfUExMXzxzcGFuIGNsYXNzPSJncmFtZSI+U2V0TWFpblNvdXJjZSg8L3NwYW4+KSBhbGxvd2luZyB0byBjb25maWd1cmUgUExMIGNsb2NrCisgICAgICAgICAgICBzb3VyY2U8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBIQUwgPHNwYW4gY2xhc3M9ImdyYW1lIj5tYWNyb3M8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPl9fSEFMX1JDQ19HRVRfUlRDXzxzcGFuIGNsYXNzPSJncmFtZSI+U09VUkNFKDwvc3Bhbj4pIGFsbG93aW5nIHRvIGdldCB0aGUgUlRDIGNsb2NrIHNvdXJjZTxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+X19IQUxfUkNDX0dFVF9SVENfSFNFXzxzcGFuIGNsYXNzPSJncmFtZSI+UFJFU0NBTEVSKDwvc3Bhbj4pIGFsbG93aW5nIHRvIGdldCB0aGUgSFNFIGNsb2NrIGRpdmlkZXIKKyAgICAgICAgICAgIGZvciBSVEMgcGVyaXBoZXJhbDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPC91bD4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkVuc3VyZSByZXNldCBvZiBDSVIgYW5kIENTUiByZWdpc3RlcnMgd2hlbgorICAgICAgICAgICBpc3N1aW5nIEhBTF9SQ0NfPHNwYW4gY2xhc3M9ImdyYW1lIj5EZUluaXQoPC9zcGFuPikvTExfUkNDX0RlSW5pdAorICAgICAgICAgICBmdW5jdGlvbnM8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9SQ0NfPHNwYW4gY2xhc3M9ImdyYW1lIj5HZXRTeXNDbG9ja0ZyZXEoPC9zcGFuPikKKyAgICAgICAgICAgdG8gYXZvaWQgcmlzayBvZiByb3VuZGluZyBlcnJvciB3aGljaCBtYXkgbGVhZHMgdG8gYSB3cm9uZyByZXR1cm5lZAorICAgICAgICAgICB2YWx1ZS48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogN3B0OyI+Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1JDQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkRlSW5pdCg8L3NwYW4+KQorICAgICAgICAgICAmbmJzcDthbmQgTExfUkNDX0RlSW5pdCgpIEFQSXMgdG88L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QmUgYWJsZSB0byByZXR1cm4gSEFML0xMCisgICAgICAgICAgICBzdGF0dXM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgY2hlY2tzIGZvciBIU0ksIFBMTAorICAgICAgICAgICAgYW5kIFBMTEkyPHNwYW4gY2xhc3M9ImdyYW1lIj5TICZuYnNwO3JlYWR5PC9zcGFuPiBiZWZvcmUgbW9kaWZ5aW5nCisgICAgICAgICAgICBSQ0MgQ0ZHUiByZWdpc3RlcnM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5DbGVhciBhbGwgaW50ZXJydXB0IDxzcGFuIGNsYXNzPSJncmFtZSI+ZmxhZ3M8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SW5pdGlhbGl6ZSBzeXN0aWNrCisgICAgICAgICAgICBpbnRlcnJ1cHQgPHNwYW4gY2xhc3M9ImdyYW1lIj5wZXJpb2Q8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPC91bD4KKyAgICAgIDwvdWw+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIERNQSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgY2xlYW4gb2YgY2FsbGJhY2tzIGluIEhBTF9ETUFfPHNwYW4gY2xhc3M9ImdyYW1lIj5EZUluaXQoPC9zcGFuPikmbmJzcDtBUEk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4IHdyb25nIERNQV9GTEFHX0ZFSUZPXzQgYW5kIERNQV9GTEFHRE1BRUlGT180CisgICAgICAgICAgZGVmaW5lcyA8c3BhbiBjbGFzcz0iZ3JhbWUiPnZhbHVlczwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgSTJDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBJbnRlcmZhY2UgQVBJcyBoZWFkZXJzIHRvIHJlbW92ZSBjb25mdXNpbmcKKyAgICAgICAgICBtZXNzYWdlIGFib3V0IGRldmljZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmFkZHJlc3M8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBJMkNfPHNwYW4gY2xhc3M9ImdyYW1lIj5XYWl0T25SWE5FRmxhZ1VudGlsVGltZW91dCg8L3NwYW4+KQorICAgICAgICAgIHRvIHJlc29sdmUgYSByYWNlIGNvbmRpdGlvbiBiZXR3ZWVuIFNUT1BGIGFuZCBSWE5FIEZsYWdzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSZuYnNwO0kyQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zZmVyQ29uZmlnKDwvc3Bhbj4pCisgICAgICAgICAgdG8gZml4IHdyb25nIGJpdCBtYW5hZ2VtZW50PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwgVVNBUlQmbmJzcDs8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgYXNzZXJ0IG1hY3JvcyB0byBjaGVjayBVU0FSVCBCYXVkUmF0ZSByZWdpc3Rlcjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBFVEggPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+RG97Li59IDxzcGFuIGNsYXNzPSJncmFtZSI+V2hpbGUoPC9zcGFuPjApJm5ic3A7aW5zdXJlZAorICAgICAgICAgIGluJm5ic3A7bXVsdGkgc3RhdGVtZW50IG1hY3JvcyA6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5fX0hBTF9FVEhfV0FLRVVQX0VYVElfRU5BQkxFX0ZBTExJTkdSSVNJTkdfPHNwYW4gY2xhc3M9ImdyYW1lIj5UUklHR0VSKDwvc3Bhbj4pJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5fX0hBTF9FVEhfV0FLRVVQX0VYVElfRElTQUJMRV9GQUxMSU5HUklTSU5HXzxzcGFuIGNsYXNzPSJncmFtZSI+VFJJR0dFUig8L3NwYW4+KSA8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEZMQVNIJm5ic3A7PC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0ZMQVNIXzxzcGFuIGNsYXNzPSJncmFtZSI+VW5sb2NrKDwvc3Bhbj4pIHVwZGF0ZQorICAgICAgICAgIHRvIHJldHVybiBzdGF0ZSBlcnJvciB3aGVuIHRoZSBGTEFTSCBpcyBhbHJlYWR5IHVubG9ja2VkPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEdQSU8gPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG1pc3NpbmcgZGVmaW5lIG9mIEdQSU9fUElOXzIgaW4KKyAgICAgICAgICBHUElPS19QSU5fQVZBSUxBQkxFIGxpc3Q8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgUENEIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkRvey4ufSA8c3BhbiBjbGFzcz0iZ3JhbWUiPldoaWxlKDwvc3Bhbj4wKQorICAgICAgICAgICZuYnNwO2luc3VyZWQgaW4gbXVsdGkgc3RhdGVtZW50IG1hY3Jvczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMIFVUSUxTIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnN0bTMyZjd4eF9sbF91dGlscy48c3BhbiBjbGFzcz0iZ3JhbWUiPmggOjwvc3Bhbj4KKyAgICAgICAgICBVcGRhdGUgTExfR2V0UGFja2FnZVR5cGUgY29tbWFuZCB0byByZXR1cm4gdWludDMyX3QgaW5zdGVhZCBvZgorICAgICAgICAgIHVpbnQxNl90PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFRJTSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5zdG0zMmY3eHhfaGFsX3RpbV9leC48c3BhbiBjbGFzcz0iZ3JhbWUiPmMgOjwvc3Bhbj4KKyAgICAgICAgICBVcGRhdGUgSEFMX1RJTUV4X0NvbmZpZ0JyZWFrRGVhZFRpbWUgQVBJIHRvIGF2b2lkIHRvIGJsb2NrIHRpbWVyCisgICAgICAgICAgYmVoYXZpb3Igd2hlbiA8YnI+CisgICAgICAgICAgcmVtYWlucyBpbiB0aGUgc3RhdGUgSEFMX1RJTV9TVEFURV9CVVNZLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4mbmJzcDtzdG0zMmY3eHhfaGFsX3RpbS48c3BhbiBjbGFzcz0iZ3JhbWUiPmggOjwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeCBfX0hBTF9USU1fU0VUXzxzcGFuIGNsYXNzPSJncmFtZSI+UFJFU0NBTEVSKDwvc3Bhbj4pCisgICAgICAgICAgIG1hY3JvPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXggdHlwb3MgaW4gc29tZSBleHBvcnRlZCBtYWNyb3MgPHNwYW4gY2xhc3M9ImdyYW1lIj5kZXNjcmlwdGlvbjwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwgRk1DIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9TRFJBTV88c3BhbiBjbGFzcz0iZ3JhbWUiPlNlbmRDb21tYW5kKDwvc3Bhbj4pCisgICAgICAgICAgQVBJOiBSZW1vdmUgdGhlJm5ic3A7dGltZW91dCBjaGVjazwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBOQU5EIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeCB3cm9uZyBjaGVjayBmb3IgTkFORCA8c3BhbiBjbGFzcz0iZ3JhbWUiPnN0YXR1czwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICA8L3VsPgorICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiB3aGl0ZTsiPlYxLjIuMyAvCisgICAgMjUtQXVndXN0LTIwMTc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9oMz4KKyAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPgorICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbCB1cGRhdGVzIHRvIGZpeCBrbm93biBkZWZlY3RzIGFuZAorICAgICAgICAgZW5oYW5jZW1lbnRzIDxzcGFuIGNsYXNzPSJncmFtZSI+aW1wbGVtZW50YXRpb248L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIERhdGUgYW5kIFZlcnNpb24gZnJvbSBoZWFkZXIgPHNwYW4gY2xhc3M9ImdyYW1lIj5maWxlczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMIGRyaXZlcnMgdG8gcmVmZXIgdG8gdGhlIG5ldyZuYnNwO0NNU0lTCisgICAgICAgICBiaXQgcG9zaXRpb24gZGVmaW5lcyBpbnN0ZWFkIG9mIHVzYWdlIHRoZSBQT1NJVElPTl88c3BhbiBjbGFzcz0iZ3JhbWUiPlZBTCg8L3NwYW4+KQorICAgICAgICAgbWFjcm88L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgQ0FOIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBtaXNzaW5nIHVubG9jayBpbiBIQUxfQ0FOX1JlY2VpdmVfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KSBwcm9jZXNzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIERDTUkgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIERDTUkgZHJpdmVyIGNsZWFuLXVwOiByZW1vdmUgbm9uIHJlZmVyZW5jZWQKKyAgICAgICAgICBjYWxsYmFjayBBUElzOiBIQUxfRENNSV88c3BhbiBjbGFzcz0iZ3JhbWUiPlZzeW5jQ2FsbGJhY2soPC9zcGFuPikgYW5kCisgICAgICAgICAgSEFMX0RDTUlfSHN5bmNDYWxsYmFjaygpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMJm5ic3A7REZTRE0gPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4IGNhc3QgaXNzdWUgb24gQVBJcyB0aGF0IHJldHVybiBzaWduZWQgaW50ZWdlcgorICAgICAgICAgIHZhbHVlICh1aW50MzJfdCkmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRE1BIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBETUEgZHJpdmVyIGNsZWFuLXVwOiByZW1vdmUgbm9uIHJlZmVyZW5jZWQKKyAgICAgICAgICBjYWxsYmFjayBBUElzOiBIQUxfRE1BXzxzcGFuIGNsYXNzPSJncmFtZSI+Q2xlYW5DYWxsYmFja3MoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRkxBU0ggPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+RkxBU0hfUHJvZ3JhbV88c3BhbiBjbGFzcz0iZ3JhbWUiPkRvdWJsZVdvcmQoPC9zcGFuPikKKyAgICAgICAgICBBUEk6IFJlcGxhY2UgNjQtYml0IGFjY2Vzc2VzIHdpdGggMiBkb3VibGUgd29yZHMgb3BlcmF0aW9uczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBHZW5lcmljIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBhc3NlcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5wYXJhbSg8L3NwYW4+KQorICAgICAgICAgIG1hY3JvIGRlZmluaXRpb24gdG8gYmUgaW4gbGluZSB3aXRoIHN0bTMyX2xsX3V0aWxzLmMgZHJpdmVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEdQSU8gPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R1BJT0tfUElOXzxzcGFuIGNsYXNzPSJncmFtZSI+QVZBSUxBQkxFKDwvc3Bhbj4pCisgICAgICAgICAgYXNzZXJ0IG1hY3JvIHVwZGF0ZSB0byBhbGxvdyBwb3NzaWJpbGl0eSB0byBjb25maWd1cmUgR1BJT19QSU5fMjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBMVERDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSBIQUxfTFREQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkxpbmVFdmVuQ2FsbGJhY2soPC9zcGFuPikKKyAgICAgICAgICBBUEkgdG8mbmJzcDtIQUxfTFREQ19MaW5lRXZlbjxiPnQ8L2I+Q2FsbGJhY2soKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBQQ0QgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9QQ0RfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCisgICAgICAgICAgQVBJIHRvIGZpeCZuYnNwO3RyYW5zZmVyIGlzc3VlcyB3aGVuIFVTQiBIUyBpcyB1c2VkIHdpdGgKKyAgICAgICAgICBETUEmbmJzcDtlbmFibGVkPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFJDQyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1JDQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkdldE9zY0NvbmZpZyg8L3NwYW4+KQorICAgICAgICAgIEFQSSB0bzo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnNldCBQTExSIGluIHRoZSBSQ0NfT3NjSW5pdFN0cnVjdDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Y2hlY2sgb24gbnVsbCA8c3BhbiBjbGFzcz0iZ3JhbWUiPnBvaW50ZXI8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1JDQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkNsb2NrQ29uZmlnKDwvc3Bhbj4pCisgICAgICAgICAgQVBJIHRvOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Y2hlY2sgb24gbnVsbCA8c3BhbiBjbGFzcz0iZ3JhbWUiPnBvaW50ZXI8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5vcHRpbWl6ZSZuYnNwO2NvZGUgc2l6ZSBieSB1cGRhdGluZyB0aGUgaGFuZGxpbmcKKyAgICAgICAgICAgbWV0aG9kIG9mIHRoZSBTV1MgPHNwYW4gY2xhc3M9ImdyYW1lIj5iaXRzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIHRvIDxzcGFuIGNsYXNzPSJncmFtZSI+dXNlJm5ic3A7IF88L3NwYW4+X0hBTF9GTEFTSF9HRVRfTEFURU5DWSgpCisgICAgICAgICAgIGZsYXNoIG1hY3JvIGluc3RlYWQgb2YgdXNpbmcgZGlyZWN0IHJlZ2lzdGVyIGFjY2VzcyB0byZuYnNwO0xBVEVOQ1kKKyAgICAgICAgICAgYml0cyBpbiBGTEFTSCBBQ1IgcmVnaXN0ZXI8L3NwYW4+PHNwYW4gc3R5bGU9IiI+LiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgU0FJIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfU0FJXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BU3RvcCg8L3NwYW4+KQorICAgICAgICAgIEFQSSB0byBmbHVzaCBmaWZvIGFmdGVyIGRpc2FibGluZyZuYnNwO1NBSTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBUSU0gPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9USU1FeF88c3BhbiBjbGFzcz0iZ3JhbWUiPkNvbmZpZ0JyZWFrSW5wdXQoPC9zcGFuPikKKyAgICAgICAgICBBUEkgdG8mbmJzcDtzdXBwb3J0IEJLSU5QL0JLSU4yUCBwb2xhcml0eSBiaXRzLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMIERNQSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgU0VUXzxzcGFuIGNsYXNzPSJncmFtZSI+QklUKDwvc3Bhbj4pIGFjY2VzcworICAgICAgICAgIHRvIExJRkNSIGFuZCBISUZDUiByZWdpc3RlcnMgYnkgV1JJVEVfUkVHKCkgdG8gYXZvaWQgcmVhZCBhY2Nlc3MgdGhhdAorICAgICAgICAgIGlzIG5vdCBhbGxvd2VkIHdoZW4gY2xlYXJpbmcgRE1BIGZsYWdzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwgSTJDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBMTF9JMkNfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pIEFQSQorICAgICAgICAgIHRvIGF2b2lkIGVuYWJsaW5nIG93biBhZGRyZXNzMSB3aGVuIE93bkFkZHJlc3MxIHBhcmFtZXRlciB2YWx1ZSBpbgorICAgICAgICAgIHRoZSBJMkNfSW5pdFN0cnVjdCBpcyBlcXVhbCB0byAwLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMIFRJTSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgTExfVElNXzxzcGFuIGNsYXNzPSJncmFtZSI+RW5hYmxlVXBkYXRlRXZlbnQoPC9zcGFuPikKKyAgICAgICAgICBBUEkgdG8gY2xlYXIgVURJUyBiaXQgaW4gQ1IxIHJlZ2lzdGVyIGluc3RlYWQgb2Ygc2V0dGluZyBpdC48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIExMX1RJTV88c3BhbiBjbGFzcz0iZ3JhbWUiPkRpc2FibGVVcGRhdGVFdmVudCg8L3NwYW4+KQorICAgICAgICAgIEFQSSB0byBzZXQgVURJUyBiaXQgaW4gQ1IxIHJlZ2lzdGVyIGluc3RlYWQgb2YgY2xlYXJpbmcgaXQuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwgVVNCIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBVU0JfRVAwPHNwYW4gY2xhc3M9ImdyYW1lIj5TdGFydFhmZXIoPC9zcGFuPikKKyAgICAgICAgICBBUEkgdG8gZml4Jm5ic3A7dHJhbnNmZXIgaXNzdWVzIHdoZW4gVVNCIEhTIGlzIHVzZWQgd2l0aAorICAgICAgICAgIERNQSZuYnNwO2VuYWJsZWQ8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICA8L3VsPgorICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiB3aGl0ZTsiPlYxLjIuMiAvCisgICAgMTQtQXByaWwtMjAxNzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgorICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+CisgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsIHVwZGF0ZXMgdG8gZml4IGtub3duIGRlZmVjdHMgYW5kCisgICAgICAgICBlbmhhbmNlbWVudHMgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgQ0FOIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBtYW5hZ2VtZW50IG9mJm5ic3A7b3ZlcnJ1biBlcnJvci4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWxsb3cgcG9zc2liaWxpdHkgdG8gcmVjZWl2ZSBtZXNzYWdlcyBmcm9tIHRoZSAyCisgICAgICAgICAgUlggRklGT3MgaW4gcGFyYWxsZWwgdmlhIGludGVycnVwdC48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4Jm5ic3A7bWVzc2FnZSBsb3N0IGlzc3VlIHdpdGggc3BlY2lmaWMgc2VxdWVuY2UKKyAgICAgICAgICBvZiB0cmFuc21pdCByZXF1ZXN0cy48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SGFuZGxlIHRyYW5zbWlzc2lvbiBmYWlsdXJlIHdpdGggZXJyb3IgY2FsbGJhY2ssCisgICAgICAgICAgd2hlbiBOQVJUIGlzIGVuYWJsZWQuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBfX0hBTF9DQU5fQ0FOQ0VMXzxzcGFuIGNsYXNzPSJncmFtZSI+VFJBTlNNSVQoPC9zcGFuPikKKyAgICAgICAgICBjYWxsIHRvIGFib3J0IHRyYW5zbWlzc2lvbiB3aGVuIHRpbWVvdXQgaXMgcmVhY2hlZDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgIDwvdWw+CisgICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiAtbW96LWluaXRpYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IHdoaXRlOyI+VjEuMi4xIC8KKyAgICAyNC1NYXJjaC0yMDE3PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+CisgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluIDQuNXB0IDAuMjVpbjsiPjxiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPk1haW4gQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjxvOnA+PC9vOnA+PC9wPgorICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0id2lkb3dzOiAxOyBmbG9hdDogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlCisgICAgICAgICBDSE0gVXNlck1hbnVhbHMgdG8gc3VwcG9ydCBMTCA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRyaXZlcnM8L3NwYW4+PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkdlbmVyYWwgdXBkYXRlcyB0byBmaXgga25vd24gZGVmZWN0cyBhbmQKKyAgICAgICAgIGVuaGFuY2VtZW50cyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmltcGxlbWVudGF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBETUEgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9ETUFfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gdG8gYWRqdXN0IHRoZSBjb21wYXRpYmlsaXR5IGNoZWNrIGJldHdlZW4gRklGTyB0aHJlc2hvbGQgYW5kCisgICAgICAgICAgYnVyc3QgY29uZmlndXJhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBNTUMgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9NTUNfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0Q2FyZCg8L3NwYW4+KQorICAgICAgICAgIGZ1bmN0aW9uIHdpdGggcHJvcGVyIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGFkZGluZyBhIGRlbGF5IGFmdGVyIE1NQworICAgICAgICAgIGNsb2NrIGVuYWJsZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgTU1DXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BRXJyb3IoPC9zcGFuPikKKyAgICAgICAgICBmdW5jdGlvbiBpZ25vcmUgRE1BIEZJRk8gZXJyb3IgYXMgbm90IGltcGFjdGluZyB0aGUgZGF0YSB0cmFuc2Zlcjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBTRCA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1NEXzxzcGFuIGNsYXNzPSJncmFtZSI+SW5pdENhcmQoPC9zcGFuPikKKyAgICAgICAgICBmdW5jdGlvbiB3aXRoIHByb3BlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhZGRpbmcgYSBkZWxheSBhZnRlciBTRAorICAgICAgICAgIGNsb2NrIGVuYWJsZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgU0RfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUFFcnJvcig8L3NwYW4+KQorICAgICAgICAgIGZ1bmN0aW9uIGlnbm9yZSBETUEgRklGTyBlcnJvciBhcyBub3QgaW1wYWN0aW5nIHRoZSBkYXRhIHRyYW5zZmVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIE5BTkQgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9OQU5EX0FkZHJlc3NfPHNwYW4gY2xhc3M9ImdyYW1lIj5JbmMoPC9zcGFuPikKKyAgICAgICAgICBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgcHJvcGVyIHBsYW5lIG51bWJlciBjaGVjazwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMIFNETU1DIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBTRE1NQ19EQVRBVElNRU9VVCB2YWx1ZSB3aXRoIGFwcHJvcHJpYXRlCisgICAgICAgICAgdmFsdWUgbmVlZGVkIGJ5IHJlYWRpbmcgYW5kIHdyaXRpbmcgb3BlcmF0aW9ucyBvZiBTRCBhbmQgTU1DIGNhcmRzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwgUlRDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMX1JUQ19USU1FXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0KDwvc3Bhbj4pIGFuZAorICAgICAgICAgIExMX1JUQ19EQVRFX0dldCgpIGlubGluZSBtYWNyb3Mgb3B0aW1pemF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwgQURDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeCB3cm9uZyBBREMgZ3JvdXAgaW5qZWN0ZWQgc2VxdWVuY2UgPHNwYW4gY2xhc3M9ImdyYW1lIj5jb25maWd1cmF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TExfQURDX0lOSl88c3BhbiBjbGFzcz0iZ3JhbWUiPlNldFNlcXVlbmNlclJhbmtzKDwvc3Bhbj4pCisgICAgICAgICAgIGFuZCBMTF9BRENfSU5KX0dldFNlcXVlbmNlclJhbmtzKCkgQVBJJ3MgdXBkYXRlIHRvIHRha2UgaW4KKyAgICAgICAgICAgY29uc2lkZXJhdGlvbiB0aGUgQURDIG51bWJlciBvZiBjb252ZXJzaW9uczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIHRoZSZuYnNwO2RlZmluZWQgdmFsdWVzIGZvciBBREMgZ3JvdXAKKyAgICAgICAgICAgaW5qZWN0ZWQgc2VxZW5jZXIgPHNwYW4gY2xhc3M9ImdyYW1lIj5yYW5rczwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgIDwvdWw+CisgICAgPC91bD4KKyAgICA8aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7IG1hcmdpbi1yaWdodDogNTAwcHQ7IC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLWlubGluZS1wb2xpY3k6IC1tb3otaW5pdGlhbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogd2hpdGU7Ij5WMS4yLjAgLworICAgIDMwLURlY2VtYmVyLTIwMTY8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9oMz4KKyAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPgorICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T2ZmaWNpYWwgcmVsZWFzZSB0byBhZGQgdGhlIHN1cHBvcnQgb2YgPGI+U1RNMzJGNzIyeHgsCisgICAgICAgICBTVE0zMkY3MjN4eCwgU1RNMzJGNzMyeHg8L2I+IDxiPmFuZCBTVE0zMkY3MzN4eDwvYj4gZGV2aWNlczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9IndpZG93czogMTsgZmxvYXQ6IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBMb3cgTGF5ZXIgZHJpdmVycyBhbGxvd2luZyBwZXJmb3JtYW5jZSBhbmQKKyAgICAgICAgIGZvb3RwcmludCA8c3BhbiBjbGFzcz0iZ3JhbWUiPm9wdGltaXphdGlvbjwvc3Bhbj48L3NwYW4+PC9iPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxvdyBMYXllciA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRyaXZlcnM8L3NwYW4+IEFQSXMKKyAgICAgICAgICBwcm92aWRlIHJlZ2lzdGVyIGxldmVsIHByb2dyYW1taW5nOiByZXF1aXJlIGRlZXAga25vd2xlZGdlIG9mCisgICAgICAgICAgcGVyaXBoZXJhbHMgZGVzY3JpYmVkIGluIFNUTTMyRjd4eCBSZWZlcmVuY2UgTWFudWFsczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJ3aWRvd3M6IDE7IGZsb2F0OiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Mb3cKKyAgICAgICAgICBMYXllciBkcml2ZXJzIGFyZSBhdmFpbGFibGUgZm9yOiBBREMsJm5ic3A7Q29ydGV4LCBDUkMsIERBQywgRE1BLAorICAgICAgICAgIERNQTJELCBFWFRJLCBHUElPLCBJMkMsIElXREcsIExQVElNLCBQV1IsIFJDQywgUk5HLCBSVEMsIFNQSSwgVElNLAorICAgICAgICAgIFVTQVJULCBXV0RHIHBlcmlwaGVyYWxzIGFuZCBhZGRpdGlvbm5hbCBMb3cgTGV2ZWwgQnVzLCBTeXN0ZW0gYW5kCisgICAgICAgICAgVXRpbGl0aWVzIEFQSXMuPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Mb3cgTGF5ZXIgPHNwYW4gY2xhc3M9ImdyYW1lIj5kcml2ZXJzPC9zcGFuPiBBUElzCisgICAgICAgICAgYXJlIGltcGxlbWVudGVkIGFzIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24gaW4gbmV3PHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFuPjxpPkluYy9zdG0zMmY3eHhfbGxfcHBwLmg8L2k+PHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFuPmZpbGVzIGZvciBQUFAgcGVyaXBoZXJhbHMsCisgICAgICAgICAgdGhlcmUgaXMgbm8gY29uZmlndXJhdGlvbiBmaWxlIGFuZCBlYWNoPHNwYW4gY2xhc3M9ImFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+Jm5ic3A7PC9zcGFuPjxpPnN0bTMyZjd4eF9sbF9wcHAuaDwvaT48c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj4mbmJzcDs8L3NwYW4+ZmlsZSBtdXN0IGJlIGluY2x1ZGVkIGluCisgICAgICAgICAgdXNlciBjb2RlLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkdlbmVyYWwgdXBkYXRlcyB0byBmaXgga25vd24gZGVmZWN0cyBhbmQKKyAgICAgICAgIGVuaGFuY2VtZW50cyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmltcGxlbWVudGF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgSEFMIDxiPk1NQzwvYj4gYW5kIDxiPlNNQlVTPC9iPiBkcml2ZXJzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIENvcnRleDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW92ZSBIQUxfTVBVXzxzcGFuIGNsYXNzPSJncmFtZSI+RGlzYWJsZSg8L3NwYW4+KQorICAgICAgICAgIGFuZCBIQUxfTVBVX0VuYWJsZSgpIGZyb20gc3RtMzJmN3h4X2hhbF9jb3J0ZXguaCB0bworICAgICAgICAgIHN0bTMyZjd4eF9oYWxfY29ydGV4LmM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q2xlYXIgdGhlIHdob2xlIE1QVSBjb250cm9sIHJlZ2lzdGVyIGluJm5ic3A7SEFMX01QVV88c3BhbiBjbGFzcz0iZ3JhbWUiPkRpc2FibGUoPC9zcGFuPikgQVBJPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIENSWVA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBzdXBwb3J0IG9mIDxzcGFuIGNsYXNzPSJncmFtZSI+QUVTPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBETUE8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBhIGNoZWNrIG9uIERNQSBzdHJlYW0gaW5zdGFuY2UgaW4gSEFMX0RNQV88c3BhbiBjbGFzcz0iZ3JhbWUiPkRlSW5pdCg8L3NwYW4+KSBBUEk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRVRIPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5GaXggd3JvbmcgZGVmaW5pdGlvbnMgaW4gZHJpdmVyIGhlYWRlciBmaWxlCisgICAgICAgICAgc3RtMzJmN19oYWxfZXRoLmg8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRkxBU0g8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlN1cHBvcnQgT1RQIHByb2dyYW0gb3BlcmF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCB0aGUgc3VwcG9ydCBvZiBQQ1JPUCA8c3BhbiBjbGFzcz0iZ3JhbWUiPmZlYXR1cmU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0aGUgY2xlYXJpbmcgb2YgZXJyb3IgPHNwYW4gY2xhc3M9ImdyYW1lIj5mbGFnczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgSTJDPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BbGlnbiBkcml2ZXIgc291cmNlIGNvZGUgd2l0aCBvdGhlciBTVE0zMiA8c3BhbiBjbGFzcz0iZ3JhbWUiPmZhbWlsaWVzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBKUEVHPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgdGhlIG91dHB1dCBkYXRhIG1hbmFnZW1lbnQKKyAgICAgICAgICB3aGVuJm5ic3A7SEFMX0pQRUdfPHNwYW4gY2xhc3M9ImdyYW1lIj5QYXVzZSg8L3NwYW4+KSBpcyBwZXJmb3JtZWQKKyAgICAgICAgICBkdXJpbmcgdGhlIGxhc3QgZGF0YSBzZW5kaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFJDQyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5FbmFibGUgUFdSIG9ubHkgaWYgbmVjZXNzYXJ5IGZvciBMU0UgY29uZmlndXJhdGlvbgorICAgICAgICAgIGluIEhBTF9SQ0NfPHNwYW4gY2xhc3M9ImdyYW1lIj5Pc2NDb25maWcoPC9zcGFuPikgQVBJPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSBSQ0NfTFBUSU0xQ0xLU09VUkNFX1BDTEsgZGVmaW5lIHRvCisgICAgICAgICAgUkNDX0xQVElNMUNMS1NPVVJDRV9QQ0xLMTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgUkNDX0RGU0RNMUNMS1NPVVJDRV9QQ0xLIGRlZmluZSB0bworICAgICAgICAgIFJDQ19ERlNETTFDTEtTT1VSQ0VfUENMSzI8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgU1BJPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5DbGVhciBSWCBGSUZPIGF0IHRoZSBlbmQgb2YgZWFjaCB0cmFuc2FjdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBVQVJUPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgVVNBUlRfQ1IyX0xJTkVOIGJpdCBjbGVhcmluZyZuYnNwO3doZW4KKyAgICAgICAgICBpbml0aWFsaXppbmcgaW4gc3luY2hyb25vdXMgPHNwYW4gY2xhc3M9ImdyYW1lIj5tb2RlPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBVU0I8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBzdXBwb3J0IG9mIGVtYmVkZGVkIFVTQiBQSFkgQ29udHJvbGxlcjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgc3VwcG9ydCBvZiBCYXR0ZXJ5IENoYXJnaW5nIERldGVjdG9yIChCQ0QpCisgICAgICAgICAgZmVhdHVyZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkxMIFNETU1DPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IFNETU1DX0NtZFNERXJhc2VTdGFydEFkZCwKKyAgICAgICAgICBTRE1NQ19DbWRTREVyYXNlRW5kQWRkLCBTRE1NQ19DbWRPcENvbmRpdGlvbiBhbmQgU0RNTUNfQ21kU3dpdGNoCisgICAgICAgICAgZnVuY3Rpb25zPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwgVVNCPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgUEVOQSBiaXQgY2xlYXJpbmcgaW4gT1RHX0hQUlQwIHJlZ2lzdGVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlIGZvbGxvd2luZyBjaGFuZ2VzIGRvbmUgb24gdGhlIEhBTCBkcml2ZXJzCisgICAgICAgICByZXF1aXJlIGFuIHVwZGF0ZSBvbiB0aGUgYXBwbGljYXRpb24gY29kZSBiYXNlZCBvbiBvbGRlciBIQUwgPHNwYW4gY2xhc3M9ImdyYW1lIj52ZXJzaW9uczwvc3Bhbj48L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFNEPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PdmVyYWxsIHJld29yayBvZiB0aGUgZHJpdmVyIGZvciBhIG1vcmUKKyAgICAgICAgICAgZWZmaWNpZW50Jm5ic3A7aW1wbGVtZW50YXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW9kaWZ5IGluaXRpYWxpemF0aW9uCisgICAgICAgICAgICBBUEkgYW5kIDxzcGFuIGNsYXNzPSJncmFtZSI+c3RydWN0dXJlczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Nb2RpZnkgUmVhZCAvIFdyaXRlIHNlcXVlbmNlczoKKyAgICAgICAgICAgIHNlcGFyYXRlIHRyYW5zZmVyIHByb2Nlc3MgYW5kIFNEIENhcmRzIHN0YXRlIDxzcGFuIGNsYXNzPSJncmFtZSI+bWFuYWdlbWVudDwvc3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGRpbmcgaW50ZXJydXB0IG1vZGUKKyAgICAgICAgICAgIGZvciBSZWFkIC8gV3JpdGUgb3BlcmF0aW9uczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0aGUKKyAgICAgICAgICAgIEhBTF9TRF9JUlFIYW5kbGVyIGZ1bmN0aW9uIGJ5IG9wdGltaXppbmcgdGhlIG1hbmFnZW1lbnQgb2YKKyAgICAgICAgICAgIGludGVycnVwdCA8c3BhbiBjbGFzcz0iZ3JhbWUiPmVycm9yczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVmZXIgdG8gdGhlIGZvbGxvd2luZyBleGFtcGxlIHRvIGlkZW50aWZ5IHRoZQorICAgICAgICAgICBjaGFuZ2VzOiBCU1AgZXhhbXBsZSBhbmQgVVNCX0RldmljZS9NU0NfU3RhbmRhbG9uZSBhcHBsaWNhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFRJTTwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBBdXRvUmVsb2FkUHJlbG9hZCBmaWVsZCBpbgorICAgICAgICAgICBUSU1fQmFzZV9Jbml0VHlwZURlZiBzdHJ1Y3R1cmU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlZmVyIHRvIHRoZSBUSU0gZXhhbXBsZXMgdG8gaWRlbnRpZnkgdGhlIDxzcGFuIGNsYXNzPSJncmFtZSI+Y2hhbmdlczwvc3Bhbj48Yj4mbmJzcDs8L2I+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgTkFORDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW9kaWZ5IE5BTkRfQWRkcmVzc1R5cGVEZWYsCisgICAgICAgICAgIE5BTkRfRGV2aWNlQ29uZmlnVHlwZURlZiBhbmQgTkFORF9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZXMgPHNwYW4gY2xhc3M9ImdyYW1lIj5maWVsZHM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IEhBTF9OQU5EX0NvbmZpZ0RldmljZSBBUEk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgIDwvdWw+CisgICAgPC91bD4KKyAgICA8aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7IG1hcmdpbi1yaWdodDogNTAwcHQ7IC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLWlubGluZS1wb2xpY3k6IC1tb3otaW5pdGlhbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogd2hpdGU7Ij5WMS4xLjEgLworICAgIDAxLUp1bHktMjAxNjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgorICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+CisgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRE1BPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX0RNQV88c3BhbiBjbGFzcz0iZ3JhbWUiPlBvbGxGb3JUcmFuc2Zlcig8L3NwYW4+KQorICAgICAgICAgIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIHRvJm5ic3A7YXZvaWQgZWFybHkgVElNRU9VVCBlcnJvci48L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEpQRUc8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfSlBFR188c3BhbiBjbGFzcz0iZ3JhbWUiPkNvbmZpZ0VuY29kaW5nKDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gdG8gcHJvcGVybHkgc2V0IHRoZSBJbWFnZUhlaWdodCBhbmQgSW1hZ2VXaWR0aDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBTUEk8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBTUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUFUcmFuc21pdFJlY2VpdmVDcGx0KDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gdG8gcHJvcGVybHkgaGFuZGxlIHRoZSBDUkMgYW5kIGF2b2lkIGNvbmRpdGlvbmFsIHN0YXRlbWVudAorICAgICAgICAgIGR1cGxpY2F0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgPC91bD4KKyAgICA8aDMgc3R5bGU9ImJhY2tncm91bmQ6IHJnYig1MSwgMTAyLCAyNTUpIG5vbmUgcmVwZWF0IHNjcm9sbCAwJSA1MCU7IG1hcmdpbi1yaWdodDogNTAwcHQ7IC1tb3otYmFja2dyb3VuZC1jbGlwOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1vcmlnaW46IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLWlubGluZS1wb2xpY3k6IC1tb3otaW5pdGlhbDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtBcmlhbCZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogd2hpdGU7Ij5WMS4xLjAgLworICAgIDIyLUFwcmlsLTIwMTY8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9oMz4KKyAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPgorICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T2ZmaWNpYWwgcmVsZWFzZSB0byBhZGQgdGhlIHN1cHBvcnQgb2YgPGI+U1RNMzJGNzY1eHgsCisgICAgICAgICBTVE0zMkY3Njd4eCwgU1RNMzJGNzY4eHgsIFNUTTMyRjc2OXh4LCBTVE0zMkY3Nzd4eCwgU1RNMzJGNzc4eHg8L2I+IDxiPmFuZAorICAgICAgICAgU1RNMzJGNzc5eHg8L2I+IGRldmljZXM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsIHVwZGF0ZXMgdG8gZml4IGtub3duIGRlZmVjdHMgYW5kCisgICAgICAgICBlbmhhbmNlbWVudHMgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IEhBTCBkcml2ZXJzIGZvcjxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiA8L3NwYW4+PGI+REZTRE0sIERTSTxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiwgSlBFRyA8L3NwYW4+PC9iPmFuZDxzcGFuIGNsYXNzPSJhcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPiA8L3NwYW4+PGI+TURJT1M8c3BhbiBjbGFzcz0iYXBwbGUtY29udmVydGVkLXNwYWNlIj4gPC9zcGFuPjwvYj5wZXJpcGhlcmFsczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkVuaGFuY2UgSEFMIGRlbGF5IGFuZCB0aW1lYmFzZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmltcGxlbWVudGF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgZHJpdmVycyBzdG0zMmY3eHhfaGFsX3RpbWViYXNlX3RpbV90ZW1wbGF0ZS5jLAorICAgICAgICAgIHN0bTMyZjd4eF9oYWxfdGltZWJhc2VfcnRjX2FsYXJtX3RlbXBsYXRlLmMgYW5kCisgICAgICAgICAgc3RtMzJmN3h4X2hhbF90aW1lYmFzZV9ydGNfd2FrZXVwX3RlbXBsYXRlLmMgd2hpY2ggb3ZlcnJpZGUgdGhlCisgICAgICAgICAgbmF0aXZlIEhBTCB0aW1lIGJhc2UgZnVuY3Rpb25zIChkZWZpbmVkIGFzIHdlYWspIHRvIGVpdGhlciB1c2UgdGhlCisgICAgICAgICAgVElNIG9yIHRoZSBSVEMgYXMgdGltZSBiYXNlIHRpY2sgc291cmNlLiBGb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZQorICAgICAgICAgIHVzYWdlIG9mIHRoZXNlIGRyaXZlcnMsIHBsZWFzZSByZWZlciB0byBIQUxcSEFMX1RpbWVCYXNlIGV4YW1wbGVzJm5ic3A7PHNwYW4gc3R5bGU9IndpZG93czogMTsgZmxvYXQ6IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyI+YW5kIEZyZWVSVE9TLWJhc2VkIDxzcGFuIGNsYXNzPSJncmFtZSI+YXBwbGljYXRpb25zPC9zcGFuPjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUgZm9sbG93aW5nIGNoYW5nZXMgZG9uZSBvbiB0aGUgSEFMIGRyaXZlcnMKKyAgICAgICAgIHJlcXVpcmUgYW4gdXBkYXRlIG9uIHRoZSBhcHBsaWNhdGlvbiBjb2RlIGJhc2VkIG9uIEhBTCBWMS4wLjQ8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48aT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFVBUlQsIFVTQVJULCBJUkRBLCBTTUFSVENBUkQsIFNQSSwKKyAgICAgICAgICBJMkMsJm5ic3A7UVNQSSA8L3NwYW4+PC9pPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4ocmVmZXJlbmNlZAorICAgICAgICAgIGFzIDxpPlBQUDwvaT4gaGVyZSBiZWxvdyk8aT4gPC9pPjxzcGFuIGNsYXNzPSJncmFtZSI+ZHJpdmVyczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBQUFAgZXJyb3IgbWFuYWdlbWVudCBkdXJpbmcgRE1BIHByb2Nlc3MuIFRoaXMKKyAgICAgICAgICAgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyB1cGRhdGVzIG9uJm5ic3A7dXNlciBhcHBsaWNhdGlvbjo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q29uZmlndXJlIGFuZCBlbmFibGUgdGhlCisgICAgICAgICAgICBQUFAgSVJRIGluIEhBTF9QUFBfPHNwYW4gY2xhc3M9ImdyYW1lIj5Nc3BJbml0KDwvc3Bhbj4pIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SW4gc3RtMzJmN3h4X2l0LmMgZmlsZSwKKyAgICAgICAgICAgIFBQUF88c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikgZnVuY3Rpb246IGFkZCBhIGNhbGwgdG8KKyAgICAgICAgICAgIEhBTF9QUFBfSVJRSGFuZGxlcigpIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBhbmQgY3VzdG9taXplIHRoZQorICAgICAgICAgICAgRXJyb3IgQ2FsbGJhY2sgQVBJOiBIQUxfUFBQXzxzcGFuIGNsYXNzPSJncmFtZSI+RXJyb3JDYWxsYmFjayg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDwvdWw+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxpPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgSTJDPC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgKHJlZmVyZW5jZWQgYXMgPGk+UFBQPC9pPiBoZXJlIGJlbG93KTxpPiA8L2k+ZHJpdmVyczo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgdG8gYXZvaWQgd2FpdGluZyBvbiBTVE9QRi9CVEYvQUYgZmxhZworICAgICAgICAgICB1bmRlciBETUEgSVNSIGJ5IHVzaW5nIHRoZSBQUFAgZW5kIG9mIHRyYW5zZmVyIGludGVycnVwdCBpbiB0aGUgRE1BCisgICAgICAgICAgIHRyYW5zZmVyIHByb2Nlc3MuIFRoaXMgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyB1cGRhdGVzIG9uJm5ic3A7dXNlcgorICAgICAgICAgICBhcHBsaWNhdGlvbjo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q29uZmlndXJlIGFuZCBlbmFibGUgdGhlCisgICAgICAgICAgICBQUFAgSVJRIGluIEhBTF9QUFBfPHNwYW4gY2xhc3M9ImdyYW1lIj5Nc3BJbml0KDwvc3Bhbj4pIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SW4gc3RtMzJmN3h4X2l0LmMgZmlsZSwKKyAgICAgICAgICAgIFBQUF88c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikgZnVuY3Rpb246IGFkZCBhIGNhbGwgdG8KKyAgICAgICAgICAgIEhBTF9QUFBfSVJRSGFuZGxlcigpIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPC91bD4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGk+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBJV0RHIDwvc3Bhbj48L2k+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmRyaXZlcjoKKyAgICAgICAgICByZXdvcmsgb3ZlcmFsbCBkcml2ZXIgZm9yIGJldHRlciBpbXBsZW1lbnRhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlJm5ic3A7SEFMX0lXREdfPHNwYW4gY2xhc3M9ImdyYW1lIj5TdGFydCg8L3NwYW4+KSwKKyAgICAgICAgICAgSEFMX0lXREdfTXNwSW5pdCgpIGFuZCBIQUxfSVdER19HZXRTdGF0ZSgpJm5ic3A7QVBJczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48aT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFdXREcgPC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+ZHJpdmVyOgorICAgICAgICAgIHJld29yayBvdmVyYWxsIGRyaXZlciBmb3IgYmV0dGVyIGltcGxlbWVudGF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIEhBTF9XV0RHXzxzcGFuIGNsYXNzPSJncmFtZSI+U3RhcnQoPC9zcGFuPiksCisgICAgICAgICAgIEhBTF9XV0RHX1N0YXJ0X0lUKCksIEhBTF9XV0RHX01zcERlSW5pdCgpIGFuZCBIQUxfV1dER19HZXRTdGF0ZSgpCisgICAgICAgICAgIEFQSXMmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+CisgICAgICAgICAgIDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgdGhlJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDExcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfV1dER188c3BhbiBjbGFzcz0iZ3JhbWUiPlJlZnJlc2goPC9zcGFuPldXREdfSGFuZGxlVHlwZURlZgorICAgICAgICAgICAqaHd3ZGcsIHVpbnQzMl90IGNvdW50ZXIpICZuYnNwO2Z1bmN0aW9uIGFuZCBBUEkgJm5ic3A7YnkgcmVtb3ZpbmcKKyAgICAgICAgICAgdGhlICZuYnNwOyJjb3VudGVyIiBwYXJhbWV0ZXI8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGk+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBRU1BJIGRyaXZlcjogPC9zcGFuPjwvaT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Jm5ic3A7RW5oYW5jZSB0aGUgRE1BIHRyYW5zbWl0IHByb2Nlc3MKKyAgICAgICAgICBieSZuYnNwO3VzaW5nJm5ic3A7UFBQIFRDIGludGVycnVwdCBpbnN0ZWFkIG9mIHdhaXRpbmcgb24gVEMgZmxhZworICAgICAgICAgIHVuZGVyIERNQSBJU1IuJm5ic3A7VGhpcyByZXF1aXJlcyB0aGUgZm9sbG93aW5nIHVwZGF0ZXMgb24mbmJzcDt1c2VyCisgICAgICAgICAgYXBwbGljYXRpb246PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Db25maWd1cmUgYW5kIGVuYWJsZSB0aGUgUVNQSSZuYnNwO0lSUSBpbgorICAgICAgICAgICBIQUxfUVNQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPk1zcEluaXQoPC9zcGFuPikgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkluIHN0bTMyZjd4eF9pdC5jIGZpbGUsIFFTUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCisgICAgICAgICAgIGZ1bmN0aW9uOiBhZGQgYSBjYWxsIHRvIEhBTF9RU1BJX0lSUUhhbmRsZXIoKSBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48aT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIENFQyBkcml2ZXI6IDwvc3Bhbj48L2k+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO092ZXJhbGwKKyAgICAgICAgICBkcml2ZXIgcmV3b3JrIHdpdGggY29tcGF0aWJpbGl0eSBicmVhayB2ZXJzdXMgcHJldmlvdXMgSEFMIHZlcnNpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbW92ZSBIQUwgQ0VDIHBvbGxpbmcgUHJvY2VzcyBmdW5jdGlvbnM6CisgICAgICAgICAgIEhBTF9DRUNfPHNwYW4gY2xhc3M9ImdyYW1lIj5UcmFuc21pdCg8L3NwYW4+KSBhbmQgSEFMX0NFQ19SZWNlaXZlKCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgSEFMIENFQyByZWNlaXZlIGludGVycnVwdCBwcm9jZXNzCisgICAgICAgICAgIGZ1bmN0aW9uJm5ic3A7SEFMX0NFQ19SZWNlaXZlXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikgYW5kCisgICAgICAgICAgIGVuYWJsZSB0aGUgInJlY2VpdmUiICZuYnNwO21vZGUgZHVyaW5nIHRoZSBJbml0IHBoYXNlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVuYW1lJm5ic3A7SEFMX0NFQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkdldFJlY2VpdmVkRnJhbWVTaXplKDwvc3Bhbj4pCisgICAgICAgICAgIGZ1bnRpb24gdG8mbmJzcDtIQUxfQ0VDX0dldExhc3RSZWNlaXZlZEZyYW1lU2l6ZSgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IEhBTCBBUElzOiBIQUxfQ0VDXzxzcGFuIGNsYXNzPSJncmFtZSI+U2V0RGV2aWNlQWRkcmVzcyg8L3NwYW4+KQorICAgICAgICAgICBhbmQgSEFMX0NFQ19DaGFuZ2VSeEJ1ZmZlcigpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIHRoZSZuYnNwOydJbml0aWF0b3JBZGRyZXNzJyBmaWVsZCBmcm9tCisgICAgICAgICAgIHRoZSZuYnNwO0NFQ19Jbml0VHlwZURlZiBzdHJ1Y3R1cmUmbmJzcDthbmQgbWFuYWdlIGl0Jm5ic3A7YXMgYQorICAgICAgICAgICBwYXJhbWV0ZXIgaW4gdGhlIEhBTF9DRUNfVHJhbnNtaXRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KQorICAgICAgICAgICBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4KKyAgICAgICAgICAgPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgcGFyYW1ldGVyICdSeEZyYW1lU2l6ZScgaW4gSEFMX0NFQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlJ4Q3BsdENhbGxiYWNrKDwvc3Bhbj4pIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW92ZSBDRUMgUnggYnVmZmVyIHBvaW50ZXImbmJzcDtmcm9tCisgICAgICAgICAgIENFQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0byBDRUNfSW5pdFR5cGVEZWYgc3RydWN0dXJlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBDQU48L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgIHVwZGF0ZSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCB0aGUgc3VwcG9ydCBvZiA8c3BhbiBjbGFzcz0iZ3JhbWUiPkNBTjM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIENFQzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T3ZlcmFsbCBkcml2ZXIgcmV3b3JrIHdpdGgmbmJzcDticmVhayBvZgorICAgICAgICAgIGNvbXBhdGliaWxpdHkgd2l0aCBIQUwgVjEuMC40PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgdGhlIEhBTCBDRUMgcG9sbGluZyBQcm9jZXNzOiBIQUxfQ0VDXzxzcGFuIGNsYXNzPSJncmFtZSI+VHJhbnNtaXQoPC9zcGFuPikgYW5kIEhBTF9DRUNfUmVjZWl2ZSgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgdGhlIEhBTCBDRUMgcmVjZWl2ZSBpbnRlcnJ1cHQgcHJvY2VzcworICAgICAgICAgICAoSEFMX0NFQ19SZWNlaXZlXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikpIGFuZCBtYW5hZ2UgdGhlCisgICAgICAgICAgICJSZWNlaXZlIiBtb2RlIGVuYWJsZSB3aXRoaW4gdGhlIEluaXQgcGhhc2U8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgSEFMX0NFQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkdldFJlY2VpdmVkRnJhbWVTaXplKDwvc3Bhbj4pCisgICAgICAgICAgIGZ1bmN0aW9uIHRvJm5ic3A7SEFMX0NFQ19HZXRMYXN0UmVjZWl2ZWRGcmFtZVNpemUoKSBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBIQUwgQVBJczogSEFMX0NFQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlNldERldmljZUFkZHJlc3MoPC9zcGFuPikKKyAgICAgICAgICAgYW5kIEhBTF9DRUNfQ2hhbmdlUnhCdWZmZXIoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIHRoZSZuYnNwOydJbml0aWF0b3JBZGRyZXNzJyBmaWVsZCBmcm9tCisgICAgICAgICAgIHRoZSZuYnNwO0NFQ19Jbml0VHlwZURlZiBzdHJ1Y3R1cmUmbmJzcDthbmQgbWFuYWdlIGl0Jm5ic3A7YXMgYQorICAgICAgICAgICBwYXJhbWV0ZXIgaW4gdGhlIEhBTF9DRUNfVHJhbnNtaXRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KQorICAgICAgICAgICBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBwYXJhbWV0ZXIgJ1J4RnJhbWVTaXplJyBpbiBIQUxfQ0VDXzxzcGFuIGNsYXNzPSJncmFtZSI+UnhDcGx0Q2FsbGJhY2soPC9zcGFuPikgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1vdmUgQ0VDIFJ4IGJ1ZmZlciBwb2ludGVyJm5ic3A7ZnJvbQorICAgICAgICAgICBDRUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdG8gQ0VDX0luaXRUeXBlRGVmIHN0cnVjdHVyZSA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIGRyaXZlciB0byBpbXBsZW1lbnQgdGhlIG5ldyBDRUMgc3RhdGUKKyAgICAgICAgICBtYWNoaW5lOiA8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcmbmJzcDsicnhTdGF0ZSIgZmllbGQgaW4gQ0VDX0hhbmRsZVR5cGVEZWYKKyAgICAgICAgICAgc3RydWN0dXJlIHRvIHByb3ZpZGUgdGhlIENFQyBzdGF0ZSBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIFJ4IDxzcGFuIGNsYXNzPSJncmFtZSI+T3BlcmF0aW9uczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSAic3RhdGUiIGZpZWxkIGluCisgICAgICAgICAgIENFQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0byAiZ3N0YXRlIjogQ0VDIHN0YXRlCisgICAgICAgICAgIGluZm9ybWF0aW9uIHJlbGF0ZWQgdG8gZ2xvYmFsIEhhbmRsZSBtYW5hZ2VtZW50IGFuZCBUeCA8c3BhbiBjbGFzcz0iZ3JhbWUiPk9wZXJhdGlvbnM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIENFQyBwcm9jZXNzIHRvIG1hbmFnZSB0aGUgbmV3IENFQyBzdGF0ZXMuPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIF9fSEFMX0NFQ19SRVNFVF9IQU5ETEVfPHNwYW4gY2xhc3M9ImdyYW1lIj5TVEFURSg8L3NwYW4+KQorICAgICAgICAgICBtYWNybyB0byBoYW5kbGUgdGhlIG5ldyBDRUMgc3RhdGUgcGFyYW1ldGVycyAoZ1N0YXRlLCByeFN0YXRlKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRE1BPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IEFQSXMgSEFMX0RNQV88c3BhbiBjbGFzcz0iZ3JhbWUiPlJlZ2lzdGVyQ2FsbGJhY2soPC9zcGFuPikKKyAgICAgICAgICBhbmQgSEFMX0RNQV9VblJlZ2lzdGVyQ2FsbGJhY2sgdG8gcmVnaXN0ZXIvdW5yZWdpc3RlciB0aGUgZGlmZmVyZW50CisgICAgICAgICAgY2FsbGJhY2tzIGlkZW50aWZpZWQgYnkgdGhlIGVudW0gdHlwZWRlZiBIQUxfRE1BX0NhbGxiYWNrSURUeXBlRGVmPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgQVBJIEhBTF9ETUFfQWJvcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KQorICAgICAgICAgIHRvIGFib3J0IERNQSB0cmFuc2ZlciB1bmRlciBpbnRlcnJ1cHQgY29udGV4dDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlIG5ldyByZWdpc3RlcmVkIEFib3J0IGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuCisgICAgICAgICAgIERNQSB0cmFuc2ZlciBhYm9ydGlvbiBpcyA8c3BhbiBjbGFzcz0iZ3JhbWUiPmNvbXBsZXRlZDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCB0aGUgY2hlY2sgb2YgY29tcGF0aWJpbGl0eSBiZXR3ZWVuIEZJRk8KKyAgICAgICAgICB0aHJlc2hvbGQgbGV2ZWwgYW5kIHNpemUgb2YgdGhlIG1lbW9yeSBidXJzdCBpbiB0aGUgSEFMX0RNQV88c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikgQVBJPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IEVycm9yIENvZGVzOiBIQUxfRE1BX0VSUk9SX1BBUkFNLAorICAgICAgICAgIEhBTF9ETUFfRVJST1JfTk9fWEZFUiBhbmQgSEFMX0RNQV9FUlJPUl9OT1RfU1VQUE9SVEVEPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiByZ2IoOTgsIDk4LCA5OCk7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPlJlbW92ZSBhbGwgRE1BIHN0YXRlcyByZWxhdGVkIHRvCisgICAgICAgICAgTUVNMC9NRU0xIGluIEhBTF9ETUFfU3RhdGVUeXBlRGVmPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDkuNXB0OyBmb250LWZhbWlseTogJnF1b3Q7SGVsdmV0aWNhJnF1b3Q7LHNhbnMtc2VyaWY7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgIDwvdWw+CisgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRE1BMkQ8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgIHVwZGF0ZSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0aGUgSEFMX0RNQTJEXzxzcGFuIGNsYXNzPSJncmFtZSI+RGVJbml0KDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gdG86PC9zcGFuPjxzcGFuIHN0eWxlPSIiPgorICAgICAgICAgIDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BYm9ydCB0cmFuc2ZlciBpbiBjYXNlIG9mIG9uZ29pbmcgRE1BMkQgdHJhbnNmZXI8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZXNldCBETUEyRCBjb250cm9sIDxzcGFuIGNsYXNzPSJncmFtZSI+cmVnaXN0ZXJzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9ETUEyRF88c3BhbiBjbGFzcz0iZ3JhbWUiPkFib3J0KDwvc3Bhbj4pCisgICAgICAgICAgdG8gZGlzYWJsZSBETUEyRCBpbnRlcnJ1cHRzIGFmdGVyIHN0b3BwaW5nIHRyYW5zZmVyPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PcHRpbWl6ZSBIQUxfRE1BMkRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCisgICAgICAgICAgYnkgcmVhZGluZyBzdGF0dXMgcmVnaXN0ZXJzIG9ubHkgb25jZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9ETUEyRF88c3BhbiBjbGFzcz0iZ3JhbWUiPlByb2dyYW1MaW5lRXZlbnQoPC9zcGFuPikKKyAgICAgICAgICBmdW5jdGlvbiB0bzo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+CisgICAgICAgICAgPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJldHVybiBIQUwgZXJyb3Igc3RhdGUgaW4gY2FzZSBvZiB3cm9uZyBsaW5lIDxzcGFuIGNsYXNzPSJncmFtZSI+dmFsdWU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5FbmFibGUgbGluZSBpbnRlcnJ1cHQgYWZ0ZXIgc2V0dGluZyB0aGUgbGluZQorICAgICAgICAgICB3YXRlcm1hcmsgPHNwYW4gY2xhc3M9ImdyYW1lIj5jb25maWd1cmF0aW9uPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBIQUxfRE1BMkRfPHNwYW4gY2xhc3M9ImdyYW1lIj5DTFVUTG9hZCg8L3NwYW4+KQorICAgICAgICAgIGFuZCBIQUxfRE1BMkRfQ0xVVExvYWRfSVQoKSBmdW5jdGlvbnMgdG8gc3RhcnQgRE1BMkQgQ0xVVCBsb2FkaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfRE1BMkRfQ0xVVExvYWRpbmdfPHNwYW4gY2xhc3M9ImdyYW1lIj5BYm9ydCg8L3NwYW4+KQorICAgICAgICAgICBmdW5jdGlvbiB0byBhYm9ydCB0aGUgRE1BMkQgQ0xVVCBsb2FkaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfRE1BMkRfQ0xVVExvYWRpbmdfPHNwYW4gY2xhc3M9ImdyYW1lIj5TdXNwZW5kKDwvc3Bhbj4pCisgICAgICAgICAgIGZ1bmN0aW9uIHRvIHN1c3BlbmQgdGhlIERNQTJEIENMVVQgbG9hZGluZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0RNQTJEX0NMVVRMb2FkaW5nXzxzcGFuIGNsYXNzPSJncmFtZSI+UmVzdW1lKDwvc3Bhbj4pCisgICAgICAgICAgIGZ1bmN0aW9uIHRvIHJlc3VtZSB0aGUgRE1BMkQgQ0xVVCBsb2FkaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IERNQTJEIGRlYWQgdGltZSBtYW5hZ2VtZW50Ojwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0RNQTJEXzxzcGFuIGNsYXNzPSJncmFtZSI+RW5hYmxlRGVhZFRpbWUoPC9zcGFuPikKKyAgICAgICAgICAgZnVuY3Rpb24gdG8gZW5hYmxlIERNQTJEIGRlYWQgdGltZSBmZWF0dXJlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfRE1BMkRfPHNwYW4gY2xhc3M9ImdyYW1lIj5EaXNhYmxlRGVhZFRpbWUoPC9zcGFuPikKKyAgICAgICAgICAgZnVuY3Rpb24gdG8gZGlzYWJsZSBETUEyRCBkZWFkIHRpbWUgZmVhdHVyZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0RNQTJEXzxzcGFuIGNsYXNzPSJncmFtZSI+Q29uZmlnRGVhZFRpbWUoPC9zcGFuPikKKyAgICAgICAgICAgZnVuY3Rpb24gdG8gY29uZmlndXJlIGRlYWQgdGltZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIHRoZSBuYW1lIG9mIERNQTJEIElucHV0L091dHB1dCBjb2xvciBtb2RlCisgICAgICAgICAgZGVmaW5lcyB0byBiZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPm1vcmUgY2xlYXI8L3NwYW4+IGZvciB1c2VyCisgICAgICAgICAgKERNQTJEX0lOUFVUX1hYWCBmb3IgaW5wdXQgbGF5ZXJzIENvbG9ycywgRE1BMkRfT1VUUFVUX1hYWCBmb3Igb3V0cHV0CisgICAgICAgICAgZnJhbWVidWZmZXIgQ29sb3JzKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBEQ01JPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgRENNSV9ETUFDb252Q3BsdCB0byBEQ01JX0RNQVhmZXJDcGx0PC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX0RDTUlfU3RhcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPikKKyAgICAgICAgICBmdW5jdGlvbiB0byZuYnNwO0VuYWJsZSB0aGUgRENNSSBwZXJpcGhlcmFsPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IHRpbWVvdXQgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gY3B1IGN5Y2xlcworICAgICAgICAgIGZvciBEQ01JIDxzcGFuIGNsYXNzPSJncmFtZSI+c3RvcDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBIQUxfRENNSV88c3BhbiBjbGFzcz0iZ3JhbWUiPlN1c3BlbmQoPC9zcGFuPikKKyAgICAgICAgICBmdW5jdGlvbiB0byBzdXNwZW5kIERDTUkgY2FwdHVyZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIEhBTF9EQ01JXzxzcGFuIGNsYXNzPSJncmFtZSI+UmVzdW1lKDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gdG8gcmVzdW1lIGNhcHR1cmUgYWZ0ZXIgRENNSSBzdXNwZW5kPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgbG9jayBtZWNoYW5pc20gZm9yIERDTUkgcHJvY2Vzczwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9EQ01JXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KQorICAgICAgICAgIGZ1bmN0aW9uIHRvOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4KKyAgICAgICAgICA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIGVycm9yIG1hbmFnZW1lbnQgaW4gY2FzZSBETUEgZXJyb3JzIHRocm91Z2ggPHNwYW4gY2xhc3M9ImdyYW1lIj5YZmVyQWJvcnRDYWxsYmFjayg8L3NwYW4+KSBhbmQgSEFMX0RNQV9BYm9ydF9JVCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PcHRpbWl6ZSBjb2RlIGJ5IHVzaW5nIGRpcmVjdCByZWdpc3RlciA8c3BhbiBjbGFzcz0iZ3JhbWUiPnJlYWQ8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Nb3ZlIHRoZSBjb250ZW50IG9mIHRoZSBzdG0zMmY3eHhfaGFsX2RjbWlfZXguYy8uaAorICAgICAgICAgIGZpbGVzIHRvIGNvbW1vbiBkcml2ZXIgZmlsZXMgKHRoZSBleHRlbnNpb24gZmlsZXMgYXJlIGtlcHQgZW1wdHkgZm9yCisgICAgICAgICAgcHJvamVjdHMgY29tcGF0aWJpbGl0eSByZWFzb24pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEZMQVNIPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdGhlIHN1cHBvcnQgb2YgRHVhbCBCQU5LIGZlYXR1cmU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIF9fSEFMX0ZMQVNIX0NBTENfQk9PVF9CQVNFXzxzcGFuIGNsYXNzPSJncmFtZSI+QURSKDwvc3Bhbj4pCisgICAgICAgICAgbWFjcm8gdG8gY2FsY3VsYXRlIHRoZSBGTEFTSCBCb290IEJhc2UgQWRyZXNzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1vdmUgRmxhc2ggdG90YWwgc2VjdG9yIGRlZmluZSB0byBDTVNJUyBoZWFkZXIgPHNwYW4gY2xhc3M9ImdyYW1lIj5maWxlczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRk1DPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgRk1DX05PUlNSQU1fPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pCisgICAgICAgICAgdG8gcmVtb3ZlIHRoZSBCdXJzdCBhY2Nlc3MgbW9kZSBjb25maWd1cmF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBGTUNfU0RSQU1fVGltaW5nXzxzcGFuIGNsYXNzPSJncmFtZSI+SW5pdCg8L3NwYW4+KQorICAgICAgICAgIHRvIGZpeCBpbml0aWFsaXphdGlvbiBpc3N1ZSB3aGVuIGNvbmZpZ3VyaW5nIDIgU0RSQU0gYmFua3M8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgSENEPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSENEX1BvcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCisgICAgICAgICAgdG8gYmUgY29tcGxpYW50IHdpdGggbmV3IFRpbWUgYmFzZSBpbXBsZW1lbnRhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBJMkM8L3NwYW4+PC9iPjxpPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgIDwvc3Bhbj48L2k+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdGhlIHN1cHBvcnQgb2YgSTJDIGZhc3QgbW9kZSBwbHVzIChGTSspPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBQb2xsaW5nIG1hbmFnZW1lbnQ6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUgVGltZW91dCB2YWx1ZSBtdXN0IGJlIGVzdGltYXRlZCBmb3IgdGhlCisgICAgICAgICAgIG92ZXJhbGwgcHJvY2VzcyBkdXJhdGlvbjogPHNwYW4gY2xhc3M9ImdyYW1lIj50aGU8L3NwYW4+IFRpbWVvdXQKKyAgICAgICAgICAgbWVhc3VyZW1lbnQgaXMgY3VtdWxhdGl2ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIHRoZSBtYW5hZ2VtZW50IG9mIEFib3J0IHNlcnZpY2U6Jm5ic3A7QWJvcnQKKyAgICAgICAgICBETUEgdHJhbnNmZXIgdGhyb3VnaCA8c3BhbiBjbGFzcz0iZ3JhbWUiPmludGVycnVwdDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkluIHRoZSBjYXNlIG9mIE1hc3RlciBBYm9ydCBJVCB0cmFuc2ZlciB1c2FnZTo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkJm5ic3A7bmV3IHVzZXIKKyAgICAgICAgICAgIEhBTF9JMkNfPHNwYW4gY2xhc3M9ImdyYW1lIj5BYm9ydENwbHRDYWxsYmFjayg8L3NwYW4+KSB0byBpbmZvcm0gdXNlcgorICAgICAgICAgICAgb2YgdGhlIGVuZCBvZiBhYm9ydCBwcm9jZXNzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QSBuZXcgYWJvcnQgc3RhdGUgaXMKKyAgICAgICAgICAgIGRlZmluZWQgaW4gdGhlIEhBTF9JMkNfU3RhdGVUeXBlRGVmIHN0cnVjdHVyZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDwvdWw+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdGhlIG1hbmFnZW1lbnQgb2YgSTJDIHBlcmlwaGVyYWwgZXJyb3JzLCBBQ0sKKyAgICAgICAgICBmYWlsdXJlIGFuZCBTVE9QIGNvbmRpdGlvbiBkZXRlY3Rpb24gZHVyaW5nIERNQSBwcm9jZXNzLiBUaGlzCisgICAgICAgICAgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyB1cGRhdGVzIG9uIHVzZXIgYXBwbGljYXRpb246PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Db25maWd1cmUgYW5kIGVuYWJsZSB0aGUgSTJDIElSUSBpbiBIQUxfSTJDXzxzcGFuIGNsYXNzPSJncmFtZSI+TXNwSW5pdCg8L3NwYW4+KSBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SW4gc3RtMzJmN3h4X2l0LmMgZmlsZSwgSTJDXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KQorICAgICAgICAgICBmdW5jdGlvbjogYWRkIGEgY2FsbCB0byBIQUxfSTJDX0lSUUhhbmRsZXIoKSBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIGFuZCBjdXN0b21pemUgdGhlIEVycm9yIENhbGxiYWNrIEFQSToKKyAgICAgICAgICAgSEFMX0kyQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkVycm9yQ2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlZmVyIHRvIHRoZSBJMkNfRUVQUk9NIG9yIEkyQ19Ud29Cb2FyZHNfQ29tRE1BCisgICAgICAgICAgIHByb2plY3QgZXhhbXBsZXMgdXNhZ2Ugb2YgdGhlIDxzcGFuIGNsYXNzPSJncmFtZSI+QVBJPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCB0aGUgc3VwcG9ydCBvZiZuYnNwO0kyQyByZXBlYXRlZCBzdGFydAorICAgICAgICAgIGZlYXR1cmU6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPgorICAgICAgICAgIDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5XaXRoIHRoZSBmb2xsb3dpbmcgbmV3IEFQSXM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0kyQ19NYXN0ZXJfU2VxdWVudGlhbF9UcmFuc21pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSTJDX01hc3Rlcl9TZXF1ZW50aWFsX1JlY2VpdmVfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0kyQ19NYXN0ZXJfQWJvcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0kyQ19TbGF2ZV9TZXF1ZW50aWFsX1RyYW5zbWl0XzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JMkNfU2xhdmVfU2VxdWVudGlhbF9SZWNlaXZlXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JMkNfRW5hYmxlTGlzdGVuXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JMkNfRGlzYWJsZUxpc3Rlbl88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPC91bD4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IHVzZXIgY2FsbGJhY2tzOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSTJDXzxzcGFuIGNsYXNzPSJncmFtZSI+TGlzdGVuQ3BsdENhbGxiYWNrKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JMkNfPHNwYW4gY2xhc3M9ImdyYW1lIj5BZGRyQ2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlNldmVyYWwgdXBkYXRlcyBvbiBIQUwgSTJDIGRyaXZlciB0byBpbXBsZW1lbnQgdGhlCisgICAgICAgICAgbmV3IEkyQyBzdGF0ZSBtYWNoaW5lOiA8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBuZXcgQVBJIHRvIGdldCB0aGUmbmJzcDtJMkMgbW9kZTogSEFMX0kyQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkdldE1vZGUoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlJm5ic3A7STJDIHByb2Nlc3MgdG8gbWFuYWdlIHRoZQorICAgICAgICAgICBuZXcmbmJzcDtJMkMgPHNwYW4gY2xhc3M9ImdyYW1lIj5zdGF0ZXM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBJV0RHPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PdmVyYWxsIHJld29yayBvZiB0aGUgZHJpdmVyIGZvciBhIG1vcmUKKyAgICAgICAgICBlZmZpY2llbnQmbmJzcDtpbXBsZW1lbnRhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIHRoZSBmb2xsb3dpbmcgQVBJczo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0lXREdfPHNwYW4gY2xhc3M9ImdyYW1lIj5TdGFydCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JV0RHXzxzcGFuIGNsYXNzPSJncmFtZSI+TXNwSW5pdCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JV0RHXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0U3RhdGUoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIGltcGxlbWVudGF0aW9uOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfSVdER188c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikgOiB0aGlzIGZ1bmN0aW9uIGluc3VyZXMgdGhlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgIGFuZCB0aGUgc3RhcnQgb2YgdGhlIElXREcgY291bnRlcjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9JV0RHXzxzcGFuIGNsYXNzPSJncmFtZSI+UmVmcmVzaCg8L3NwYW4+KSA6IHRoaXMgZnVuY3Rpb24gaW5zdXJlcyB0aGUgcmVsb2FkIG9mCisgICAgICAgICAgICB0aGUgSVdERyBjb3VudGVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPC91bD4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlZmVyIHRvIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSB0byBpZGVudGlmeSB0aGUKKyAgICAgICAgICAgY2hhbmdlczogSVdER188c3BhbiBjbGFzcz0iZ3JhbWUiPkV4YW1wbGU8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBMUFRJTSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX0xQVElNX1RpbWVPdXRfU3RhcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KQorICAgICAgICAgIGFuZCBIQUxfTFBUSU1fQ291bnRlcl9TdGFydF9JVCggKSBBUElzIHRvIGNvbmZpZ3VyZSBXYWtlVXAgVGltZXIgRVhUSQorICAgICAgICAgIGludGVycnVwdCB0byBiZSBhYmxlIHRvIHdha2V1cCBNQ1UgZnJvbSBsb3cgcG93ZXIgbW9kZSBieSBwcmVzc2luZworICAgICAgICAgIHRoZSBFWFRJIGxpbmUgPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfTFBUSU1fVGltZU91dF9TdG9wXzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPikKKyAgICAgICAgICBhbmQgSEFMX0xQVElNX0NvdW50ZXJfU3RvcF9JVCggKSBBUElzIHRvIGRpc2FibGUgV2FrZVVwIFRpbWVyIEVYVEkKKyAgICAgICAgICBpbnRlcnJ1cHQgPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIExUREMgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9MVERDXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KQorICAgICAgICAgIHRvIG1hbmFnZSB0aGUgY2FzZSBvZiByZWxvYWQgaW50ZXJydXB0PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBMVERDIGV4dGVuc2lvbiBkcml2ZXIgbmVlZGVkIHdpdGggPHNwYW4gY2xhc3M9ImdyYW1lIj5EU0k8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBIQUxfTFREQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlNldFBpdGNoKDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gZm9yIHBpdGNoIHJlY29uZmlndXJhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IGNhbGxiYWNrIEFQSSBIQUxfTFREQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlJlbG9hZEV2ZW50Q2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkFkZCBIQUxfTFREQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlJlbG9hZCg8L3NwYW4+KSB0bworICAgICAgICAgIGNvbmZpZ3VyZSBMVERDIHJlbG9hZCBmZWF0dXJlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IE5vIFJlbG9hZCBMVERDIHZhcmlhbnQgPHNwYW4gY2xhc3M9ImdyYW1lIj5BUElzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0xURENfQ29uZmlnTGF5ZXJfPHNwYW4gY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQorICAgICAgICAgICB0byBjb25maWd1cmUgdGhlIExUREMgTGF5ZXIgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgd2l0aG91dAorICAgICAgICAgICByZWxvYWRpbmc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+CisgICAgICAgICAgIDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTFREQ19TZXRXaW5kb3dTaXplXzxzcGFuIGNsYXNzPSJncmFtZSI+Tm9SZWxvYWQoPC9zcGFuPikKKyAgICAgICAgICAgdG8gc2V0IHRoZSBMVERDIHdpbmRvdyBzaXplIHdpdGhvdXQgcmVsb2FkaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0xURENfU2V0V2luZG93UG9zaXRpb25fPHNwYW4gY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQorICAgICAgICAgICB0byBzZXQgdGhlIExUREMgd2luZG93IHBvc2l0aW9uIHdpdGhvdXQgcmVsb2FkaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0xURENfU2V0UGl4ZWxGb3JtYXRfPHNwYW4gY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQorICAgICAgICAgICB0byByZWNvbmZpZ3VyZSB0aGUgcGl4ZWwgZm9ybWF0IHdpdGhvdXQgcmVsb2FkaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0xURENfU2V0QWxwaGFfPHNwYW4gY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQorICAgICAgICAgICB0byByZWNvbmZpZ3VyZSB0aGUgbGF5ZXIgYWxwaGEgdmFsdWUgd2l0aG91dCByZWxvYWRpbmc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTFREQ19TZXRBZGRyZXNzXzxzcGFuIGNsYXNzPSJncmFtZSI+Tm9SZWxvYWQoPC9zcGFuPikKKyAgICAgICAgICAgdG8gcmVjb25maWd1cmUgdGhlIGZyYW1lIGJ1ZmZlciBBZGRyZXNzIHdpdGhvdXQgcmVsb2FkaW5nPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0xURENfU2V0UGl0Y2hfPHNwYW4gY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQorICAgICAgICAgICB0byByZWNvbmZpZ3VyZSB0aGUgcGl0Y2ggZm9yIHNwZWNpZmljIGNhc2VzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX0xURENfQ29uZmlnQ29sb3JLZXlpbmdfPHNwYW4gY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQorICAgICAgICAgICB0byBjb25maWd1cmUgdGhlIGNvbG9yIGtleWluZyB3aXRob3V0IHJlbG9hZGluZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9MVERDX0VuYWJsZUNvbG9yS2V5aW5nXzxzcGFuIGNsYXNzPSJncmFtZSI+Tm9SZWxvYWQoPC9zcGFuPikKKyAgICAgICAgICAgdG8gZW5hYmxlIHRoZSBjb2xvciBrZXlpbmcgd2l0aG91dCByZWxvYWRpbmc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTFREQ19EaXNhYmxlQ29sb3JLZXlpbmdfPHNwYW4gY2xhc3M9ImdyYW1lIj5Ob1JlbG9hZCg8L3NwYW4+KQorICAgICAgICAgICB0byBkaXNhYmxlIHRoZSBjb2xvciBrZXlpbmcgd2l0aG91dCByZWxvYWRpbmc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTFREQ19FbmFibGVDTFVUXzxzcGFuIGNsYXNzPSJncmFtZSI+Tm9SZWxvYWQoPC9zcGFuPikKKyAgICAgICAgICAgdG8gZW5hYmxlIHRoZSBjb2xvciBsb29rdXAgdGFibGUgd2l0aG91dCByZWxvYWRpbmc8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfTFREQ19EaXNhYmxlQ0xVVF88c3BhbiBjbGFzcz0iZ3JhbWUiPk5vUmVsb2FkKDwvc3Bhbj4pCisgICAgICAgICAgIHRvIGRpc2FibGUgdGhlIGNvbG9yIGxvb2t1cCB0YWJsZSB3aXRob3V0IHJlbG9hZGluZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48aT48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Tm90ZTo8L3NwYW4+PC91PjwvaT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICAgIFZhcmlhbnQgZnVuY3Rpb25zIHdpdGggk19Ob1JlbG9hZJQgcG9zdCBmaXggYWxsb3dzIHRvIHNldCB0aGUgTFREQworICAgICAgICAgICBjb25maWd1cmF0aW9uL3NldHRpbmdzIHdpdGhvdXQgaW1tZWRpYXRlIHJlbG9hZC4gVGhpcyBpcyB1c2VmdWwgaW4KKyAgICAgICAgICAgY2FzZSB3aGVuIHRoZSBwcm9ncmFtIHJlcXVpcmVzIHRvIG1vZGlmeSBzZXZlcmFsIExUREMgc2V0dGluZ3MgKG9uCisgICAgICAgICAgIG9uZSBvciBib3RoIGxheWVycykgdGhlbiBhcHBseWluZyAocmVsb2FkKSB0aGVzZSBzZXR0aW5ncyBpbiBvbmUKKyAgICAgICAgICAgc2hvdCBieSBjYWxsaW5nIHRoZSBmdW5jdGlvbiCTSEFMX0xURENfPHNwYW4gY2xhc3M9ImdyYW1lIj5SZWxvYWQ8L3NwYW4+lDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgTk9SPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgTk9SX0FERFJfU0hJRlQgbWFjcm8gPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgUENEPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1BDRF88c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikKKyAgICAgICAgICB0byBnZXQgSENMSyBmcmVxdWVuY3kgYmVmb3JlIHNldHRpbmcgVFJEVCB2YWx1ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBRU1BJIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0byBtYW5hZ2UgUVNQSSBlcnJvciBtYW5hZ2VtZW50IGR1cmluZyBETUEgPHNwYW4gY2xhc3M9ImdyYW1lIj5wcm9jZXNzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5JbXByb3ZlIHRoZSBETUEgdHJhbnNtaXQgcHJvY2VzcyBieSB1c2luZyBRU1BJIFRDCisgICAgICAgICAgaW50ZXJydXB0IGluc3RlYWQgb2Ygd2FpdGluZyBsb29wIG9uIFRDIGZsYWcgdW5kZXIgRE1BIElTUjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGVzZSB0d28gaW1wcm92ZW1lbnRzIHJlcXVpcmUgdGhlIGZvbGxvd2luZworICAgICAgICAgIHVwZGF0ZXMgb24gdXNlciBhcHBsaWNhdGlvbjo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkNvbmZpZ3VyZSBhbmQgZW5hYmxlIHRoZSBRU1BJIElSUSBpbiBIQUxfUVNQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPk1zcEluaXQoPC9zcGFuPikgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkluIHN0bTMyZjd4eF9pdC5jIGZpbGUsIFFTUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCisgICAgICAgICAgIGZ1bmN0aW9uOiBhZGQgYSBjYWxsIHRvIEhBTF9RU1BJX0lSUUhhbmRsZXIoKSBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIGFuZCBjdXN0b21pemUgdGhlIEVycm9yIENhbGxiYWNrIEFQSToKKyAgICAgICAgICAgSEFMX1FTUElfPHNwYW4gY2xhc3M9ImdyYW1lIj5FcnJvckNhbGxiYWNrKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdGhlIG1hbmFnZW1lbnQgb2Ygbm9uLWJsb2NraW5nIHRyYW5zZmVyIGFib3J0CisgICAgICAgICAgc2VydmljZTombmJzcDtIQUxfUVNQSV9BYm9ydF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pLiBJbiB0aGlzCisgICAgICAgICAgY2FzZSB0aGUgdXNlciBtdXN0Ojwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIG5ldyBjYWxsYmFjayBIQUxfUVNQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkFib3J0Q3BsdENhbGxiYWNrKDwvc3Bhbj4pCisgICAgICAgICAgIHRvIGluZm9ybSB1c2VyIGF0IHRoZSBlbmQgb2YgYWJvcnQgcHJvY2Vzczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QSBuZXcgdmFsdWUgb2YgU3RhdGUgaW4gdGhlIEhBTF9RU1BJX1N0YXRlVHlwZURlZgorICAgICAgICAgICBwcm92aWRlcyB0aGUgY3VycmVudCBzdGF0ZSBkdXJpbmcgdGhlIGFib3J0IDxzcGFuIGNsYXNzPSJncmFtZSI+cGhhc2U8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Qb2xsaW5nIG1hbmFnZW1lbnQgdXBkYXRlOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlIFRpbWVvdXQgdmFsdWUgdXNlciBtdXN0IGJlIGVzdGltYXRlZCBmb3IgdGhlCisgICAgICAgICAgIG92ZXJhbGwgcHJvY2VzcyBkdXJhdGlvbjogPHNwYW4gY2xhc3M9ImdyYW1lIj50aGU8L3NwYW4+IFRpbWVvdXQKKyAgICAgICAgICAgbWVhc3VyZW1lbnQgaXMgY3VtdWxhdGl2ZS4mbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlZmVyIHRvIHRoZSBmb2xsb3dpbmcgZXhhbXBsZXMsIHdoaWNoIGRlc2NyaWJlCisgICAgICAgICAgdGhlIGNoYW5nZXM6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5RU1BJX1JlYWRXcml0ZV9ETUE8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlFTUElfTWVtb3J5TWFwcGVkPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5RU1BJX0V4ZWN1dGVJblBsYWNlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdHdvIG5ldyBBUElzIGZvciB0aGUgUVNQSSBmaWZvIHRocmVzaG9sZDo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfUVNQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPlNldEZpZm9UaHJlc2hvbGQoPC9zcGFuPik6CisgICAgICAgICAgIGNvbmZpZ3VyZSB0aGUgRklGTyB0aHJlc2hvbGQgb2YgdGhlIFFTUEk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfUVNQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkdldEZpZm9UaHJlc2hvbGQoPC9zcGFuPik6CisgICAgICAgICAgIGdpdmUgdGhlIGN1cnJlbnQgRklGTyB0aHJlc2hvbGQ8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpeCB3cm9uZyBkYXRhIHNpemUgbWFuYWdlbWVudCBpbgorICAgICAgICAgIEhBTF9RU1BJX1JlY2VpdmVfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUEoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgUkNDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfUkNDXzxzcGFuIGNsYXNzPSJncmFtZSI+UGVyaXBoQ0xLQ29uZmlnKDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gdG8gYWRqdXN0IHRoZSBTeXN0ZW1Db3JlQ2xvY2s8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T3B0aW1pemUgSEFMX1JDQ188c3BhbiBjbGFzcz0iZ3JhbWUiPkNsb2NrQ29uZmlnKDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gY29kZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PcHRpbWl6ZSBpbnRlcm5hbCBvc2NpbGxhdG9ycyBhbmQgUExMIHN0YXJ0dXAgPHNwYW4gY2xhc3M9ImdyYW1lIj50aW1lczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgUlRDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfUlRDXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0VGltZSg8L3NwYW4+KSB3aXRoCisgICAgICAgICAgcHJvcGVyICdTdWJTZWNvbmRzJyBhbmQgJ1NlY29uZEZyYWN0aW9uJyBtYW5hZ2VtZW50PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFNBSSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgU0FJIHN0YXRlIGluIGNhc2Ugb2YgVElNRU9VVCBlcnJvciB3aXRoaW4KKyAgICAgICAgICB0aGUgSEFMX1NBSV88c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0KDwvc3Bhbj4pIC8gSEFMX1NBSV9SZWNlaXZlKCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfU0FJX0lSUUhhbmRsZXI6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIGVycm9yIG1hbmFnZW1lbnQgaW4gY2FzZSBETUEgZXJyb3JzIHRocm91Z2ggPHNwYW4gY2xhc3M9ImdyYW1lIj5YZmVyQWJvcnRDYWxsYmFjayg8L3NwYW4+KSBhbmQgSEFMX0RNQV9BYm9ydF9JVCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIGVycm9yIG1hbmFnZW1lbnQgaW4gY2FzZSBvZiA8c3BhbiBjbGFzcz0iZ3JhbWUiPklUPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TW92ZSBTQUlfPHNwYW4gY2xhc3M9ImdyYW1lIj5CbG9ja1N5bmNocm9Db25maWcoPC9zcGFuPikKKyAgICAgICAgICBhbmQgU0FJX0dldElucHV0Q2xvY2soKSBmdW5jdGlvbnMgdG8gc3RtMzJmN3h4X2hhbF9zYWkuYy8uaCBmaWxlcyAoZXh0ZW5zaW9uCisgICAgICAgICAgZmlsZXMgYXJlIGtlcHQgZW1wdHkgZm9yIHByb2plY3RzIGNvbXBhdGliaWxpdHkgcmVhc29uKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBTUERJRlJYIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk92ZXJhbGwgPHNwYW4gY2xhc3M9ImdyYW1lIj5kcml2ZXI8L3NwYW4+IHVwZGF0ZSBmb3IKKyAgICAgICAgICB3YWl0IG9uIGZsYWcgbWFuYWdlbWVudCBvcHRpbWl6YXRpb24gPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFNQSSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PdmVyYWxsIGRyaXZlciBvcHRpbWl6YXRpb24gdG8gaW1wcm92ZSBwZXJmb3JtYW5jZQorICAgICAgICAgIGluIHBvbGxpbmcvaW50ZXJydXB0IG1vZGUgdG8gcmVhY2ggbWF4aW11bSBwZXJpcGhlcmFsIDxzcGFuIGNsYXNzPSJncmFtZSI+ZnJlcXVlbmN5PC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UG9sbGluZyBtb2RlOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZXBsYWNlIHRoZSB1c2Ugb2YgU1BJXzxzcGFuIGNsYXNzPSJncmFtZSI+V2FpdE9uRmxhZ1VuaXRUaW1lb3V0KDwvc3Bhbj4pIGZ1bmN0aW9uIGJ5CisgICAgICAgICAgICAiaWYiIHN0YXRlbWVudCB0byBjaGVjayBvbiBSWE5FL1RYRSBmbGFnZSB3aGlsZQorICAgICAgICAgICAgdHJhbnNmZXJyaW5nIGRhdGE8L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPC91bD4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwO0ludGVycnVwdCBtb2RlOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCB0eXBlPSJzcXVhcmUiPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9IiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk1pbmltaXplIGFjY2VzcyBvbiBTUEkgPHNwYW4gY2xhc3M9ImdyYW1lIj5yZWdpc3RlcnM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWxsIG1vZGVzOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgdGhlIFVTRV9TUElfQ1JDCisgICAgICAgICAgICBzd2l0Y2ggdG8gbWluaW1pemUgdGhlIG51bWJlciBvZiBzdGF0ZW1lbnRzIHdoZW4gQ1JDIGNhbGN1bGF0aW9uIGlzCisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRpc2FibGVkPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSZuYnNwO3RpbWVvdXQKKyAgICAgICAgICAgIG1hbmFnZW1lbnQgdG8gY2hlY2sgb24gZ2xvYmFsIDxzcGFuIGNsYXNzPSJncmFtZSI+cHJvY2Vzc2VzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBlcnJvciBjb2RlCisgICAgICAgICAgICBtYW5hZ2VtZW50IGluIGFsbCBwcm9jZXNzZXM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIERNQSBwcm9jZXNzOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIHRoZSBtYW5hZ2VtZW50IG9mIFNQSSBwZXJpcGhlcmFsIGVycm9ycworICAgICAgICAgICBkdXJpbmcgRE1BIHByb2Nlc3MuIFRoaXMgcmVxdWlyZXMgdGhlIGZvbGxvd2luZyB1cGRhdGVzIGluIHRoZSB1c2VyCisgICAgICAgICAgIGFwcGxpY2F0aW9uOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5Db25maWd1cmUgYW5kIGVuYWJsZSB0aGUKKyAgICAgICAgICAgIFNQSSBJUlEgaW4gSEFMX1NQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPk1zcEluaXQoPC9zcGFuPikgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5JbiBzdG0zMmY3eHhfaXQuYyBmaWxlLAorICAgICAgICAgICAgU1BJXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KSBmdW5jdGlvbjogYWRkIGEgY2FsbCB0bworICAgICAgICAgICAgSEFMX1NQSV9JUlFIYW5kbGVyKCkgZnVuY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgYW5kIGN1c3RvbWl6ZSB0aGUKKyAgICAgICAgICAgIEVycm9yIENhbGxiYWNrIEFQSTogSEFMX1NQSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkVycm9yQ2FsbGJhY2soPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZWZlciB0byB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICBleGFtcGxlIHdoaWNoIGRlc2NyaWJlIHRoZSBjaGFuZ2VzOiBTUElfRnVsbER1cGxleF9Db21ETUE8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgPC91bD4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgVElNIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSZuYnNwOzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfVElNXzxzcGFuIGNsYXNzPSJncmFtZSI+Q29uZmlnT0NyZWZDbGVhcig8L3NwYW4+KQorICAgICAgICAgIGZ1bmN0aW9uIGZvciBwcm9wZXIgY29uZmlndXJhdGlvbiBvZiB0aGUgU01DUiByZWdpc3Rlcjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IGZ1bmN0aW9uIEhBTF9USU1FeF88c3BhbiBjbGFzcz0iZ3JhbWUiPkNvbmZpZ0JyZWFrSW5wdXQoPC9zcGFuPikKKyAgICAgICAgICB0byBjb25maWd1cmUgdGhlIGJyZWFrIGlucHV0IHNvdXJjZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBVQVJULCBVU0FSVCwgU01BUlRDQVJEIGFuZCBJUkRBIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPihyZWZlcmVuY2VkIGFzIDxpPlBQUDwvaT4gaGVyZSBiZWxvdyk8aT4gPC9pPjxzcGFuIGNsYXNzPSJncmFtZSI+dXBkYXRlPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPC9zcGFuPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2I+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgUG9sbGluZyBtYW5hZ2VtZW50Ojwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhlIHVzZXIgVGltZW91dCB2YWx1ZSZuYnNwO211c3QgYmUgZXN0aW1hdGVkIGZvcgorICAgICAgICAgICB0aGUgb3ZlcmFsbCBwcm9jZXNzIGR1cmF0aW9uOiA8c3BhbiBjbGFzcz0iZ3JhbWUiPnRoZTwvc3Bhbj4gVGltZW91dAorICAgICAgICAgICBtZWFzdXJlbWVudCBpcyBjdW11bGF0aXZlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgRE1BIHByb2Nlc3M6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgdGhlIG1hbmFnZW1lbnQgb2YgUFBQIHBlcmlwaGVyYWwgZXJyb3JzCisgICAgICAgICAgIGR1cmluZyBETUEgcHJvY2Vzcy4gVGhpcyByZXF1aXJlcyB0aGUgZm9sbG93aW5nIHVwZGF0ZXMgaW4gdXNlcgorICAgICAgICAgICBhcHBsaWNhdGlvbjo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Q29uZmlndXJlIGFuZCBlbmFibGUgdGhlCisgICAgICAgICAgICBQUFAgSVJRIGluIEhBTF9QUFBfPHNwYW4gY2xhc3M9ImdyYW1lIj5Nc3BJbml0KDwvc3Bhbj4pIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SW4gc3RtMzJmN3h4X2l0LmMgZmlsZSwKKyAgICAgICAgICAgIFBQUF88c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPikgZnVuY3Rpb246IGFkZCBhIGNhbGwgdG8KKyAgICAgICAgICAgIEhBTF9QUFBfSVJRSGFuZGxlcigpIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+QWRkIGFuZCBjdXN0b21pemUgdGhlCisgICAgICAgICAgICBFcnJvciBDYWxsYmFjayBBUEk6IEhBTF9QUFBfPHNwYW4gY2xhc3M9ImdyYW1lIj5FcnJvckNhbGxiYWNrKDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPC91bD4KKyAgICAgIDwvdWw+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFdXREcgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T3ZlcmFsbCByZXdvcmsgb2YgdGhlIGRyaXZlciBmb3IgbW9yZSBlZmZpY2llbnQKKyAgICAgICAgICBpbXBsZW1lbnRhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVtb3ZlIHRoZSBmb2xsb3dpbmcgQVBJczo8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1dXREdfPHNwYW4gY2xhc3M9ImdyYW1lIj5TdGFydCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9XV0RHX1N0YXJ0XzxzcGFuIGNsYXNzPSJncmFtZSI+SVQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfV1dER188c3BhbiBjbGFzcz0iZ3JhbWUiPk1zcERlSW5pdCg8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTF9XV0RHXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0U3RhdGUoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIGltcGxlbWVudGF0aW9uOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfV1dER188c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BJm5ic3A7bmV3IHBhcmFtZXRlciBpbgorICAgICAgICAgICAgIHRoZSBJbml0IFN0cnVjdHVyZTombmJzcDtFV0lNb2RlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1dXREdfPHNwYW4gY2xhc3M9ImdyYW1lIj5Nc3BJbml0KDwvc3Bhbj4pPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMX1dXREdfPHNwYW4gY2xhc3M9ImdyYW1lIj5SZWZyZXNoKDwvc3Bhbj4pJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0ic3F1YXJlIj4KKyAgICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VGhpcyBmdW5jdGlvbiBpbnN1cmVzCisgICAgICAgICAgICAgdGhlIHJlbG9hZCBvZiB0aGUgPHNwYW4gY2xhc3M9ImdyYW1lIj5jb3VudGVyPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5UaGUgImNvdW50ZXIiCisgICAgICAgICAgICAgcGFyYW1ldGVyIGhhcyBiZWVuIDxzcGFuIGNsYXNzPSJncmFtZSI+cmVtb3ZlZDwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPC91bD4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfV1dER188c3BhbiBjbGFzcz0iZ3JhbWUiPklSUUhhbmRsZXIoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUxfV1dER188c3BhbiBjbGFzcz0iZ3JhbWUiPkVhcmx5V2FrZXVwQ2FsbGJhY2soPC9zcGFuPikgaXMgdGhlIG5ldyBwcm90b3R5cGUgb2YKKyAgICAgICAgICAgIEhBTF9XV0RHX1dha2V1cENhbGxiYWNrKCk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8L3VsPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVmZXIgdG8gdGhlIGZvbGxvd2luZyBleGFtcGxlIHRvIGlkZW50aWZ5IHRoZQorICAgICAgICAgIGNoYW5nZXM6IFdXREdfPHNwYW4gY2xhc3M9ImdyYW1lIj5FeGFtcGxlPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgIDwvdWw+CisgICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiAtbW96LWluaXRpYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IHdoaXRlOyI+VjEuMC40IC8KKyAgICAwOS1EZWNlbWJlci0yMDE1PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+CisgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluIDQuNXB0IDAuMjVpbjsiPjxiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPk1haW4gQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjwvcD4KKyAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImRpc2MiPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBHZW5lcmljIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUwgd2VhayBlbXB0eSBjYWxsYmFja3MgdG8gcHJldmVudCB1bnVzZWQKKyAgICAgICAgICBhcmd1bWVudCBjb21waWxhdGlvbiB3YXJuaW5ncyB3aXRoIHNvbWUgY29tcGlsZXJzIGJ5IGNhbGxpbmcgdGhlCisgICAgICAgICAgZm9sbG93aW5nIGxpbmU6PC9zcGFuPjxzcGFuIHN0eWxlPSIiPgorICAgICAgICAgIDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIGNsYXNzPSJncmFtZSI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVOVVNFRCg8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5ocHBwKTs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEVUSDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgdXBkYXRlJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9FVEhfPHNwYW4gY2xhc3M9ImdyYW1lIj5Jbml0KDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gdG8gYWRkIHRpbWVvdXQgb24gdGhlIFNvZnR3YXJlIHJlc2V0IG1hbmFnZW1lbnQ8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICA8L3VsPgorICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiB3aGl0ZTsiPlYxLjAuMyAvCisgICAgMTMtTm92ZW1iZXItMjAxNTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgorICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+CisgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5HZW5lcmFsIHVwZGF0ZXMgdG8gZml4IGtub3duIGRlZmVjdHMgYW5kCisgICAgICAgICBlbmhhbmNlbWVudHMgPHNwYW4gY2xhc3M9ImdyYW1lIj5pbXBsZW1lbnRhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5PbmUgY2hhbmdlIGRvbmUgb24gdGhlIEhBTCBDUllQIHJlcXVpcmVzIGFuIHVwZGF0ZQorICAgICAgICAgb24gdGhlIGFwcGxpY2F0aW9uIGNvZGUgYmFzZWQgb24gSEFMIFYxLjAuMjwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEhBTF9DUllQX0RFU0VDQl88c3BhbiBjbGFzcz0iZ3JhbWUiPkRlY3J5cHQoPC9zcGFuPikKKyAgICAgICAgICBBUEkgdG8gaW52ZXJ0IHBQbGFpbkRhdGEgYW5kIHBDeXBoZXJEYXRhIHBhcmFtZXRlcnM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgR2VuZXJpYyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMIHdlYWsgZW1wdHkgY2FsbGJhY2tzIHRvIHByZXZlbnQgdW51c2VkCisgICAgICAgICAgYXJndW1lbnQgY29tcGlsYXRpb24gd2FybmluZ3Mgd2l0aCBzb21lIGNvbXBpbGVycyBieSBjYWxsaW5nIHRoZQorICAgICAgICAgIGZvbGxvd2luZyBsaW5lOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4KKyAgICAgICAgICA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBjbGFzcz0iZ3JhbWUiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VTlVTRUQoPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+aHBwcCk7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgcmVmZXJlbmNlcyB0byBTVE0zMkN1YmVNWCBhbmQgTWljcm9YcGxvcmVyCisgICAgICAgICAgZnJvbSBzdG0zMmY3eHhfaGFsX21zcF90ZW1wbGF0ZS5jIDxzcGFuIGNsYXNzPSJncmFtZSI+ZmlsZTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgQURDPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZXBsYWNlIEFEQ19DSEFOTkVMX1RFTVBTRU5TT1IgZGVmaW5pdGlvbiBmcm9tCisgICAgICAgICAgQURDX0NIQU5ORUxfMTYgdG8gQURDX0NIQU5ORUxfMTggJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUwgQURDIGRyaXZlciBzdGF0ZSBtYWNoaW5lIGZvciBjb2RlCisgICAgICAgICAgZWZmaWNpZW5jeTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgbmV3IGxpdGVyYWw6IEFEQ19JTkpFQ1RFRF9TT0ZUV0FSRV9TVEFSVCB0byBiZQorICAgICAgICAgIHVzZWQgYXMgcG9zc2libGUgdmFsdWUgZm9yIHRoZSBFeHRlcm5hbFRyaWdJbmplY0NvbnZFZGdlIHBhcmFtZXRlciBpbgorICAgICAgICAgIHRoZSBBRENfSW5pdFR5cGVEZWYgc3RydWN0dXJlIHRvIHNlbGVjdCB0aGUgQURDIHNvZnR3YXJlIHRyaWdnZXIKKyAgICAgICAgICBtb2RlLjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBDT1JURVggPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbW92ZSBkdXBsaWNhdGlvbiBmb3IgX19IQUxfQ09SVEVYX1NZU1RJQ0tDTEtfPHNwYW4gY2xhc3M9ImdyYW1lIj5DT05GSUcoPC9zcGFuPikgbWFjcm88L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgQ1JZUCA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX0NSWVBfREVTRUNCXzxzcGFuIGNsYXNzPSJncmFtZSI+RGVjcnlwdCg8L3NwYW4+KQorICAgICAgICAgIEFQSSB0byBmaXggdGhlIGludmVydGVkIHBQbGFpbkRhdGEgYW5kIHBDeXBoZXJEYXRhIHBhcmFtZXRlcnMgaXNzdWUgPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEZMQVNIIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBPQl9JV0RHX1NUT1BfQUNUSVZFIGRlZmluaXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIE9CX1JEUF9MRVZFTF94IGRlZmluaXRpb24gYnkgcHJvcGVyIHZhbHVlczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgRkxBU0hfPHNwYW4gY2xhc3M9ImdyYW1lIj5NYXNzRXJhc2UoPC9zcGFuPikKKyAgICAgICAgICBmdW5jdGlvbiB0byBjb25zaWRlciB0aGUgdm9sdGFnZSByYW5nZSBwYXJhbWV0ZXIgaW4gdGhlIG1hc3MgZXJhc2UKKyAgICAgICAgICBjb25maWd1cmF0aW9uIDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBSQ0M8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSB2YWx1ZXMgZm9yIExTRSBEcml2ZSBjYXBhYmlsaXR5IDxzcGFuIGNsYXNzPSJncmFtZSI+ZGVmaW5lczwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIFBMTE4gbWluIHZhbHVlIDUwIGluc3RlYWQgb2YgPHNwYW4gY2xhc3M9ImdyYW1lIj4xMDA8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFkZCBSQ0NfUExMSTJTUF9ESVZ4IGRlZmluZXMgZm9yIFBMTEkyU1AgY2xvY2sgPHNwYW4gY2xhc3M9ImdyYW1lIj5kaXZpZGVyPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgX19IQUxfUkNDX1VTQl9PVEdfRlNfQ0xLXzxzcGFuIGNsYXNzPSJncmFtZSI+RElTQUJMRSg8L3NwYW4+KQorICAgICAgICAgIG1hY3JvIHRvIHJlbW92ZSB0aGUgZGlzYWJsZSBvZiB0aGUgU1lTQ0ZHJm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBIQUxfUkNDRXhfPHNwYW4gY2xhc3M9ImdyYW1lIj5HZXRQZXJpcGhDTEtGcmVxKDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gZm9yIHByb3BlciBTQUkgY2xvY2sgY29uZmlndXJhdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBTQUkgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIGZvciBwcm9wZXIgbWFuYWdlbWVudCBvZiB0aGUgZXh0ZXJuYWwKKyAgICAgICAgICBzeW5jaHJvbml6YXRpb24gaW5wdXQgPHNwYW4gY2xhc3M9ImdyYW1lIj5zZWxlY3Rpb248L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgb2YmbmJzcDtIQUxfU0FJX0luaXQgKCkgZnVuY2l0b248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBkZWZpbml0aW9uIG9mIFNBSV9CbG9ja19TeW5jRXh0IGFuZAorICAgICAgICAgICBTQUlfQmxvY2tfU3luY2hyb25pemF0aW9uIGdyb3Vwczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIFNBSV9TTE9UQUNUSVZFXzxzcGFuIGNsYXNzPSJncmFtZSI+WAorICAgICAgICAgICZuYnNwO2RlZmluZXM8L3NwYW4+IHZhbHVlczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUmbmJzcDtIQUxfU0FJXzxzcGFuIGNsYXNzPSJncmFtZSI+SW5pdCg8L3NwYW4+KQorICAgICAgICAgIGZ1bmN0aW9uIGZvciBwcm9wZXIgY29tcGFuZGluZyBtb2RlIG1hbmFnZW1lbnQ8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIFNBSV9UcmFuc21pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUeHhCaXQoPC9zcGFuPikKKyAgICAgICAgICBmdW5jdGlvbnMgdG8gYWRkIHRoZSBjaGVjayBvbiB0cmFuc2ZlciBjb3VudGVyIGJlZm9yZSB3cml0aW5nIG5ldworICAgICAgICAgIGRhdGEgdG8gU0FJeF9EUiByZWdpc3RlcnM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIFNBSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkZpbGxGaWZvKDwvc3Bhbj4pIGZ1bmN0aW9uCisgICAgICAgICAgdG8gYXZvaWQgaXNzdWUgd2hlbiB0aGUgbnVtYmVyIG9mIGRhdGEgdG8gdHJhbnNtaXQgaXMgc21hbGxlciB0aGFuCisgICAgICAgICAgdGhlIEZJRk8gc2l6ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgSEFMX1NBSV88c3BhbiBjbGFzcz0iZ3JhbWUiPkVuYWJsZVJ4TXV0ZU1vZGUoPC9zcGFuPikKKyAgICAgICAgICBmdW5jdGlvbiBmb3IgcHJvcGVyIG11dGUgbWFuYWdlbWVudDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgU0FJXzxzcGFuIGNsYXNzPSJncmFtZSI+SW5pdFBDTSg8L3NwYW4+KQorICAgICAgICAgIGZ1bmN0aW9uIHRvIHN1cHBvcnQgMjRiaXRzIGNvbmZpZ3VyYXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgU0QgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIEhBTF9TRF9HZXRfPHNwYW4gY2xhc3M9ImdyYW1lIj5DYXJkSW5mbyg8L3NwYW4+KQorICAgICAgICAgIHRvIHByb3Blcmx5IHN1cHBvcnQgaGlnaCBjYXBhY2l0eSBjYXJkczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBTUERJRlJYIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBTUERJRlJYXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BUnhDcGx0KDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24gdG8mbmJzcDtjaGVjayBvbiBjaXJjdWxhciBtb2RlIGJlZm9yZQorICAgICAgICAgIGRpc2FibGluZyB0aGUgRE1BPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFRJTSA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgSEFMX1RJTV88c3BhbiBjbGFzcz0iZ3JhbWUiPkNvbmZpZ0Nsb2NrU291cmNlKDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gaW1wbGVtZW50YXRpb24gZm9yIHByb3BlciBwYXJhbWV0ZXJzIGNoZWNrPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFVBUlQ8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSBfX0hBTF9VQVJUX0NMRUFSX0lUIG1hY3JvIGZvciBwcm9wZXIKKyAgICAgICAgICBmdW5jdGlvbm5pbmcmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5sbCBGTUM8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFkZCBGTUNfUEFHRV9TSVpFXzUxMiBkZWZpbmU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5sbCBTRE1NQzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIFNETU1DXzxzcGFuIGNsYXNzPSJncmFtZSI+U2V0U0RNTUNSZWFkV2FpdE1vZGUoPC9zcGFuPikKKyAgICAgICAgICBmdW5jdGlvbiBmb3IgcHJvcGVyIGZ1bmN0aW9ubmluZzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgIDwvdWw+CisgICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiAtbW96LWluaXRpYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IHdoaXRlOyI+VjEuMC4yIC8KKyAgICAyMS1TZXB0ZW1iZXItMjAxNTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2gzPgorICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbiA0LjVwdCAwLjI1aW47Ij48Yj48dT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyBjb2xvcjogYmxhY2s7Ij5NYWluIENoYW5nZXM8L3NwYW4+PC91PjwvYj48L3A+CisgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJkaXNjIj4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgR2VuZXJpYyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5zdG0zMmY3eHhfaGFsLmNvbmZfdGVtcGxhdGUuaDoKKyAgICAgICAgICB1cGRhdGUmbmJzcDtIU0VfU1RBUlRVUF9USU1FT1VUPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnN0bTMyZjd4eF9oYWxfZGVmLmg6IHVwZGF0ZSB0aGUgcXVvdGF0aW9uIG1hcmtzCisgICAgICAgICAgdXNlZCBpbiAjZXJyb3IiVVNFX1JUT1Mgc2hvdWxkIGJlIDAgaW4gdGhlIGN1cnJlbnQgSEFMIDxzcGFuIGNsYXNzPSJncmFtZSI+cmVsZWFzZTwvc3Bhbj4iPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIERNQTwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgdXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+T3ZlcmFsbCA8c3BhbiBjbGFzcz0iZ3JhbWUiPmRyaXZlcjwvc3Bhbj4gdXBkYXRlIGZvcgorICAgICAgICAgIGNvZGUgb3B0aW1pemF0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9InNxdWFyZSI+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5hZGQgU3RyZWFtQmFzZUFkZHJlc3MgYW5kIFN0cmVhbUluZGV4IG5ldyBmaWVsZHMKKyAgICAgICAgICAgaW4gdGhlIERNQV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFkZCBETUFfQmFzZV9SZWdpc3RlcnMgcHJpdmF0ZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPnN0cnVjdHVyZTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5hZGQgc3RhdGljIGZ1bmN0aW9uIERNQV88c3BhbiBjbGFzcz0iZ3JhbWUiPkNhbGNCYXNlQW5kQml0c2hpZnQoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgSEFMX0RNQV88c3BhbiBjbGFzcz0iZ3JhbWUiPkluaXQoPC9zcGFuPikKKyAgICAgICAgICAgZnVuY3Rpb24gdG8gdXNlIHRoZSBuZXcgYWRkZWQgc3RhdGljIGZ1bmN0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIEhBTF9ETUFfPHNwYW4gY2xhc3M9ImdyYW1lIj5EZUluaXQoPC9zcGFuPikKKyAgICAgICAgICAgZnVuY3Rpb24gdG8gb3B0aW1pemUgY2xlYXIgZmxhZyBvcGVyYXRpb25zPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIEhBTF9ETUFfU3RhcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KQorICAgICAgICAgICBmdW5jdGlvbiB0byBvcHRpbWl6ZSBpbnRlcnJ1cHRzIGVuYWJsZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBIQUxfRE1BXzxzcGFuIGNsYXNzPSJncmFtZSI+UG9sbEZvclRyYW5zZmVyKDwvc3Bhbj4pCisgICAgICAgICAgIGZ1bmN0aW9uIHRvIG9wdGltaXplIGNoZWNrIG9uIGZsYWdzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIEhBTF9ETUFfPHNwYW4gY2xhc3M9ImdyYW1lIj5JUlFIYW5kbGVyKDwvc3Bhbj4pCisgICAgICAgICAgIGZ1bmN0aW9uIHRvIG9wdGltaXplIGludGVycnVwdCBmbGFnIG1hbmFnZW1lbnQ8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDwvdWw+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEVUSCZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnJlbW92ZSBkdXBsaWNhdGVkIG1hY3JvIElTX0VUSF9SWF88c3BhbiBjbGFzcz0iZ3JhbWUiPk1PREUoPC9zcGFuPik8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgR1BJTyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgR1BJT19TUEVFRF9MT1cgZGVmaW5lIHRvCisgICAgICAgICAgR1BJT19TUEVFRF9GUkVRX0xPVzwvc3Bhbj48c3BhbiBzdHlsZT0iIj4KKyAgICAgICAgICA8bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW5hbWUgR1BJT19TUEVFRF9NRURJVU0gZGVmaW5lIHRvCisgICAgICAgICAgR1BJT19TUEVFRF9GUkVRX01FRElVTTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVuYW1lIEdQSU9fU1BFRURfRkFTVCBkZWZpbmUgdG8gR1BJT19TUEVFRF9GUkVRX0hJR0g8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSBHUElPX1NQRUVEX0hJR0ggZGVmaW5lIHRvCisgICAgICAgICAgR1BJT19TUEVFRF9GUkVRX1ZFUllfSElHSDwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBIQVNIIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSBIQUxfSEFTSF9TVEFURVR5cGVEZWYgdG8KKyAgICAgICAgICBIQUxfSEFTSF9TdGF0ZVR5cGVEZWY8L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlbmFtZSBIQUxfSEFTSF9QaGFzZVR5cGVEZWYgdG8KKyAgICAgICAgICBIQUxfSEFTSFBoYXNlVHlwZURlZjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBSQ0MgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIHZhbHVlcyBmb3IgTFNFIERyaXZlIGNhcGFiaWxpdHkgPHNwYW4gY2xhc3M9ImdyYW1lIj5kZWZpbmVzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgUExMTi9QTExJMlNOL1BMTFNBSSBWQ08gbWluIHZhbHVlIDEwME1IegorICAgICAgICAgIGluc3RlYWQgb2YgPHNwYW4gY2xhc3M9ImdyYW1lIj4xOTJNSHo8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFkZCBfX0hBTF9SQ0NfTUNPMV88c3BhbiBjbGFzcz0iZ3JhbWUiPkNPTkZJRyg8L3NwYW4+KQorICAgICAgICAgIGFuZCBfX0hBTF9SQ0NfTUNPMl9DT05GSUcoKSBtYWNyb3M8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIEhBTF9SQ0NFeF88c3BhbiBjbGFzcz0iZ3JhbWUiPlBlcmlwaENMS0NvbmZpZyg8L3NwYW4+KQorICAgICAgICAgIGZ1bmN0aW9uIHRvIHJlc2V0IHRoZSBCYWNrdXAgZG9tYWluIG9ubHkgaWYgdGhlIFJUQyBDbG9jayBzb3VyY2UKKyAgICAgICAgICBzZWxlY3Rpb24gaXMgbW9kaWZpZWQmbmJzcDs8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgVElNPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIF9fSEFMX1RJTV9TRVRfPHNwYW4gY2xhc3M9ImdyYW1lIj5DT01QQVJFKDwvc3Bhbj4pIG1hY3JvPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnJlbW92ZSB1c2VsZXNzIDxzcGFuIGNsYXNzPSJncmFtZSI+YXNzZXJ0KDwvc3Bhbj4pCisgICAgICAgICAgaW4mbmJzcDtIQUxfVElNX1BXTV9Db25maWdDaGFubmVsKCksIFRJTV9PQzJfU2V0Q29uZmlnKCkgYW5kCisgICAgICAgICAgSEFMX1RJTV9QV01fQ29uZmlnQ2hhbm5lbCgpIGZ1bmN0aW9uczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBDQU48L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFkZCB0aGUgY2xlYXIgZmxhZyBFUlJJIGJpdCBpbiBIQUxfQ0FOXzxzcGFuIGNsYXNzPSJncmFtZSI+SVJRSGFuZGxlcig8L3NwYW4+KTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBJMlM8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij4KKyAgICAgICAgIHVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBJMlMgSEFMX0kyU188c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0KDwvc3Bhbj4pCisgICAgICAgICAgQVBJJm5ic3A7dG8ga2VlcCB0aGUgY2hlY2sgb24gYnVzeSBmbGFnIG9ubHkgZm9yIHRoZSBzbGF2ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBRU1BJPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5BZGQgX19IQUxfUVNQSV9DTEVBUl88c3BhbiBjbGFzcz0iZ3JhbWUiPkZMQUcoPC9zcGFuPikKKyAgICAgICAgICBiZWZvcmUgUVNQSV9Db25maWcoKTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBVQVJUPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgZW5hYmxpbmcgb2YgRVJSIElUIHNvdXJjZSBhbmQgUEUgc291cmNlCisgICAgICAgICAgZnJvbSBIQUxfVUFSVF9UcmFuc21pdF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pIGFuZCByZW1vdmUgdGhlCisgICAgICAgICAgY29ycmVzcG9uZGluZyBkaXNhYmxpbmcgRVJSL1BFIElUIGZyb20gVUFSVF9FbmRUcmFuc21pdF9JVCgpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIFBDRDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPgorICAgICAgICAgdXBkYXRlPC9zcGFuPjxiPjxzcGFuIHN0eWxlPSIiPiZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5DbGVhbiBzdGF0dXMgcGhhc2UgcmVjZWl2ZWQgaW50ZXJydXB0IHdoZW4gRE1BCisgICAgICAgICAgbW9kZSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmVuYWJsZWQ8L3NwYW4+Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEhDRCA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VcGRhdGUgdG8gdXNlIGxvY2FsIHZhcmlhYmxlIGluIFVTQiBIb3N0IGNoYW5uZWwKKyAgICAgICAgICByZS08c3BhbiBjbGFzcz0iZ3JhbWUiPmFjdGl2YXRpb248L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+bGwgRk1DPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+CisgICAgICAgICB1cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgdGhlIGRlZmluZSBGTUMgV3JpdGUgRklGTyBEaXNhYmxlL0VuYWJsZToKKyAgICAgICAgICBGTUNfV1JJVEVfRklGT19ESVNBQkxFIGFuZCBGTUNfV1JJVEVfRklGT19FTkFCTEU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+cmVtb3ZlIHJldHVybiBIQUxfRVJST1IgZnJvbSBGTUNfU0RSQU1fPHNwYW4gY2xhc3M9ImdyYW1lIj5TZW5kQ29tbWFuZCg8L3NwYW4+KSBmdW5jdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgIDwvdWw+CisgICAgPGgzIHN0eWxlPSJiYWNrZ3JvdW5kOiByZ2IoNTEsIDEwMiwgMjU1KSBub25lIHJlcGVhdCBzY3JvbGwgMCUgNTAlOyBtYXJnaW4tcmlnaHQ6IDUwMHB0OyAtbW96LWJhY2tncm91bmQtY2xpcDogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtb3JpZ2luOiAtbW96LWluaXRpYWw7IC1tb3otYmFja2dyb3VuZC1pbmxpbmUtcG9saWN5OiAtbW96LWluaXRpYWw7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7QXJpYWwmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IHdoaXRlOyI+VjEuMC4xIC8KKyAgICAyNS1KdW5lLTIwMTU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9oMz4KKyAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFyZ2luOiA0LjVwdCAwaW4gNC41cHQgMC4yNWluOyI+PGI+PHU+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsgY29sb3I6IGJsYWNrOyI+TWFpbiBDaGFuZ2VzPC9zcGFuPjwvdT48L2I+PC9wPgorICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iZGlzYyI+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+R2VuZXJhbCB1cGRhdGVzIHRvIGZpeCBrbm93biBkZWZlY3RzIGFuZAorICAgICAgICAgZW5oYW5jZW1lbnRzIDxzcGFuIGNsYXNzPSJncmFtZSI+aW1wbGVtZW50YXRpb248L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIENSQyZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBfX0hBTF9DUkNfU0VUXzxzcGFuIGNsYXNzPSJncmFtZSI+SURSKDwvc3Bhbj4pCisgICAgICAgICAgbWFjcm8gaW1wbGVtZW50YXRpb24gdG8gdXNlIFdSSVRFX1JFRygpIGluc3RlYWQgb2YgTU9ESUZZX1JFRygpPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIENFQyZuYnNwOzwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSB0aW1lb3V0IG1hbmFnZW1lbnQgaW4gSEFMX0NFQ188c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0KDwvc3Bhbj4pIGFuZCBIQUxfQ0VDX1JlY2VpdmUoKSBmdW5jdGlvbnM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgQ29ydGV4IDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBIQUxfTVBVXzxzcGFuIGNsYXNzPSJncmFtZSI+Q29uZmlnUmVnaW9uKDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gdG8gYmUgbWlzcmEgY29tcGxpYW50PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEVUSCA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgZHVwbGljYXRlZCBJU19FVEhfRFVQTEVYXzxzcGFuIGNsYXNzPSJncmFtZSI+TU9ERSg8L3NwYW4+KQorICAgICAgICAgIGFuZCBJU19FVEhfUlhfTU9ERSgpIG1hY3Jvczwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5SZW1vdmUgaWxsZWdhbCBzcGFjZQorICAgICAgICAgIEVUSF9NQUNfUkVBRENPTlRST0xMRVJfRkxVU0hJTkcgbWFjcm88L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+VXBkYXRlIEVUSF9NQUNfUkVBRENPTlRST0xMRVJfWFhYIGRlZmluZWQgdmFsdWVzCisgICAgICAgICAgKFhYWCBjYW4gYmUgSURMRSwgUkVBRElOR19EQVRBIGFuZCBSRUFESU5HX1NUQVRVUyk8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgRkxBU0ggPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIEZMQVNIX09CXzxzcGFuIGNsYXNzPSJncmFtZSI+R2V0UkRQKDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gdG8gcmV0dXJuIHVpbnQ4X3QgJm5ic3A7aW5zdGVhZCBvZiBGbGFnU3RhdHVzPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBPQl9SRFBfTEVWRUx4IGRlZmluaXRpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+YWRkIF9fSEFMX0ZMQVNIX0dFVF88c3BhbiBjbGFzcz0iZ3JhbWUiPkxBVEVOQ1koPC9zcGFuPikKKyAgICAgICAgICBtYWNybzwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBIQVNIIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBIQVNIXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BWGZlckNwbHQoPC9zcGFuPikKKyAgICAgICAgICBhbmQgSEFTSEV4X0RNQVhmZXJDcGx0KCkgZnVuY3Rpb25zIHRvIHByb3Blcmx5IGNvbmZpZ3VyZSB0aGUgbnVtYmVyCisgICAgICAgICAgb2YgdmFsaWQgYml0cyBpbiBsYXN0IHdvcmQgb2YgdGhlIG1lc3NhZ2U8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIEhBTF9IQVNIX1NIQTFfPHNwYW4gY2xhc3M9ImdyYW1lIj5BY2N1bXVsYXRlKDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gdG8gY2hlY2sgb24gdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgYnVmZmVyPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBIQUxfSEFTSF88Yj48aT5NT0RFPC9pPjwvYj5fU3RhcnRfPHNwYW4gY2xhc3M9ImdyYW1lIj5JVCg8L3NwYW4+KSBmdW5jdGlvbnMgKDxiPjxpPk1vZGUgPC9pPjwvYj5zdGFuZHMgZm9yIE1ENSwKKyAgICAgICAgICBTSEExLCBTSEEyMjQgYW5kIFNIQTI1NjxiPjxpPiA8L2k+PC9iPikgdG8gOjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJzcXVhcmUiPgorICAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+Rml4IHByb2Nlc3NpbmcgZmFpbCBmb3Igc21hbGwgaW5wdXQgPHNwYW4gY2xhc3M9ImdyYW1lIj5idWZmZXJzPC9zcGFuPjwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnRvIHVubG9jayB0aGUgcHJvY2VzcyBhbmQgY2FsbCByZXR1cm4gSEFMX09LIGF0CisgICAgICAgICAgIHRoZSBlbmQgb2YgSEFTSCBwcm9jZXNzaW5nIHRvIGF2b2lkIGluY29ycmVjdCByZXBlYXRpbmcgPHNwYW4gY2xhc3M9ImdyYW1lIj5zb2Z0d2FyZTwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5wcm9wZXJseSB0byBtYW5hZ2UgdGhlIEhhc2hJVENvdW50ZXIgZWZmaWNpZW5jeSA8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0byBjYWxsIHRoZSBIQUxfSEFTSF88c3BhbiBjbGFzcz0iZ3JhbWUiPkluQ3BsdENhbGxiYWNrKDwvc3Bhbj4pCisgICAgICAgICAgIGF0IHRoZSBlbmQgb2YgdGhlIGNvbXBsZXRlIGJ1ZmZlciBpbnN0ZWFkIG9mIGV2ZXJ5IGVhY2ggNTEyIGJpdHMgPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8L3VsPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgSEFTSF9JVF9ESU5JIGFuZCBIQVNIX0lUX0RDSSBkZWZpbml0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBfX0hBTF9IQVNIX0dFVF88c3BhbiBjbGFzcz0iZ3JhbWUiPkZMQUcoPC9zcGFuPikKKyAgICAgICAgICBtYWNybyBkZWZpbml0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+SEFMIEkyUyA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgSEFMX0kyU188c3BhbiBjbGFzcz0iZ3JhbWUiPlRyYW5zbWl0KDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gdG8gZW5zdXJlIHRoZSB3YWl0aW5nIG9uIEJ1c3kgZmxhZyBpbiBjYXNlIG9mIHNsYXZlIG1vZGUKKyAgICAgICAgICBzZWxlY3Rpb248L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgUlRDIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBIQUxfUlRDRXhfPHNwYW4gY2xhc3M9ImdyYW1lIj5TZXRXYWtlVXBUaW1lcig8L3NwYW4+KQorICAgICAgICAgIGFuZCBIQUxfUlRDRXhfU2V0V2FrZVVwVGltZXJfSVQoKSBmdW5jdGlvbnMgdG8gcHJvcGVybHkgY2hlY2sgb24KKyAgICAgICAgICBXVVRXRiBmbGFnPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnJlbmFtZSBSVENfVElNRVNUQU1QUElOX1BJOCBkZWZpbmUgdG8KKyAgICAgICAgICBSVENfVElNRVNUQU1QUElOX1BPUzE8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+cmVuYW1lIFJUQ19USU1FU1RBTVBQSU5fUEMxIGRlZmluZSB0bworICAgICAgICAgIFJUQ19USU1FU1RBTVBQSU5fUE9TMjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgX19IQUxfUlRDX1dBS0VVUFRJTUVSX0NMRUFSXzxzcGFuIGNsYXNzPSJncmFtZSI+RkxBRyg8L3NwYW4+KSBtYWNybyBkZWZpbml0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBfX0hBTF9SVENfVEFNUEVSX0dFVF88c3BhbiBjbGFzcz0iZ3JhbWUiPklUKDwvc3Bhbj4pCisgICAgICAgICAgbWFjcm8gZGVmaW5pdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgX19IQUxfUlRDX1RBTVBFUl9DTEVBUl88c3BhbiBjbGFzcz0iZ3JhbWUiPkZMQUcoPC9zcGFuPikKKyAgICAgICAgICBtYWNybyBkZWZpbml0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBfX0hBTF9SVENfVElNRVNUQU1QX0NMRUFSXzxzcGFuIGNsYXNzPSJncmFtZSI+RkxBRyg8L3NwYW4+KSBtYWNybyBkZWZpbml0aW9uPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZSBfX0hBTF9SVENfVEFNUEVSX1RJTUVTVEFNUF9FWFRJX0dFVF88c3BhbiBjbGFzcz0iZ3JhbWUiPkZMQUcoPC9zcGFuPikgbWFjcm8gZGVmaW5pdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5hZGQgUlRDX1RBTVBDUl9UQU1QWEUgYW5kIFJUQ19UQU1QQ1JfVEFNUFhJRQorICAgICAgICAgIGRlZmluZXM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgU01BUlRDQVJEIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImNpcmNsZSI+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPmFkZCBTTUFSVENBUkRfRkxBR19JRExFLCBTTUFSVENBUkRfSVRfSURMRSA8c3BhbiBjbGFzcz0iZ3JhbWUiPmFuZCZuYnNwOyBTTUFSVENBUkQ8L3NwYW4+X0NMRUFSX0lETEVGIGRlZmluZXM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5IQUwgVUFSVCA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgSEFMX1VBUlRfPHNwYW4gY2xhc3M9ImdyYW1lIj5ETUFSZXN1bWUoPC9zcGFuPikKKyAgICAgICAgICBmdW5jdGlvbiB0byBjbGVhciBvdmVycnVuIGZsYWcgYmVmb3JlIHJlc3VtaW5nIHRoZSBSeCB0cmFuc2Zlcjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgVUFSVF9GTEFHX1NCS0YgZGVmaW5pdGlvbjwvc3Bhbj48c3BhbiBzdHlsZT0iIj48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8L3VsPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PGI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkhBTCBVU0FSVCA8L3NwYW4+PC9iPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGU8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij51cGRhdGUgSEFMX1VTQVJUXzxzcGFuIGNsYXNzPSJncmFtZSI+RE1BUmVzdW1lKDwvc3Bhbj4pCisgICAgICAgICAgZnVuY3Rpb24gdG8gY2xlYXIgb3ZlcnJ1biBmbGFnIGJlZm9yZSByZXN1bWluZyB0aGUgUnggdHJhbnNmZXI8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5MTCBGTUMgPC9zcGFuPjwvYj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDx1bCBzdHlsZT0ibWFyZ2luLXRvcDogMGluOyIgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+dXBkYXRlIE5BTkQgdGltaW5nIG1heGltdW0gPHNwYW4gY2xhc3M9ImdyYW1lIj52YWx1ZXM8L3NwYW4+PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgIDwvdWw+CisgICAgIDxsaSBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0iY29sb3I6IGJsYWNrOyBtYXJnaW4tdG9wOiA0LjVwdDsgbWFyZ2luLWJvdHRvbTogNC41cHQ7Ij48Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+TEwgVVNCIDwvc3Bhbj48L2I+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPnVwZGF0ZTwvc3Bhbj48c3BhbiBzdHlsZT0iIj4gPG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPHVsIHN0eWxlPSJtYXJnaW4tdG9wOiAwaW47IiB0eXBlPSJjaXJjbGUiPgorICAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDQuNXB0OyBtYXJnaW4tYm90dG9tOiA0LjVwdDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5VU0JfRmx1c2hUeEZpZm8gQVBJOiB1cGRhdGUgdG8gZmx1c2ggYWxsIFR4IDxzcGFuIGNsYXNzPSJncmFtZSI+RklGTzwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+IDxvOnA+PC9vOnA+PC9zcGFuPjwvbGk+CisgICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlVwZGF0ZSB0byB1c2UgbG9jYWwgdmFyaWFibGUgaW4gVVNCIEhvc3QgY2hhbm5lbAorICAgICAgICAgIHJlLTxzcGFuIGNsYXNzPSJncmFtZSI+YWN0aXZhdGlvbjwvc3Bhbj48L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPC91bD4KKyAgICA8L3VsPgorICAgIDxoMyBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgbWFyZ2luLXJpZ2h0OiA1MDBwdDsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiB3aGl0ZTsiPlYxLjAuMCAvIDEyLU1heS0yMDE1PC9zcGFuPjxzcGFuIHN0eWxlPSIiPjxvOnA+PC9vOnA+PC9zcGFuPjwvaDM+CisgICAgPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9Im1hcmdpbjogNC41cHQgMGluIDQuNXB0IDAuMjVpbjsiPjxiPjx1PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPk1haW4gQ2hhbmdlczwvc3Bhbj48L3U+PC9iPjwvcD4KKyAgICA8dWwgc3R5bGU9Im1hcmdpbi10b3A6IDBpbjsiIHR5cGU9ImRpc2MiPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9ImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNC41cHQ7IG1hcmdpbi1ib3R0b206IDQuNXB0OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPkZpcnN0IG9mZmljaWFsIHJlbGVhc2UgZm9yPGI+PGk+CisgICAgICAgICBTVE0zMkY3NTZ4eC83NDZ4eC83NDV4eDwvaT48L2I+IGRldmljZXM8L3NwYW4+PHNwYW4gc3R5bGU9IiI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICA8L3VsPgorICAgIDxoMiBzdHlsZT0iYmFja2dyb3VuZDogcmdiKDUxLCAxMDIsIDI1NSkgbm9uZSByZXBlYXQgc2Nyb2xsIDAlIDUwJTsgLW1vei1iYWNrZ3JvdW5kLWNsaXA6IC1tb3otaW5pdGlhbDsgLW1vei1iYWNrZ3JvdW5kLW9yaWdpbjogLW1vei1pbml0aWFsOyAtbW96LWJhY2tncm91bmQtaW5saW5lLXBvbGljeTogLW1vei1pbml0aWFsOyI+PGEgbmFtZT0iTGljZW5zZSI+PC9hPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEycHQ7IGNvbG9yOiB3aGl0ZTsiPkxpY2Vuc2U8bzpwPjwvbzpwPjwvc3Bhbj48L2gyPgorICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWFsaWduOiBqdXN0aWZ5OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPlJlZGlzdHJpYnV0aW9uCisgICAgYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCisgICAgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6PC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CisgICAgPHVsIHR5cGU9ImRpc2MiPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYWxpZ246IGp1c3RpZnk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICAgICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgIGRpc2NsYWltZXIuPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L2xpPgorICAgICA8bGkgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9InRleHQtYWxpZ246IGp1c3RpZnk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyBmb250LWZhbWlseTogJnF1b3Q7VmVyZGFuYSZxdW90OyxzYW5zLXNlcmlmOyI+UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZQorICAgICAgICAgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoCisgICAgICAgICB0aGUgZGlzdHJpYnV0aW9uLjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICAgPGxpIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWFsaWduOiBqdXN0aWZ5OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPk5laXRoZXIgdGhlIG5hbWUgb2YgU1RNaWNyb2VsZWN0cm9uaWNzIG5vciB0aGUKKyAgICAgICAgIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCisgICAgICAgICBkZXJpdmVkIDwvc3Bhbj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB0OyI+PG86cD48L286cD48L3NwYW4+PC9saT4KKyAgICA8L3VsPgorICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJ0ZXh0LWFsaWduOiBqdXN0aWZ5OyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsgZm9udC1mYW1pbHk6ICZxdW90O1ZlcmRhbmEmcXVvdDssc2Fucy1zZXJpZjsiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOworICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiPjxicj4KKyAgICA8YnI+CisgICAgPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5USElTCisgICAgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisgICAgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECisgICAgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAgICBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMKKyAgICBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgICAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAgICBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAgICBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICAgIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgICAgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAgICBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS48L3NwYW4+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiPiA8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CisgICAgPGRpdiBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyIgYWxpZ249ImNlbnRlciI+PHNwYW4gc3R5bGU9ImNvbG9yOiBibGFjazsiPgorICAgIDxociBhbGlnbj0iY2VudGVyIiBzaXplPSIxIiB3aWR0aD0iMTAwJSI+CisgICAgPC9zcGFuPjwvZGl2PgorICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiIHN0eWxlPSJtYXJnaW46IDQuNXB0IDBpbiA0LjVwdCAwLjI1aW47IHRleHQtYWxpZ246IGNlbnRlcjsiIGFsaWduPSJjZW50ZXIiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7IGNvbG9yOiBibGFjazsiPkZvcgorICAgIGNvbXBsZXRlIGRvY3VtZW50YXRpb24gb24gPC9zcGFuPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGZvbnQtZmFtaWx5OiAmcXVvdDtWZXJkYW5hJnF1b3Q7LHNhbnMtc2VyaWY7Ij5TVE0zMjxzcGFuIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij4gTWljcm9jb250cm9sbGVycworICAgIHZpc2l0IDwvc3Bhbj48dT48c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij48YSBocmVmPSJodHRwOi8vd3d3LnN0LmNvbS9pbnRlcm5ldC9tY3UvZmFtaWx5LzE0MS5qc3AiIHRhcmdldD0iX2JsYW5rIj53d3cuc3QuY29tL1NUTTMyPC9hPjwvc3Bhbj48L3U+PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogYmxhY2s7Ij48bzpwPjwvbzpwPjwvc3Bhbj48L3A+CisgICAgPC90ZD4KKyAgIDwvdHI+CisgICA8dHIgc3R5bGU9IiI+CisgICAgPHRkIHN0eWxlPSJwYWRkaW5nOiAwaW47IiB2YWxpZ249InRvcCI+PGJyPgogPC90ZD4KLTwvdHI+Ci08dHI+PHRkIHN0eWxlPSJwYWRkaW5nOiAwaW47IiB2YWxpZ249InRvcCI+PGJyPgotPC90ZD48L3RyPjwvdGJvZHk+Ci08L3RhYmxlPgotPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDsiPjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KLTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+CisgICA8L3RyPgorICA8L3Rib2R5PjwvdGFibGU+CisgIDwvdGQ+CisgPC90cj4KKzwvdGJvZHk+PC90YWJsZT4KKwogPC9kaXY+Ci08cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPiZuYnNwOzwvbzpwPjwvcD4KKworPHAgY2xhc3M9Ik1zb05vcm1hbCIgc3R5bGU9IiI+PHNwYW4gc3R5bGU9IiIgbGFuZz0iRlIiPjxvOnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4KKwogPC9kaXY+CisKKzwvZGl2PgorCis8L2Rpdj4KKwogPC9ib2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbC5jIGIvU3JjL3N0bTMyZjd4eF9oYWwuYwppbmRleCBjZTMwOGU0Li5lNjVlMzZmIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsLmMKQEAgLTUwLDExICs1MCwxMSBAQAogICAqIEB7CiAgICovCiAvKioKLSAqIEBicmllZiBTVE0zMkY3eHggSEFMIERyaXZlciB2ZXJzaW9uIG51bWJlciBWMS4yLjgKKyAqIEBicmllZiBTVE0zMkY3eHggSEFMIERyaXZlciB2ZXJzaW9uIG51bWJlciBWMS4yLjkKICAgICovCiAjZGVmaW5lIF9fU1RNMzJGN3h4X0hBTF9WRVJTSU9OX01BSU4gICAoMHgwMSkgLyohPCBbMzE6MjRdIG1haW4gdmVyc2lvbiAqLwogI2RlZmluZSBfX1NUTTMyRjd4eF9IQUxfVkVSU0lPTl9TVUIxICAgKDB4MDIpIC8qITwgWzIzOjE2XSBzdWIxIHZlcnNpb24gKi8KLSNkZWZpbmUgX19TVE0zMkY3eHhfSEFMX1ZFUlNJT05fU1VCMiAgICgweDA4KSAvKiE8IFsxNTo4XSAgc3ViMiB2ZXJzaW9uICovCisjZGVmaW5lIF9fU1RNMzJGN3h4X0hBTF9WRVJTSU9OX1NVQjIgICAoMHgwOSkgLyohPCBbMTU6OF0gIHN1YjIgdmVyc2lvbiAqLwogI2RlZmluZSBfX1NUTTMyRjd4eF9IQUxfVkVSU0lPTl9SQyAgICAgKDB4MDApIC8qITwgWzc6MF0gIHJlbGVhc2UgY2FuZGlkYXRlICovIAogI2RlZmluZSBfX1NUTTMyRjd4eF9IQUxfVkVSU0lPTiAgICAgICAgICgoX19TVE0zMkY3eHhfSEFMX1ZFUlNJT05fTUFJTiA8PCAyNClcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfChfX1NUTTMyRjd4eF9IQUxfVkVSU0lPTl9TVUIxIDw8IDE2KVwKZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2FkYy5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfYWRjLmMKaW5kZXggZjZiNjRlNy4uYzI0NGZjMiAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfYWRjLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfYWRjLmMKQEAgLTMsNyArMyw3IEBACiAgICogQGZpbGUgICAgc3RtMzJmN3h4X2hhbF9hZGMuYwogICAqIEBhdXRob3IgIE1DRCBBcHBsaWNhdGlvbiBUZWFtCiAgICogQGJyaWVmICAgVGhpcyBmaWxlIHByb3ZpZGVzIGZpcm13YXJlIGZ1bmN0aW9ucyB0byBtYW5hZ2UgdGhlIGZvbGxvd2luZyAKLSAgKiAgICAgICAgICBmdW5jdGlvbmFsaXRpZXMgb2YgdGhlIEFuYWxvZyB0byBEaWdpdGFsIENvbnZlcnRvciAoQURDKSBwZXJpcGhlcmFsOgorICAqICAgICAgICAgIGZ1bmN0aW9uYWxpdGllcyBvZiB0aGUgQW5hbG9nIHRvIERpZ2l0YWwgQ29udmVydGVyIChBREMpIHBlcmlwaGVyYWw6CiAgICogICAgICAgICAgICsgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucwogICAqICAgICAgICAgICArIElPIG9wZXJhdGlvbiBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBTdGF0ZSBhbmQgZXJyb3JzIGZ1bmN0aW9ucwpAQCAtODI1LDYgKzgyNSwxNCBAQAogICAgICAgfQogICAgIH0KICAgfQorICBlbHNlCisgIHsKKyAgICAvKiBVcGRhdGUgQURDIHN0YXRlIG1hY2hpbmUgdG8gZXJyb3IgKi8KKyAgICBTRVRfQklUKGhhZGMtPlN0YXRlLCBIQUxfQURDX1NUQVRFX0VSUk9SX0lOVEVSTkFMKTsKKyAgICAKKyAgICAvKiBTZXQgQURDIGVycm9yIGNvZGUgdG8gQURDIElQIGludGVybmFsIGVycm9yICovCisgICAgU0VUX0JJVChoYWRjLT5FcnJvckNvZGUsIEhBTF9BRENfRVJST1JfSU5URVJOQUwpOworICB9CiAgIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CkBAIC05MTYsMTMgKzkyNCwxNyBAQAogICAgIHsKICAgICAgIGlmKChUaW1lb3V0ID09IDApIHx8ICgoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCApID4gVGltZW91dCkpCiAgICAgICB7Ci0gICAgICAgIC8qIFVwZGF0ZSBBREMgc3RhdGUgbWFjaGluZSB0byB0aW1lb3V0ICovCi0gICAgICAgIFNFVF9CSVQoaGFkYy0+U3RhdGUsIEhBTF9BRENfU1RBVEVfVElNRU9VVCk7Ci0gICAgICAgIAotICAgICAgICAvKiBQcm9jZXNzIHVubG9ja2VkICovCi0gICAgICAgIF9fSEFMX1VOTE9DSyhoYWRjKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKKyAgICAgICAgLyogTmV3IGNoZWNrIHRvIGF2b2lkIGZhbHNlIHRpbWVvdXQgZGV0ZWN0aW9uIGluIGNhc2Ugb2YgcHJlZW1wdGlvbiAqLworICAgICAgICBpZighKF9fSEFMX0FEQ19HRVRfRkxBRyhoYWRjLCBBRENfRkxBR19FT0MpKSkKKyAgICAgICAgeworICAgICAgICAgIC8qIFVwZGF0ZSBBREMgc3RhdGUgbWFjaGluZSB0byB0aW1lb3V0ICovCisgICAgICAgICAgU0VUX0JJVChoYWRjLT5TdGF0ZSwgSEFMX0FEQ19TVEFURV9USU1FT1VUKTsKKyAgICAgICAgICAKKyAgICAgICAgICAvKiBQcm9jZXNzIHVubG9ja2VkICovCisgICAgICAgICAgX19IQUxfVU5MT0NLKGhhZGMpOworICAgICAgICAgIAorICAgICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKKyAgICAgICAgfQogICAgICAgfQogICAgIH0KICAgfQpAQCAtOTg3LDEzICs5OTksMTcgQEAKICAgICB7CiAgICAgICBpZigoVGltZW91dCA9PSAwKSB8fCAoKEhBTF9HZXRUaWNrKCkgLSB0aWNrc3RhcnQgKSA+IFRpbWVvdXQpKQogICAgICAgewotICAgICAgICAvKiBVcGRhdGUgQURDIHN0YXRlIG1hY2hpbmUgdG8gdGltZW91dCAqLwotICAgICAgICBTRVRfQklUKGhhZGMtPlN0YXRlLCBIQUxfQURDX1NUQVRFX1RJTUVPVVQpOwotICAgICAgICAKLSAgICAgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLwotICAgICAgICBfX0hBTF9VTkxPQ0soaGFkYyk7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CisgICAgICAgIC8qIE5ldyBjaGVjayB0byBhdm9pZCBmYWxzZSB0aW1lb3V0IGRldGVjdGlvbiBpbiBjYXNlIG9mIHByZWVtcHRpb24gKi8KKyAgICAgICAgaWYoIShfX0hBTF9BRENfR0VUX0ZMQUcoaGFkYyxFdmVudFR5cGUpKSkKKyAgICAgICAgeworICAgICAgICAgIC8qIFVwZGF0ZSBBREMgc3RhdGUgbWFjaGluZSB0byB0aW1lb3V0ICovCisgICAgICAgICAgU0VUX0JJVChoYWRjLT5TdGF0ZSwgSEFMX0FEQ19TVEFURV9USU1FT1VUKTsKKyAgICAgICAgICAKKyAgICAgICAgICAvKiBQcm9jZXNzIHVubG9ja2VkICovCisgICAgICAgICAgX19IQUxfVU5MT0NLKGhhZGMpOworICAgICAgICAgIAorICAgICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKKyAgICAgICAgfQogICAgICAgfQogICAgIH0KICAgfQpAQCAtMTEzMSw2ICsxMTQ3LDE0IEBACiAgICAgICB9IAogICAgIH0KICAgfQorICBlbHNlCisgIHsKKyAgICAvKiBVcGRhdGUgQURDIHN0YXRlIG1hY2hpbmUgdG8gZXJyb3IgKi8KKyAgICBTRVRfQklUKGhhZGMtPlN0YXRlLCBIQUxfQURDX1NUQVRFX0VSUk9SX0lOVEVSTkFMKTsKKyAgICAKKyAgICAvKiBTZXQgQURDIGVycm9yIGNvZGUgdG8gQURDIElQIGludGVybmFsIGVycm9yICovCisgICAgU0VUX0JJVChoYWRjLT5FcnJvckNvZGUsIEhBTF9BRENfRVJST1JfSU5URVJOQUwpOworICB9CiAgIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CkBAIC0xNDYzLDYgKzE0ODcsMTQgQEAKICAgICAgIH0KICAgICB9CiAgIH0KKyAgZWxzZQorICB7CisgICAgLyogVXBkYXRlIEFEQyBzdGF0ZSBtYWNoaW5lIHRvIGVycm9yICovCisgICAgU0VUX0JJVChoYWRjLT5TdGF0ZSwgSEFMX0FEQ19TVEFURV9FUlJPUl9JTlRFUk5BTCk7CisgICAgCisgICAgLyogU2V0IEFEQyBlcnJvciBjb2RlIHRvIEFEQyBJUCBpbnRlcm5hbCBlcnJvciAqLworICAgIFNFVF9CSVQoaGFkYy0+RXJyb3JDb2RlLCBIQUxfQURDX0VSUk9SX0lOVEVSTkFMKTsKKyAgfQogICAKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwogICByZXR1cm4gSEFMX09LOwpAQCAtMTQ5Niw3ICsxNTI4LDE3IEBACiAgICAgCiAgICAgLyogRGlzYWJsZSB0aGUgRE1BIGNoYW5uZWwgKGluIGNhc2Ugb2YgRE1BIGluIGNpcmN1bGFyIG1vZGUgb3Igc3RvcCB3aGlsZSAqLwogICAgIC8qIERNQSB0cmFuc2ZlciBpcyBvbiBnb2luZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICB0bXBfaGFsX3N0YXR1cyA9IEhBTF9ETUFfQWJvcnQoaGFkYy0+RE1BX0hhbmRsZSk7CisgICAgaWYgKGhhZGMtPkRNQV9IYW5kbGUtPlN0YXRlID09IEhBTF9ETUFfU1RBVEVfQlVTWSkKKyAgICB7CisgICAgICB0bXBfaGFsX3N0YXR1cyA9IEhBTF9ETUFfQWJvcnQoaGFkYy0+RE1BX0hhbmRsZSk7CisgICAgICAKKyAgICAgIC8qIENoZWNrIGlmIERNQSBjaGFubmVsIGVmZmVjdGl2ZWx5IGRpc2FibGVkICovCisgICAgICBpZiAodG1wX2hhbF9zdGF0dXMgIT0gSEFMX09LKQorICAgICAgeworICAgICAgICAvKiBVcGRhdGUgQURDIHN0YXRlIG1hY2hpbmUgdG8gZXJyb3IgKi8KKyAgICAgICAgU0VUX0JJVChoYWRjLT5TdGF0ZSwgSEFMX0FEQ19TVEFURV9FUlJPUl9ETUEpOworICAgICAgfQorICAgIH0KICAgICAKICAgICAvKiBEaXNhYmxlIEFEQyBvdmVycnVuIGludGVycnVwdCAqLwogICAgIF9fSEFMX0FEQ19ESVNBQkxFX0lUKGhhZGMsIEFEQ19JVF9PVlIpOwpAQCAtMTU3NCw3ICsxNjE2LDcgQEAKIC8qKgogICAqIEBicmllZiAgRXJyb3IgQURDIGNhbGxiYWNrLgogICAqIEBub3RlICAgSW4gY2FzZSBvZiBlcnJvciBkdWUgdG8gb3ZlcnJ1biB3aGVuIHVzaW5nIEFEQyB3aXRoIERNQSB0cmFuc2ZlciAKLSAgKiAgICAgICAgIChIQUwgQURDIGhhbmRsZSBwYXJhbWF0ZXIgIkVycm9yQ29kZSIgdG8gc3RhdGUgIkhBTF9BRENfRVJST1JfT1ZSIik6CisgICogICAgICAgICAoSEFMIEFEQyBoYW5kbGUgcGFyYW1ldGVyICJFcnJvckNvZGUiIHRvIHN0YXRlICJIQUxfQURDX0VSUk9SX09WUiIpOgogICAqICAgICAgICAgLSBSZWluaXRpYWxpemUgdGhlIERNQSB1c2luZyBmdW5jdGlvbiAiSEFMX0FEQ19TdG9wX0RNQSgpIi4KICAgKiAgICAgICAgIC0gSWYgbmVlZGVkLCByZXN0YXJ0IGEgbmV3IEFEQyBjb252ZXJzaW9uIHVzaW5nIGZ1bmN0aW9uCiAgICogICAgICAgICAgICJIQUxfQURDX1N0YXJ0X0RNQSgpIgpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfYWRjX2V4LmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9hZGNfZXguYwppbmRleCA0MGYwNTg3Li5lYzI2YjM1IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9hZGNfZXguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9hZGNfZXguYwpAQCAtMjIxLDYgKzIyMSwxNCBAQAogICAgICAgfQogICAgIH0KICAgfQorICBlbHNlCisgIHsKKyAgICAvKiBVcGRhdGUgQURDIHN0YXRlIG1hY2hpbmUgdG8gZXJyb3IgKi8KKyAgICBTRVRfQklUKGhhZGMtPlN0YXRlLCBIQUxfQURDX1NUQVRFX0VSUk9SX0lOVEVSTkFMKTsKKyAgICAKKyAgICAvKiBTZXQgQURDIGVycm9yIGNvZGUgdG8gQURDIElQIGludGVybmFsIGVycm9yICovCisgICAgU0VUX0JJVChoYWRjLT5FcnJvckNvZGUsIEhBTF9BRENfRVJST1JfSU5URVJOQUwpOworICB9CiAgIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CkBAIC0zMTMsNiArMzIxLDE0IEBACiAgICAgICB9CiAgICAgfQogICB9CisgIGVsc2UKKyAgeworICAgIC8qIFVwZGF0ZSBBREMgc3RhdGUgbWFjaGluZSB0byBlcnJvciAqLworICAgIFNFVF9CSVQoaGFkYy0+U3RhdGUsIEhBTF9BRENfU1RBVEVfRVJST1JfSU5URVJOQUwpOworICAgIAorICAgIC8qIFNldCBBREMgZXJyb3IgY29kZSB0byBBREMgSVAgaW50ZXJuYWwgZXJyb3IgKi8KKyAgICBTRVRfQklUKGhhZGMtPkVycm9yQ29kZSwgSEFMX0FEQ19FUlJPUl9JTlRFUk5BTCk7CisgIH0KICAgCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KICAgcmV0dXJuIEhBTF9PSzsKQEAgLTM5OSwxMCArNDE1LDE0IEBACiAgICAgewogICAgICAgaWYoKFRpbWVvdXQgPT0gMCl8fCgoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCApID4gVGltZW91dCkpCiAgICAgICB7Ci0gICAgICAgIGhhZGMtPlN0YXRlPSBIQUxfQURDX1NUQVRFX1RJTUVPVVQ7Ci0gICAgICAgIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KLSAgICAgICAgX19IQUxfVU5MT0NLKGhhZGMpOwotICAgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CisgICAgICAgIC8qIE5ldyBjaGVjayB0byBhdm9pZCBmYWxzZSB0aW1lb3V0IGRldGVjdGlvbiBpbiBjYXNlIG9mIHByZWVtcHRpb24gKi8KKyAgICAgICAgaWYoIShfX0hBTF9BRENfR0VUX0ZMQUcoaGFkYywgQURDX0ZMQUdfSkVPQykpKQorICAgICAgICB7CisgICAgICAgICAgaGFkYy0+U3RhdGU9IEhBTF9BRENfU1RBVEVfVElNRU9VVDsKKyAgICAgICAgICAvKiBQcm9jZXNzIHVubG9ja2VkICovCisgICAgICAgICAgX19IQUxfVU5MT0NLKGhhZGMpOworICAgICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKKyAgICAgICAgfQogICAgICAgfQogICAgIH0KICAgfQpAQCAtNjY2LDYgKzY4NiwxNCBAQAogICAgICAgaGFkYy0+SW5zdGFuY2UtPkNSMiB8PSAodWludDMyX3QpQURDX0NSMl9TV1NUQVJUOwogICAgIH0KICAgfQorICBlbHNlCisgIHsKKyAgICAvKiBVcGRhdGUgQURDIHN0YXRlIG1hY2hpbmUgdG8gZXJyb3IgKi8KKyAgICBTRVRfQklUKGhhZGMtPlN0YXRlLCBIQUxfQURDX1NUQVRFX0VSUk9SX0lOVEVSTkFMKTsKKyAgICAKKyAgICAvKiBTZXQgQURDIGVycm9yIGNvZGUgdG8gQURDIElQIGludGVybmFsIGVycm9yICovCisgICAgU0VUX0JJVChoYWRjLT5FcnJvckNvZGUsIEhBTF9BRENfRVJST1JfSU5URVJOQUwpOworICB9CiAgIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9jYW4uYyBiL1NyYy9zdG0zMmY3eHhfaGFsX2Nhbi5jCmluZGV4IDk1NGY1Y2UuLjk2YzZkODAgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX2Nhbi5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX2Nhbi5jCkBAIC0xMjAsNyArMTIwLDcgQEAKICAgICAgICAgICBzdWJtaXR0ZWQgKHRoZSBzbGVlcCBtb2RlIGlzIG5vdCB5ZXQgZW50ZXJlZCksIGFuZCBiZWNvbWUKICAgICAgICAgICBIQUxfQ0FOX1NUQVRFX1NMRUVQX0FDVElWRSB3aGVuIHRoZSBzbGVlcCBtb2RlIGlzIGVmZmVjdGl2ZS4KIAotICAgICAgKCMpIFRoZSB3YWtlLXVwIGZyb20gc2xlZXAgbW9kZSBjYW4gYmUgdHJpZ2dlZCBieSB0d28gd2F5czoKKyAgICAgICgjKSBUaGUgd2FrZS11cCBmcm9tIHNsZWVwIG1vZGUgY2FuIGJlIHRyaWdnZXJlZCBieSB0d28gd2F5czoKICAgICAgICAgICAgICgrKykgVXNpbmcgSEFMX0NBTl9XYWtlVXAoKS4gV2hlbiByZXR1cm5pbmcgZnJvbSB0aGlzIGZ1bmN0aW9uLAogICAgICAgICAgICAgICAgICB0aGUgc2xlZXAgbW9kZSBpcyBleGl0ZWQgKGlmIHJldHVybiBzdGF0dXMgaXMgSEFMX09LKS4KICAgICAgICAgICAgICgrKykgV2hlbiBhIHN0YXJ0IG9mIFJ4IENBTiBmcmFtZSBpcyBkZXRlY3RlZCBieSB0aGUgQ0FOIHBlcmlwaGVyYWwsCkBAIC0xOTAxLDcgKzE5MDEsNyBAQAogICAgIC8qIENoZWNrIGlmIG1lc3NhZ2UgaXMgc3RpbGwgcGVuZGluZyAqLwogICAgIGlmICgoaGNhbi0+SW5zdGFuY2UtPlJGMFIgJiBDQU5fUkYwUl9GTVAwKSAhPSAwVSkKICAgICB7Ci0gICAgICAvKiBSZWNlaXZlIEZJRk8gMCBtZXNhZ2UgcGVuZGluZyBDYWxsYmFjayAqLworICAgICAgLyogUmVjZWl2ZSBGSUZPIDAgbWVzc2FnZSBwZW5kaW5nIENhbGxiYWNrICovCiAjaWYgVVNFX0hBTF9DQU5fUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEKICAgICAgIC8qIENhbGwgcmVnaXN0ZXJlZCBjYWxsYmFjayovCiAgICAgICBoY2FuLT5SeEZpZm8wTXNnUGVuZGluZ0NhbGxiYWNrKGhjYW4pOwpAQCAtMTk1MCw3ICsxOTUwLDcgQEAKICAgICAvKiBDaGVjayBpZiBtZXNzYWdlIGlzIHN0aWxsIHBlbmRpbmcgKi8KICAgICBpZiAoKGhjYW4tPkluc3RhbmNlLT5SRjFSICYgQ0FOX1JGMVJfRk1QMSkgIT0gMFUpCiAgICAgewotICAgICAgLyogUmVjZWl2ZSBGSUZPIDEgbWVzYWdlIHBlbmRpbmcgQ2FsbGJhY2sgKi8KKyAgICAgIC8qIFJlY2VpdmUgRklGTyAxIG1lc3NhZ2UgcGVuZGluZyBDYWxsYmFjayAqLwogI2lmIFVTRV9IQUxfQ0FOX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxCiAgICAgICAvKiBDYWxsIHJlZ2lzdGVyZWQgY2FsbGJhY2sqLwogICAgICAgaGNhbi0+UnhGaWZvMU1zZ1BlbmRpbmdDYWxsYmFjayhoY2FuKTsKZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2NlYy5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfY2VjLmMKaW5kZXggM2YzODAyZS4uNWUyODc3YiAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfY2VjLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfY2VjLmMKQEAgLTgyMiwxOSArODIyLDE1IEBACiAgIC8qIENFQyBUWCBieXRlIHJlcXVlc3QgaW50ZXJydXB0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgIGlmICgocmVnICYgQ0VDX0ZMQUdfVFhCUikgIT0gMFUpCiAgIHsKKyAgICAtLWhjZWMtPlR4WGZlckNvdW50OwogICAgIGlmIChoY2VjLT5UeFhmZXJDb3VudCA9PSAwVSkKICAgICB7CiAgICAgICAvKiBpZiB0aGlzIGlzIHRoZSBsYXN0IGJ5dGUgdHJhbnNtaXNzaW9uLCBzZXQgVFggRW5kIG9mIE1lc3NhZ2UgKFRYRU9NKSBiaXQgKi8KICAgICAgIF9fSEFMX0NFQ19MQVNUX0JZVEVfVFhfU0VUKGhjZWMpOwotICAgICAgaGNlYy0+SW5zdGFuY2UtPlRYRFIgPSAqaGNlYy0+cFR4QnVmZlB0cjsKLSAgICAgIGhjZWMtPnBUeEJ1ZmZQdHIrKzsKICAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGhjZWMtPkluc3RhbmNlLT5UWERSID0gKmhjZWMtPnBUeEJ1ZmZQdHI7Ci0gICAgICBoY2VjLT5wVHhCdWZmUHRyKys7Ci0gICAgICBoY2VjLT5UeFhmZXJDb3VudC0tOwotICAgIH0KKyAgICAvKiBJbiBhbGwgY2FzZXMgdHJhbnNtaXQgdGhlIGJ5dGUgKi8KKyAgICBoY2VjLT5JbnN0YW5jZS0+VFhEUiA9ICpoY2VjLT5wVHhCdWZmUHRyOworICAgIGhjZWMtPnBUeEJ1ZmZQdHIrKzsKICAgICAvKiBjbGVhciBUeC1CeXRlIHJlcXVlc3QgZmxhZyAqLwogICAgIF9fSEFMX0NFQ19DTEVBUl9GTEFHKGhjZWMsIENFQ19GTEFHX1RYQlIpOwogICB9CmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9jcmNfZXguYyBiL1NyYy9zdG0zMmY3eHhfaGFsX2NyY19leC5jCmluZGV4IDAwNGNiM2EuLmQ1NDJkYTEgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX2NyY19leC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX2NyY19leC5jCkBAIC0xMSw3ICsxMSw3IEBACiAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIFsuLl0KLSAgICAgICAgICgrKSBTZXQgdXNlci1kZWZpbmVkIGdlbmVyYXRpbmcgcG9seW5vbWlhbCB0aHJ1IEhBTF9DUkNFeF9Qb2x5bm9taWFsX1NldCgpCisgICAgICAgICAoKykgU2V0IHVzZXItZGVmaW5lZCBnZW5lcmF0aW5nIHBvbHlub21pYWwgdGhyb3VnaCBIQUxfQ1JDRXhfUG9seW5vbWlhbF9TZXQoKQogICAgICAgICAgKCspIENvbmZpZ3VyZSBJbnB1dCBvciBPdXRwdXQgZGF0YSBpbnZlcnNpb24KIAogICBAZW5kdmVyYmF0aW0KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2NyeXAuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX2NyeXAuYwppbmRleCBhZGMzNWJkLi42Yjk0MjQ0IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9jcnlwLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfY3J5cC5jCkBAIC01ODYsNiArNTg2LDggQEAKICAgICBoY3J5cC0+SW5pdC5IZWFkZXJTaXplID0gcENvbmYtPkhlYWRlclNpemU7CiAgICAgaGNyeXAtPkluaXQuQjAgICAgICAgICA9IHBDb25mLT5CMDsKICAgICBoY3J5cC0+SW5pdC5EYXRhV2lkdGhVbml0ID0gcENvbmYtPkRhdGFXaWR0aFVuaXQ7CisgICAgaGNyeXAtPkluaXQuS2V5SVZDb25maWdTa2lwID0gcENvbmYtPktleUlWQ29uZmlnU2tpcDsKKyAgICBoY3J5cC0+SW5pdC5IZWFkZXJXaWR0aFVuaXQgPSBwQ29uZi0+SGVhZGVyV2lkdGhVbml0OwogCiAgICAgLyogU2V0IHRoZSBrZXkgc2l6ZShUaGlzIGJpdCBmaWVsZCBpcyBkb26SdCBjYXJlIGluIHRoZSBERVMgb3IgVERFUyBtb2RlcykgZGF0YSB0eXBlLCBBbGdvTW9kZSBhbmQgb3BlcmF0aW5nIG1vZGUqLwogI2lmIGRlZmluZWQgKENSWVApCkBAIC02NjAsNyArNjYyLDkgQEAKICAgICBwQ29uZi0+SGVhZGVyICAgICAgICAgID0gaGNyeXAtPkluaXQuSGVhZGVyIDsKICAgICBwQ29uZi0+SGVhZGVyU2l6ZSAgICAgID0gaGNyeXAtPkluaXQuSGVhZGVyU2l6ZTsKICAgICBwQ29uZi0+QjAgICAgICAgICAgICAgID0gaGNyeXAtPkluaXQuQjA7Ci0gICAgcENvbmYtPkRhdGFXaWR0aFVuaXQgICAgPSBoY3J5cC0+SW5pdC5EYXRhV2lkdGhVbml0OworICAgIHBDb25mLT5EYXRhV2lkdGhVbml0ICAgPSBoY3J5cC0+SW5pdC5EYXRhV2lkdGhVbml0OworICAgIHBDb25mLT5LZXlJVkNvbmZpZ1NraXAgPSBoY3J5cC0+SW5pdC5LZXlJVkNvbmZpZ1NraXA7CisgICAgcENvbmYtPkhlYWRlcldpZHRoVW5pdCA9IGhjcnlwLT5Jbml0LkhlYWRlcldpZHRoVW5pdDsKIAogICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KICAgICBfX0hBTF9VTkxPQ0soaGNyeXApOwpAQCAtNjkyLDggKzY5Niw4IEBACiAgIC8qIFByZXZlbnQgdW51c2VkIGFyZ3VtZW50KHMpIGNvbXBpbGF0aW9uIHdhcm5pbmcgKi8KICAgVU5VU0VEKGhjcnlwKTsKIAotICAvKiBOT1RFIDogVGhpcyBmdW5jdGlvbiBTaG91bGQgbm90IGJlIG1vZGlmaWVkLCB3aGVuIHRoZSBjYWxsYmFjayBpcyBuZWVkZWQsCi0gICAgICAgICAgICB0aGUgSEFMX0NSWVBfTXNwSW5pdCBjb3VsZCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgdXNlciBmaWxlCisgIC8qIE5PVEUgOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgbW9kaWZpZWQsIHdoZW4gdGhlIGNhbGxiYWNrIGlzIG5lZWRlZCwKKyAgICAgICAgICAgIHRoZSBIQUxfQ1JZUF9Nc3BJbml0IGNhbiBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgdXNlciBmaWxlCiAgICAqLwogfQogCkBAIC03MDgsOCArNzEyLDggQEAKICAgLyogUHJldmVudCB1bnVzZWQgYXJndW1lbnQocykgY29tcGlsYXRpb24gd2FybmluZyAqLwogICBVTlVTRUQoaGNyeXApOwogCi0gIC8qIE5PVEUgOiBUaGlzIGZ1bmN0aW9uIFNob3VsZCBub3QgYmUgbW9kaWZpZWQsIHdoZW4gdGhlIGNhbGxiYWNrIGlzIG5lZWRlZCwKLSAgICAgICAgICAgIHRoZSBIQUxfQ1JZUF9Nc3BEZUluaXQgY291bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIHVzZXIgZmlsZQorICAvKiBOT1RFIDogVGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGJlIG1vZGlmaWVkLCB3aGVuIHRoZSBjYWxsYmFjayBpcyBuZWVkZWQsCisgICAgICAgICAgICB0aGUgSEFMX0NSWVBfTXNwRGVJbml0IGNhbiBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgdXNlciBmaWxlCiAgICAqLwogfQogCkBAIC0yMTU3LDggKzIxNjEsOCBAQAogICAvKiBQcmV2ZW50IHVudXNlZCBhcmd1bWVudChzKSBjb21waWxhdGlvbiB3YXJuaW5nICovCiAgIFVOVVNFRChoY3J5cCk7CiAKLSAgLyogTk9URSA6IFRoaXMgZnVuY3Rpb24gU2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAotICAgICAgICAgICAgdGhlIEhBTF9DUllQX0luQ3BsdENhbGxiYWNrIGNvdWxkIGJlIGltcGxlbWVudGVkIGluIHRoZSB1c2VyIGZpbGUKKyAgLyogTk9URSA6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAorICAgICAgICAgICAgdGhlIEhBTF9DUllQX0luQ3BsdENhbGxiYWNrIGNhbiBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgdXNlciBmaWxlCiAgICAqLwogfQogCkBAIC0yMTczLDggKzIxNzcsOCBAQAogICAvKiBQcmV2ZW50IHVudXNlZCBhcmd1bWVudChzKSBjb21waWxhdGlvbiB3YXJuaW5nICovCiAgIFVOVVNFRChoY3J5cCk7CiAKLSAgLyogTk9URSA6IFRoaXMgZnVuY3Rpb24gU2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAotICAgICAgICAgICAgdGhlIEhBTF9DUllQX091dENwbHRDYWxsYmFjayBjb3VsZCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgdXNlciBmaWxlCisgIC8qIE5PVEUgOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgbW9kaWZpZWQsIHdoZW4gdGhlIGNhbGxiYWNrIGlzIG5lZWRlZCwKKyAgICAgICAgICAgIHRoZSBIQUxfQ1JZUF9PdXRDcGx0Q2FsbGJhY2sgY2FuIGJlIGltcGxlbWVudGVkIGluIHRoZSB1c2VyIGZpbGUKICAgICovCiB9CiAKQEAgLTU1MzQsMTcgKzU1MzgsMTcgQEAKICAgICBoY3J5cC0+Q3J5cEluQ291bnQrKzsKICAgICBoY3J5cC0+SW5zdGFuY2UtPkRJTlIgID0gKih1aW50MzJfdCAqKShoY3J5cC0+cENyeXBJbkJ1ZmZQdHIgKyBoY3J5cC0+Q3J5cEluQ291bnQpOwogICAgIGhjcnlwLT5DcnlwSW5Db3VudCsrOwotICAgIGlmICgoaGNyeXAtPkNyeXBJbkNvdW50ID09ICBoY3J5cC0+U2l6ZSkgJiYgKGhjcnlwLT5Jbml0LkFsZ29yaXRobSA9PSBDUllQX0FFU19HQ01fR01BQykpCi0gICAgewotICAgICAgLyogQ2FsbCBJbnB1dCB0cmFuc2ZlciBjb21wbGV0ZSBjYWxsYmFjayAqLworICAgIGlmICgoaGNyeXAtPkNyeXBJbkNvdW50ID09IChoY3J5cC0+U2l6ZSAvIDRVKSkgJiYgKChoY3J5cC0+U2l6ZSAlIDE2VSkgPT0gMFUpKQorICAgICAgeworICAgICAgICAvKiBDYWxsIElucHV0IHRyYW5zZmVyIGNvbXBsZXRlIGNhbGxiYWNrICovCiAjaWYgKFVTRV9IQUxfQ1JZUF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSAgICAgIC8qQ2FsbCByZWdpc3RlcmVkIElucHV0IGNvbXBsZXRlIGNhbGxiYWNrKi8KLSAgICAgIGhjcnlwLT5JbkNwbHRDYWxsYmFjayhoY3J5cCk7CisgICAgICAgIC8qQ2FsbCByZWdpc3RlcmVkIElucHV0IGNvbXBsZXRlIGNhbGxiYWNrKi8KKyAgICAgICAgaGNyeXAtPkluQ3BsdENhbGxiYWNrKGhjcnlwKTsKICNlbHNlCi0gICAgICAvKkNhbGwgbGVnYWN5IHdlYWsgSW5wdXQgY29tcGxldGUgY2FsbGJhY2sqLwotICAgICAgSEFMX0NSWVBfSW5DcGx0Q2FsbGJhY2soaGNyeXApOworICAgICAgICAvKkNhbGwgbGVnYWN5IHdlYWsgSW5wdXQgY29tcGxldGUgY2FsbGJhY2sqLworICAgICAgICBIQUxfQ1JZUF9JbkNwbHRDYWxsYmFjayhoY3J5cCk7CiAjZW5kaWYgLyogVVNFX0hBTF9DUllQX1JFR0lTVEVSX0NBTExCQUNLUyAqLwotICAgIH0KKyAgICAgIH0KICAgfQogICBlbHNlIC8qIExhc3QgYmxvY2sgb2YgcGF5bG9hZCA8IDEyOGJpdCovCiAgIHsKQEAgLTU1OTMsMTAgKzU1OTcsMjQgQEAKIHN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBDUllQX0dDTUNDTV9TZXRIZWFkZXJQaGFzZShDUllQX0hhbmRsZVR5cGVEZWYgKmhjcnlwLCB1aW50MzJfdCBUaW1lb3V0KQogewogICB1aW50MzJfdCBsb29wY291bnRlcjsKKyAgdWludDMyX3Qgc2l6ZV9pbl9ieXRlczsKKyAgdWludDMyX3QgdG1wOworICB1aW50MzJfdCBtYXNrWzEyXSA9IHsweDBVLCAweEZGMDAwMDAwVSwgMHhGRkZGMDAwMFUsIDB4RkZGRkZGMDBVLCAgLyogMzItYml0IGRhdGEgdHlwZSAqLworICAgICAgICAgICAgICAgICAgICAgICAweDBVLCAweDAwMDBGRjAwVSwgMHgwMDAwRkZGRlUsIDB4RkYwMEZGRkZVLCAgLyogMTYtYml0IGRhdGEgdHlwZSAqLworICAgICAgICAgICAgICAgICAgICAgICAweDBVLCAweDAwMDAwMEZGVSwgMHgwMDAwRkZGRlUsIDB4MDBGRkZGRkZVfTsgLyogIDgtYml0IGRhdGEgdHlwZSAqLwogCiAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBIZWFkZXIgcGhhc2UgZm9yIEdDTS9HTUFDIG9yIENDTSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLSAgaWYgKChoY3J5cC0+SW5pdC5IZWFkZXJTaXplICE9IDBVKSkKKyAgaWYgKGhjcnlwLT5Jbml0LkhlYWRlcldpZHRoVW5pdCA9PSBDUllQX0hFQURFUldJRFRIVU5JVF9XT1JEKQorICB7CisgICAgc2l6ZV9pbl9ieXRlcyA9IGhjcnlwLT5Jbml0LkhlYWRlclNpemUgKiA0VTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBzaXplX2luX2J5dGVzID0gaGNyeXAtPkluaXQuSGVhZGVyU2l6ZTsKKyAgfQorCisgIGlmIChzaXplX2luX2J5dGVzICE9IDBVKQogICB7CiAKICNpZiBkZWZpbmVkKENSWVApCkBAIC01NjA3LDEwICs1NjI1LDEwIEBACiAgICAgLyogRW5hYmxlIHRoZSBDUllQIHBlcmlwaGVyYWwgKi8KICAgICBfX0hBTF9DUllQX0VOQUJMRShoY3J5cCk7CiAKLSAgICBpZiAoKGhjcnlwLT5Jbml0LkhlYWRlclNpemUgJSA0VSkgPT0gMFUpCisgICAgaWYgKChzaXplX2luX2J5dGVzICUgMTZVKSA9PSAwVSkKICAgICB7CiAgICAgICAvKiBIZWFkZXJTaXplICU0LCBubyBwYWRkaW5nICovCi0gICAgICBmb3IgKGxvb3Bjb3VudGVyID0gMFU7IChsb29wY291bnRlciA8IGhjcnlwLT5Jbml0LkhlYWRlclNpemUpOyBsb29wY291bnRlciArPSA0VSkKKyAgICAgIGZvciAobG9vcGNvdW50ZXIgPSAwVTsgKGxvb3Bjb3VudGVyIDwgKHNpemVfaW5fYnl0ZXMgLyA0VSkpOyBsb29wY291bnRlciArPSA0VSkKICAgICAgIHsKICAgICAgICAgaGNyeXAtPkluc3RhbmNlLT5ESU4gPSAqKHVpbnQzMl90ICopKGhjcnlwLT5Jbml0LkhlYWRlciArIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQpOwogICAgICAgICBoY3J5cC0+Q3J5cEhlYWRlckNvdW50KysgOwpAQCAtNTY0MCw3ICs1NjU4LDcgQEAKICAgICBlbHNlCiAgICAgewogICAgICAgLypXcml0ZSBoZWFkZXIgYmxvY2sgaW4gdGhlIElOIEZJRk8gd2l0aG91dCBsYXN0IGJsb2NrICovCi0gICAgICBmb3IgKGxvb3Bjb3VudGVyID0gMFU7IChsb29wY291bnRlciA8ICgoaGNyeXAtPkluaXQuSGVhZGVyU2l6ZSkgLSAoaGNyeXAtPkluaXQuSGVhZGVyU2l6ZSAlIDRVKSkpOyBsb29wY291bnRlciArPSA0VSkKKyAgICAgIGZvciAobG9vcGNvdW50ZXIgPSAwVTsgKGxvb3Bjb3VudGVyIDwgKChzaXplX2luX2J5dGVzIC8gMTZVKSAqIDRVKSk7IGxvb3Bjb3VudGVyICs9IDRVKQogICAgICAgewogICAgICAgICBoY3J5cC0+SW5zdGFuY2UtPkRJTiA9ICoodWludDMyX3QgKikoaGNyeXAtPkluaXQuSGVhZGVyICsgaGNyeXAtPkNyeXBIZWFkZXJDb3VudCk7CiAgICAgICAgIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQrKyA7CkBAIC01NjY3LDE2ICs1Njg1LDM0IEBACiAgICAgICAgIH0KICAgICAgIH0KICAgICAgIC8qICBMYXN0IGJsb2NrIG9wdGlvbmFsbHkgcGFkIHRoZSBkYXRhIHdpdGggemVyb3MqLwotICAgICAgZm9yIChsb29wY291bnRlciA9IDBVOyAobG9vcGNvdW50ZXIgPCAoaGNyeXAtPkluaXQuSGVhZGVyU2l6ZSAlIDRVKSk7IGxvb3Bjb3VudGVyKyspCisgICAgICBmb3IgKGxvb3Bjb3VudGVyID0gMFU7IChsb29wY291bnRlciA8ICgoc2l6ZV9pbl9ieXRlcyAvIDRVKSAlIDRVKSk7IGxvb3Bjb3VudGVyKyspCiAgICAgICB7CiAgICAgICAgIGhjcnlwLT5JbnN0YW5jZS0+RElOID0gKih1aW50MzJfdCAqKShoY3J5cC0+SW5pdC5IZWFkZXIgKyBoY3J5cC0+Q3J5cEhlYWRlckNvdW50KTsKICAgICAgICAgaGNyeXAtPkNyeXBIZWFkZXJDb3VudCsrIDsKICAgICAgIH0KLSAgICAgIHdoaWxlIChsb29wY291bnRlciA8IDRVKQorICAgICAgLyogSWYgdGhlIGhlYWRlciBzaXplIGlzIGEgbXVsdGlwbGUgb2Ygd29yZHMgKi8KKyAgICAgIGlmICgoc2l6ZV9pbl9ieXRlcyAlIDRVKSA9PSAwVSkKICAgICAgIHsKLSAgICAgICAgLyogcGFkIHRoZSBkYXRhIHdpdGggemVyb3MgdG8gaGF2ZSBhIGNvbXBsZXRlIGJsb2NrICovCi0gICAgICAgIGhjcnlwLT5JbnN0YW5jZS0+RElOID0gMHgwVTsKKyAgICAgICAgLyogUGFkIHRoZSBkYXRhIHdpdGggemVyb3MgdG8gaGF2ZSBhIGNvbXBsZXRlIGJsb2NrICovCisgICAgICAgIHdoaWxlIChsb29wY291bnRlciA8IDRVKQorICAgICAgICB7CisgICAgICAgICAgaGNyeXAtPkluc3RhbmNlLT5ESU4gPSAweDBVOworICAgICAgICAgIGxvb3Bjb3VudGVyKys7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgLyogRW50ZXIgbGFzdCBieXRlcywgcGFkZGVkIHdpdGggemVyb2VzICovCisgICAgICAgIHRtcCA9ICAqKHVpbnQzMl90ICopKGhjcnlwLT5Jbml0LkhlYWRlciArIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQpOworICAgICAgICB0bXAgJj0gbWFza1soaGNyeXAtPkluaXQuRGF0YVR5cGUgKiAyVSkgKyAoc2l6ZV9pbl9ieXRlcyAlIDRVKV07CisgICAgICAgIGhjcnlwLT5JbnN0YW5jZS0+RElOID0gdG1wOwogICAgICAgICBsb29wY291bnRlcisrOworICAgICAgICAvKiBQYWQgdGhlIGRhdGEgd2l0aCB6ZXJvcyB0byBoYXZlIGEgY29tcGxldGUgYmxvY2sgKi8KKyAgICAgICAgd2hpbGUgKGxvb3Bjb3VudGVyIDwgNFUpCisgICAgICAgIHsKKyAgICAgICAgICBoY3J5cC0+SW5zdGFuY2UtPkRJTiA9IDB4MFU7CisgICAgICAgICAgbG9vcGNvdW50ZXIrKzsKKyAgICAgICAgfQogICAgICAgfQogICAgICAgLyogV2FpdCBmb3IgQ0NGIElGRU0gdG8gYmUgcmFpc2VkICovCiAgICAgICBpZiAoQ1JZUF9XYWl0T25JRkVNRmxhZyhoY3J5cCwgVGltZW91dCkgIT0gSEFMX09LKQpAQCAtNTcyMiwxMCArNTc1OCwxMSBAQAogICAgICAgX19IQUxfQ1JZUF9FTkFCTEUoaGNyeXApOwogCiAgICAgfQotICAgIGlmICgoaGNyeXAtPkluaXQuSGVhZGVyU2l6ZSAlIDRVKSA9PSAwVSkKKyAgICAvKiBJZiBzaXplX2luX2J5dGVzIGlzIGEgbXVsdGlwbGUgb2YgYmxvY2tzIChhIG11bHRpcGxlIG9mIGZvdXIgMzItYml0cyB3b3JkcyApICovCisgICAgaWYgKChzaXplX2luX2J5dGVzICUgMTZVKSA9PSAwVSkKICAgICB7Ci0gICAgICAvKiBIZWFkZXJTaXplICU0LCBubyBwYWRkaW5nICovCi0gICAgICBmb3IgKGxvb3Bjb3VudGVyID0gMFU7IChsb29wY291bnRlciA8IGhjcnlwLT5Jbml0LkhlYWRlclNpemUpOyBsb29wY291bnRlciArPSA0VSkKKyAgICAgIC8qIE5vIHBhZGRpbmcgKi8KKyAgICAgIGZvciAobG9vcGNvdW50ZXIgPSAwVTsgKGxvb3Bjb3VudGVyIDwgKHNpemVfaW5fYnl0ZXMgLyA0VSkpOyBsb29wY291bnRlciArPSA0VSkKICAgICAgIHsKICAgICAgICAgLyogV3JpdGUgdGhlIGlucHV0IGJsb2NrIGluIHRoZSBkYXRhIGlucHV0IHJlZ2lzdGVyICovCiAgICAgICAgIGhjcnlwLT5JbnN0YW5jZS0+RElOUiA9ICoodWludDMyX3QgKikoaGNyeXAtPkluaXQuSGVhZGVyICsgaGNyeXAtPkNyeXBIZWFkZXJDb3VudCk7CkBAIC01NzU3LDcgKzU3OTQsNyBAQAogICAgIGVsc2UKICAgICB7CiAgICAgICAvKldyaXRlIGhlYWRlciBibG9jayBpbiB0aGUgSU4gRklGTyB3aXRob3V0IGxhc3QgYmxvY2sgKi8KLSAgICAgIGZvciAobG9vcGNvdW50ZXIgPSAwVTsgKGxvb3Bjb3VudGVyIDwgKChoY3J5cC0+SW5pdC5IZWFkZXJTaXplKSAtIChoY3J5cC0+SW5pdC5IZWFkZXJTaXplICUgNFUpKSk7IGxvb3Bjb3VudGVyICs9IDRVKQorICAgICAgZm9yIChsb29wY291bnRlciA9IDBVOyAobG9vcGNvdW50ZXIgPCAoKHNpemVfaW5fYnl0ZXMgLyAxNlUpICogNFUpKTsgbG9vcGNvdW50ZXIgKz0gNFUpCiAgICAgICB7CiAgICAgICAgIC8qIFdyaXRlIHRoZSBpbnB1dCBibG9jayBpbiB0aGUgZGF0YSBpbnB1dCByZWdpc3RlciAqLwogICAgICAgICBoY3J5cC0+SW5zdGFuY2UtPkRJTlIgPSAqKHVpbnQzMl90ICopKGhjcnlwLT5Jbml0LkhlYWRlciArIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQpOwpAQCAtNTc4NSwxNyArNTgyMiwzNSBAQAogICAgICAgICAvKiBDbGVhciBDQ0YgZmxhZyAqLwogICAgICAgICBfX0hBTF9DUllQX0NMRUFSX0ZMQUcoaGNyeXAsIENSWVBfQ0NGX0NMRUFSKTsKICAgICAgIH0KLSAgICAgIC8qICBMYXN0IGJsb2NrIG9wdGlvbmFsbHkgcGFkIHRoZSBkYXRhIHdpdGggemVyb3MqLwotICAgICAgZm9yIChsb29wY291bnRlciA9IDBVOyAobG9vcGNvdW50ZXIgPCAoaGNyeXAtPkluaXQuSGVhZGVyU2l6ZSAlIDRVKSk7IGxvb3Bjb3VudGVyKyspCisgICAgICAvKiBXcml0ZSBsYXN0IGNvbXBsZXRlIHdvcmRzICovCisgICAgICBmb3IgKGxvb3Bjb3VudGVyID0gMFU7IChsb29wY291bnRlciA8ICgoc2l6ZV9pbl9ieXRlcyAvIDRVKSAlIDRVKSk7IGxvb3Bjb3VudGVyKyspCiAgICAgICB7CiAgICAgICAgIGhjcnlwLT5JbnN0YW5jZS0+RElOUiA9ICoodWludDMyX3QgKikoaGNyeXAtPkluaXQuSGVhZGVyICsgaGNyeXAtPkNyeXBIZWFkZXJDb3VudCk7CiAgICAgICAgIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQrKyA7CiAgICAgICB9Ci0gICAgICB3aGlsZSAobG9vcGNvdW50ZXIgPCA0VSkKKyAgICAgIC8qIElmIHRoZSBoZWFkZXIgc2l6ZSBpcyBhIG11bHRpcGxlIG9mIHdvcmRzICovCisgICAgICBpZiAoKHNpemVfaW5fYnl0ZXMgJSA0VSkgPT0gMFUpCiAgICAgICB7Ci0gICAgICAgIC8qUGFkIHRoZSBkYXRhIHdpdGggemVyb3MgdG8gaGF2ZSBhIGNvbXBsZXRlIGJsb2NrICovCi0gICAgICAgIGhjcnlwLT5JbnN0YW5jZS0+RElOUiA9IDB4MFU7CisgICAgICAgIC8qIFBhZCB0aGUgZGF0YSB3aXRoIHplcm9zIHRvIGhhdmUgYSBjb21wbGV0ZSBibG9jayAqLworICAgICAgICB3aGlsZSAobG9vcGNvdW50ZXIgPCA0VSkKKyAgICAgICAgeworICAgICAgICAgIGhjcnlwLT5JbnN0YW5jZS0+RElOUiA9IDB4MFU7CisgICAgICAgICAgbG9vcGNvdW50ZXIrKzsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICAvKiBFbnRlciBsYXN0IGJ5dGVzLCBwYWRkZWQgd2l0aCB6ZXJvZXMgKi8KKyAgICAgICAgdG1wID0gICoodWludDMyX3QgKikoaGNyeXAtPkluaXQuSGVhZGVyICsgaGNyeXAtPkNyeXBIZWFkZXJDb3VudCk7CisgICAgICAgIHRtcCAmPSBtYXNrWyhoY3J5cC0+SW5pdC5EYXRhVHlwZSAqIDJVKSArIChzaXplX2luX2J5dGVzICUgNFUpXTsKKyAgICAgICAgaGNyeXAtPkluc3RhbmNlLT5ESU5SID0gdG1wOwogICAgICAgICBsb29wY291bnRlcisrOworICAgICAgICAvKiBQYWQgdGhlIGRhdGEgd2l0aCB6ZXJvcyB0byBoYXZlIGEgY29tcGxldGUgYmxvY2sgKi8KKyAgICAgICAgd2hpbGUgKGxvb3Bjb3VudGVyIDwgNFUpCisgICAgICAgIHsKKyAgICAgICAgICBoY3J5cC0+SW5zdGFuY2UtPkRJTlIgPSAweDBVOworICAgICAgICAgIGxvb3Bjb3VudGVyKys7CisgICAgICAgIH0KICAgICAgIH0KIAogICAgICAgaWYgKENSWVBfV2FpdE9uQ0NGbGFnKGhjcnlwLCBUaW1lb3V0KSAhPSBIQUxfT0spCkBAIC01ODQ2LDkgKzU5MDEsMjMgQEAKIHsKICAgX19JTyB1aW50MzJfdCBjb3VudCAgPSAwVTsKICAgdWludDMyX3QgbG9vcGNvdW50ZXI7CisgIHVpbnQzMl90IGhlYWRlcnNpemVfaW5fYnl0ZXM7CisgIHVpbnQzMl90IHRtcDsKKyAgdWludDMyX3QgbWFza1sxMl0gPSB7MHgwVSwgMHhGRjAwMDAwMFUsIDB4RkZGRjAwMDBVLCAweEZGRkZGRjAwVSwgIC8qIDMyLWJpdCBkYXRhIHR5cGUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgMHgwVSwgMHgwMDAwRkYwMFUsIDB4MDAwMEZGRkZVLCAweEZGMDBGRkZGVSwgIC8qIDE2LWJpdCBkYXRhIHR5cGUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgMHgwVSwgMHgwMDAwMDBGRlUsIDB4MDAwMEZGRkZVLCAweDAwRkZGRkZGVX07IC8qICA4LWJpdCBkYXRhIHR5cGUgKi8KIAogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogSGVhZGVyIHBoYXNlIGZvciBHQ00vR01BQyBvciBDQ00gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotICBpZiAoKGhjcnlwLT5Jbml0LkhlYWRlclNpemUgIT0gMFUpKQorICBpZiAoaGNyeXAtPkluaXQuSGVhZGVyV2lkdGhVbml0ID09IENSWVBfSEVBREVSV0lEVEhVTklUX1dPUkQpCisgIHsKKyAgICBoZWFkZXJzaXplX2luX2J5dGVzID0gaGNyeXAtPkluaXQuSGVhZGVyU2l6ZSAqIDRVOworICB9CisgIGVsc2UKKyAgeworICAgIGhlYWRlcnNpemVfaW5fYnl0ZXMgPSBoY3J5cC0+SW5pdC5IZWFkZXJTaXplOworICB9CisgIAorICBpZiAoaGVhZGVyc2l6ZV9pbl9ieXRlcyAhPSAwVSkKICAgewogCiAjaWYgZGVmaW5lZChDUllQKQpAQCAtNTg1OSwxMCArNTkyOCwxMCBAQAogICAgIC8qIEVuYWJsZSB0aGUgQ1JZUCBwZXJpcGhlcmFsICovCiAgICAgX19IQUxfQ1JZUF9FTkFCTEUoaGNyeXApOwogCi0gICAgaWYgKChoY3J5cC0+SW5pdC5IZWFkZXJTaXplICUgNFUpID09IDBVKQorICAgIGlmICgoaGVhZGVyc2l6ZV9pbl9ieXRlcyAlIDE2VSkgPT0gMFUpCiAgICAgewogICAgICAgLyogSGVhZGVyU2l6ZSAlNCwgbm8gcGFkZGluZyAqLwotICAgICAgZm9yIChsb29wY291bnRlciA9IDBVOyAobG9vcGNvdW50ZXIgPCBoY3J5cC0+SW5pdC5IZWFkZXJTaXplKTsgbG9vcGNvdW50ZXIgKz0gNFUpCisgICAgICBmb3IgKGxvb3Bjb3VudGVyID0gMFU7IChsb29wY291bnRlciA8IChoZWFkZXJzaXplX2luX2J5dGVzIC8gNFUpKTsgbG9vcGNvdW50ZXIgKz0gNFUpCiAgICAgICB7CiAgICAgICAgIGhjcnlwLT5JbnN0YW5jZS0+RElOID0gKih1aW50MzJfdCAqKShoY3J5cC0+SW5pdC5IZWFkZXIgKyBoY3J5cC0+Q3J5cEhlYWRlckNvdW50KTsKICAgICAgICAgaGNyeXAtPkNyeXBIZWFkZXJDb3VudCsrIDsKQEAgLTU4OTcsNyArNTk2Niw3IEBACiAgICAgZWxzZQogICAgIHsKICAgICAgIC8qV3JpdGUgaGVhZGVyIGJsb2NrIGluIHRoZSBJTiBGSUZPIHdpdGhvdXQgbGFzdCBibG9jayAqLwotICAgICAgZm9yIChsb29wY291bnRlciA9IDBVOyAobG9vcGNvdW50ZXIgPCAoKGhjcnlwLT5Jbml0LkhlYWRlclNpemUpIC0gKGhjcnlwLT5Jbml0LkhlYWRlclNpemUgJSA0VSkpKTsgbG9vcGNvdW50ZXIgKz0gNFUpCisgICAgICBmb3IgKGxvb3Bjb3VudGVyID0gMFU7IChsb29wY291bnRlciA8ICgoaGVhZGVyc2l6ZV9pbl9ieXRlcyAvIDE2VSkgKiA0VSkpOyBsb29wY291bnRlciArPSA0VSkKICAgICAgIHsKICAgICAgICAgaGNyeXAtPkluc3RhbmNlLT5ESU4gPSAqKHVpbnQzMl90ICopKGhjcnlwLT5Jbml0LkhlYWRlciArIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQpOwogICAgICAgICBoY3J5cC0+Q3J5cEhlYWRlckNvdW50KysgOwpAQCAtNTkyOSwxNiArNTk5OCwzNCBAQAogICAgICAgICB9IHdoaWxlIChIQUxfSVNfQklUX0NMUihoY3J5cC0+SW5zdGFuY2UtPlNSLCBDUllQX0ZMQUdfSUZFTSkpOwogICAgICAgfQogICAgICAgLyogIExhc3QgYmxvY2sgb3B0aW9uYWxseSBwYWQgdGhlIGRhdGEgd2l0aCB6ZXJvcyovCi0gICAgICBmb3IgKGxvb3Bjb3VudGVyID0gMFU7IChsb29wY291bnRlciA8IChoY3J5cC0+SW5pdC5IZWFkZXJTaXplICUgNFUpKTsgbG9vcGNvdW50ZXIrKykKKyAgICAgIGZvciAobG9vcGNvdW50ZXIgPSAwVTsgKGxvb3Bjb3VudGVyIDwgKChoZWFkZXJzaXplX2luX2J5dGVzIC8gNFUpICUgNFUpKTsgbG9vcGNvdW50ZXIrKykKICAgICAgIHsKICAgICAgICAgaGNyeXAtPkluc3RhbmNlLT5ESU4gPSAqKHVpbnQzMl90ICopKGhjcnlwLT5Jbml0LkhlYWRlciArIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQpOwogICAgICAgICBoY3J5cC0+Q3J5cEhlYWRlckNvdW50KysgOwogICAgICAgfQotICAgICAgd2hpbGUgKGxvb3Bjb3VudGVyIDwgNFUpCisgICAgICAvKiBJZiB0aGUgaGVhZGVyIHNpemUgaXMgYSBtdWx0aXBsZSBvZiB3b3JkcyAqLworICAgICAgaWYgKChoZWFkZXJzaXplX2luX2J5dGVzICUgNFUpID09IDBVKQogICAgICAgewogICAgICAgICAvKiBQYWQgdGhlIGRhdGEgd2l0aCB6ZXJvcyB0byBoYXZlIGEgY29tcGxldGUgYmxvY2sgKi8KLSAgICAgICAgaGNyeXAtPkluc3RhbmNlLT5ESU4gPSAweDBVOworICAgICAgICB3aGlsZSAobG9vcGNvdW50ZXIgPCA0VSkKKyAgICAgICAgeworICAgICAgICAgIGhjcnlwLT5JbnN0YW5jZS0+RElOID0gMHgwVTsKKyAgICAgICAgICBsb29wY291bnRlcisrOworICAgICAgICB9CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIEVudGVyIGxhc3QgYnl0ZXMsIHBhZGRlZCB3aXRoIHplcm9lcyAqLworICAgICAgICB0bXAgPSAgKih1aW50MzJfdCAqKShoY3J5cC0+SW5pdC5IZWFkZXIgKyBoY3J5cC0+Q3J5cEhlYWRlckNvdW50KTsKKyAgICAgICAgdG1wICY9IG1hc2tbKGhjcnlwLT5Jbml0LkRhdGFUeXBlICogMlUpICsgKGhlYWRlcnNpemVfaW5fYnl0ZXMgJSA0VSldOworICAgICAgICBoY3J5cC0+SW5zdGFuY2UtPkRJTiA9IHRtcDsKICAgICAgICAgbG9vcGNvdW50ZXIrKzsKKyAgICAgICAgLyogUGFkIHRoZSBkYXRhIHdpdGggemVyb3MgdG8gaGF2ZSBhIGNvbXBsZXRlIGJsb2NrICovCisgICAgICAgIHdoaWxlIChsb29wY291bnRlciA8IDRVKQorICAgICAgICB7CisgICAgICAgICAgaGNyeXAtPkluc3RhbmNlLT5ESU4gPSAweDBVOworICAgICAgICAgIGxvb3Bjb3VudGVyKys7CisgICAgICAgIH0KICAgICAgIH0KICAgICAgIC8qIFdhaXQgZm9yIElGRU0gdG8gYmUgcmFpc2VkICovCiAgICAgICBjb3VudCA9IENSWVBfVElNRU9VVF9HQ01DQ01IRUFERVJQSEFTRTsKQEAgLTU5OTMsMTAgKzYwODAsMTAgQEAKICAgICAgIC8qIEVuYWJsZSB0aGUgQ1JZUCBwZXJpcGhlcmFsICovCiAgICAgICBfX0hBTF9DUllQX0VOQUJMRShoY3J5cCk7CiAgICAgfQotICAgIGlmICgoaGNyeXAtPkluaXQuSGVhZGVyU2l6ZSAlIDRVKSA9PSAwVSkKKyAgICBpZiAoKGhlYWRlcnNpemVfaW5fYnl0ZXMgJSAxNlUpID09IDBVKQogICAgIHsKICAgICAgIC8qIEhlYWRlclNpemUgJTQsIG5vIHBhZGRpbmcgKi8KLSAgICAgIGZvciAobG9vcGNvdW50ZXIgPSAwVTsgKGxvb3Bjb3VudGVyIDwgaGNyeXAtPkluaXQuSGVhZGVyU2l6ZSk7IGxvb3Bjb3VudGVyICs9IDRVKQorICAgICAgZm9yIChsb29wY291bnRlciA9IDBVOyAobG9vcGNvdW50ZXIgPCAoaGVhZGVyc2l6ZV9pbl9ieXRlcyAvIDRVKSk7IGxvb3Bjb3VudGVyICs9IDRVKQogICAgICAgewogICAgICAgICAvKiBXcml0ZSB0aGUgaW5wdXQgYmxvY2sgaW4gdGhlIGRhdGEgaW5wdXQgcmVnaXN0ZXIgKi8KICAgICAgICAgaGNyeXAtPkluc3RhbmNlLT5ESU5SID0gKih1aW50MzJfdCAqKShoY3J5cC0+SW5pdC5IZWFkZXIgKyBoY3J5cC0+Q3J5cEhlYWRlckNvdW50KTsKQEAgLTYwMzUsNyArNjEyMiw3IEBACiAgICAgZWxzZQogICAgIHsKICAgICAgIC8qV3JpdGUgaGVhZGVyIGJsb2NrIGluIHRoZSBJTiBGSUZPIHdpdGhvdXQgbGFzdCBibG9jayAqLwotICAgICAgZm9yIChsb29wY291bnRlciA9IDBVOyAobG9vcGNvdW50ZXIgPCAoKGhjcnlwLT5Jbml0LkhlYWRlclNpemUpIC0gKGhjcnlwLT5Jbml0LkhlYWRlclNpemUgJSA0VSkpKTsgbG9vcGNvdW50ZXIgKz0gNFUpCisgICAgICBmb3IgKGxvb3Bjb3VudGVyID0gMFU7IChsb29wY291bnRlciA8ICgoaGVhZGVyc2l6ZV9pbl9ieXRlcyAvIDE2VSkgKiA0VSkpOyBsb29wY291bnRlciArPSA0VSkKICAgICAgIHsKICAgICAgICAgLyogV3JpdGUgdGhlIElucHV0IGJsb2NrIGluIHRoZSBEYXRhIElucHV0IHJlZ2lzdGVyICovCiAgICAgICAgIGhjcnlwLT5JbnN0YW5jZS0+RElOUiA9ICoodWludDMyX3QgKikoaGNyeXAtPkluaXQuSGVhZGVyICsgaGNyeXAtPkNyeXBIZWFkZXJDb3VudCk7CkBAIC02MDcxLDE4ICs2MTU4LDM1IEBACiAgICAgICAgIF9fSEFMX0NSWVBfQ0xFQVJfRkxBRyhoY3J5cCwgQ1JZUF9DQ0ZfQ0xFQVIpOwogICAgICAgfQogICAgICAgLyogIExhc3QgYmxvY2sgb3B0aW9uYWxseSBwYWQgdGhlIGRhdGEgd2l0aCB6ZXJvcyovCi0gICAgICBmb3IgKGxvb3Bjb3VudGVyID0gMFU7IChsb29wY291bnRlciA8IChoY3J5cC0+SW5pdC5IZWFkZXJTaXplICUgNFUpKTsgbG9vcGNvdW50ZXIrKykKKyAgICAgIGZvciAobG9vcGNvdW50ZXIgPSAwVTsgKGxvb3Bjb3VudGVyIDwgKChoZWFkZXJzaXplX2luX2J5dGVzIC80VSkgJSA0VSkpOyBsb29wY291bnRlcisrKQogICAgICAgewogICAgICAgICBoY3J5cC0+SW5zdGFuY2UtPkRJTlIgPSAqKHVpbnQzMl90ICopKGhjcnlwLT5Jbml0LkhlYWRlciArIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQpOwogICAgICAgICBoY3J5cC0+Q3J5cEhlYWRlckNvdW50KysgOwogICAgICAgfQotICAgICAgd2hpbGUgKGxvb3Bjb3VudGVyIDwgNFUpCisgICAgICAvKiBJZiB0aGUgaGVhZGVyIHNpemUgaXMgYSBtdWx0aXBsZSBvZiB3b3JkcyAqLworICAgICAgaWYgKChoZWFkZXJzaXplX2luX2J5dGVzICUgNFUpID09IDBVKQogICAgICAgewogICAgICAgICAvKiBQYWQgdGhlIGRhdGEgd2l0aCB6ZXJvcyB0byBoYXZlIGEgY29tcGxldGUgYmxvY2sgKi8KLSAgICAgICAgaGNyeXAtPkluc3RhbmNlLT5ESU5SID0gMHgwVTsKLSAgICAgICAgbG9vcGNvdW50ZXIrKzsKKyAgICAgICAgd2hpbGUgKGxvb3Bjb3VudGVyIDwgNFUpCisgICAgICAgIHsKKyAgICAgICAgICBoY3J5cC0+SW5zdGFuY2UtPkRJTlIgPSAweDBVOworICAgICAgICAgIGxvb3Bjb3VudGVyKys7CisgICAgICAgIH0KICAgICAgIH0KLQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICAvKiBFbnRlciBsYXN0IGJ5dGVzLCBwYWRkZWQgd2l0aCB6ZXJvZXMgKi8KKyAgICAgICAgdG1wID0gICoodWludDMyX3QgKikoaGNyeXAtPkluaXQuSGVhZGVyICsgaGNyeXAtPkNyeXBIZWFkZXJDb3VudCk7CisgICAgICAgIHRtcCAmPSBtYXNrWyhoY3J5cC0+SW5pdC5EYXRhVHlwZSAqIDJVKSArIChoZWFkZXJzaXplX2luX2J5dGVzICUgNFUpXTsKKyAgICAgICAgaGNyeXAtPkluc3RhbmNlLT5ESU5SID0gdG1wOworICAgICAgICBsb29wY291bnRlcisrOworICAgICAgICAvKiBQYWQgdGhlIGRhdGEgd2l0aCB6ZXJvcyB0byBoYXZlIGEgY29tcGxldGUgYmxvY2sgKi8KKyAgICAgICAgd2hpbGUgKGxvb3Bjb3VudGVyIDwgNFUpCisgICAgICAgIHsKKyAgICAgICAgICBoY3J5cC0+SW5zdGFuY2UtPkRJTlIgPSAweDBVOworICAgICAgICAgIGxvb3Bjb3VudGVyKys7CisgICAgICAgIH0KKyAgICAgIH0KICAgICAgIC8qV2FpdCBvbiBDQ0YgZmxhZyovCiAgICAgICBjb3VudCA9IENSWVBfVElNRU9VVF9HQ01DQ01IRUFERVJQSEFTRTsKICAgICAgIGRvCkBAIC02MTQxLDEwICs2MjQ1LDI1IEBACiAgIHVpbnQzMl90IGxhc3R3b3Jkc2l6ZTsKICAgdWludDMyX3QgbnBibGI7CiAjZW5kaWYKKyAgdWludDMyX3QgaGVhZGVyc2l6ZV9pbl9ieXRlczsKKyAgdWludDMyX3QgdG1wOworICB1aW50MzJfdCBtYXNrWzEyXSA9IHsweDBVLCAweEZGMDAwMDAwVSwgMHhGRkZGMDAwMFUsIDB4RkZGRkZGMDBVLCAgLyogMzItYml0IGRhdGEgdHlwZSAqLworICAgICAgICAgICAgICAgICAgICAgICAweDBVLCAweDAwMDBGRjAwVSwgMHgwMDAwRkZGRlUsIDB4RkYwMEZGRkZVLCAgLyogMTYtYml0IGRhdGEgdHlwZSAqLworICAgICAgICAgICAgICAgICAgICAgICAweDBVLCAweDAwMDAwMEZGVSwgMHgwMDAwRkZGRlUsIDB4MDBGRkZGRkZVfTsgLyogIDgtYml0IGRhdGEgdHlwZSAqLworCisgIGlmIChoY3J5cC0+SW5pdC5IZWFkZXJXaWR0aFVuaXQgPT0gQ1JZUF9IRUFERVJXSURUSFVOSVRfV09SRCkKKyAgeworICAgIGhlYWRlcnNpemVfaW5fYnl0ZXMgPSBoY3J5cC0+SW5pdC5IZWFkZXJTaXplICogNFU7CisgIH0KKyAgZWxzZQorICB7CisgICAgaGVhZGVyc2l6ZV9pbl9ieXRlcyA9IGhjcnlwLT5Jbml0LkhlYWRlclNpemU7CisgIH0KKwogICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogSGVhZGVyIHBoYXNlICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogI2lmIGRlZmluZWQoQ1JZUCkKLSAgaWYgKGhjcnlwLT5Jbml0LkhlYWRlclNpemUgPT0gIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQpCisgIGlmIChoZWFkZXJzaXplX2luX2J5dGVzIDw9ICgodWludDMyX3QpKGhjcnlwLT5DcnlwSGVhZGVyQ291bnQpICogNFUpKQogICB7CiAgICAgLyogRGlzYWJsZSBpbnRlcnJ1cHRzICovCiAgICAgX19IQUxfQ1JZUF9ESVNBQkxFX0lUKGhjcnlwLCBDUllQX0lUX0lOSSk7CkBAIC02MTY0LDcgKzYyODMsNyBAQAogICAgIC8qIEVuYWJsZSB0aGUgQ1JZUCBwZXJpcGhlcmFsICovCiAgICAgX19IQUxfQ1JZUF9FTkFCTEUoaGNyeXApOwogICB9Ci0gIGVsc2UgaWYgKCgoaGNyeXAtPkluaXQuSGVhZGVyU2l6ZSkgLSAoaGNyeXAtPkNyeXBIZWFkZXJDb3VudCkpID49IDRVKQorICBlbHNlIGlmICgoKGhlYWRlcnNpemVfaW5fYnl0ZXMgLyA0VSkgLSAoaGNyeXAtPkNyeXBIZWFkZXJDb3VudCkpID49IDRVKQogCiAgIHsKICAgICAvKiBIZWFkZXJTaXplICU0LCBubyBwYWRkaW5nICovCkBAIC02MTgwLDIxICs2Mjk5LDQxIEBACiAgIGVsc2UKICAgewogICAgIC8qICBMYXN0IGJsb2NrIG9wdGlvbmFsbHkgcGFkIHRoZSBkYXRhIHdpdGggemVyb3MqLwotICAgIGZvciAobG9vcGNvdW50ZXIgPSAwVTsgbG9vcGNvdW50ZXIgPCAoaGNyeXAtPkluaXQuSGVhZGVyU2l6ZSAlIDRVKTsgbG9vcGNvdW50ZXIrKykKKyAgICBmb3IgKGxvb3Bjb3VudGVyID0gMFU7IGxvb3Bjb3VudGVyIDwgKChoZWFkZXJzaXplX2luX2J5dGVzIC8gNFUpICUgNFUpOyBsb29wY291bnRlcisrKQogICAgIHsKICAgICAgIGhjcnlwLT5JbnN0YW5jZS0+RElOID0gKih1aW50MzJfdCAqKShoY3J5cC0+SW5pdC5IZWFkZXIgKyBoY3J5cC0+Q3J5cEhlYWRlckNvdW50KTsKICAgICAgIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQrKyA7CiAgICAgfQotICAgIHdoaWxlIChsb29wY291bnRlciA8IDRVKQorICAgIGlmICgoaGVhZGVyc2l6ZV9pbl9ieXRlcyAlIDRVKSA9PSAwVSkKICAgICB7CiAgICAgICAvKiBQYWQgdGhlIGRhdGEgd2l0aCB6ZXJvcyB0byBoYXZlIGEgY29tcGxldGUgYmxvY2sgKi8KKyAgICAgIHdoaWxlIChsb29wY291bnRlciA8IDRVKQorICAgICAgeworICAgICAgICBoY3J5cC0+SW5zdGFuY2UtPkRJTiA9IDB4MFU7CisgICAgICAgIGxvb3Bjb3VudGVyKys7CisgICAgICAgIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQrKzsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIC8qIEVudGVyIGxhc3QgYnl0ZXMsIHBhZGRlZCB3aXRoIHplcm9zICovCisgICAgICB0bXAgPSAgKih1aW50MzJfdCAqKShoY3J5cC0+SW5pdC5IZWFkZXIgKyBoY3J5cC0+Q3J5cEhlYWRlckNvdW50KTsKKyAgICAgIHRtcCAmPSBtYXNrWyhoY3J5cC0+SW5pdC5EYXRhVHlwZSAqIDJVKSArIChoZWFkZXJzaXplX2luX2J5dGVzICUgNFUpXTsKKyAgICAgIGhjcnlwLT5JbnN0YW5jZS0+RElOID0gdG1wOworICAgICAgbG9vcGNvdW50ZXIrKzsKKyAgICAgIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQrKzsKKyAgICAgIC8qIFBhZCB0aGUgZGF0YSB3aXRoIHplcm9zIHRvIGhhdmUgYSBjb21wbGV0ZSBibG9jayAqLworICAgIHdoaWxlIChsb29wY291bnRlciA8IDRVKQorICAgIHsKICAgICAgIGhjcnlwLT5JbnN0YW5jZS0+RElOID0gMHgwVTsKICAgICAgIGxvb3Bjb3VudGVyKys7CisgICAgICAgIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQrKzsKKyAgICAgIH0KICAgICB9CiAgIH0KICNlbHNlIC8qIEFFUyAqLwogCi0gIGlmIChoY3J5cC0+SW5pdC5IZWFkZXJTaXplID09ICBoY3J5cC0+Q3J5cEhlYWRlckNvdW50KQorICBpZiAoaGVhZGVyc2l6ZV9pbl9ieXRlcyA8PSAoKHVpbnQzMl90KShoY3J5cC0+Q3J5cEhlYWRlckNvdW50KSAqIDRVKSkKICAgewogICAgIC8qIFNldCB0aGUgcGhhc2UgKi8KICAgICBoY3J5cC0+UGhhc2UgPSBDUllQX1BIQVNFX1BST0NFU1M7CkBAIC02Mjc4LDcgKzY0MTcsNyBAQAogICAgICAgfQogICAgIH0KICAgfQotICBlbHNlIGlmICgoKGhjcnlwLT5Jbml0LkhlYWRlclNpemUpIC0gKGhjcnlwLT5DcnlwSGVhZGVyQ291bnQpKSA+PSA0VSkKKyAgZWxzZSBpZiAoKChoZWFkZXJzaXplX2luX2J5dGVzIC8gNFUpIC0gKGhjcnlwLT5DcnlwSGVhZGVyQ291bnQpKSA+PSA0VSkKICAgewogICAgIC8qIFdyaXRlIHRoZSBpbnB1dCBibG9jayBpbiB0aGUgSU4gRklGTyAqLwogICAgIGhjcnlwLT5JbnN0YW5jZS0+RElOUiAgPSAqKHVpbnQzMl90ICopKGhjcnlwLT5Jbml0LkhlYWRlciArIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQpOwpAQCAtNjI5MywxNiArNjQzMiwzNyBAQAogICBlbHNlIC8qSGVhZGVyU2l6ZSA8IDQgb3IgSGVhZGVyU2l6ZSA+NCAmIEhlYWRlclNpemUgJTQgIT0gMCovCiAgIHsKICAgICAvKiAgTGFzdCBibG9jayBvcHRpb25hbGx5IHBhZCB0aGUgZGF0YSB3aXRoIHplcm9zKi8KLSAgICBmb3IgKGxvb3Bjb3VudGVyID0gMFU7IGxvb3Bjb3VudGVyIDwgKGhjcnlwLT5Jbml0LkhlYWRlclNpemUgJSA0VSk7IGxvb3Bjb3VudGVyKyspCisgICAgZm9yIChsb29wY291bnRlciA9IDBVOyBsb29wY291bnRlciA8ICgoaGVhZGVyc2l6ZV9pbl9ieXRlcyAvIDRVKSAlIDRVKTsgbG9vcGNvdW50ZXIrKykKICAgICB7CiAgICAgICBoY3J5cC0+SW5zdGFuY2UtPkRJTlIgPSAqKHVpbnQzMl90ICopKGhjcnlwLT5Jbml0LkhlYWRlciArIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQpOwogICAgICAgaGNyeXAtPkNyeXBIZWFkZXJDb3VudCsrIDsKICAgICB9CisgICAgLyogSWYgdGhlIGhlYWRlciBzaXplIGlzIGEgbXVsdGlwbGUgb2Ygd29yZHMgKi8KKyAgICBpZiAoKGhlYWRlcnNpemVfaW5fYnl0ZXMgJSA0VSkgPT0gMFUpCisgICAgeworICAgICAgLyogUGFkIHRoZSBkYXRhIHdpdGggemVyb3MgdG8gaGF2ZSBhIGNvbXBsZXRlIGJsb2NrICovCisgICAgICB3aGlsZSAobG9vcGNvdW50ZXIgPCA0VSkKKyAgICAgIHsKKyAgICAgICAgaGNyeXAtPkluc3RhbmNlLT5ESU5SID0gMHgwVTsKKyAgICAgICAgbG9vcGNvdW50ZXIrKzsKKyAgICAgICAgaGNyeXAtPkNyeXBIZWFkZXJDb3VudCsrOworICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgLyogRW50ZXIgbGFzdCBieXRlcywgcGFkZGVkIHdpdGggemVyb3MgKi8KKyAgICAgIHRtcCA9ICAqKHVpbnQzMl90ICopKGhjcnlwLT5Jbml0LkhlYWRlciArIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQpOworICAgICAgdG1wICY9IG1hc2tbKGhjcnlwLT5Jbml0LkRhdGFUeXBlICogMlUpICsgKGhlYWRlcnNpemVfaW5fYnl0ZXMgJSA0VSldOworICAgICAgaGNyeXAtPkluc3RhbmNlLT5ESU5SID0gdG1wOworICAgICAgbG9vcGNvdW50ZXIrKzsKKyAgICAgIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQrKzsKKyAgICAgIC8qIFBhZCB0aGUgZGF0YSB3aXRoIHplcm9zIHRvIGhhdmUgYSBjb21wbGV0ZSBibG9jayAqLwogICAgIHdoaWxlIChsb29wY291bnRlciA8IDRVKQogICAgIHsKLSAgICAgIC8qIHBhZCB0aGUgZGF0YSB3aXRoIHplcm9zIHRvIGhhdmUgYSBjb21wbGV0ZSBibG9jayAqLwogICAgICAgaGNyeXAtPkluc3RhbmNlLT5ESU5SID0gMHgwVTsKICAgICAgIGxvb3Bjb3VudGVyKys7CisgICAgICAgIGhjcnlwLT5DcnlwSGVhZGVyQ291bnQrKzsKKyAgICAgIH0KICAgICB9CiAgIH0KICNlbmRpZiAvKiBFbmQgQUVTIG9yIENSWVAgKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2NyeXBfZXguYyBiL1NyYy9zdG0zMmY3eHhfaGFsX2NyeXBfZXguYwppbmRleCAxYTdhNmI5Li41YmNjZTM1IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9jcnlwX2V4LmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfY3J5cF9leC5jCkBAIC0xMjgsMTAgKzEyOCwxNyBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0NSWVBFeF9BRVNHQ01fR2VuZXJhdGVBdXRoVEFHKENSWVBfSGFuZGxlVHlwZURlZiAqaGNyeXAsIHVpbnQzMl90ICpBdXRoVGFnLCB1aW50MzJfdCBUaW1lb3V0KQogewogICB1aW50MzJfdCB0aWNrc3RhcnQ7CisgIC8qIEFzc3VtZSBmaXJzdCBJbml0LkhlYWRlclNpemUgaXMgaW4gd29yZHMgKi8KICAgdWludDY0X3QgaGVhZGVybGVuZ3RoID0gKHVpbnQ2NF90KShoY3J5cC0+SW5pdC5IZWFkZXJTaXplKSAqIDMyVTsgLyogSGVhZGVyIGxlbmd0aCBpbiBiaXRzICovCi0gIHVpbnQ2NF90IGlucHV0bGVuZ3RoID0gKHVpbnQ2NF90KWhjcnlwLT5TaXplc1N1bSAqIDhVOyAvKiBpbnB1dCBsZW5ndGggaW4gYml0cyAqLworICB1aW50NjRfdCBpbnB1dGxlbmd0aCA9ICh1aW50NjRfdCloY3J5cC0+U2l6ZXNTdW0gKiA4VTsgLyogSW5wdXQgbGVuZ3RoIGluIGJpdHMgKi8KICAgdWludDMyX3QgdGFnYWRkciA9ICh1aW50MzJfdClBdXRoVGFnOwogCisgIC8qIENvcnJlY3QgaGVhZGVybGVuZ3RoIGlmIEluaXQuSGVhZGVyU2l6ZSBpcyBhY3R1YWxseSBpbiBieXRlcyAqLworICBpZiAoaGNyeXAtPkluaXQuSGVhZGVyV2lkdGhVbml0ID09IENSWVBfSEVBREVSV0lEVEhVTklUX0JZVEUpCisgIHsKKyAgICBoZWFkZXJsZW5ndGggLz0gNFU7CisgIH0KKwogICBpZiAoaGNyeXAtPlN0YXRlID09IEhBTF9DUllQX1NUQVRFX1JFQURZKQogICB7CiAgICAgLyogUHJvY2VzcyBsb2NrZWQgKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2RhYy5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfZGFjLmMKaW5kZXggNDJiNmQwOC4uOThiNTdjMiAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfZGFjLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfZGFjLmMKQEAgLTMsMTI0ICszLDEzNCBAQAogICAqIEBmaWxlICAgIHN0bTMyZjd4eF9oYWxfZGFjLmMKICAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQogICAqIEBicmllZiAgIERBQyBIQUwgbW9kdWxlIGRyaXZlci4KLSAgKiAgICAgICAgIFRoaXMgZmlsZSBwcm92aWRlcyBmaXJtd2FyZSBmdW5jdGlvbnMgdG8gbWFuYWdlIHRoZSBmb2xsb3dpbmcgCisgICogICAgICAgICBUaGlzIGZpbGUgcHJvdmlkZXMgZmlybXdhcmUgZnVuY3Rpb25zIHRvIG1hbmFnZSB0aGUgZm9sbG93aW5nCiAgICogICAgICAgICBmdW5jdGlvbmFsaXRpZXMgb2YgdGhlIERpZ2l0YWwgdG8gQW5hbG9nIENvbnZlcnRlciAoREFDKSBwZXJpcGhlcmFsOgogICAqICAgICAgICAgICArIEluaXRpYWxpemF0aW9uIGFuZCBkZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMKICAgKiAgICAgICAgICAgKyBJTyBvcGVyYXRpb24gZnVuY3Rpb25zCiAgICogICAgICAgICAgICsgUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucwotICAqICAgICAgICAgICArIFBlcmlwaGVyYWwgU3RhdGUgYW5kIEVycm9ycyBmdW5jdGlvbnMgICAgICAKLSAgKiAgICAgCisgICogICAgICAgICAgICsgUGVyaXBoZXJhbCBTdGF0ZSBhbmQgRXJyb3JzIGZ1bmN0aW9ucwogICAqCi0gIEB2ZXJiYXRpbSAgICAgIAorICAqCisgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBEQUMgUGVyaXBoZXJhbCBmZWF0dXJlcyAjIyMjIwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBbLi5dICAgICAgICAKKyAgICBbLi5dCiAgICAgICAqKiogREFDIENoYW5uZWxzICoqKgotICAgICAgPT09PT09PT09PT09PT09PT09PT0gIAotICAgIFsuLl0gIAotICAgIFRoZSBkZXZpY2UgaW50ZWdyYXRlcyB0d28gMTItYml0IERpZ2l0YWwgQW5hbG9nIENvbnZlcnRlcnMgdGhhdCBjYW4gCisgICAgICA9PT09PT09PT09PT09PT09PT09PQorICAgIFsuLl0KKyAgICBTVE0zMkY3IGRldmljZXMgaW50ZWdyYXRlcyB0d28gMTItYml0IERpZ2l0YWwgQW5hbG9nIENvbnZlcnRlcnMgdGhhdCBjYW4KICAgICBiZSB1c2VkIGluZGVwZW5kZW50bHkgb3Igc2ltdWx0YW5lb3VzbHkgKGR1YWwgbW9kZSk6CiAgICAgICAoIykgREFDIGNoYW5uZWwxIHdpdGggREFDX09VVDEgKFBBNCkgYXMgb3V0cHV0CiAgICAgICAoIykgREFDIGNoYW5uZWwyIHdpdGggREFDX09VVDIgKFBBNSkgYXMgb3V0cHV0Ci0gICAgICAKKwogICAgICAgKioqIERBQyBUcmlnZ2VycyAqKioKICAgICAgID09PT09PT09PT09PT09PT09PT09CiAgICAgWy4uXQogICAgIERpZ2l0YWwgdG8gQW5hbG9nIGNvbnZlcnNpb24gY2FuIGJlIG5vbi10cmlnZ2VyZWQgdXNpbmcgREFDX1RSSUdHRVJfTk9ORQotICAgIGFuZCBEQUNfT1VUMS9EQUNfT1VUMiBpcyBhdmFpbGFibGUgb25jZSB3cml0aW5nIHRvIERIUnggcmVnaXN0ZXIuIAotICAgIFsuLl0gCisgICAgYW5kIERBQ19PVVQxL0RBQ19PVVQyIGlzIGF2YWlsYWJsZSBvbmNlIHdyaXRpbmcgdG8gREhSeCByZWdpc3Rlci4KKyAgICBbLi5dCiAgICAgRGlnaXRhbCB0byBBbmFsb2cgY29udmVyc2lvbiBjYW4gYmUgdHJpZ2dlcmVkIGJ5OgogICAgICAgKCMpIEV4dGVybmFsIGV2ZW50OiBFWFRJIExpbmUgOSAoYW55IEdQSU94X1BpbjkpIHVzaW5nIERBQ19UUklHR0VSX0VYVF9JVDkuCiAgICAgICAgICAgVGhlIHVzZWQgcGluIChHUElPeF9QaW45KSBtdXN0IGJlIGNvbmZpZ3VyZWQgaW4gaW5wdXQgbW9kZS4KLSAgCi0gICAgICAoIykgVGltZXJzIFRSR086IFRJTTIsIFRJTTQsIFRJTTUsIFRJTTYsIFRJTTcgYW5kIFRJTTggCisKKyAgICAgICgjKSBUaW1lcnMgVFJHTzogVElNMiwgVElNNCwgVElNNSwgVElNNiwgVElNNyBhbmQgVElNOAogICAgICAgICAgIChEQUNfVFJJR0dFUl9UMl9UUkdPLCBEQUNfVFJJR0dFUl9UNF9UUkdPLi4uKQotICAKKwogICAgICAgKCMpIFNvZnR3YXJlIHVzaW5nIERBQ19UUklHR0VSX1NPRlRXQVJFCi0gIAorCiAgICAgICAqKiogREFDIEJ1ZmZlciBtb2RlIGZlYXR1cmUgKioqCi0gICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IAotICAgICAgWy4uXSAKLSAgICAgIEVhY2ggREFDIGNoYW5uZWwgaW50ZWdyYXRlcyBhbiBvdXRwdXQgYnVmZmVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gCisgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICBbLi5dCisgICAgICBFYWNoIERBQyBjaGFubmVsIGludGVncmF0ZXMgYW4gb3V0cHV0IGJ1ZmZlciB0aGF0IGNhbiBiZSB1c2VkIHRvCiAgICAgICByZWR1Y2UgdGhlIG91dHB1dCBpbXBlZGFuY2UsIGFuZCB0byBkcml2ZSBleHRlcm5hbCBsb2FkcyBkaXJlY3RseQogICAgICAgd2l0aG91dCBoYXZpbmcgdG8gYWRkIGFuIGV4dGVybmFsIG9wZXJhdGlvbmFsIGFtcGxpZmllci4KLSAgICAgIFRvIGVuYWJsZSwgdGhlIG91dHB1dCBidWZmZXIgdXNlICAKKyAgICAgIFRvIGVuYWJsZSwgdGhlIG91dHB1dCBidWZmZXIgdXNlCiAgICAgICBzQ29uZmlnLkRBQ19PdXRwdXRCdWZmZXIgPSBEQUNfT1VUUFVUQlVGRkVSX0VOQUJMRTsKLSAgICAgIFsuLl0gICAgICAgICAgIAotICAgICAgKEApIFJlZmVyIHRvIHRoZSBkZXZpY2UgZGF0YXNoZWV0IGZvciBtb3JlIGRldGFpbHMgYWJvdXQgb3V0cHV0IAorICAgICAgWy4uXQorICAgICAgKEApIFJlZmVyIHRvIHRoZSBkZXZpY2UgZGF0YXNoZWV0IGZvciBtb3JlIGRldGFpbHMgYWJvdXQgb3V0cHV0CiAgICAgICAgICAgaW1wZWRhbmNlIHZhbHVlIHdpdGggYW5kIHdpdGhvdXQgb3V0cHV0IGJ1ZmZlci4KLSAgICAgICAgICAgIAorCiAgICAgICAgKioqIERBQyB3YXZlIGdlbmVyYXRpb24gZmVhdHVyZSAqKioKLSAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAKLSAgICAgICBbLi5dICAgICAKKyAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICAgIFsuLl0KICAgICAgICBCb3RoIERBQyBjaGFubmVscyBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZQotICAgICAgICAgKCMpIE5vaXNlIHdhdmUgdXNpbmcgSEFMX0RBQ0V4X05vaXNlV2F2ZUdlbmVyYXRlKCkgCi0gICAgICAgICAoIykgVHJpYW5nbGUgd2F2ZSB1c2luZyBIQUxfREFDRXhfVHJpYW5nbGVXYXZlR2VuZXJhdGUoKQotICAgICAgICAgICAgCisgICAgICAgICAoIykgTm9pc2Ugd2F2ZQorICAgICAgICAgKCMpIFRyaWFuZ2xlIHdhdmUKKwogICAgICAgICoqKiBEQUMgZGF0YSBmb3JtYXQgKioqCiAgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT0KLSAgICAgICBbLi5dICAgCisgICAgICAgWy4uXQogICAgICAgIFRoZSBEQUMgZGF0YSBmb3JtYXQgY2FuIGJlOgogICAgICAgICAgKCMpIDgtYml0IHJpZ2h0IGFsaWdubWVudCB1c2luZyBEQUNfQUxJR05fOEJfUgogICAgICAgICAgKCMpIDEyLWJpdCBsZWZ0IGFsaWdubWVudCB1c2luZyBEQUNfQUxJR05fMTJCX0wKICAgICAgICAgICgjKSAxMi1iaXQgcmlnaHQgYWxpZ25tZW50IHVzaW5nIERBQ19BTElHTl8xMkJfUgotICAKLSAgICAgICAqKiogREFDIGRhdGEgdmFsdWUgdG8gdm9sdGFnZSBjb3JyZXNwb25kZW5jZSAqKiogIAotICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAKLSAgICAgICBbLi5dIAotICAgICAgIFRoZSBhbmFsb2cgb3V0cHV0IHZvbHRhZ2Ugb24gZWFjaCBEQUMgY2hhbm5lbCBwaW4gaXMgZGV0ZXJtaW5lZAotICAgICAgIGJ5IHRoZSBmb2xsb3dpbmcgZXF1YXRpb246IAotICAgICAgIERBQ19PVVR4ID0gVlJFRisgKiBET1IgLyA0MDk1Ci0gICAgICAgd2l0aCAgRE9SIGlzIHRoZSBEYXRhIE91dHB1dCBSZWdpc3RlcgotICAgICAgICAgIFZFRisgaXMgdGhlIGlucHV0IHZvbHRhZ2UgcmVmZXJlbmNlIChyZWZlciB0byB0aGUgZGV2aWNlIGRhdGFzaGVldCkKLSAgICAgICAgZS5nLiBUbyBzZXQgREFDX09VVDEgdG8gMC43ViwgdXNlCi0gICAgICAgICAgQXNzdW1pbmcgdGhhdCBWUkVGKyA9IDMuM1YsIERBQ19PVVQxID0gKDMuMyAqIDg2OCkgLyA0MDk1ID0gMC43VgotICAKLSAgICAgICAqKiogRE1BIHJlcXVlc3RzICAqKioKLSAgICAgICA9PT09PT09PT09PT09PT09PT09PT0KLSAgICAgICBbLi5dICAgIAotICAgICAgIEEgRE1BMSByZXF1ZXN0IGNhbiBiZSBnZW5lcmF0ZWQgd2hlbiBhbiBleHRlcm5hbCB0cmlnZ2VyIChidXQgbm90Ci0gICAgICAgYSBzb2Z0d2FyZSB0cmlnZ2VyKSBvY2N1cnMgaWYgRE1BMSByZXF1ZXN0cyBhcmUgZW5hYmxlZCB1c2luZwotICAgICAgIEhBTF9EQUNfU3RhcnRfRE1BKCkKKworICAgICAgICoqKiBEQUMgZGF0YSB2YWx1ZSB0byB2b2x0YWdlIGNvcnJlc3BvbmRlbmNlICoqKgorICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgIFsuLl0KKyAgICAgICBUaGUgYW5hbG9nIG91dHB1dCB2b2x0YWdlIG9uIGVhY2ggREFDIGNoYW5uZWwgcGluIGlzIGRldGVybWluZWQKKyAgICAgICBieSB0aGUgZm9sbG93aW5nIGVxdWF0aW9uOgorICAgICAgIFsuLl0KKyAgICAgICBEQUNfT1VUeCA9IFZSRUYrICogRE9SIC8gNDA5NQorICAgICAgICgrKSB3aXRoICBET1IgaXMgdGhlIERhdGEgT3V0cHV0IFJlZ2lzdGVyCisgICAgICAgWy4uXQorICAgICAgICAgIFZSRUYrIGlzIHRoZSBpbnB1dCB2b2x0YWdlIHJlZmVyZW5jZSAocmVmZXIgdG8gdGhlIGRldmljZSBkYXRhc2hlZXQpCisgICAgICAgWy4uXQorICAgICAgICBlLmcuIFRvIHNldCBEQUNfT1VUMSB0byAwLjdWLCB1c2UKKyAgICAgICAoKykgQXNzdW1pbmcgdGhhdCBWUkVGKyA9IDMuM1YsIERBQ19PVVQxID0gKDMuMyAqIDg2OCkgLyA0MDk1ID0gMC43VgorCisgICAgICAgKioqIERNQSByZXF1ZXN0cyAqKioKKyAgICAgICA9PT09PT09PT09PT09PT09PT09PT0KKyAgICAgICBbLi5dCisgICAgICAgQSBETUEgcmVxdWVzdCBjYW4gYmUgZ2VuZXJhdGVkIHdoZW4gYW4gZXh0ZXJuYWwgdHJpZ2dlciAoYnV0IG5vdCBhIHNvZnR3YXJlIHRyaWdnZXIpCisgICAgICAgb2NjdXJzIGlmIERNQTEgcmVxdWVzdHMgYXJlIGVuYWJsZWQgdXNpbmcgSEFMX0RBQ19TdGFydF9ETUEoKS4KICAgICAgICBETUExIHJlcXVlc3RzIGFyZSBtYXBwZWQgYXMgZm9sbG93aW5nOgotICAgICAgICAgKCMpIERBQyBjaGFubmVsMSA6IG1hcHBlZCBvbiBETUExIFN0cmVhbTUgY2hhbm5lbDcgd2hpY2ggbXVzdCBiZSAKLSAgICAgICAgICAgICBhbHJlYWR5IGNvbmZpZ3VyZWQKLSAgICAgICAgICgjKSBEQUMgY2hhbm5lbDIgOiBtYXBwZWQgb24gRE1BMSBTdHJlYW02IGNoYW5uZWw3IHdoaWNoIG11c3QgYmUgCi0gICAgICAgICAgICAgYWxyZWFkeSBjb25maWd1cmVkCi0gICAgICAgCi0gICAgLUAtIEZvciBEdWFsIG1vZGUgYW5kIHNwZWNpZmljIHNpZ25hbCAoVHJpYW5nbGUgYW5kIG5vaXNlKSBnZW5lcmF0aW9uIHBsZWFzZSAKLSAgICAgICAgcmVmZXIgdG8gRXh0ZW5zaW9uIEZlYXR1cmVzIERyaXZlciBkZXNjcmlwdGlvbiAgICAgICAgCi0gIAotICAgICAgCisgICAgICAoIykgREFDIGNoYW5uZWwxIG1hcHBlZCBvbiBETUExIFN0cmVhbTUgY2hhbm5lbDcgd2hpY2ggbXVzdCBiZSAKKyAgICAgICAgICBhbHJlYWR5IGNvbmZpZ3VyZWQKKyAgICAgICgjKSBEQUMgY2hhbm5lbDIgbWFwcGVkIG9uIERNQTEgU3RyZWFtNiBjaGFubmVsNyB3aGljaCBtdXN0IGJlIAorICAgICAgICAgIGFscmVhZHkgY29uZmlndXJlZAorCisgICAgIFsuLl0KKyAgICAoQCkgRm9yIER1YWwgbW9kZSBhbmQgc3BlY2lmaWMgc2lnbmFsIChUcmlhbmdsZSBhbmQgbm9pc2UpIGdlbmVyYXRpb24gcGxlYXNlCisgICAgICAgIHJlZmVyIHRvIEV4dGVuZGVkIEZlYXR1cmVzIERyaXZlciBkZXNjcmlwdGlvbgorCiAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgSG93IHRvIHVzZSB0aGlzIGRyaXZlciAjIyMjIwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBbLi5dICAgICAgICAgIAorICAgIFsuLl0KICAgICAgICgrKSBEQUMgQVBCIGNsb2NrIG11c3QgYmUgZW5hYmxlZCB0byBnZXQgd3JpdGUgYWNjZXNzIHRvIERBQwogICAgICAgICAgIHJlZ2lzdGVycyB1c2luZyBIQUxfREFDX0luaXQoKQogICAgICAgKCspIENvbmZpZ3VyZSBEQUNfT1VUeCAoREFDX09VVDE6IFBBNCwgREFDX09VVDI6IFBBNSkgaW4gYW5hbG9nIG1vZGUuCiAgICAgICAoKykgQ29uZmlndXJlIHRoZSBEQUMgY2hhbm5lbCB1c2luZyBIQUxfREFDX0NvbmZpZ0NoYW5uZWwoKSBmdW5jdGlvbi4KLSAgICAgICgrKSBFbmFibGUgdGhlIERBQyBjaGFubmVsIHVzaW5nIEhBTF9EQUNfU3RhcnQoKSBvciBIQUxfREFDX1N0YXJ0X0RNQSBmdW5jdGlvbnMKKyAgICAgICgrKSBFbmFibGUgdGhlIERBQyBjaGFubmVsIHVzaW5nIEhBTF9EQUNfU3RhcnQoKSBvciBIQUxfREFDX1N0YXJ0X0RNQSgpIGZ1bmN0aW9ucy4KKwogCiAgICAgICoqKiBQb2xsaW5nIG1vZGUgSU8gb3BlcmF0aW9uICoqKgogICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICAgWy4uXSAgICAKLSAgICAgICAoKykgU3RhcnQgdGhlIERBQyBwZXJpcGhlcmFsIHVzaW5nIEhBTF9EQUNfU3RhcnQoKSAKKyAgICAgWy4uXQorICAgICAgICgrKSBTdGFydCB0aGUgREFDIHBlcmlwaGVyYWwgdXNpbmcgSEFMX0RBQ19TdGFydCgpCiAgICAgICAgKCspIFRvIHJlYWQgdGhlIERBQyBsYXN0IGRhdGEgb3V0cHV0IHZhbHVlLCB1c2UgdGhlIEhBTF9EQUNfR2V0VmFsdWUoKSBmdW5jdGlvbi4KICAgICAgICAoKykgU3RvcCB0aGUgREFDIHBlcmlwaGVyYWwgdXNpbmcgSEFMX0RBQ19TdG9wKCkKIAotCSAgIAotICAgICAqKiogRE1BIG1vZGUgSU8gb3BlcmF0aW9uICoqKiAgICAKKyAgICAgKioqIERNQSBtb2RlIElPIG9wZXJhdGlvbiAqKioKICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgIFsuLl0gICAgCi0gICAgICAgKCspIFN0YXJ0IHRoZSBEQUMgcGVyaXBoZXJhbCB1c2luZyBIQUxfREFDX1N0YXJ0X0RNQSgpLCBhdCB0aGlzIHN0YWdlIHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxlbmd0aCAKLSAgICAgICAgICAgb2YgZGF0YSB0byBiZSB0cmFuc2ZlcnJlZCBhdCBlYWNoIGVuZCBvZiBjb252ZXJzaW9uIAotICAgICAgICgrKSBBdCBUaGUgZW5kIG9mIGRhdGEgdHJhbnNmZXIgSEFMX0RBQ19Db252Q3BsdENhbGxiYWNrQ2gxKClvciBIQUxfREFDX0NvbnZDcGx0Q2FsbGJhY2tDaDIoKSAgCi0gICAgICAgICAgIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGFuZCB1c2VyIGNhbiBhZGQgaGlzIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgZnVuY3Rpb24gcG9pbnRlciAKLSAgICAgICAgICAgSEFMX0RBQ19Db252Q3BsdENhbGxiYWNrQ2gxIG9yIEhBTF9EQUNfQ29udkNwbHRDYWxsYmFja0NoMgotICAgICAgICgrKSBJbiBjYXNlIG9mIHRyYW5zZmVyIEVycm9yLCBIQUxfREFDX0Vycm9yQ2FsbGJhY2tDaDEoKSBmdW5jdGlvbiBpcyBleGVjdXRlZCBhbmQgdXNlciBjYW4gCisgICAgIFsuLl0KKyAgICAgICAoKykgU3RhcnQgdGhlIERBQyBwZXJpcGhlcmFsIHVzaW5nIEhBTF9EQUNfU3RhcnRfRE1BKCksIGF0IHRoaXMgc3RhZ2UgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGVuZ3RoCisgICAgICAgICAgIG9mIGRhdGEgdG8gYmUgdHJhbnNmZXJyZWQgYXQgZWFjaCBlbmQgb2YgY29udmVyc2lvbgorICAgICAgICAgICBGaXJzdCBpc3N1ZWQgdHJpZ2dlciB3aWxsIHN0YXJ0IHRoZSBjb252ZXJzaW9uIG9mIHRoZSB2YWx1ZSBwcmV2aW91c2x5IHNldCBieSBIQUxfREFDX1NldFZhbHVlKCkuCisgICAgICAgKCspIEF0IHRoZSBtaWRkbGUgb2YgZGF0YSB0cmFuc2ZlciBIQUxfREFDX0NvbnZIYWxmQ3BsdENhbGxiYWNrQ2gxKCkgb3IgSEFMX0RBQ0V4X0NvbnZIYWxmQ3BsdENhbGxiYWNrQ2gyKCkKKyAgICAgICAgICAgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgYW5kIHVzZXIgY2FuIGFkZCBoaXMgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyCisgICAgICAgICAgIEhBTF9EQUNfQ29udkhhbGZDcGx0Q2FsbGJhY2tDaDEoKSBvciBIQUxfREFDRXhfQ29udkhhbGZDcGx0Q2FsbGJhY2tDaDIoKQorICAgICAgICgrKSBBdCBUaGUgZW5kIG9mIGRhdGEgdHJhbnNmZXIgSEFMX0RBQ19Db252Q3BsdENhbGxiYWNrQ2gxKCkgb3IgSEFMX0RBQ0V4X0NvbnZIYWxmQ3BsdENhbGxiYWNrQ2gyKCkKKyAgICAgICAgICAgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgYW5kIHVzZXIgY2FuIGFkZCBoaXMgb3duIGNvZGUgYnkgY3VzdG9taXphdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVyCisgICAgICAgICAgIEhBTF9EQUNfQ29udkNwbHRDYWxsYmFja0NoMSgpIG9yIEhBTF9EQUNFeF9Db252SGFsZkNwbHRDYWxsYmFja0NoMigpCisgICAgICAgKCspIEluIGNhc2Ugb2YgdHJhbnNmZXIgRXJyb3IsIEhBTF9EQUNfRXJyb3JDYWxsYmFja0NoMSgpIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGFuZCB1c2VyIGNhbgogICAgICAgICAgICAgYWRkIGhpcyBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgSEFMX0RBQ19FcnJvckNhbGxiYWNrQ2gxCisgICAgICAgKCspIEluIGNhc2Ugb2YgRE1BIHVuZGVycnVuLCBEQUMgaW50ZXJydXB0aW9uIHRyaWdnZXJzIGFuZCBleGVjdXRlIGludGVybmFsIGZ1bmN0aW9uIEhBTF9EQUNfSVJRSGFuZGxlci4KKyAgICAgICAgICAgSEFMX0RBQ19ETUFVbmRlcnJ1bkNhbGxiYWNrQ2gxKCkgb3IgSEFMX0RBQ0V4X0RNQVVuZGVycnVuQ2FsbGJhY2tDaDIoKQorICAgICAgICAgICBmdW5jdGlvbiBpcyBleGVjdXRlZCBhbmQgdXNlciBjYW4gYWRkIGhpcyBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIKKyAgICAgICAgICAgSEFMX0RBQ19ETUFVbmRlcnJ1bkNhbGxiYWNrQ2gxKCkgb3IgSEFMX0RBQ0V4X0RNQVVuZGVycnVuQ2FsbGJhY2tDaDIoKSBhbmQKKyAgICAgICAgICAgYWRkIGhpcyBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGZ1bmN0aW9uIHBvaW50ZXIgSEFMX0RBQ19FcnJvckNhbGxiYWNrQ2gxKCkKICAgICAgICAoKykgU3RvcCB0aGUgREFDIHBlcmlwaGVyYWwgdXNpbmcgSEFMX0RBQ19TdG9wX0RNQSgpCiAKICAgICAqKiogQ2FsbGJhY2sgcmVnaXN0cmF0aW9uICoqKgpAQCAtMTc4LDIxICsxODgsMjEgQEAKICAgICAgIFdoZW4gVGhlIGNvbXBpbGF0aW9uIGRlZmluZSBVU0VfSEFMX0RBQ19SRUdJU1RFUl9DQUxMQkFDS1MgaXMgc2V0IHRvIDAgb3IKICAgICAgIG5vdCBkZWZpbmVkLCB0aGUgY2FsbGJhY2sgcmVnaXN0ZXJpbmcgZmVhdHVyZSBpcyBub3QgYXZhaWxhYmxlCiAgICAgICBhbmQgd2VhayAoc3VyY2hhcmdlZCkgY2FsbGJhY2tzIGFyZSB1c2VkLgotICAgICAgICAgICAgICAgICAgICAKKwogICAgICAqKiogREFDIEhBTCBkcml2ZXIgbWFjcm9zIGxpc3QgKioqCi0gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAKKyAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgIFsuLl0KICAgICAgICBCZWxvdyB0aGUgbGlzdCBvZiBtb3N0IHVzZWQgbWFjcm9zIGluIERBQyBIQUwgZHJpdmVyLgotICAgICAgIAorCiAgICAgICAoKykgX19IQUxfREFDX0VOQUJMRSA6IEVuYWJsZSB0aGUgREFDIHBlcmlwaGVyYWwKICAgICAgICgrKSBfX0hBTF9EQUNfRElTQUJMRSA6IERpc2FibGUgdGhlIERBQyBwZXJpcGhlcmFsCiAgICAgICAoKykgX19IQUxfREFDX0NMRUFSX0ZMQUc6IENsZWFyIHRoZSBEQUMncyBwZW5kaW5nIGZsYWdzCiAgICAgICAoKykgX19IQUxfREFDX0dFVF9GTEFHOiBHZXQgdGhlIHNlbGVjdGVkIERBQydzIGZsYWcgc3RhdHVzCi0gICAgICAKKwogICAgICBbLi5dCi0gICAgICAoQCkgWW91IGNhbiByZWZlciB0byB0aGUgREFDIEhBTCBkcml2ZXIgaGVhZGVyIGZpbGUgZm9yIG1vcmUgdXNlZnVsIG1hY3JvcyAgCi0gICAKLSBAZW5kdmVyYmF0aW0gICAgCisgICAgICAoQCkgWW91IGNhbiByZWZlciB0byB0aGUgREFDIEhBTCBkcml2ZXIgaGVhZGVyIGZpbGUgZm9yIG1vcmUgdXNlZnVsIG1hY3JvcworCitAZW5kdmVyYmF0aW0KICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICogQGF0dGVudGlvbgogICAqCkBAIC0yMDUsOCArMjE1LDcgQEAKICAgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZQogICAqCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAqLyAKLQorICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogI2luY2x1ZGUgInN0bTMyZjd4eF9oYWwuaCIKQEAgLTIxNSw2NyArMjI0LDYwIEBACiAgICogQHsKICAgKi8KIAorI2lmZGVmIEhBTF9EQUNfTU9EVUxFX0VOQUJMRUQKKyNpZiBkZWZpbmVkKERBQykKKwogLyoqIEBkZWZncm91cCBEQUMgREFDCiAgICogQGJyaWVmIERBQyBkcml2ZXIgbW9kdWxlcwogICAqIEB7Ci0gICovIAotCi0jaWZkZWYgSEFMX0RBQ19NT0RVTEVfRU5BQkxFRAorICAqLwogCiAvKiBQcml2YXRlIHR5cGVkZWYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogUHJpdmF0ZSBkZWZpbmUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qIFByaXZhdGUgY29uc3RhbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBQcml2YXRlIG1hY3JvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogUHJpdmF0ZSB2YXJpYWJsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qKiBAYWRkdG9ncm91cCBEQUNfUHJpdmF0ZV9GdW5jdGlvbnMKLSAgKiBAewotICAqLwogLyogUHJpdmF0ZSBmdW5jdGlvbiBwcm90b3R5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLXN0YXRpYyB2b2lkIERBQ19ETUFDb252Q3BsdENoMShETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7Ci1zdGF0aWMgdm9pZCBEQUNfRE1BRXJyb3JDaDEoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpOwotc3RhdGljIHZvaWQgREFDX0RNQUhhbGZDb252Q3BsdENoMShETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7IAotLyoqCi0gICogQH0KLSAgKi8KKy8qIEV4cG9ydGVkIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAotLyogRXhwb3J0ZWQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qKiBAZGVmZ3JvdXAgREFDX0V4cG9ydGVkX0Z1bmN0aW9ucyBEQUMgRXhwb3J0ZWQgRnVuY3Rpb25zCiAgICogQHsKICAgKi8KIAotLyoqIEBkZWZncm91cCBEQUNfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMSBJbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIAotICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMgCi0gKgotQHZlcmJhdGltICAgIAorLyoqIEBkZWZncm91cCBEQUNfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMSBJbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zCisgICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMKKyAgKgorQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAjIyMjIyBJbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zICMjIyMjCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIFsuLl0gIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBmdW5jdGlvbnMgYWxsb3dpbmcgdG86Ci0gICAgICAoKykgSW5pdGlhbGl6ZSBhbmQgY29uZmlndXJlIHRoZSBEQUMuIAotICAgICAgKCspIERlLWluaXRpYWxpemUgdGhlIERBQy4gCi0gICAgICAgICAKKyAgICAgICgrKSBJbml0aWFsaXplIGFuZCBjb25maWd1cmUgdGhlIERBQy4KKyAgICAgICgrKSBEZS1pbml0aWFsaXplIHRoZSBEQUMuCisKIEBlbmR2ZXJiYXRpbQogICAqIEB7CiAgICovCiAKIC8qKgotICAqIEBicmllZiAgSW5pdGlhbGl6ZXMgdGhlIERBQyBwZXJpcGhlcmFsIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcnMKLSAgKiAgICAgICAgIGluIHRoZSBEQUNfSW5pdFN0cnVjdC4KLSAgKiBAcGFyYW0gIGhkYWM6IHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucworICAqIEBicmllZiAgSW5pdGlhbGl6ZSB0aGUgREFDIHBlcmlwaGVyYWwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVycworICAqICAgICAgICAgaW4gdGhlIERBQ19Jbml0U3RydWN0IGFuZCBpbml0aWFsaXplIHRoZSBhc3NvY2lhdGVkIGhhbmRsZS4KKyAgKiBAcGFyYW0gIGhkYWMgcG9pbnRlciB0byBhIERBQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBEQUMuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDX0luaXQoREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMpCi17IAorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RBQ19Jbml0KERBQ19IYW5kbGVUeXBlRGVmICpoZGFjKQorewogICAvKiBDaGVjayBEQUMgaGFuZGxlICovCi0gIGlmKGhkYWMgPT0gTlVMTCkKKyAgaWYgKGhkYWMgPT0gTlVMTCkKICAgewotICAgICByZXR1cm4gSEFMX0VSUk9SOworICAgIHJldHVybiBIQUxfRVJST1I7CiAgIH0KICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX0RBQ19BTExfSU5TVEFOQ0UoaGRhYy0+SW5zdGFuY2UpKTsKLSAgCi0gIGlmKGhkYWMtPlN0YXRlID09IEhBTF9EQUNfU1RBVEVfUkVTRVQpCi0gIHsgCisKKyAgaWYgKGhkYWMtPlN0YXRlID09IEhBTF9EQUNfU1RBVEVfUkVTRVQpCisgIHsKICNpZiAoVVNFX0hBTF9EQUNfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCiAgICAgLyogSW5pdCB0aGUgREFDIENhbGxiYWNrIHNldHRpbmdzICovCiAgICAgaGRhYy0+Q29udkNwbHRDYWxsYmFja0NoMSAgICAgICAgICAgPSBIQUxfREFDX0NvbnZDcGx0Q2FsbGJhY2tDaDE7CkBAIC0yODgsMTMgKzI5MCwxNSBAQAogICAgIGhkYWMtPkVycm9yQ2FsbGJhY2tDaDIgICAgICAgICAgICAgID0gSEFMX0RBQ0V4X0Vycm9yQ2FsbGJhY2tDaDI7CiAgICAgaGRhYy0+RE1BVW5kZXJydW5DYWxsYmFja0NoMiAgICAgICAgPSBIQUxfREFDRXhfRE1BVW5kZXJydW5DYWxsYmFja0NoMjsKIAotICAgIGlmKGhkYWMtPk1zcEluaXRDYWxsYmFjayA9PSBOVUxMKQorICAgIGlmIChoZGFjLT5Nc3BJbml0Q2FsbGJhY2sgPT0gTlVMTCkKICAgICB7Ci0gICAgICBoZGFjLT5Nc3BJbml0Q2FsbGJhY2sgICAgICAgICAgICAgICA9IEhBTF9EQUNfTXNwSW5pdDsKKyAgICAgIGhkYWMtPk1zcEluaXRDYWxsYmFjayAgICAgICAgICAgICA9IEhBTF9EQUNfTXNwSW5pdDsKICAgICB9CiAjZW5kaWYgLyogVVNFX0hBTF9EQUNfUkVHSVNURVJfQ0FMTEJBQ0tTICovCisKICAgICAvKiBBbGxvY2F0ZSBsb2NrIHJlc291cmNlIGFuZCBpbml0aWFsaXplIGl0ICovCi0gICAgaGRhYy0+TG9jayA9IEhBTF9VTkxPQ0tFRDsgCisgICAgaGRhYy0+TG9jayA9IEhBTF9VTkxPQ0tFRDsKKwogI2lmIChVU0VfSEFMX0RBQ19SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKICAgICAvKiBJbml0IHRoZSBsb3cgbGV2ZWwgaGFyZHdhcmUgKi8KICAgICBoZGFjLT5Nc3BJbml0Q2FsbGJhY2soaGRhYyk7CkBAIC0zMDMsMzIgKzMwNywzMiBAQAogICAgIEhBTF9EQUNfTXNwSW5pdChoZGFjKTsKICNlbmRpZiAvKiBVU0VfSEFMX0RBQ19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KICAgfQotICAKKwogICAvKiBJbml0aWFsaXplIHRoZSBEQUMgc3RhdGUqLwogICBoZGFjLT5TdGF0ZSA9IEhBTF9EQUNfU1RBVEVfQlVTWTsKLSAgCisKICAgLyogU2V0IERBQyBlcnJvciBjb2RlIHRvIG5vbmUgKi8KICAgaGRhYy0+RXJyb3JDb2RlID0gSEFMX0RBQ19FUlJPUl9OT05FOwotICAKKwogICAvKiBJbml0aWFsaXplIHRoZSBEQUMgc3RhdGUqLwogICBoZGFjLT5TdGF0ZSA9IEhBTF9EQUNfU1RBVEVfUkVBRFk7Ci0gIAorCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KICAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCi0gICogQGJyaWVmICBEZWluaXRpYWxpemVzIHRoZSBEQUMgcGVyaXBoZXJhbCByZWdpc3RlcnMgdG8gdGhlaXIgZGVmYXVsdCByZXNldCB2YWx1ZXMuCi0gICogQHBhcmFtICBoZGFjOiBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiBAYnJpZWYgIERlaW5pdGlhbGl6ZSB0aGUgREFDIHBlcmlwaGVyYWwgcmVnaXN0ZXJzIHRvIHRoZWlyIGRlZmF1bHQgcmVzZXQgdmFsdWVzLgorICAqIEBwYXJhbSAgaGRhYyBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIERBQy4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNfRGVJbml0KERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RBQ19EZUluaXQoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpCiB7CiAgIC8qIENoZWNrIERBQyBoYW5kbGUgKi8KLSAgaWYoaGRhYyA9PSBOVUxMKQorICBpZiAoaGRhYyA9PSBOVUxMKQogICB7Ci0gICAgIHJldHVybiBIQUxfRVJST1I7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQogCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCkBAIC0zMzgsNyArMzQyLDcgQEAKICAgaGRhYy0+U3RhdGUgPSBIQUxfREFDX1NUQVRFX0JVU1k7CiAKICNpZiAoVVNFX0hBTF9EQUNfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCi0gIGlmKGhkYWMtPk1zcERlSW5pdENhbGxiYWNrID09IE5VTEwpCisgIGlmIChoZGFjLT5Nc3BEZUluaXRDYWxsYmFjayA9PSBOVUxMKQogICB7CiAgICAgaGRhYy0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfREFDX01zcERlSW5pdDsKICAgfQpAQCAtMzYzLDM1ICszNjcsMzUgQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBJbml0aWFsaXplcyB0aGUgREFDIE1TUC4KLSAgKiBAcGFyYW0gIGhkYWM6IHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucworICAqIEBicmllZiAgSW5pdGlhbGl6ZSB0aGUgREFDIE1TUC4KKyAgKiBAcGFyYW0gIGhkYWMgcG9pbnRlciB0byBhIERBQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBEQUMuCiAgICogQHJldHZhbCBOb25lCiAgICovCi1fX3dlYWsgdm9pZCBIQUxfREFDX01zcEluaXQoREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMpCitfX3dlYWsgdm9pZCBIQUxfREFDX01zcEluaXQoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpCiB7CiAgIC8qIFByZXZlbnQgdW51c2VkIGFyZ3VtZW50KHMpIGNvbXBpbGF0aW9uIHdhcm5pbmcgKi8KICAgVU5VU0VEKGhkYWMpOwotIAotICAvKiBOT1RFIDogVGhpcyBmdW5jdGlvbiBTaG91bGQgbm90IGJlIG1vZGlmaWVkLCB3aGVuIHRoZSBjYWxsYmFjayBpcyBuZWVkZWQsCisKKyAgLyogTk9URSA6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAogICAgICAgICAgICAgdGhlIEhBTF9EQUNfTXNwSW5pdCBjb3VsZCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgdXNlciBmaWxlCi0gICAqLyAKKyAgICovCiB9CiAKIC8qKgotICAqIEBicmllZiAgRGVJbml0aWFsaXplcyB0aGUgREFDIE1TUC4KLSAgKiBAcGFyYW0gIGhkYWM6IHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwotICAqICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgREFDLiAgCisgICogQGJyaWVmICBEZUluaXRpYWxpemUgdGhlIERBQyBNU1AuCisgICogQHBhcmFtICBoZGFjIHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucworICAqICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgREFDLgogICAqIEByZXR2YWwgTm9uZQogICAqLwotX193ZWFrIHZvaWQgSEFMX0RBQ19Nc3BEZUluaXQoREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMpCitfX3dlYWsgdm9pZCBIQUxfREFDX01zcERlSW5pdChEQUNfSGFuZGxlVHlwZURlZiAqaGRhYykKIHsKICAgLyogUHJldmVudCB1bnVzZWQgYXJndW1lbnQocykgY29tcGlsYXRpb24gd2FybmluZyAqLwogICBVTlVTRUQoaGRhYyk7Ci0gCi0gIC8qIE5PVEUgOiBUaGlzIGZ1bmN0aW9uIFNob3VsZCBub3QgYmUgbW9kaWZpZWQsIHdoZW4gdGhlIGNhbGxiYWNrIGlzIG5lZWRlZCwKKworICAvKiBOT1RFIDogVGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGJlIG1vZGlmaWVkLCB3aGVuIHRoZSBjYWxsYmFjayBpcyBuZWVkZWQsCiAgICAgICAgICAgICB0aGUgSEFMX0RBQ19Nc3BEZUluaXQgY291bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIHVzZXIgZmlsZQotICAgKi8gCisgICAqLwogfQogCiAvKioKQEAgLTM5OSwxMzkgKzQwMywxMzcgQEAKICAgKi8KIAogLyoqIEBkZWZncm91cCBEQUNfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMiBJTyBvcGVyYXRpb24gZnVuY3Rpb25zCi0gKiAgQGJyaWVmICAgIElPIG9wZXJhdGlvbiBmdW5jdGlvbnMgCi0gKgotQHZlcmJhdGltICAgCisgICogIEBicmllZiAgICBJTyBvcGVyYXRpb24gZnVuY3Rpb25zCisgICoKK0B2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAjIyMjIyBJTyBvcGVyYXRpb24gZnVuY3Rpb25zICMjIyMjCi0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIFsuLl0gIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBmdW5jdGlvbnMgYWxsb3dpbmcgdG86CiAgICAgICAoKykgU3RhcnQgY29udmVyc2lvbi4KICAgICAgICgrKSBTdG9wIGNvbnZlcnNpb24uCiAgICAgICAoKykgU3RhcnQgY29udmVyc2lvbiBhbmQgZW5hYmxlIERNQSB0cmFuc2Zlci4KICAgICAgICgrKSBTdG9wIGNvbnZlcnNpb24gYW5kIGRpc2FibGUgRE1BIHRyYW5zZmVyLgogICAgICAgKCspIEdldCByZXN1bHQgb2YgY29udmVyc2lvbi4KLSAgICAgICAgICAgICAgICAgICAgIAorCiBAZW5kdmVyYmF0aW0KICAgKiBAewogICAqLwogCiAvKioKICAgKiBAYnJpZWYgIEVuYWJsZXMgREFDIGFuZCBzdGFydHMgY29udmVyc2lvbiBvZiBjaGFubmVsLgotICAqIEBwYXJhbSAgaGRhYzogcG9pbnRlciB0byBhIERBQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCisgICogQHBhcmFtICBoZGFjIHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgREFDLgotICAqIEBwYXJhbSAgQ2hhbm5lbDogVGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLiAKKyAgKiBAcGFyYW0gIENoYW5uZWwgVGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLgogICAqICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAgICogICAgICAgICAgICBAYXJnIERBQ19DSEFOTkVMXzE6IERBQyBDaGFubmVsMSBzZWxlY3RlZAogICAqICAgICAgICAgICAgQGFyZyBEQUNfQ0hBTk5FTF8yOiBEQUMgQ2hhbm5lbDIgc2VsZWN0ZWQKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNfU3RhcnQoREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMsIHVpbnQzMl90IENoYW5uZWwpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDX1N0YXJ0KERBQ19IYW5kbGVUeXBlRGVmICpoZGFjLCB1aW50MzJfdCBDaGFubmVsKQogewotICB1aW50MzJfdCB0bXAxID0gMCwgdG1wMiA9IDA7Ci0gIAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfREFDX0NIQU5ORUwoQ2hhbm5lbCkpOwotICAKKwogICAvKiBQcm9jZXNzIGxvY2tlZCAqLwogICBfX0hBTF9MT0NLKGhkYWMpOwotICAKKwogICAvKiBDaGFuZ2UgREFDIHN0YXRlICovCiAgIGhkYWMtPlN0YXRlID0gSEFMX0RBQ19TVEFURV9CVVNZOwotICAKKwogICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgX19IQUxfREFDX0VOQUJMRShoZGFjLCBDaGFubmVsKTsKLSAgCi0gIGlmKENoYW5uZWwgPT0gREFDX0NIQU5ORUxfMSkKKworICBpZiAoQ2hhbm5lbCA9PSBEQUNfQ0hBTk5FTF8xKQogICB7Ci0gICAgdG1wMSA9IGhkYWMtPkluc3RhbmNlLT5DUiAmIERBQ19DUl9URU4xOwotICAgIHRtcDIgPSBoZGFjLT5JbnN0YW5jZS0+Q1IgJiBEQUNfQ1JfVFNFTDE7CiAgICAgLyogQ2hlY2sgaWYgc29mdHdhcmUgdHJpZ2dlciBlbmFibGVkICovCi0gICAgaWYoKHRtcDEgPT0gIERBQ19DUl9URU4xKSAmJiAodG1wMiA9PSAgREFDX0NSX1RTRUwxKSkKKyAgICBpZiAoKGhkYWMtPkluc3RhbmNlLT5DUiAmIChEQUNfQ1JfVEVOMSB8IERBQ19DUl9UU0VMMSkpID09IERBQ19UUklHR0VSX1NPRlRXQVJFKQogICAgIHsKICAgICAgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgREFDIHNvZnR3YXJlIGNvbnZlcnNpb24gKi8KLSAgICAgIGhkYWMtPkluc3RhbmNlLT5TV1RSSUdSIHw9ICh1aW50MzJfdClEQUNfU1dUUklHUl9TV1RSSUcxOworICAgICAgU0VUX0JJVChoZGFjLT5JbnN0YW5jZS0+U1dUUklHUiwgREFDX1NXVFJJR1JfU1dUUklHMSk7CiAgICAgfQogICB9CisKICAgZWxzZQogICB7Ci0gICAgdG1wMSA9IGhkYWMtPkluc3RhbmNlLT5DUiAmIERBQ19DUl9URU4yOwotICAgIHRtcDIgPSBoZGFjLT5JbnN0YW5jZS0+Q1IgJiBEQUNfQ1JfVFNFTDI7ICAgIAogICAgIC8qIENoZWNrIGlmIHNvZnR3YXJlIHRyaWdnZXIgZW5hYmxlZCAqLwotICAgIGlmKCh0bXAxID09IERBQ19DUl9URU4yKSAmJiAodG1wMiA9PSBEQUNfQ1JfVFNFTDIpKQorICAgIGlmICgoaGRhYy0+SW5zdGFuY2UtPkNSICYgKERBQ19DUl9URU4yIHwgREFDX0NSX1RTRUwyKSkgPT0gKERBQ19UUklHR0VSX1NPRlRXQVJFIDw8IChDaGFubmVsICYgMHgxMFVMKSkpCiAgICAgewogICAgICAgLyogRW5hYmxlIHRoZSBzZWxlY3RlZCBEQUMgc29mdHdhcmUgY29udmVyc2lvbiovCi0gICAgICBoZGFjLT5JbnN0YW5jZS0+U1dUUklHUiB8PSAodWludDMyX3QpREFDX1NXVFJJR1JfU1dUUklHMjsKKyAgICAgIFNFVF9CSVQoaGRhYy0+SW5zdGFuY2UtPlNXVFJJR1IsIERBQ19TV1RSSUdSX1NXVFJJRzIpOwogICAgIH0KICAgfQotICAKKworCiAgIC8qIENoYW5nZSBEQUMgc3RhdGUgKi8KICAgaGRhYy0+U3RhdGUgPSBIQUxfREFDX1NUQVRFX1JFQURZOwotICAKKwogICAvKiBQcm9jZXNzIHVubG9ja2VkICovCiAgIF9fSEFMX1VOTE9DSyhoZGFjKTsKLSAgICAKKwogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CiB9CiAKIC8qKgogICAqIEBicmllZiAgRGlzYWJsZXMgREFDIGFuZCBzdG9wIGNvbnZlcnNpb24gb2YgY2hhbm5lbC4KLSAgKiBAcGFyYW0gIGhkYWM6IHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucworICAqIEBwYXJhbSAgaGRhYyBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIERBQy4KLSAgKiBAcGFyYW0gIENoYW5uZWw6IFRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbC4gCisgICogQHBhcmFtICBDaGFubmVsIFRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbC4KICAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgogICAqICAgICAgICAgICAgQGFyZyBEQUNfQ0hBTk5FTF8xOiBEQUMgQ2hhbm5lbDEgc2VsZWN0ZWQKLSAgKiAgICAgICAgICAgIEBhcmcgREFDX0NIQU5ORUxfMjogREFDIENoYW5uZWwyIHNlbGVjdGVkICAKKyAgKiAgICAgICAgICAgIEBhcmcgREFDX0NIQU5ORUxfMjogREFDIENoYW5uZWwyIHNlbGVjdGVkCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDX1N0b3AoREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMsIHVpbnQzMl90IENoYW5uZWwpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDX1N0b3AoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMsIHVpbnQzMl90IENoYW5uZWwpCiB7CiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19EQUNfQ0hBTk5FTChDaGFubmVsKSk7Ci0gIAorCiAgIC8qIERpc2FibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgX19IQUxfREFDX0RJU0FCTEUoaGRhYywgQ2hhbm5lbCk7Ci0gIAorCiAgIC8qIENoYW5nZSBEQUMgc3RhdGUgKi8KICAgaGRhYy0+U3RhdGUgPSBIQUxfREFDX1NUQVRFX1JFQURZOwotICAKKwogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CiB9CiAKIC8qKgogICAqIEBicmllZiAgRW5hYmxlcyBEQUMgYW5kIHN0YXJ0cyBjb252ZXJzaW9uIG9mIGNoYW5uZWwuCi0gICogQHBhcmFtICBoZGFjOiBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiBAcGFyYW0gIGhkYWMgcG9pbnRlciB0byBhIERBQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBEQUMuCi0gICogQHBhcmFtICBDaGFubmVsOiBUaGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwuIAorICAqIEBwYXJhbSAgQ2hhbm5lbCBUaGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwuCiAgICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKICAgKiAgICAgICAgICAgIEBhcmcgREFDX0NIQU5ORUxfMTogREFDIENoYW5uZWwxIHNlbGVjdGVkCiAgICogICAgICAgICAgICBAYXJnIERBQ19DSEFOTkVMXzI6IERBQyBDaGFubmVsMiBzZWxlY3RlZAotICAqIEBwYXJhbSAgcERhdGE6IFRoZSBTb3VyY2UgbWVtb3J5IEJ1ZmZlciBhZGRyZXNzLgotICAqIEBwYXJhbSAgTGVuZ3RoOiBUaGUgbGVuZ3RoIG9mIGRhdGEgdG8gYmUgdHJhbnNmZXJyZWQgZnJvbSBtZW1vcnkgdG8gREFDIHBlcmlwaGVyYWwKLSAgKiBAcGFyYW0gIEFsaWdubWVudDogU3BlY2lmaWVzIHRoZSBkYXRhIGFsaWdubWVudCBmb3IgREFDIGNoYW5uZWwuCisgICogQHBhcmFtICBwRGF0YSBUaGUgc291cmNlIEJ1ZmZlciBhZGRyZXNzLgorICAqIEBwYXJhbSAgTGVuZ3RoIFRoZSBsZW5ndGggb2YgZGF0YSB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIG1lbW9yeSB0byBEQUMgcGVyaXBoZXJhbAorICAqIEBwYXJhbSAgQWxpZ25tZW50IFNwZWNpZmllcyB0aGUgZGF0YSBhbGlnbm1lbnQgZm9yIERBQyBjaGFubmVsLgogICAqICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAgICogICAgICAgICAgICBAYXJnIERBQ19BTElHTl84Ql9SOiA4Yml0IHJpZ2h0IGRhdGEgYWxpZ25tZW50IHNlbGVjdGVkCiAgICogICAgICAgICAgICBAYXJnIERBQ19BTElHTl8xMkJfTDogMTJiaXQgbGVmdCBkYXRhIGFsaWdubWVudCBzZWxlY3RlZAogICAqICAgICAgICAgICAgQGFyZyBEQUNfQUxJR05fMTJCX1I6IDEyYml0IHJpZ2h0IGRhdGEgYWxpZ25tZW50IHNlbGVjdGVkCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDX1N0YXJ0X0RNQShEQUNfSGFuZGxlVHlwZURlZiogaGRhYywgdWludDMyX3QgQ2hhbm5lbCwgdWludDMyX3QqIHBEYXRhLCB1aW50MzJfdCBMZW5ndGgsIHVpbnQzMl90IEFsaWdubWVudCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNfU3RhcnRfRE1BKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjLCB1aW50MzJfdCBDaGFubmVsLCB1aW50MzJfdCAqcERhdGEsIHVpbnQzMl90IExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEFsaWdubWVudCkKIHsKLSAgdWludDMyX3QgdG1wcmVnID0gMDsKLSAgICAKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX0VSUk9SOworICB1aW50MzJfdCB0bXByZWcgPSAwVTsKKwogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfREFDX0NIQU5ORUwoQ2hhbm5lbCkpOwogICBhc3NlcnRfcGFyYW0oSVNfREFDX0FMSUdOKEFsaWdubWVudCkpOwotICAKKwogICAvKiBQcm9jZXNzIGxvY2tlZCAqLwogICBfX0hBTF9MT0NLKGhkYWMpOwotICAKKwogICAvKiBDaGFuZ2UgREFDIHN0YXRlICovCiAgIGhkYWMtPlN0YXRlID0gSEFMX0RBQ19TVEFURV9CVVNZOwogCi0gIGlmKENoYW5uZWwgPT0gREFDX0NIQU5ORUxfMSkKKyAgaWYgKENoYW5uZWwgPT0gREFDX0NIQU5ORUxfMSkKICAgewogICAgIC8qIFNldCB0aGUgRE1BIHRyYW5zZmVyIGNvbXBsZXRlIGNhbGxiYWNrIGZvciBjaGFubmVsMSAqLwogICAgIGhkYWMtPkRNQV9IYW5kbGUxLT5YZmVyQ3BsdENhbGxiYWNrID0gREFDX0RNQUNvbnZDcGx0Q2gxOwpAQCAtNTQzLDEwICs1NDUsMTAgQEAKICAgICBoZGFjLT5ETUFfSGFuZGxlMS0+WGZlckVycm9yQ2FsbGJhY2sgPSBEQUNfRE1BRXJyb3JDaDE7CiAKICAgICAvKiBFbmFibGUgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsMSBETUEgcmVxdWVzdCAqLwotICAgIGhkYWMtPkluc3RhbmNlLT5DUiB8PSBEQUNfQ1JfRE1BRU4xOwotICAgIAorICAgIFNFVF9CSVQoaGRhYy0+SW5zdGFuY2UtPkNSLCBEQUNfQ1JfRE1BRU4xKTsKKwogICAgIC8qIENhc2Ugb2YgdXNlIG9mIGNoYW5uZWwgMSAqLwotICAgIHN3aXRjaChBbGlnbm1lbnQpCisgICAgc3dpdGNoIChBbGlnbm1lbnQpCiAgICAgewogICAgICAgY2FzZSBEQUNfQUxJR05fMTJCX1I6CiAgICAgICAgIC8qIEdldCBESFIxMlIxIGFkZHJlc3MgKi8KQEAgLTU2NCw2ICs1NjYsNyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgIH0KKwogICBlbHNlCiAgIHsKICAgICAvKiBTZXQgdGhlIERNQSB0cmFuc2ZlciBjb21wbGV0ZSBjYWxsYmFjayBmb3IgY2hhbm5lbDIgKi8KQEAgLTU3NiwxMCArNTc5LDEwIEBACiAgICAgaGRhYy0+RE1BX0hhbmRsZTItPlhmZXJFcnJvckNhbGxiYWNrID0gREFDX0RNQUVycm9yQ2gyOwogCiAgICAgLyogRW5hYmxlIHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbDIgRE1BIHJlcXVlc3QgKi8KLSAgICBoZGFjLT5JbnN0YW5jZS0+Q1IgfD0gREFDX0NSX0RNQUVOMjsKKyAgICBTRVRfQklUKGhkYWMtPkluc3RhbmNlLT5DUiwgREFDX0NSX0RNQUVOMik7CiAKICAgICAvKiBDYXNlIG9mIHVzZSBvZiBjaGFubmVsIDIgKi8KLSAgICBzd2l0Y2goQWxpZ25tZW50KQorICAgIHN3aXRjaCAoQWxpZ25tZW50KQogICAgIHsKICAgICAgIGNhc2UgREFDX0FMSUdOXzEyQl9SOgogICAgICAgICAvKiBHZXQgREhSMTJSMiBhZGRyZXNzICovCkBAIC01OTcsNzkgKzYwMCwzOSBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgIH0KLSAgCisKKwogICAvKiBFbmFibGUgdGhlIERNQSBTdHJlYW0gKi8KLSAgaWYoQ2hhbm5lbCA9PSBEQUNfQ0hBTk5FTF8xKQorICBpZiAoQ2hhbm5lbCA9PSBEQUNfQ0hBTk5FTF8xKQogICB7CiAgICAgLyogRW5hYmxlIHRoZSBEQUMgRE1BIHVuZGVycnVuIGludGVycnVwdCAqLwogICAgIF9fSEFMX0RBQ19FTkFCTEVfSVQoaGRhYywgREFDX0lUX0RNQVVEUjEpOwotICAgIAorCiAgICAgLyogRW5hYmxlIHRoZSBETUEgU3RyZWFtICovCi0gICAgSEFMX0RNQV9TdGFydF9JVChoZGFjLT5ETUFfSGFuZGxlMSwgKHVpbnQzMl90KXBEYXRhLCB0bXByZWcsIExlbmd0aCk7Ci0gIH0gCisgICAgc3RhdHVzID0gSEFMX0RNQV9TdGFydF9JVChoZGFjLT5ETUFfSGFuZGxlMSwgKHVpbnQzMl90KXBEYXRhLCB0bXByZWcsIExlbmd0aCk7CisgIH0KKwogICBlbHNlCiAgIHsKICAgICAvKiBFbmFibGUgdGhlIERBQyBETUEgdW5kZXJydW4gaW50ZXJydXB0ICovCiAgICAgX19IQUxfREFDX0VOQUJMRV9JVChoZGFjLCBEQUNfSVRfRE1BVURSMik7Ci0gICAgCisKICAgICAvKiBFbmFibGUgdGhlIERNQSBTdHJlYW0gKi8KLSAgICBIQUxfRE1BX1N0YXJ0X0lUKGhkYWMtPkRNQV9IYW5kbGUyLCAodWludDMyX3QpcERhdGEsIHRtcHJlZywgTGVuZ3RoKTsKKyAgICBzdGF0dXMgPSBIQUxfRE1BX1N0YXJ0X0lUKGhkYWMtPkRNQV9IYW5kbGUyLCAodWludDMyX3QpcERhdGEsIHRtcHJlZywgTGVuZ3RoKTsKICAgfQotICAKLSAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsICovCi0gIF9fSEFMX0RBQ19FTkFCTEUoaGRhYywgQ2hhbm5lbCk7Ci0gIAorCisKICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwogICBfX0hBTF9VTkxPQ0soaGRhYyk7Ci0gIAotICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCi0gIHJldHVybiBIQUxfT0s7Ci19CiAKLS8qKgotICAqIEBicmllZiAgRGlzYWJsZXMgREFDIGFuZCBzdG9wIGNvbnZlcnNpb24gb2YgY2hhbm5lbC4KLSAgKiBAcGFyYW0gIGhkYWM6IHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwotICAqICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgREFDLgotICAqIEBwYXJhbSAgQ2hhbm5lbDogVGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLiAKLSAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgotICAqICAgICAgICAgICAgQGFyZyBEQUNfQ0hBTk5FTF8xOiBEQUMgQ2hhbm5lbDEgc2VsZWN0ZWQKLSAgKiAgICAgICAgICAgIEBhcmcgREFDX0NIQU5ORUxfMjogREFDIENoYW5uZWwyIHNlbGVjdGVkICAgCi0gICogQHJldHZhbCBIQUwgc3RhdHVzCi0gICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDX1N0b3BfRE1BKERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjLCB1aW50MzJfdCBDaGFubmVsKQotewotICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7Ci0KLSAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KLSAgYXNzZXJ0X3BhcmFtKElTX0RBQ19DSEFOTkVMKENoYW5uZWwpKTsKLSAgCi0gIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsIERNQSByZXF1ZXN0ICovCi0gICBoZGFjLT5JbnN0YW5jZS0+Q1IgJj0gfihEQUNfQ1JfRE1BRU4xIDw8IENoYW5uZWwpOwotICAgIAotICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCi0gIF9fSEFMX0RBQ19ESVNBQkxFKGhkYWMsIENoYW5uZWwpOwotICAKLSAgLyogRGlzYWJsZSB0aGUgRE1BIENoYW5uZWwgKi8KLSAgLyogQ2hhbm5lbDEgaXMgdXNlZCAqLwotICBpZihDaGFubmVsID09IERBQ19DSEFOTkVMXzEpCi0gIHsgCi0gICAgc3RhdHVzID0gSEFMX0RNQV9BYm9ydChoZGFjLT5ETUFfSGFuZGxlMSk7Ci0gIH0KLSAgZWxzZSAvKiBDaGFubmVsMiBpcyB1c2VkIGZvciAqLwotICB7IAotICAgIHN0YXR1cyA9IEhBTF9ETUFfQWJvcnQoaGRhYy0+RE1BX0hhbmRsZTIpOyAKLSAgfQotCi0gIC8qIENoZWNrIGlmIERNQSBDaGFubmVsIGVmZmVjdGl2ZWx5IGRpc2FibGVkICovCi0gIGlmKHN0YXR1cyAhPSBIQUxfT0spCisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQogICB7Ci0gICAgLyogVXBkYXRlIERBQyBzdGF0ZSBtYWNoaW5lIHRvIGVycm9yICovCi0gICAgaGRhYy0+U3RhdGUgPSBIQUxfREFDX1NUQVRFX0VSUk9SOyAgICAgIAorICAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCAqLworICAgIF9fSEFMX0RBQ19FTkFCTEUoaGRhYywgQ2hhbm5lbCk7CiAgIH0KICAgZWxzZQogICB7Ci0gICAgLyogQ2hhbmdlIERBQyBzdGF0ZSAqLwotICAgIGhkYWMtPlN0YXRlID0gSEFMX0RBQ19TVEFURV9SRUFEWTsKKyAgICBoZGFjLT5FcnJvckNvZGUgfD0gSEFMX0RBQ19FUlJPUl9ETUE7CiAgIH0KIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCkBAIC02NzcsMTIwICs2NDAsMTk5IEBACiB9CiAKIC8qKgotICAqIEBicmllZiAgUmV0dXJucyB0aGUgbGFzdCBkYXRhIG91dHB1dCB2YWx1ZSBvZiB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwuCi0gICogQHBhcmFtICBoZGFjOiBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiBAYnJpZWYgIERpc2FibGVzIERBQyBhbmQgc3RvcCBjb252ZXJzaW9uIG9mIGNoYW5uZWwuCisgICogQHBhcmFtICBoZGFjIHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgREFDLgotICAqIEBwYXJhbSAgQ2hhbm5lbDogVGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLiAKKyAgKiBAcGFyYW0gIENoYW5uZWwgVGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLgogICAqICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAgICogICAgICAgICAgICBAYXJnIERBQ19DSEFOTkVMXzE6IERBQyBDaGFubmVsMSBzZWxlY3RlZAogICAqICAgICAgICAgICAgQGFyZyBEQUNfQ0hBTk5FTF8yOiBEQUMgQ2hhbm5lbDIgc2VsZWN0ZWQKLSAgKiBAcmV0dmFsIFRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbCBkYXRhIG91dHB1dCB2YWx1ZS4KKyAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLXVpbnQzMl90IEhBTF9EQUNfR2V0VmFsdWUoREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMsIHVpbnQzMl90IENoYW5uZWwpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDX1N0b3BfRE1BKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjLCB1aW50MzJfdCBDaGFubmVsKQogewogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfREFDX0NIQU5ORUwoQ2hhbm5lbCkpOwotICAKLSAgLyogUmV0dXJucyB0aGUgREFDIGNoYW5uZWwgZGF0YSBvdXRwdXQgcmVnaXN0ZXIgdmFsdWUgKi8KLSAgaWYoQ2hhbm5lbCA9PSBEQUNfQ0hBTk5FTF8xKQorCisgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsIERNQSByZXF1ZXN0ICovCisgIGhkYWMtPkluc3RhbmNlLT5DUiAmPSB+KERBQ19DUl9ETUFFTjEgPDwgKENoYW5uZWwgJiAweDEwVUwpKTsKKworICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCisgIF9fSEFMX0RBQ19ESVNBQkxFKGhkYWMsIENoYW5uZWwpOworCisgIC8qIERpc2FibGUgdGhlIERNQSBTdHJlYW0gKi8KKworICAvKiBDaGFubmVsMSBpcyB1c2VkICovCisgIGlmIChDaGFubmVsID09IERBQ19DSEFOTkVMXzEpCiAgIHsKLSAgICByZXR1cm4gaGRhYy0+SW5zdGFuY2UtPkRPUjE7CisgICAgLyogRGlzYWJsZSB0aGUgRE1BIFN0cmVhbSAqLworICAgICh2b2lkKUhBTF9ETUFfQWJvcnQoaGRhYy0+RE1BX0hhbmRsZTEpOworCisgICAgLyogRGlzYWJsZSB0aGUgREFDIERNQSB1bmRlcnJ1biBpbnRlcnJ1cHQgKi8KKyAgICBfX0hBTF9EQUNfRElTQUJMRV9JVChoZGFjLCBEQUNfSVRfRE1BVURSMSk7CiAgIH0KLSAgZWxzZQorCisgIGVsc2UgLyogQ2hhbm5lbDIgaXMgdXNlZCBmb3IgKi8KICAgewotICAgIHJldHVybiBoZGFjLT5JbnN0YW5jZS0+RE9SMjsKKyAgICAvKiBEaXNhYmxlIHRoZSBETUEgU3RyZWFtICovCisgICAgKHZvaWQpSEFMX0RNQV9BYm9ydChoZGFjLT5ETUFfSGFuZGxlMik7CisKKyAgICAvKiBEaXNhYmxlIHRoZSBEQUMgRE1BIHVuZGVycnVuIGludGVycnVwdCAqLworICAgIF9fSEFMX0RBQ19ESVNBQkxFX0lUKGhkYWMsIERBQ19JVF9ETUFVRFIyKTsKICAgfQorCisKKyAgLyogQ2hhbmdlIERBQyBzdGF0ZSAqLworICBoZGFjLT5TdGF0ZSA9IEhBTF9EQUNfU1RBVEVfUkVBRFk7CisKKyAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLworICByZXR1cm4gSEFMX09LOwogfQogCiAvKioKLSAgKiBAYnJpZWYgIEhhbmRsZXMgREFDIGludGVycnVwdCByZXF1ZXN0ICAKLSAgKiBAcGFyYW0gIGhkYWM6IHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucworICAqIEBicmllZiAgSGFuZGxlcyBEQUMgaW50ZXJydXB0IHJlcXVlc3QKKyAgKiAgICAgICAgIFRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgaW50ZXJydXB0aW9uIG9mIERNQQorICAqICAgICAgICAgdW5kZXJydW4uCisgICogQHBhcmFtICBoZGFjIHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgREFDLgogICAqIEByZXR2YWwgTm9uZQogICAqLwotdm9pZCBIQUxfREFDX0lSUUhhbmRsZXIoREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMpCit2b2lkIEhBTF9EQUNfSVJRSGFuZGxlcihEQUNfSGFuZGxlVHlwZURlZiAqaGRhYykKIHsKLSAgLyogQ2hlY2sgdW5kZXJydW4gY2hhbm5lbCAxIGZsYWcgKi8KLSAgaWYoX19IQUxfREFDX0dFVF9GTEFHKGhkYWMsIERBQ19GTEFHX0RNQVVEUjEpKQorICBpZiAoX19IQUxfREFDX0dFVF9JVF9TT1VSQ0UoaGRhYywgREFDX0lUX0RNQVVEUjEpKQogICB7Ci0gICAgLyogQ2hhbmdlIERBQyBzdGF0ZSB0byBlcnJvciBzdGF0ZSAqLwotICAgIGhkYWMtPlN0YXRlID0gSEFMX0RBQ19TVEFURV9FUlJPUjsKLSAgICAKLSAgICAvKiBTZXQgREFDIGVycm9yIGNvZGUgdG8gY2hhbm5lbDEgRE1BIHVuZGVycnVuIGVycm9yICovCi0gICAgaGRhYy0+RXJyb3JDb2RlIHw9IEhBTF9EQUNfRVJST1JfRE1BVU5ERVJSVU5DSDE7Ci0gICAgCi0gICAgLyogQ2xlYXIgdGhlIHVuZGVycnVuIGZsYWcgKi8KLSAgICBfX0hBTF9EQUNfQ0xFQVJfRkxBRyhoZGFjLERBQ19GTEFHX0RNQVVEUjEpOwotICAgIAotICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsMSBETUEgcmVxdWVzdCAqLwotICAgIGhkYWMtPkluc3RhbmNlLT5DUiAmPSB+REFDX0NSX0RNQUVOMTsKLSAgICAKLSAgICAvKiBFcnJvciBjYWxsYmFjayAqLyAKKyAgICAvKiBDaGVjayB1bmRlcnJ1biBmbGFnIG9mIERBQyBjaGFubmVsIDEgKi8KKyAgICBpZiAoX19IQUxfREFDX0dFVF9GTEFHKGhkYWMsIERBQ19GTEFHX0RNQVVEUjEpKQorICAgIHsKKyAgICAgIC8qIENoYW5nZSBEQUMgc3RhdGUgdG8gZXJyb3Igc3RhdGUgKi8KKyAgICAgIGhkYWMtPlN0YXRlID0gSEFMX0RBQ19TVEFURV9FUlJPUjsKKworICAgICAgLyogU2V0IERBQyBlcnJvciBjb2RlIHRvIGNoYW5uZWwxIERNQSB1bmRlcnJ1biBlcnJvciAqLworICAgICAgU0VUX0JJVChoZGFjLT5FcnJvckNvZGUsIEhBTF9EQUNfRVJST1JfRE1BVU5ERVJSVU5DSDEpOworCisgICAgICAvKiBDbGVhciB0aGUgdW5kZXJydW4gZmxhZyAqLworICAgICAgX19IQUxfREFDX0NMRUFSX0ZMQUcoaGRhYywgREFDX0ZMQUdfRE1BVURSMSk7CisKKyAgICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsMSBETUEgcmVxdWVzdCAqLworICAgICAgQ0xFQVJfQklUKGhkYWMtPkluc3RhbmNlLT5DUiwgREFDX0NSX0RNQUVOMSk7CisKKyAgICAgIC8qIEVycm9yIGNhbGxiYWNrICovCiAjaWYgKFVTRV9IQUxfREFDX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogICAgICAgaGRhYy0+RE1BVW5kZXJydW5DYWxsYmFja0NoMShoZGFjKTsKICNlbHNlCi0gICAgSEFMX0RBQ19ETUFVbmRlcnJ1bkNhbGxiYWNrQ2gxKGhkYWMpOworICAgICAgSEFMX0RBQ19ETUFVbmRlcnJ1bkNhbGxiYWNrQ2gxKGhkYWMpOwogI2VuZGlmIC8qIFVTRV9IQUxfREFDX1JFR0lTVEVSX0NBTExCQUNLUyAqLworICAgIH0KICAgfQotICAvKiBDaGVjayB1bmRlcnJ1biBjaGFubmVsIDIgZmxhZyAqLwotICBpZihfX0hBTF9EQUNfR0VUX0ZMQUcoaGRhYywgREFDX0ZMQUdfRE1BVURSMikpCisKKworICBpZiAoX19IQUxfREFDX0dFVF9JVF9TT1VSQ0UoaGRhYywgREFDX0lUX0RNQVVEUjIpKQogICB7Ci0gICAgLyogQ2hhbmdlIERBQyBzdGF0ZSB0byBlcnJvciBzdGF0ZSAqLwotICAgIGhkYWMtPlN0YXRlID0gSEFMX0RBQ19TVEFURV9FUlJPUjsKLSAgICAKLSAgICAvKiBTZXQgREFDIGVycm9yIGNvZGUgdG8gY2hhbm5lbDIgRE1BIHVuZGVycnVuIGVycm9yICovCi0gICAgaGRhYy0+RXJyb3JDb2RlIHw9IEhBTF9EQUNfRVJST1JfRE1BVU5ERVJSVU5DSDI7Ci0gICAgCi0gICAgLyogQ2xlYXIgdGhlIHVuZGVycnVuIGZsYWcgKi8KLSAgICBfX0hBTF9EQUNfQ0xFQVJfRkxBRyhoZGFjLERBQ19GTEFHX0RNQVVEUjIpOwotICAgIAotICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsMSBETUEgcmVxdWVzdCAqLwotICAgIGhkYWMtPkluc3RhbmNlLT5DUiAmPSB+REFDX0NSX0RNQUVOMjsKLSAgICAKLSAgICAvKiBFcnJvciBjYWxsYmFjayAqLyAKKyAgICAvKiBDaGVjayB1bmRlcnJ1biBmbGFnIG9mIERBQyBjaGFubmVsIDIgKi8KKyAgICBpZiAoX19IQUxfREFDX0dFVF9GTEFHKGhkYWMsIERBQ19GTEFHX0RNQVVEUjIpKQorICAgIHsKKyAgICAgIC8qIENoYW5nZSBEQUMgc3RhdGUgdG8gZXJyb3Igc3RhdGUgKi8KKyAgICAgIGhkYWMtPlN0YXRlID0gSEFMX0RBQ19TVEFURV9FUlJPUjsKKworICAgICAgLyogU2V0IERBQyBlcnJvciBjb2RlIHRvIGNoYW5uZWwyIERNQSB1bmRlcnJ1biBlcnJvciAqLworICAgICAgU0VUX0JJVChoZGFjLT5FcnJvckNvZGUsIEhBTF9EQUNfRVJST1JfRE1BVU5ERVJSVU5DSDIpOworCisgICAgICAvKiBDbGVhciB0aGUgdW5kZXJydW4gZmxhZyAqLworICAgICAgX19IQUxfREFDX0NMRUFSX0ZMQUcoaGRhYywgREFDX0ZMQUdfRE1BVURSMik7CisKKyAgICAgIC8qIERpc2FibGUgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsMiBETUEgcmVxdWVzdCAqLworICAgICAgQ0xFQVJfQklUKGhkYWMtPkluc3RhbmNlLT5DUiwgREFDX0NSX0RNQUVOMik7CisKKyAgICAgIC8qIEVycm9yIGNhbGxiYWNrICovCiAjaWYgKFVTRV9IQUxfREFDX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogICAgICAgaGRhYy0+RE1BVW5kZXJydW5DYWxsYmFja0NoMihoZGFjKTsKICNlbHNlCi0gICAgSEFMX0RBQ0V4X0RNQVVuZGVycnVuQ2FsbGJhY2tDaDIoaGRhYyk7CisgICAgICBIQUxfREFDRXhfRE1BVW5kZXJydW5DYWxsYmFja0NoMihoZGFjKTsKICNlbmRpZiAvKiBVU0VfSEFMX0RBQ19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KKyAgICB9CiAgIH0KKwogfQogCiAvKioKLSAgKiBAYnJpZWYgIENvbnZlcnNpb24gY29tcGxldGUgY2FsbGJhY2sgaW4gbm9uIGJsb2NraW5nIG1vZGUgZm9yIENoYW5uZWwxIAotICAqIEBwYXJhbSAgaGRhYzogcG9pbnRlciB0byBhIERBQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCisgICogQGJyaWVmICBTZXQgdGhlIHNwZWNpZmllZCBkYXRhIGhvbGRpbmcgcmVnaXN0ZXIgdmFsdWUgZm9yIERBQyBjaGFubmVsLgorICAqIEBwYXJhbSAgaGRhYyBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIERBQy4KKyAgKiBAcGFyYW0gIENoYW5uZWwgVGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLgorICAqICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgICAgICAgICBAYXJnIERBQ19DSEFOTkVMXzE6IERBQyBDaGFubmVsMSBzZWxlY3RlZAorICAqICAgICAgICAgICAgQGFyZyBEQUNfQ0hBTk5FTF8yOiBEQUMgQ2hhbm5lbDIgc2VsZWN0ZWQKKyAgKiBAcGFyYW0gIEFsaWdubWVudCBTcGVjaWZpZXMgdGhlIGRhdGEgYWxpZ25tZW50LgorICAqICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgICAgICAgICBAYXJnIERBQ19BTElHTl84Ql9SOiA4Yml0IHJpZ2h0IGRhdGEgYWxpZ25tZW50IHNlbGVjdGVkCisgICogICAgICAgICAgICBAYXJnIERBQ19BTElHTl8xMkJfTDogMTJiaXQgbGVmdCBkYXRhIGFsaWdubWVudCBzZWxlY3RlZAorICAqICAgICAgICAgICAgQGFyZyBEQUNfQUxJR05fMTJCX1I6IDEyYml0IHJpZ2h0IGRhdGEgYWxpZ25tZW50IHNlbGVjdGVkCisgICogQHBhcmFtICBEYXRhIERhdGEgdG8gYmUgbG9hZGVkIGluIHRoZSBzZWxlY3RlZCBkYXRhIGhvbGRpbmcgcmVnaXN0ZXIuCisgICogQHJldHZhbCBIQUwgc3RhdHVzCisgICovCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDX1NldFZhbHVlKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjLCB1aW50MzJfdCBDaGFubmVsLCB1aW50MzJfdCBBbGlnbm1lbnQsIHVpbnQzMl90IERhdGEpCit7CisgIF9fSU8gdWludDMyX3QgdG1wID0gMFVMOworCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19EQUNfQ0hBTk5FTChDaGFubmVsKSk7CisgIGFzc2VydF9wYXJhbShJU19EQUNfQUxJR04oQWxpZ25tZW50KSk7CisgIGFzc2VydF9wYXJhbShJU19EQUNfREFUQShEYXRhKSk7CisKKyAgdG1wID0gKHVpbnQzMl90KWhkYWMtPkluc3RhbmNlOworICBpZiAoQ2hhbm5lbCA9PSBEQUNfQ0hBTk5FTF8xKQorICB7CisgICAgdG1wICs9IERBQ19ESFIxMlIxX0FMSUdOTUVOVChBbGlnbm1lbnQpOworICB9CisKKyAgZWxzZQorICB7CisgICAgdG1wICs9IERBQ19ESFIxMlIyX0FMSUdOTUVOVChBbGlnbm1lbnQpOworICB9CisKKworICAvKiBTZXQgdGhlIERBQyBjaGFubmVsIHNlbGVjdGVkIGRhdGEgaG9sZGluZyByZWdpc3RlciAqLworICAqKF9fSU8gdWludDMyX3QgKikgdG1wID0gRGF0YTsKKworICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCisgIHJldHVybiBIQUxfT0s7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29udmVyc2lvbiBjb21wbGV0ZSBjYWxsYmFjayBpbiBub24tYmxvY2tpbmcgbW9kZSBmb3IgQ2hhbm5lbDEKKyAgKiBAcGFyYW0gIGhkYWMgcG9pbnRlciB0byBhIERBQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBEQUMuCiAgICogQHJldHZhbCBOb25lCiAgICovCi1fX3dlYWsgdm9pZCBIQUxfREFDX0NvbnZDcGx0Q2FsbGJhY2tDaDEoREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMpCitfX3dlYWsgdm9pZCBIQUxfREFDX0NvbnZDcGx0Q2FsbGJhY2tDaDEoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpCiB7CiAgIC8qIFByZXZlbnQgdW51c2VkIGFyZ3VtZW50KHMpIGNvbXBpbGF0aW9uIHdhcm5pbmcgKi8KICAgVU5VU0VEKGhkYWMpOwotIAotICAvKiBOT1RFIDogVGhpcyBmdW5jdGlvbiBTaG91bGQgbm90IGJlIG1vZGlmaWVkLCB3aGVuIHRoZSBjYWxsYmFjayBpcyBuZWVkZWQsCi0gICAgICAgICAgICB0aGUgSEFMX0RBQ19Db252Q3BsdENhbGxiYWNrIGNvdWxkIGJlIGltcGxlbWVudGVkIGluIHRoZSB1c2VyIGZpbGUKKworICAvKiBOT1RFIDogVGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGJlIG1vZGlmaWVkLCB3aGVuIHRoZSBjYWxsYmFjayBpcyBuZWVkZWQsCisgICAgICAgICAgICB0aGUgSEFMX0RBQ19Db252Q3BsdENhbGxiYWNrQ2gxIGNvdWxkIGJlIGltcGxlbWVudGVkIGluIHRoZSB1c2VyIGZpbGUKICAgICovCiB9CiAKIC8qKgotICAqIEBicmllZiAgQ29udmVyc2lvbiBoYWxmIERNQSB0cmFuc2ZlciBjYWxsYmFjayBpbiBub24gYmxvY2tpbmcgbW9kZSBmb3IgQ2hhbm5lbDEgCi0gICogQHBhcmFtICBoZGFjOiBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiBAYnJpZWYgIENvbnZlcnNpb24gaGFsZiBETUEgdHJhbnNmZXIgY2FsbGJhY2sgaW4gbm9uLWJsb2NraW5nIG1vZGUgZm9yIENoYW5uZWwxCisgICogQHBhcmFtICBoZGFjIHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgREFDLgogICAqIEByZXR2YWwgTm9uZQogICAqLwotX193ZWFrIHZvaWQgSEFMX0RBQ19Db252SGFsZkNwbHRDYWxsYmFja0NoMShEQUNfSGFuZGxlVHlwZURlZiogaGRhYykKK19fd2VhayB2b2lkIEhBTF9EQUNfQ29udkhhbGZDcGx0Q2FsbGJhY2tDaDEoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpCiB7CiAgIC8qIFByZXZlbnQgdW51c2VkIGFyZ3VtZW50KHMpIGNvbXBpbGF0aW9uIHdhcm5pbmcgKi8KICAgVU5VU0VEKGhkYWMpOwotICAgCi0gIC8qIE5PVEUgOiBUaGlzIGZ1bmN0aW9uIFNob3VsZCBub3QgYmUgbW9kaWZpZWQsIHdoZW4gdGhlIGNhbGxiYWNrIGlzIG5lZWRlZCwKKworICAvKiBOT1RFIDogVGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGJlIG1vZGlmaWVkLCB3aGVuIHRoZSBjYWxsYmFjayBpcyBuZWVkZWQsCiAgICAgICAgICAgICB0aGUgSEFMX0RBQ19Db252SGFsZkNwbHRDYWxsYmFja0NoMSBjb3VsZCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgdXNlciBmaWxlCiAgICAqLwogfQogCiAvKioKICAgKiBAYnJpZWYgIEVycm9yIERBQyBjYWxsYmFjayBmb3IgQ2hhbm5lbDEuCi0gICogQHBhcmFtICBoZGFjOiBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiBAcGFyYW0gIGhkYWMgcG9pbnRlciB0byBhIERBQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBEQUMuCiAgICogQHJldHZhbCBOb25lCiAgICovCkBAIC03OTgsMTUgKzg0MCwxNSBAQAogewogICAvKiBQcmV2ZW50IHVudXNlZCBhcmd1bWVudChzKSBjb21waWxhdGlvbiB3YXJuaW5nICovCiAgIFVOVVNFRChoZGFjKTsKLSAKLSAgLyogTk9URSA6IFRoaXMgZnVuY3Rpb24gU2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAorCisgIC8qIE5PVEUgOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgbW9kaWZpZWQsIHdoZW4gdGhlIGNhbGxiYWNrIGlzIG5lZWRlZCwKICAgICAgICAgICAgIHRoZSBIQUxfREFDX0Vycm9yQ2FsbGJhY2tDaDEgY291bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIHVzZXIgZmlsZQogICAgKi8KIH0KIAogLyoqCiAgICogQGJyaWVmICBETUEgdW5kZXJydW4gREFDIGNhbGxiYWNrIGZvciBjaGFubmVsMS4KLSAgKiBAcGFyYW0gIGhkYWM6IHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucworICAqIEBwYXJhbSAgaGRhYyBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIERBQy4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KQEAgLTgxNCw4ICs4NTYsOCBAQAogewogICAvKiBQcmV2ZW50IHVudXNlZCBhcmd1bWVudChzKSBjb21waWxhdGlvbiB3YXJuaW5nICovCiAgIFVOVVNFRChoZGFjKTsKLSAKLSAgLyogTk9URSA6IFRoaXMgZnVuY3Rpb24gU2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAorCisgIC8qIE5PVEUgOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgbW9kaWZpZWQsIHdoZW4gdGhlIGNhbGxiYWNrIGlzIG5lZWRlZCwKICAgICAgICAgICAgIHRoZSBIQUxfREFDX0RNQVVuZGVycnVuQ2FsbGJhY2tDaDEgY291bGQgYmUgaW1wbGVtZW50ZWQgaW4gdGhlIHVzZXIgZmlsZQogICAgKi8KIH0KQEAgLTgyMywxMTEgKzg2NSwxMDEgQEAKIC8qKgogICAqIEB9CiAgICovCi0gIAorCiAvKiogQGRlZmdyb3VwIERBQ19FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAzIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKLSAqICBAYnJpZWYgICAJUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucyAKLSAqCi1AdmVyYmF0aW0gICAKKyAgKiAgQGJyaWVmICAgIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKKyAgKgorQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICMjIyMjIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMgIyMjIyMKLSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgWy4uXSAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIGZ1bmN0aW9ucyBhbGxvd2luZyB0bzoKLSAgICAgICgrKSBDb25maWd1cmUgY2hhbm5lbHMuIAorICAgICAgKCspIENvbmZpZ3VyZSBjaGFubmVscy4KICAgICAgICgrKSBTZXQgdGhlIHNwZWNpZmllZCBkYXRhIGhvbGRpbmcgcmVnaXN0ZXIgdmFsdWUgZm9yIERBQyBjaGFubmVsLgotICAgICAgCisKIEBlbmR2ZXJiYXRpbQogICAqIEB7CiAgICovCiAKIC8qKgotICAqIEBicmllZiAgQ29uZmlndXJlcyB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwuCi0gICogQHBhcmFtICBoZGFjOiBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiBAYnJpZWYgIFJldHVybnMgdGhlIGxhc3QgZGF0YSBvdXRwdXQgdmFsdWUgb2YgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLgorICAqIEBwYXJhbSAgaGRhYyBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIERBQy4KLSAgKiBAcGFyYW0gIHNDb25maWc6IERBQyBjb25maWd1cmF0aW9uIHN0cnVjdHVyZS4KLSAgKiBAcGFyYW0gIENoYW5uZWw6IFRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbC4gCisgICogQHBhcmFtICBDaGFubmVsIFRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbC4KKyAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICAgICAgICAgQGFyZyBEQUNfQ0hBTk5FTF8xOiBEQUMgQ2hhbm5lbDEgc2VsZWN0ZWQKKyAgKiAgICAgICAgICAgIEBhcmcgREFDX0NIQU5ORUxfMjogREFDIENoYW5uZWwyIHNlbGVjdGVkCisgICogQHJldHZhbCBUaGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgZGF0YSBvdXRwdXQgdmFsdWUuCisgICovCit1aW50MzJfdCBIQUxfREFDX0dldFZhbHVlKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjLCB1aW50MzJfdCBDaGFubmVsKQoreworICB1aW50MzJfdCB0bXAgPSAwVTsKKworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfREFDX0NIQU5ORUwoQ2hhbm5lbCkpOworCisgIGlmIChDaGFubmVsID09IERBQ19DSEFOTkVMXzEpCisgIHsKKyAgICB0bXAgPSBoZGFjLT5JbnN0YW5jZS0+RE9SMTsKKyAgfQorCisgIGVsc2UKKyAgeworICAgIHRtcCA9IGhkYWMtPkluc3RhbmNlLT5ET1IyOworICB9CisKKyAgLyogUmV0dXJucyB0aGUgREFDIGNoYW5uZWwgZGF0YSBvdXRwdXQgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgcmV0dXJuIHRtcDsKK30KKworLyoqCisgICogQGJyaWVmICBDb25maWd1cmVzIHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbC4KKyAgKiBAcGFyYW0gIGhkYWMgcG9pbnRlciB0byBhIERBQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCisgICogICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBEQUMuCisgICogQHBhcmFtICBzQ29uZmlnIERBQyBjb25maWd1cmF0aW9uIHN0cnVjdHVyZS4KKyAgKiBAcGFyYW0gIENoYW5uZWwgVGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLgogICAqICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAgICogICAgICAgICAgICBAYXJnIERBQ19DSEFOTkVMXzE6IERBQyBDaGFubmVsMSBzZWxlY3RlZAogICAqICAgICAgICAgICAgQGFyZyBEQUNfQ0hBTk5FTF8yOiBEQUMgQ2hhbm5lbDIgc2VsZWN0ZWQKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNfQ29uZmlnQ2hhbm5lbChEQUNfSGFuZGxlVHlwZURlZiogaGRhYywgREFDX0NoYW5uZWxDb25mVHlwZURlZiogc0NvbmZpZywgdWludDMyX3QgQ2hhbm5lbCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNfQ29uZmlnQ2hhbm5lbChEQUNfSGFuZGxlVHlwZURlZiAqaGRhYywgREFDX0NoYW5uZWxDb25mVHlwZURlZiAqc0NvbmZpZywgdWludDMyX3QgQ2hhbm5lbCkKIHsKLSAgdWludDMyX3QgdG1wcmVnMSA9IDAsIHRtcHJlZzIgPSAwOworICB1aW50MzJfdCB0bXByZWcxOworICB1aW50MzJfdCB0bXByZWcyOwogCiAgIC8qIENoZWNrIHRoZSBEQUMgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfREFDX1RSSUdHRVIoc0NvbmZpZy0+REFDX1RyaWdnZXIpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0RBQ19PVVRQVVRfQlVGRkVSX1NUQVRFKHNDb25maWctPkRBQ19PdXRwdXRCdWZmZXIpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0RBQ19DSEFOTkVMKENoYW5uZWwpKTsKLSAgCisKICAgLyogUHJvY2VzcyBsb2NrZWQgKi8KICAgX19IQUxfTE9DSyhoZGFjKTsKLSAgCisKICAgLyogQ2hhbmdlIERBQyBzdGF0ZSAqLwogICBoZGFjLT5TdGF0ZSA9IEhBTF9EQUNfU1RBVEVfQlVTWTsKLSAgCisKICAgLyogR2V0IHRoZSBEQUMgQ1IgdmFsdWUgKi8KICAgdG1wcmVnMSA9IGhkYWMtPkluc3RhbmNlLT5DUjsKICAgLyogQ2xlYXIgQk9GRngsIFRFTngsIFRTRUx4LCBXQVZFeCBhbmQgTUFNUHggYml0cyAqLwotICB0bXByZWcxICY9IH4oKCh1aW50MzJfdCkoREFDX0NSX01BTVAxIHwgREFDX0NSX1dBVkUxIHwgREFDX0NSX1RTRUwxIHwgREFDX0NSX1RFTjEgfCBEQUNfQ1JfQk9GRjEpKSA8PCBDaGFubmVsKTsKKyAgdG1wcmVnMSAmPSB+KCgodWludDMyX3QpKERBQ19DUl9NQU1QMSB8IERBQ19DUl9XQVZFMSB8IERBQ19DUl9UU0VMMSB8IERBQ19DUl9URU4xIHwgREFDX0NSX0JPRkYxKSkgPDwgKENoYW5uZWwgJiAweDEwVUwpKTsKICAgLyogQ29uZmlndXJlIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWw6IGJ1ZmZlciBvdXRwdXQsIHRyaWdnZXIgKi8KICAgLyogU2V0IFRTRUx4IGFuZCBURU54IGJpdHMgYWNjb3JkaW5nIHRvIERBQ19UcmlnZ2VyIHZhbHVlICovCi0gIC8qIFNldCBCT0ZGeCBiaXQgYWNjb3JkaW5nIHRvIERBQ19PdXRwdXRCdWZmZXIgdmFsdWUgKi8gICAKKyAgLyogU2V0IEJPRkZ4IGJpdCBhY2NvcmRpbmcgdG8gREFDX091dHB1dEJ1ZmZlciB2YWx1ZSAqLwogICB0bXByZWcyID0gKHNDb25maWctPkRBQ19UcmlnZ2VyIHwgc0NvbmZpZy0+REFDX091dHB1dEJ1ZmZlcik7CiAgIC8qIENhbGN1bGF0ZSBDUiByZWdpc3RlciB2YWx1ZSBkZXBlbmRpbmcgb24gREFDX0NoYW5uZWwgKi8KLSAgdG1wcmVnMSB8PSB0bXByZWcyIDw8IENoYW5uZWw7CisgIHRtcHJlZzEgfD0gdG1wcmVnMiA8PCAoQ2hhbm5lbCAmIDB4MTBVTCk7CiAgIC8qIFdyaXRlIHRvIERBQyBDUiAqLwogICBoZGFjLT5JbnN0YW5jZS0+Q1IgPSB0bXByZWcxOwogICAvKiBEaXNhYmxlIHdhdmUgZ2VuZXJhdGlvbiAqLwotICBoZGFjLT5JbnN0YW5jZS0+Q1IgJj0gfihEQUNfQ1JfV0FWRTEgPDwgQ2hhbm5lbCk7Ci0gIAorICBDTEVBUl9CSVQoaGRhYy0+SW5zdGFuY2UtPkNSLCAoREFDX0NSX1dBVkUxIDw8IChDaGFubmVsICYgMHgxMFVMKSkpOworCiAgIC8qIENoYW5nZSBEQUMgc3RhdGUgKi8KICAgaGRhYy0+U3RhdGUgPSBIQUxfREFDX1NUQVRFX1JFQURZOwotICAKKwogICAvKiBQcm9jZXNzIHVubG9ja2VkICovCiAgIF9fSEFMX1VOTE9DSyhoZGFjKTsKLSAgCi0gIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KLSAgcmV0dXJuIEhBTF9PSzsKLX0KIAotLyoqCi0gICogQGJyaWVmICBTZXQgdGhlIHNwZWNpZmllZCBkYXRhIGhvbGRpbmcgcmVnaXN0ZXIgdmFsdWUgZm9yIERBQyBjaGFubmVsLgotICAqIEBwYXJhbSAgaGRhYzogcG9pbnRlciB0byBhIERBQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCi0gICogICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBEQUMuCi0gICogQHBhcmFtICBDaGFubmVsOiBUaGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwuIAotICAqICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6Ci0gICogICAgICAgICAgICBAYXJnIERBQ19DSEFOTkVMXzE6IERBQyBDaGFubmVsMSBzZWxlY3RlZAotICAqICAgICAgICAgICAgQGFyZyBEQUNfQ0hBTk5FTF8yOiBEQUMgQ2hhbm5lbDIgc2VsZWN0ZWQgIAotICAqIEBwYXJhbSAgQWxpZ25tZW50OiBTcGVjaWZpZXMgdGhlIGRhdGEgYWxpZ25tZW50LgotICAqICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6Ci0gICogICAgICAgICAgICBAYXJnIERBQ19BTElHTl84Ql9SOiA4Yml0IHJpZ2h0IGRhdGEgYWxpZ25tZW50IHNlbGVjdGVkCi0gICogICAgICAgICAgICBAYXJnIERBQ19BTElHTl8xMkJfTDogMTJiaXQgbGVmdCBkYXRhIGFsaWdubWVudCBzZWxlY3RlZAotICAqICAgICAgICAgICAgQGFyZyBEQUNfQUxJR05fMTJCX1I6IDEyYml0IHJpZ2h0IGRhdGEgYWxpZ25tZW50IHNlbGVjdGVkCi0gICogQHBhcmFtICBEYXRhOiBEYXRhIHRvIGJlIGxvYWRlZCBpbiB0aGUgc2VsZWN0ZWQgZGF0YSBob2xkaW5nIHJlZ2lzdGVyLgotICAqIEByZXR2YWwgSEFMIHN0YXR1cwotICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RBQ19TZXRWYWx1ZShEQUNfSGFuZGxlVHlwZURlZiogaGRhYywgdWludDMyX3QgQ2hhbm5lbCwgdWludDMyX3QgQWxpZ25tZW50LCB1aW50MzJfdCBEYXRhKQoteyAgCi0gIF9fSU8gdWludDMyX3QgdG1wID0gMDsKLSAgCi0gIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCi0gIGFzc2VydF9wYXJhbShJU19EQUNfQ0hBTk5FTChDaGFubmVsKSk7Ci0gIGFzc2VydF9wYXJhbShJU19EQUNfQUxJR04oQWxpZ25tZW50KSk7Ci0gIGFzc2VydF9wYXJhbShJU19EQUNfREFUQShEYXRhKSk7Ci0gIAotICB0bXAgPSAodWludDMyX3QpaGRhYy0+SW5zdGFuY2U7IAotICBpZihDaGFubmVsID09IERBQ19DSEFOTkVMXzEpCi0gIHsKLSAgICB0bXAgKz0gREFDX0RIUjEyUjFfQUxJR05NRU5UKEFsaWdubWVudCk7Ci0gIH0KLSAgZWxzZQotICB7Ci0gICAgdG1wICs9IERBQ19ESFIxMlIyX0FMSUdOTUVOVChBbGlnbm1lbnQpOwotICB9Ci0KLSAgLyogU2V0IHRoZSBEQUMgY2hhbm5lbDEgc2VsZWN0ZWQgZGF0YSBob2xkaW5nIHJlZ2lzdGVyICovCi0gICooX19JTyB1aW50MzJfdCAqKSB0bXAgPSBEYXRhOwotICAKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwogICByZXR1cm4gSEFMX09LOwogfQpAQCAtOTM3LDM3ICs5NjksMzcgQEAKICAgKi8KIAogLyoqIEBkZWZncm91cCBEQUNfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwNCBQZXJpcGhlcmFsIFN0YXRlIGFuZCBFcnJvcnMgZnVuY3Rpb25zCi0gKiAgQGJyaWVmICAgUGVyaXBoZXJhbCBTdGF0ZSBhbmQgRXJyb3JzIGZ1bmN0aW9ucyAKLSAqCi1AdmVyYmF0aW0gICAKKyAgKiAgQGJyaWVmICAgUGVyaXBoZXJhbCBTdGF0ZSBhbmQgRXJyb3JzIGZ1bmN0aW9ucworICAqCitAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAjIyMjIyBQZXJpcGhlcmFsIFN0YXRlIGFuZCBFcnJvcnMgZnVuY3Rpb25zICMjIyMjCi0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgCisgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIFsuLl0KICAgICBUaGlzIHN1YnNlY3Rpb24gcHJvdmlkZXMgZnVuY3Rpb25zIGFsbG93aW5nIHRvCiAgICAgICAoKykgQ2hlY2sgdGhlIERBQyBzdGF0ZS4KICAgICAgICgrKSBDaGVjayB0aGUgREFDIEVycm9ycy4KLSAgICAgICAgCisKIEBlbmR2ZXJiYXRpbQogICAqIEB7CiAgICovCiAKIC8qKgotICAqIEBicmllZiAgcmV0dXJuIHRoZSBEQUMgc3RhdGUKLSAgKiBAcGFyYW0gIGhkYWM6IHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucworICAqIEBicmllZiAgcmV0dXJuIHRoZSBEQUMgaGFuZGxlIHN0YXRlCisgICogQHBhcmFtICBoZGFjIHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgREFDLgogICAqIEByZXR2YWwgSEFMIHN0YXRlCiAgICovCi1IQUxfREFDX1N0YXRlVHlwZURlZiBIQUxfREFDX0dldFN0YXRlKERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjKQorSEFMX0RBQ19TdGF0ZVR5cGVEZWYgSEFMX0RBQ19HZXRTdGF0ZShEQUNfSGFuZGxlVHlwZURlZiAqaGRhYykKIHsKLSAgLyogUmV0dXJuIERBQyBzdGF0ZSAqLworICAvKiBSZXR1cm4gREFDIGhhbmRsZSBzdGF0ZSAqLwogICByZXR1cm4gaGRhYy0+U3RhdGU7CiB9CiAKIAogLyoqCiAgICogQGJyaWVmICBSZXR1cm4gdGhlIERBQyBlcnJvciBjb2RlCi0gICogQHBhcmFtICBoZGFjOiBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiBAcGFyYW0gIGhkYWMgcG9pbnRlciB0byBhIERBQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBEQUMuCiAgICogQHJldHZhbCBEQUMgRXJyb3IgQ29kZQogICAqLwpAQCAtOTk1LDkgKzEwMjcsOSBAQAogLyoqCiAgICogQGJyaWVmICBSZWdpc3RlciBhIFVzZXIgREFDIENhbGxiYWNrCiAgICogICAgICAgICBUbyBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIHdlYWsgKHN1cmNoYXJnZWQpIHByZWRlZmluZWQgY2FsbGJhY2sKLSAgKiBAcGFyYW0gaGRhYyBEQUMgaGFuZGxlCisgICogQHBhcmFtICBoZGFjIERBQyBoYW5kbGUKICAgKiBAcGFyYW0gIENhbGxiYWNrSUQgSUQgb2YgdGhlIGNhbGxiYWNrIHRvIGJlIHJlZ2lzdGVyZWQKLSAgKiAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAgICogICAgICAgICAgQGFyZyBAcmVmIEhBTF9EQUNfRVJST1JfSU5WQUxJRF9DQUxMQkFDSyAgIERBQyBFcnJvciBDYWxsYmFjayBJRAogICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfREFDX0NIMV9DT01QTEVURV9DQl9JRCAgICAgICBEQUMgQ0gxIENvbXBsZXRlIENhbGxiYWNrIElECiAgICogICAgICAgICAgQGFyZyBAcmVmIEhBTF9EQUNfQ0gxX0hBTEZfQ09NUExFVEVfQ0JfSUQgIERBQyBDSDEgSGFsZiBDb21wbGV0ZSBDYWxsYmFjayBJRApAQCAtMTAwNywxNyArMTAzOSwxOCBAQAogICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfREFDX0NIMl9IQUxGX0NPTVBMRVRFX0NCX0lEICBEQUMgQ0gyIEhhbGYgQ29tcGxldGUgQ2FsbGJhY2sgSUQKICAgKiAgICAgICAgICBAYXJnIEByZWYgSEFMX0RBQ19DSDJfRVJST1JfSUQgICAgICAgICAgICAgREFDIENIMiBFcnJvciBDYWxsYmFjayBJRAogICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfREFDX0NIMl9VTkRFUlJVTl9DQl9JRCAgICAgICBEQUMgQ0gyIFVuZGVyUnVuIENhbGxiYWNrIElECi0gICogICAgICAgICAgQGFyZyBAcmVmIEhBTF9EQUNfTVNQX0lOSVRfQ0JfSUQgICAgICAgICAgIERBQyBNU1AgSW5pdCBDYWxsYmFjayBJRAotICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfREFDX01TUF9ERUlOSVRfQ0JfSUQgICAgICAgICBEQUMgTVNQIERlSW5pdCBDYWxsYmFjayBJRAorICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfREFDX01TUElOSVRfQ0JfSUQgICAgICAgICAgICBEQUMgTVNQIEluaXQgQ2FsbGJhY2sgSUQKKyAgKiAgICAgICAgICBAYXJnIEByZWYgSEFMX0RBQ19NU1BERUlOSVRfQ0JfSUQgICAgICAgICAgREFDIE1TUCBEZUluaXQgQ2FsbGJhY2sgSUQKICAgKgotICAgICogQHBhcmFtIHBDYWxsYmFjayBwb2ludGVyIHRvIHRoZSBDYWxsYmFjayBmdW5jdGlvbgorICAqIEBwYXJhbSAgcENhbGxiYWNrIHBvaW50ZXIgdG8gdGhlIENhbGxiYWNrIGZ1bmN0aW9uCiAgICogQHJldHZhbCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNfUmVnaXN0ZXJDYWxsYmFjayAoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMsIEhBTF9EQUNfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCwgcERBQ19DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RBQ19SZWdpc3RlckNhbGxiYWNrKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjLCBIQUxfREFDX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcERBQ19DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKQogewogICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAKLSAgaWYocENhbGxiYWNrID09IE5VTEwpCisgIGlmIChwQ2FsbGJhY2sgPT0gTlVMTCkKICAgewogICAgIC8qIFVwZGF0ZSB0aGUgZXJyb3IgY29kZSAqLwogICAgIGhkYWMtPkVycm9yQ29kZSB8PSBIQUxfREFDX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0s7CkBAIC0xMDI3LDY0ICsxMDYwLDY2IEBACiAgIC8qIFByb2Nlc3MgbG9ja2VkICovCiAgIF9fSEFMX0xPQ0soaGRhYyk7CiAKLSAgaWYoaGRhYy0+U3RhdGUgPT0gSEFMX0RBQ19TVEFURV9SRUFEWSkKKyAgaWYgKGhkYWMtPlN0YXRlID09IEhBTF9EQUNfU1RBVEVfUkVBRFkpCiAgIHsKICAgICBzd2l0Y2ggKENhbGxiYWNrSUQpCiAgICAgewotICAgIGNhc2UgSEFMX0RBQ19DSDFfQ09NUExFVEVfQ0JfSUQgOgotICAgICAgaGRhYy0+Q29udkNwbHRDYWxsYmFja0NoMSA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX0RBQ19DSDFfSEFMRl9DT01QTEVURV9DQl9JRCA6Ci0gICAgICBoZGFjLT5Db252SGFsZkNwbHRDYWxsYmFja0NoMSA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX0RBQ19DSDFfRVJST1JfSUQgOgotICAgICAgaGRhYy0+RXJyb3JDYWxsYmFja0NoMSA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX0RBQ19DSDFfVU5ERVJSVU5fQ0JfSUQgOgotICAgICAgaGRhYy0+RE1BVW5kZXJydW5DYWxsYmFja0NoMSA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX0RBQ19DSDJfQ09NUExFVEVfQ0JfSUQgOgotICAgICAgaGRhYy0+Q29udkNwbHRDYWxsYmFja0NoMiA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX0RBQ19DSDJfSEFMRl9DT01QTEVURV9DQl9JRCA6Ci0gICAgICBoZGFjLT5Db252SGFsZkNwbHRDYWxsYmFja0NoMiA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX0RBQ19DSDJfRVJST1JfSUQgOgotICAgICAgaGRhYy0+RXJyb3JDYWxsYmFja0NoMiA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX0RBQ19DSDJfVU5ERVJSVU5fQ0JfSUQgOgotICAgICAgaGRhYy0+RE1BVW5kZXJydW5DYWxsYmFja0NoMiA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX0RBQ19NU1BfSU5JVF9DQl9JRCA6Ci0gICAgICBoZGFjLT5Nc3BJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEhBTF9EQUNfTVNQX0RFSU5JVF9DQl9JRCA6Ci0gICAgICBoZGFjLT5Nc3BEZUluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQgOgotICAgICAgLyogVXBkYXRlIHRoZSBlcnJvciBjb2RlICovCi0gICAgICBoZGFjLT5FcnJvckNvZGUgfD0gSEFMX0RBQ19FUlJPUl9JTlZBTElEX0NBTExCQUNLOwotICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KLSAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0RBQ19DSDFfQ09NUExFVEVfQ0JfSUQgOgorICAgICAgICBoZGFjLT5Db252Q3BsdENhbGxiYWNrQ2gxID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0RBQ19DSDFfSEFMRl9DT01QTEVURV9DQl9JRCA6CisgICAgICAgIGhkYWMtPkNvbnZIYWxmQ3BsdENhbGxiYWNrQ2gxID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0RBQ19DSDFfRVJST1JfSUQgOgorICAgICAgICBoZGFjLT5FcnJvckNhbGxiYWNrQ2gxID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0RBQ19DSDFfVU5ERVJSVU5fQ0JfSUQgOgorICAgICAgICBoZGFjLT5ETUFVbmRlcnJ1bkNhbGxiYWNrQ2gxID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBIQUxfREFDX0NIMl9DT01QTEVURV9DQl9JRCA6CisgICAgICAgIGhkYWMtPkNvbnZDcGx0Q2FsbGJhY2tDaDIgPSBwQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfREFDX0NIMl9IQUxGX0NPTVBMRVRFX0NCX0lEIDoKKyAgICAgICAgaGRhYy0+Q29udkhhbGZDcGx0Q2FsbGJhY2tDaDIgPSBwQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfREFDX0NIMl9FUlJPUl9JRCA6CisgICAgICAgIGhkYWMtPkVycm9yQ2FsbGJhY2tDaDIgPSBwQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfREFDX0NIMl9VTkRFUlJVTl9DQl9JRCA6CisgICAgICAgIGhkYWMtPkRNQVVuZGVycnVuQ2FsbGJhY2tDaDIgPSBwQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIEhBTF9EQUNfTVNQSU5JVF9DQl9JRCA6CisgICAgICAgIGhkYWMtPk1zcEluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9EQUNfTVNQREVJTklUX0NCX0lEIDoKKyAgICAgICAgaGRhYy0+TXNwRGVJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdCA6CisgICAgICAgIC8qIFVwZGF0ZSB0aGUgZXJyb3IgY29kZSAqLworICAgICAgICBoZGFjLT5FcnJvckNvZGUgfD0gSEFMX0RBQ19FUlJPUl9JTlZBTElEX0NBTExCQUNLOworICAgICAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLworICAgICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOworICAgICAgICBicmVhazsKICAgICB9CiAgIH0KICAgZWxzZSBpZiAoaGRhYy0+U3RhdGUgPT0gSEFMX0RBQ19TVEFURV9SRVNFVCkKICAgewogICAgIHN3aXRjaCAoQ2FsbGJhY2tJRCkKICAgICB7Ci0gICAgY2FzZSBIQUxfREFDX01TUF9JTklUX0NCX0lEIDoKLSAgICAgIGhkYWMtPk1zcEluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX0RBQ19NU1BfREVJTklUX0NCX0lEIDoKLSAgICAgIGhkYWMtPk1zcERlSW5pdENhbGxiYWNrID0gcENhbGxiYWNrOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdCA6Ci0gICAgICAvKiBVcGRhdGUgdGhlIGVycm9yIGNvZGUgKi8KLSAgICAgIGhkYWMtPkVycm9yQ29kZSB8PSBIQUxfREFDX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0s7Ci0gICAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLwotICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfREFDX01TUElOSVRfQ0JfSUQgOgorICAgICAgICBoZGFjLT5Nc3BJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfREFDX01TUERFSU5JVF9DQl9JRCA6CisgICAgICAgIGhkYWMtPk1zcERlSW5pdENhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQgOgorICAgICAgICAvKiBVcGRhdGUgdGhlIGVycm9yIGNvZGUgKi8KKyAgICAgICAgaGRhYy0+RXJyb3JDb2RlIHw9IEhBTF9EQUNfRVJST1JfSU5WQUxJRF9DQUxMQkFDSzsKKyAgICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KKyAgICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICB9CiAgIGVsc2UKQEAgLTExMDMsMTAgKzExMzgsMTAgQEAKIC8qKgogICAqIEBicmllZiAgVW5yZWdpc3RlciBhIFVzZXIgREFDIENhbGxiYWNrCiAgICogICAgICAgICBEQUMgQ2FsbGJhY2sgaXMgcmVkaXJlY3RlZCB0byB0aGUgd2VhayAoc3VyY2hhcmdlZCkgcHJlZGVmaW5lZCBjYWxsYmFjawotICAqIEBwYXJhbSBoZGFjIERBQyBoYW5kbGUKKyAgKiBAcGFyYW0gIGhkYWMgREFDIGhhbmRsZQogICAqIEBwYXJhbSAgQ2FsbGJhY2tJRCBJRCBvZiB0aGUgY2FsbGJhY2sgdG8gYmUgdW5yZWdpc3RlcmVkCi0gICogICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6Ci0gICogICAgICAgICAgQGFyZyBAcmVmIEhBTF9EQUNfQ0gxX0NPTVBMRVRFX0NCX0lEICAgICAgICAgIERBQyBDSDEgdHJhbmZlciBDb21wbGV0ZSBDYWxsYmFjayBJRAorICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgICAgICBAYXJnIEByZWYgSEFMX0RBQ19DSDFfQ09NUExFVEVfQ0JfSUQgICAgICAgICAgREFDIENIMSB0cmFuc2ZlciBDb21wbGV0ZSBDYWxsYmFjayBJRAogICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfREFDX0NIMV9IQUxGX0NPTVBMRVRFX0NCX0lEICAgICBEQUMgQ0gxIEhhbGYgQ29tcGxldGUgQ2FsbGJhY2sgSUQKICAgKiAgICAgICAgICBAYXJnIEByZWYgSEFMX0RBQ19DSDFfRVJST1JfSUQgICAgICAgICAgICAgICAgREFDIENIMSBFcnJvciBDYWxsYmFjayBJRAogICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfREFDX0NIMV9VTkRFUlJVTl9DQl9JRCAgICAgICAgICBEQUMgQ0gxIFVuZGVyUnVuIENhbGxiYWNrIElECkBAIC0xMTE0LDg4ICsxMTQ5LDkyIEBACiAgICogICAgICAgICAgQGFyZyBAcmVmIEhBTF9EQUNfQ0gyX0hBTEZfQ09NUExFVEVfQ0JfSUQgICAgIERBQyBDSDIgSGFsZiBDb21wbGV0ZSBDYWxsYmFjayBJRAogICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfREFDX0NIMl9FUlJPUl9JRCAgICAgICAgICAgICAgICBEQUMgQ0gyIEVycm9yIENhbGxiYWNrIElECiAgICogICAgICAgICAgQGFyZyBAcmVmIEhBTF9EQUNfQ0gyX1VOREVSUlVOX0NCX0lEICAgICAgICAgIERBQyBDSDIgVW5kZXJSdW4gQ2FsbGJhY2sgSUQKLSAgKiAgICAgICAgICBAYXJnIEByZWYgSEFMX0RBQ19NU1BfSU5JVF9DQl9JRCAgICAgICAgICAgICAgREFDIE1TUCBJbml0IENhbGxiYWNrIElECi0gICogICAgICAgICAgQGFyZyBAcmVmIEhBTF9EQUNfTVNQX0RFSU5JVF9DQl9JRCAgICAgICAgICAgIERBQyBNU1AgRGVJbml0IENhbGxiYWNrIElECisgICogICAgICAgICAgQGFyZyBAcmVmIEhBTF9EQUNfTVNQSU5JVF9DQl9JRCAgICAgICAgICAgICAgIERBQyBNU1AgSW5pdCBDYWxsYmFjayBJRAorICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfREFDX01TUERFSU5JVF9DQl9JRCAgICAgICAgICAgICBEQUMgTVNQIERlSW5pdCBDYWxsYmFjayBJRAogICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfREFDX0FMTF9DQl9JRCAgICAgICAgICAgICAgICAgICBEQUMgQWxsIGNhbGxiYWNrcwogICAqIEByZXR2YWwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDX1VuUmVnaXN0ZXJDYWxsYmFjayAoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMsIEhBTF9EQUNfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNfVW5SZWdpc3RlckNhbGxiYWNrKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjLCBIQUxfREFDX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQpCiB7CiAgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKIAogICAvKiBQcm9jZXNzIGxvY2tlZCAqLwogICBfX0hBTF9MT0NLKGhkYWMpOwogCi0gIGlmKGhkYWMtPlN0YXRlID09IEhBTF9EQUNfU1RBVEVfUkVBRFkpCisgIGlmIChoZGFjLT5TdGF0ZSA9PSBIQUxfREFDX1NUQVRFX1JFQURZKQogICB7CiAgICAgc3dpdGNoIChDYWxsYmFja0lEKQogICAgIHsKLSAgICBjYXNlIEhBTF9EQUNfQ0gxX0NPTVBMRVRFX0NCX0lEIDoKLSAgICAgIGhkYWMtPkNvbnZDcGx0Q2FsbGJhY2tDaDEgPSBIQUxfREFDX0NvbnZDcGx0Q2FsbGJhY2tDaDE7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEhBTF9EQUNfQ0gxX0hBTEZfQ09NUExFVEVfQ0JfSUQgOgotICAgICAgaGRhYy0+Q29udkhhbGZDcGx0Q2FsbGJhY2tDaDEgPSBIQUxfREFDX0NvbnZIYWxmQ3BsdENhbGxiYWNrQ2gxOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIQUxfREFDX0NIMV9FUlJPUl9JRCA6Ci0gICAgICBoZGFjLT5FcnJvckNhbGxiYWNrQ2gxID0gSEFMX0RBQ19FcnJvckNhbGxiYWNrQ2gxOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIQUxfREFDX0NIMV9VTkRFUlJVTl9DQl9JRCA6Ci0gICAgICBoZGFjLT5ETUFVbmRlcnJ1bkNhbGxiYWNrQ2gxID0gSEFMX0RBQ19ETUFVbmRlcnJ1bkNhbGxiYWNrQ2gxOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIQUxfREFDX0NIMl9DT01QTEVURV9DQl9JRCA6Ci0gICAgICBoZGFjLT5Db252Q3BsdENhbGxiYWNrQ2gyID0gSEFMX0RBQ0V4X0NvbnZDcGx0Q2FsbGJhY2tDaDI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEhBTF9EQUNfQ0gyX0hBTEZfQ09NUExFVEVfQ0JfSUQgOgotICAgICAgaGRhYy0+Q29udkhhbGZDcGx0Q2FsbGJhY2tDaDIgPSBIQUxfREFDRXhfQ29udkhhbGZDcGx0Q2FsbGJhY2tDaDI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEhBTF9EQUNfQ0gyX0VSUk9SX0lEIDoKLSAgICAgIGhkYWMtPkVycm9yQ2FsbGJhY2tDaDIgPSBIQUxfREFDRXhfRXJyb3JDYWxsYmFja0NoMjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX0RBQ19DSDJfVU5ERVJSVU5fQ0JfSUQgOgotICAgICAgaGRhYy0+RE1BVW5kZXJydW5DYWxsYmFja0NoMiA9IEhBTF9EQUNFeF9ETUFVbmRlcnJ1bkNhbGxiYWNrQ2gyOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBIQUxfREFDX01TUF9JTklUX0NCX0lEIDoKLSAgICAgIGhkYWMtPk1zcEluaXRDYWxsYmFjayA9IEhBTF9EQUNfTXNwSW5pdDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX0RBQ19NU1BfREVJTklUX0NCX0lEIDoKLSAgICAgIGhkYWMtPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX0RBQ19Nc3BEZUluaXQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEhBTF9EQUNfQUxMX0NCX0lEIDoKLSAgICAgIGhkYWMtPkNvbnZDcGx0Q2FsbGJhY2tDaDEgPSBIQUxfREFDX0NvbnZDcGx0Q2FsbGJhY2tDaDE7Ci0gICAgICBoZGFjLT5Db252SGFsZkNwbHRDYWxsYmFja0NoMSA9IEhBTF9EQUNfQ29udkhhbGZDcGx0Q2FsbGJhY2tDaDE7Ci0gICAgICBoZGFjLT5FcnJvckNhbGxiYWNrQ2gxID0gSEFMX0RBQ19FcnJvckNhbGxiYWNrQ2gxOwotICAgICAgaGRhYy0+RE1BVW5kZXJydW5DYWxsYmFja0NoMSA9IEhBTF9EQUNfRE1BVW5kZXJydW5DYWxsYmFja0NoMTsKLSAgICAgIGhkYWMtPkNvbnZDcGx0Q2FsbGJhY2tDaDIgPSBIQUxfREFDRXhfQ29udkNwbHRDYWxsYmFja0NoMjsKLSAgICAgIGhkYWMtPkNvbnZIYWxmQ3BsdENhbGxiYWNrQ2gyID0gSEFMX0RBQ0V4X0NvbnZIYWxmQ3BsdENhbGxiYWNrQ2gyOwotICAgICAgaGRhYy0+RXJyb3JDYWxsYmFja0NoMiA9IEhBTF9EQUNFeF9FcnJvckNhbGxiYWNrQ2gyOwotICAgICAgaGRhYy0+RE1BVW5kZXJydW5DYWxsYmFja0NoMiA9IEhBTF9EQUNFeF9ETUFVbmRlcnJ1bkNhbGxiYWNrQ2gyOwotICAgICAgaGRhYy0+TXNwSW5pdENhbGxiYWNrID0gSEFMX0RBQ19Nc3BJbml0OwotICAgICAgaGRhYy0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfREFDX01zcERlSW5pdDsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQgOgotICAgICAgLyogVXBkYXRlIHRoZSBlcnJvciBjb2RlICovCi0gICAgICBoZGFjLT5FcnJvckNvZGUgfD0gSEFMX0RBQ19FUlJPUl9JTlZBTElEX0NBTExCQUNLOwotICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KLSAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0RBQ19DSDFfQ09NUExFVEVfQ0JfSUQgOgorICAgICAgICBoZGFjLT5Db252Q3BsdENhbGxiYWNrQ2gxID0gSEFMX0RBQ19Db252Q3BsdENhbGxiYWNrQ2gxOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0RBQ19DSDFfSEFMRl9DT01QTEVURV9DQl9JRCA6CisgICAgICAgIGhkYWMtPkNvbnZIYWxmQ3BsdENhbGxiYWNrQ2gxID0gSEFMX0RBQ19Db252SGFsZkNwbHRDYWxsYmFja0NoMTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9EQUNfQ0gxX0VSUk9SX0lEIDoKKyAgICAgICAgaGRhYy0+RXJyb3JDYWxsYmFja0NoMSA9IEhBTF9EQUNfRXJyb3JDYWxsYmFja0NoMTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9EQUNfQ0gxX1VOREVSUlVOX0NCX0lEIDoKKyAgICAgICAgaGRhYy0+RE1BVW5kZXJydW5DYWxsYmFja0NoMSA9IEhBTF9EQUNfRE1BVW5kZXJydW5DYWxsYmFja0NoMTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGNhc2UgSEFMX0RBQ19DSDJfQ09NUExFVEVfQ0JfSUQgOgorICAgICAgICBoZGFjLT5Db252Q3BsdENhbGxiYWNrQ2gyID0gSEFMX0RBQ0V4X0NvbnZDcGx0Q2FsbGJhY2tDaDI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfREFDX0NIMl9IQUxGX0NPTVBMRVRFX0NCX0lEIDoKKyAgICAgICAgaGRhYy0+Q29udkhhbGZDcGx0Q2FsbGJhY2tDaDIgPSBIQUxfREFDRXhfQ29udkhhbGZDcGx0Q2FsbGJhY2tDaDI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfREFDX0NIMl9FUlJPUl9JRCA6CisgICAgICAgIGhkYWMtPkVycm9yQ2FsbGJhY2tDaDIgPSBIQUxfREFDRXhfRXJyb3JDYWxsYmFja0NoMjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9EQUNfQ0gyX1VOREVSUlVOX0NCX0lEIDoKKyAgICAgICAgaGRhYy0+RE1BVW5kZXJydW5DYWxsYmFja0NoMiA9IEhBTF9EQUNFeF9ETUFVbmRlcnJ1bkNhbGxiYWNrQ2gyOworICAgICAgICBicmVhazsKKworICAgICAgY2FzZSBIQUxfREFDX01TUElOSVRfQ0JfSUQgOgorICAgICAgICBoZGFjLT5Nc3BJbml0Q2FsbGJhY2sgPSBIQUxfREFDX01zcEluaXQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfREFDX01TUERFSU5JVF9DQl9JRCA6CisgICAgICAgIGhkYWMtPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX0RBQ19Nc3BEZUluaXQ7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfREFDX0FMTF9DQl9JRCA6CisgICAgICAgIGhkYWMtPkNvbnZDcGx0Q2FsbGJhY2tDaDEgPSBIQUxfREFDX0NvbnZDcGx0Q2FsbGJhY2tDaDE7CisgICAgICAgIGhkYWMtPkNvbnZIYWxmQ3BsdENhbGxiYWNrQ2gxID0gSEFMX0RBQ19Db252SGFsZkNwbHRDYWxsYmFja0NoMTsKKyAgICAgICAgaGRhYy0+RXJyb3JDYWxsYmFja0NoMSA9IEhBTF9EQUNfRXJyb3JDYWxsYmFja0NoMTsKKyAgICAgICAgaGRhYy0+RE1BVW5kZXJydW5DYWxsYmFja0NoMSA9IEhBTF9EQUNfRE1BVW5kZXJydW5DYWxsYmFja0NoMTsKKworICAgICAgICBoZGFjLT5Db252Q3BsdENhbGxiYWNrQ2gyID0gSEFMX0RBQ0V4X0NvbnZDcGx0Q2FsbGJhY2tDaDI7CisgICAgICAgIGhkYWMtPkNvbnZIYWxmQ3BsdENhbGxiYWNrQ2gyID0gSEFMX0RBQ0V4X0NvbnZIYWxmQ3BsdENhbGxiYWNrQ2gyOworICAgICAgICBoZGFjLT5FcnJvckNhbGxiYWNrQ2gyID0gSEFMX0RBQ0V4X0Vycm9yQ2FsbGJhY2tDaDI7CisgICAgICAgIGhkYWMtPkRNQVVuZGVycnVuQ2FsbGJhY2tDaDIgPSBIQUxfREFDRXhfRE1BVW5kZXJydW5DYWxsYmFja0NoMjsKKworICAgICAgICBoZGFjLT5Nc3BJbml0Q2FsbGJhY2sgPSBIQUxfREFDX01zcEluaXQ7CisgICAgICAgIGhkYWMtPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX0RBQ19Nc3BEZUluaXQ7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdCA6CisgICAgICAgIC8qIFVwZGF0ZSB0aGUgZXJyb3IgY29kZSAqLworICAgICAgICBoZGFjLT5FcnJvckNvZGUgfD0gSEFMX0RBQ19FUlJPUl9JTlZBTElEX0NBTExCQUNLOworICAgICAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLworICAgICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOworICAgICAgICBicmVhazsKICAgICB9CiAgIH0KICAgZWxzZSBpZiAoaGRhYy0+U3RhdGUgPT0gSEFMX0RBQ19TVEFURV9SRVNFVCkKICAgewogICAgIHN3aXRjaCAoQ2FsbGJhY2tJRCkKICAgICB7Ci0gICAgY2FzZSBIQUxfREFDX01TUF9JTklUX0NCX0lEIDoKLSAgICAgIGhkYWMtPk1zcEluaXRDYWxsYmFjayA9IEhBTF9EQUNfTXNwSW5pdDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSEFMX0RBQ19NU1BfREVJTklUX0NCX0lEIDoKLSAgICAgIGhkYWMtPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX0RBQ19Nc3BEZUluaXQ7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0IDoKLSAgICAgIC8qIFVwZGF0ZSB0aGUgZXJyb3IgY29kZSAqLwotICAgICAgaGRhYy0+RXJyb3JDb2RlIHw9IEhBTF9EQUNfRVJST1JfSU5WQUxJRF9DQUxMQkFDSzsKLSAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCi0gICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9EQUNfTVNQSU5JVF9DQl9JRCA6CisgICAgICAgIGhkYWMtPk1zcEluaXRDYWxsYmFjayA9IEhBTF9EQUNfTXNwSW5pdDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9EQUNfTVNQREVJTklUX0NCX0lEIDoKKyAgICAgICAgaGRhYy0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfREFDX01zcERlSW5pdDsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0IDoKKyAgICAgICAgLyogVXBkYXRlIHRoZSBlcnJvciBjb2RlICovCisgICAgICAgIGhkYWMtPkVycm9yQ29kZSB8PSBIQUxfREFDX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0s7CisgICAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCisgICAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogICBlbHNlCkBAIC0xMjI1LDczICsxMjY0LDc1IEBACiAgICovCiAKIC8qKgotICAqIEBicmllZiAgRE1BIGNvbnZlcnNpb24gY29tcGxldGUgY2FsbGJhY2suIAotICAqIEBwYXJhbSAgaGRtYTogcG9pbnRlciB0byBhIERNQV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCisgICogQGJyaWVmICBETUEgY29udmVyc2lvbiBjb21wbGV0ZSBjYWxsYmFjay4KKyAgKiBAcGFyYW0gIGhkbWEgcG9pbnRlciB0byBhIERNQV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgRE1BIG1vZHVsZS4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLXN0YXRpYyB2b2lkIERBQ19ETUFDb252Q3BsdENoMShETUFfSGFuZGxlVHlwZURlZiAqaGRtYSkgICAKK3ZvaWQgREFDX0RNQUNvbnZDcGx0Q2gxKERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKQogewotICBEQUNfSGFuZGxlVHlwZURlZiogaGRhYyA9ICggREFDX0hhbmRsZVR5cGVEZWYqICkoKERNQV9IYW5kbGVUeXBlRGVmKiApaGRtYSktPlBhcmVudDsKLSAgCisgIERBQ19IYW5kbGVUeXBlRGVmICpoZGFjID0gKERBQ19IYW5kbGVUeXBlRGVmICopKChETUFfSGFuZGxlVHlwZURlZiAqKWhkbWEpLT5QYXJlbnQ7CisKICNpZiAoVVNFX0hBTF9EQUNfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCiAgIGhkYWMtPkNvbnZDcGx0Q2FsbGJhY2tDaDEoaGRhYyk7CiAjZWxzZQotICBIQUxfREFDX0NvbnZDcGx0Q2FsbGJhY2tDaDEoaGRhYyk7IAorICBIQUxfREFDX0NvbnZDcGx0Q2FsbGJhY2tDaDEoaGRhYyk7CiAjZW5kaWYgLyogVVNFX0hBTF9EQUNfUkVHSVNURVJfQ0FMTEJBQ0tTICovCi0gIAotICBoZGFjLT5TdGF0ZT0gSEFMX0RBQ19TVEFURV9SRUFEWTsKKworICBoZGFjLT5TdGF0ZSA9IEhBTF9EQUNfU1RBVEVfUkVBRFk7CiB9CiAKIC8qKgotICAqIEBicmllZiAgRE1BIGhhbGYgdHJhbnNmZXIgY29tcGxldGUgY2FsbGJhY2suIAotICAqIEBwYXJhbSAgaGRtYTogcG9pbnRlciB0byBhIERNQV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCisgICogQGJyaWVmICBETUEgaGFsZiB0cmFuc2ZlciBjb21wbGV0ZSBjYWxsYmFjay4KKyAgKiBAcGFyYW0gIGhkbWEgcG9pbnRlciB0byBhIERNQV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgRE1BIG1vZHVsZS4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLXN0YXRpYyB2b2lkIERBQ19ETUFIYWxmQ29udkNwbHRDaDEoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpICAgCit2b2lkIERBQ19ETUFIYWxmQ29udkNwbHRDaDEoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpCiB7Ci0gICAgREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMgPSAoIERBQ19IYW5kbGVUeXBlRGVmKiApKChETUFfSGFuZGxlVHlwZURlZiogKWhkbWEpLT5QYXJlbnQ7Ci0gICAgLyogQ29udmVyc2lvbiBjb21wbGV0ZSBjYWxsYmFjayAqLworICBEQUNfSGFuZGxlVHlwZURlZiAqaGRhYyA9IChEQUNfSGFuZGxlVHlwZURlZiAqKSgoRE1BX0hhbmRsZVR5cGVEZWYgKiloZG1hKS0+UGFyZW50OworICAvKiBDb252ZXJzaW9uIGNvbXBsZXRlIGNhbGxiYWNrICovCiAjaWYgKFVTRV9IQUxfREFDX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogICBoZGFjLT5Db252SGFsZkNwbHRDYWxsYmFja0NoMShoZGFjKTsKICNlbHNlCi0gICAgSEFMX0RBQ19Db252SGFsZkNwbHRDYWxsYmFja0NoMShoZGFjKTsgCisgIEhBTF9EQUNfQ29udkhhbGZDcGx0Q2FsbGJhY2tDaDEoaGRhYyk7CiAjZW5kaWYgIC8qIFVTRV9IQUxfREFDX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogfQogCiAvKioKLSAgKiBAYnJpZWYgIERNQSBlcnJvciBjYWxsYmFjayAKLSAgKiBAcGFyYW0gIGhkbWE6IHBvaW50ZXIgdG8gYSBETUFfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucworICAqIEBicmllZiAgRE1BIGVycm9yIGNhbGxiYWNrCisgICogQHBhcmFtICBoZG1hIHBvaW50ZXIgdG8gYSBETUFfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIERNQSBtb2R1bGUuCiAgICogQHJldHZhbCBOb25lCiAgICovCi1zdGF0aWMgdm9pZCBEQUNfRE1BRXJyb3JDaDEoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpICAgCit2b2lkIERBQ19ETUFFcnJvckNoMShETUFfSGFuZGxlVHlwZURlZiAqaGRtYSkKIHsKLSAgREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMgPSAoIERBQ19IYW5kbGVUeXBlRGVmKiApKChETUFfSGFuZGxlVHlwZURlZiogKWhkbWEpLT5QYXJlbnQ7Ci0gICAgCisgIERBQ19IYW5kbGVUeXBlRGVmICpoZGFjID0gKERBQ19IYW5kbGVUeXBlRGVmICopKChETUFfSGFuZGxlVHlwZURlZiAqKWhkbWEpLT5QYXJlbnQ7CisKICAgLyogU2V0IERBQyBlcnJvciBjb2RlIHRvIERNQSBlcnJvciAqLwogICBoZGFjLT5FcnJvckNvZGUgfD0gSEFMX0RBQ19FUlJPUl9ETUE7Ci0gICAgCisKICNpZiAoVVNFX0hBTF9EQUNfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCiAgIGhkYWMtPkVycm9yQ2FsbGJhY2tDaDEoaGRhYyk7CiAjZWxzZQotICBIQUxfREFDX0Vycm9yQ2FsbGJhY2tDaDEoaGRhYyk7IAorICBIQUxfREFDX0Vycm9yQ2FsbGJhY2tDaDEoaGRhYyk7CiAjZW5kaWYgLyogVVNFX0hBTF9EQUNfUkVHSVNURVJfQ0FMTEJBQ0tTICovCi0gICAgCi0gIGhkYWMtPlN0YXRlPSBIQUxfREFDX1NUQVRFX1JFQURZOworCisgIGhkYWMtPlN0YXRlID0gSEFMX0RBQ19TVEFURV9SRUFEWTsKIH0KIAogLyoqCiAgICogQH0KICAgKi8KIAotI2VuZGlmIC8qIEhBTF9EQUNfTU9EVUxFX0VOQUJMRUQgKi8KLQogLyoqCiAgICogQH0KICAgKi8KIAorI2VuZGlmIC8qIERBQyAqLworCisjZW5kaWYgLyogSEFMX0RBQ19NT0RVTEVfRU5BQkxFRCAqLworCiAvKioKICAgKiBAfQogICAqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfZGFjX2V4LmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9kYWNfZXguYwppbmRleCBkNjFkOWViLi4yODcxZTc4IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9kYWNfZXguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9kYWNfZXguYwpAQCAtMywyMyArMywzMSBAQAogICAqIEBmaWxlICAgIHN0bTMyZjd4eF9oYWxfZGFjX2V4LmMKICAgKiBAYXV0aG9yICBNQ0QgQXBwbGljYXRpb24gVGVhbQogICAqIEBicmllZiAgIEV4dGVuZGVkIERBQyBIQUwgbW9kdWxlIGRyaXZlci4KLSAgKiAgICAgICAgIFRoaXMgZmlsZSBwcm92aWRlcyBmaXJtd2FyZSBmdW5jdGlvbnMgdG8gbWFuYWdlIHRoZSBmb2xsb3dpbmcgCi0gICogICAgICAgICBmdW5jdGlvbmFsaXRpZXMgb2YgREFDIGV4dGVuc2lvbiBwZXJpcGhlcmFsOgotICAqICAgICAgICAgICArIEV4dGVuZGVkIGZlYXR1cmVzIGZ1bmN0aW9ucwotICAqICAgICAKKyAgKiAgICAgICAgICBUaGlzIGZpbGUgcHJvdmlkZXMgZmlybXdhcmUgZnVuY3Rpb25zIHRvIG1hbmFnZSB0aGUgZXh0ZW5kZWQKKyAgKiAgICAgICAgICBmdW5jdGlvbmFsaXRpZXMgb2YgdGhlIERBQyBwZXJpcGhlcmFsLgogICAqCi0gIEB2ZXJiYXRpbSAgICAgIAorICAqCisgIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIFsuLl0gICAgICAgICAgCi0gICAgICAoKykgV2hlbiBEdWFsIG1vZGUgaXMgZW5hYmxlZCAoaS5lIERBQyBDaGFubmVsMSBhbmQgQ2hhbm5lbDIgYXJlIHVzZWQgc2ltdWx0YW5lb3VzbHkpIDoKKyAgICBbLi5dCisKKyAgICAgKioqIER1YWwgbW9kZSBJTyBvcGVyYXRpb24gKioqCisgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICBbLi5dCisgICAgICAoKykgV2hlbiBEdWFsIG1vZGUgaXMgZW5hYmxlZCAoaS5lLiBEQUMgQ2hhbm5lbDEgYW5kIENoYW5uZWwyIGFyZSB1c2VkIHNpbXVsdGFuZW91c2x5KSA6CiAgICAgICAgICAgVXNlIEhBTF9EQUNFeF9EdWFsR2V0VmFsdWUoKSB0byBnZXQgZGlnaXRhbCBkYXRhIHRvIGJlIGNvbnZlcnRlZCBhbmQgdXNlCi0gICAgICAgICAgSEFMX0RBQ0V4X0R1YWxTZXRWYWx1ZSgpIHRvIHNldCBkaWdpdGFsIHZhbHVlIHRvIGNvbnZlcnRlZCBzaW11bHRhbmVvdXNseSBpbiBDaGFubmVsIDEgYW5kIENoYW5uZWwgMi4gIAorICAgICAgICAgIEhBTF9EQUNFeF9EdWFsU2V0VmFsdWUoKSB0byBzZXQgZGlnaXRhbCB2YWx1ZSB0byBjb252ZXJ0ZWQgc2ltdWx0YW5lb3VzbHkgaW4KKyAgICAgICAgICBDaGFubmVsIDEgYW5kIENoYW5uZWwgMi4KKworICAgICAqKiogU2lnbmFsIGdlbmVyYXRpb24gb3BlcmF0aW9uICoqKgorICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICBbLi5dCiAgICAgICAoKykgVXNlIEhBTF9EQUNFeF9UcmlhbmdsZVdhdmVHZW5lcmF0ZSgpIHRvIGdlbmVyYXRlIFRyaWFuZ2xlIHNpZ25hbC4KICAgICAgICgrKSBVc2UgSEFMX0RBQ0V4X05vaXNlV2F2ZUdlbmVyYXRlKCkgdG8gZ2VuZXJhdGUgTm9pc2Ugc2lnbmFsLgotICAgCi0gQGVuZHZlcmJhdGltICAgIAorCisgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAqIEBhdHRlbnRpb24KICAgKgpAQCAtMzIsNyArNDAsNyBAQAogICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICovIAorICAqLwogCiAKIC8qIEluY2x1ZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC00MiwzMSArNTAsMzMgQEAKICAgKiBAewogICAqLwogCi0vKiogQGRlZmdyb3VwIERBQ0V4IERBQ0V4Ci0gICogQGJyaWVmIERBQyBkcml2ZXIgbW9kdWxlcwotICAqIEB7Ci0gICovIAotCiAjaWZkZWYgSEFMX0RBQ19NT0RVTEVfRU5BQkxFRAogCisjaWYgZGVmaW5lZChEQUMpCisKKy8qKiBAZGVmZ3JvdXAgREFDRXggREFDRXgKKyAgKiBAYnJpZWYgREFDIEV4dGVuZGVkIEhBTCBtb2R1bGUgZHJpdmVyCisgICogQHsKKyAgKi8KKwogLyogUHJpdmF0ZSB0eXBlZGVmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIFByaXZhdGUgZGVmaW5lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBQcml2YXRlIG1hY3JvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogUHJpdmF0ZSB2YXJpYWJsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIFByaXZhdGUgZnVuY3Rpb24gcHJvdG90eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiBQcml2YXRlIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogRXhwb3J0ZWQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qKiBAZGVmZ3JvdXAgREFDRXhfRXhwb3J0ZWRfRnVuY3Rpb25zIERBQyBFeHBvcnRlZCBGdW5jdGlvbnMKKworLyoqIEBkZWZncm91cCBEQUNFeF9FeHBvcnRlZF9GdW5jdGlvbnMgREFDRXggRXhwb3J0ZWQgRnVuY3Rpb25zCiAgICogQHsKICAgKi8KIAotLyoqIEBkZWZncm91cCBEQUNFeF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAxIEV4dGVuZGVkIGZlYXR1cmVzIGZ1bmN0aW9ucwotICogIEBicmllZiAgICBFeHRlbmRlZCBmZWF0dXJlcyBmdW5jdGlvbnMgCi0gKgotQHZlcmJhdGltICAgCisvKiogQGRlZmdyb3VwIERBQ0V4X0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDIgSU8gb3BlcmF0aW9uIGZ1bmN0aW9ucworICAqICBAYnJpZWYgICAgRXh0ZW5kZWQgSU8gb3BlcmF0aW9uIGZ1bmN0aW9ucworICAqCitAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICMjIyMjIEV4dGVuZGVkIGZlYXR1cmVzIGZ1bmN0aW9ucyAjIyMjIwotICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAorICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBbLi5dICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgZnVuY3Rpb25zIGFsbG93aW5nIHRvOgogICAgICAgKCspIFN0YXJ0IGNvbnZlcnNpb24uCiAgICAgICAoKykgU3RvcCBjb252ZXJzaW9uLgpAQCAtNzQsMzggKzg0LDg2IEBACiAgICAgICAoKykgU3RvcCBjb252ZXJzaW9uIGFuZCBkaXNhYmxlIERNQSB0cmFuc2Zlci4KICAgICAgICgrKSBHZXQgcmVzdWx0IG9mIGNvbnZlcnNpb24uCiAgICAgICAoKykgR2V0IHJlc3VsdCBvZiBkdWFsIG1vZGUgY29udmVyc2lvbi4KLSAgICAgICAgICAgICAgICAgICAgIAorCiBAZW5kdmVyYmF0aW0KICAgKiBAewogICAqLwogCisKIC8qKgotICAqIEBicmllZiAgUmV0dXJucyB0aGUgbGFzdCBkYXRhIG91dHB1dCB2YWx1ZSBvZiB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwuCi0gICogQHBhcmFtICBoZGFjOiBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiBAYnJpZWYgIEVuYWJsZXMgREFDIGFuZCBzdGFydHMgY29udmVyc2lvbiBvZiBib3RoIGNoYW5uZWxzLgorICAqIEBwYXJhbSAgaGRhYyBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIERBQy4KLSAgKiBAcmV0dmFsIFRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbCBkYXRhIG91dHB1dCB2YWx1ZS4KKyAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLXVpbnQzMl90IEhBTF9EQUNFeF9EdWFsR2V0VmFsdWUoREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDRXhfRHVhbFN0YXJ0KERBQ19IYW5kbGVUeXBlRGVmICpoZGFjKQogewotICB1aW50MzJfdCB0bXAgPSAwOwotICAKLSAgdG1wIHw9IGhkYWMtPkluc3RhbmNlLT5ET1IxOwotICAKLSAgdG1wIHw9IGhkYWMtPkluc3RhbmNlLT5ET1IyIDw8IDE2OwotICAKLSAgLyogUmV0dXJucyB0aGUgREFDIGNoYW5uZWwgZGF0YSBvdXRwdXQgcmVnaXN0ZXIgdmFsdWUgKi8KLSAgcmV0dXJuIHRtcDsKKyAgdWludDMyX3QgdG1wX3N3dHJpZyA9IDBVTDsKKworCisgIC8qIFByb2Nlc3MgbG9ja2VkICovCisgIF9fSEFMX0xPQ0soaGRhYyk7CisKKyAgLyogQ2hhbmdlIERBQyBzdGF0ZSAqLworICBoZGFjLT5TdGF0ZSA9IEhBTF9EQUNfU1RBVEVfQlVTWTsKKworICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwgKi8KKyAgX19IQUxfREFDX0VOQUJMRShoZGFjLCBEQUNfQ0hBTk5FTF8xKTsKKyAgX19IQUxfREFDX0VOQUJMRShoZGFjLCBEQUNfQ0hBTk5FTF8yKTsKKworICAvKiBDaGVjayBpZiBzb2Z0d2FyZSB0cmlnZ2VyIGVuYWJsZWQgKi8KKyAgaWYgKChoZGFjLT5JbnN0YW5jZS0+Q1IgJiAoREFDX0NSX1RFTjEgfCBEQUNfQ1JfVFNFTDEpKSA9PSBEQUNfVFJJR0dFUl9TT0ZUV0FSRSkKKyAgeworICAgIHRtcF9zd3RyaWcgfD0gREFDX1NXVFJJR1JfU1dUUklHMTsKKyAgfQorICBpZiAoKGhkYWMtPkluc3RhbmNlLT5DUiAmIChEQUNfQ1JfVEVOMiB8IERBQ19DUl9UU0VMMikpID09IChEQUNfVFJJR0dFUl9TT0ZUV0FSRSA8PCAoREFDX0NIQU5ORUxfMiAmIDB4MTBVTCkpKQorICB7CisgICAgdG1wX3N3dHJpZyB8PSBEQUNfU1dUUklHUl9TV1RSSUcyOworICB9CisgIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgREFDIHNvZnR3YXJlIGNvbnZlcnNpb24qLworICBTRVRfQklUKGhkYWMtPkluc3RhbmNlLT5TV1RSSUdSLCB0bXBfc3d0cmlnKTsKKworICAvKiBDaGFuZ2UgREFDIHN0YXRlICovCisgIGhkYWMtPlN0YXRlID0gSEFMX0RBQ19TVEFURV9SRUFEWTsKKworICAvKiBQcm9jZXNzIHVubG9ja2VkICovCisgIF9fSEFMX1VOTE9DSyhoZGFjKTsKKworICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCisgIHJldHVybiBIQUxfT0s7CiB9CiAKIC8qKgotICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgd2F2ZSBnZW5lcmF0aW9uLgotICAqIEBwYXJhbSAgaGRhYzogcG9pbnRlciB0byBhIERBQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCisgICogQGJyaWVmICBEaXNhYmxlcyBEQUMgYW5kIHN0b3AgY29udmVyc2lvbiBvZiBib3RoIGNoYW5uZWxzLgorICAqIEBwYXJhbSAgaGRhYyBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIERBQy4KLSAgKiBAcGFyYW0gIENoYW5uZWw6IFRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbC4gCisgICogQHJldHZhbCBIQUwgc3RhdHVzCisgICovCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDRXhfRHVhbFN0b3AoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpCit7CisKKyAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCAqLworICBfX0hBTF9EQUNfRElTQUJMRShoZGFjLCBEQUNfQ0hBTk5FTF8xKTsKKyAgX19IQUxfREFDX0RJU0FCTEUoaGRhYywgREFDX0NIQU5ORUxfMik7CisKKyAgLyogQ2hhbmdlIERBQyBzdGF0ZSAqLworICBoZGFjLT5TdGF0ZSA9IEhBTF9EQUNfU1RBVEVfUkVBRFk7CisKKyAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLworICByZXR1cm4gSEFMX09LOworfQorCisKKworLyoqCisgICogQGJyaWVmICBFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgd2F2ZSBnZW5lcmF0aW9uLgorICAqIEBwYXJhbSAgaGRhYyBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIERBQy4KKyAgKiBAcGFyYW0gIENoYW5uZWwgVGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLgogICAqICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6Ci0gICogICAgICAgICAgICBAYXJnIERBQ19DSEFOTkVMXzE6IERBQyBDaGFubmVsMSBzZWxlY3RlZCAKKyAgKiAgICAgICAgICAgIEBhcmcgREFDX0NIQU5ORUxfMTogREFDIENoYW5uZWwxIHNlbGVjdGVkCiAgICogICAgICAgICAgICBAYXJnIERBQ19DSEFOTkVMXzI6IERBQyBDaGFubmVsMiBzZWxlY3RlZAotICAqIEBwYXJhbSAgQW1wbGl0dWRlOiBTZWxlY3QgbWF4IHRyaWFuZ2xlIGFtcGxpdHVkZS4gCisgICogQHBhcmFtICBBbXBsaXR1ZGUgU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUuCiAgICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKICAgKiAgICAgICAgICAgIEBhcmcgREFDX1RSSUFOR0xFQU1QTElUVURFXzE6IFNlbGVjdCBtYXggdHJpYW5nbGUgYW1wbGl0dWRlIG9mIDEKICAgKiAgICAgICAgICAgIEBhcmcgREFDX1RSSUFOR0xFQU1QTElUVURFXzM6IFNlbGVjdCBtYXggdHJpYW5nbGUgYW1wbGl0dWRlIG9mIDMKQEAgLTExOCwxNjYgKzE3NiwxNjYgQEAKICAgKiAgICAgICAgICAgIEBhcmcgREFDX1RSSUFOR0xFQU1QTElUVURFXzUxMTogU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgNTExCiAgICogICAgICAgICAgICBAYXJnIERBQ19UUklBTkdMRUFNUExJVFVERV8xMDIzOiBTZWxlY3QgbWF4IHRyaWFuZ2xlIGFtcGxpdHVkZSBvZiAxMDIzCiAgICogICAgICAgICAgICBAYXJnIERBQ19UUklBTkdMRUFNUExJVFVERV8yMDQ3OiBTZWxlY3QgbWF4IHRyaWFuZ2xlIGFtcGxpdHVkZSBvZiAyMDQ3Ci0gICogICAgICAgICAgICBAYXJnIERBQ19UUklBTkdMRUFNUExJVFVERV80MDk1OiBTZWxlY3QgbWF4IHRyaWFuZ2xlIGFtcGxpdHVkZSBvZiA0MDk1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAqICAgICAgICAgICAgQGFyZyBEQUNfVFJJQU5HTEVBTVBMSVRVREVfNDA5NTogU2VsZWN0IG1heCB0cmlhbmdsZSBhbXBsaXR1ZGUgb2YgNDA5NQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RBQ0V4X1RyaWFuZ2xlV2F2ZUdlbmVyYXRlKERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjLCB1aW50MzJfdCBDaGFubmVsLCB1aW50MzJfdCBBbXBsaXR1ZGUpCi17ICAKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNFeF9UcmlhbmdsZVdhdmVHZW5lcmF0ZShEQUNfSGFuZGxlVHlwZURlZiAqaGRhYywgdWludDMyX3QgQ2hhbm5lbCwgdWludDMyX3QgQW1wbGl0dWRlKQorewogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfREFDX0NIQU5ORUwoQ2hhbm5lbCkpOwogICBhc3NlcnRfcGFyYW0oSVNfREFDX0xGU1JfVU5NQVNLX1RSSUFOR0xFX0FNUExJVFVERShBbXBsaXR1ZGUpKTsKLSAgCisKICAgLyogUHJvY2VzcyBsb2NrZWQgKi8KICAgX19IQUxfTE9DSyhoZGFjKTsKLSAgCisKICAgLyogQ2hhbmdlIERBQyBzdGF0ZSAqLwogICBoZGFjLT5TdGF0ZSA9IEhBTF9EQUNfU1RBVEVfQlVTWTsKLSAgCi0gIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgd2F2ZSBnZW5lcmF0aW9uIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgKi8KLSAgTU9ESUZZX1JFRyhoZGFjLT5JbnN0YW5jZS0+Q1IsIChEQUNfQ1JfV0FWRTEgfCBEQUNfQ1JfTUFNUDEpIDw8IENoYW5uZWwsIChEQUNfQ1JfV0FWRTFfMSB8IEFtcGxpdHVkZSkgPDwgQ2hhbm5lbCk7CisKKyAgLyogRW5hYmxlIHRoZSB0cmlhbmdsZSB3YXZlIGdlbmVyYXRpb24gZm9yIHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbCAqLworICBNT0RJRllfUkVHKGhkYWMtPkluc3RhbmNlLT5DUiwgKChEQUNfQ1JfV0FWRTEpIHwgKERBQ19DUl9NQU1QMSkpIDw8IChDaGFubmVsICYgMHgxMFVMKSwKKyAgICAgICAgICAgICAoREFDX0NSX1dBVkUxXzEgfCBBbXBsaXR1ZGUpIDw8IChDaGFubmVsICYgMHgxMFVMKSk7CiAKICAgLyogQ2hhbmdlIERBQyBzdGF0ZSAqLwogICBoZGFjLT5TdGF0ZSA9IEhBTF9EQUNfU1RBVEVfUkVBRFk7Ci0gIAorCiAgIC8qIFByb2Nlc3MgdW5sb2NrZWQgKi8KICAgX19IQUxfVU5MT0NLKGhkYWMpOwotICAKKwogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CiB9CiAKIC8qKgotICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgd2F2ZSBnZW5lcmF0aW9uLgotICAqIEBwYXJhbSAgaGRhYzogcG9pbnRlciB0byBhIERBQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCi0gICogICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBEQUMuIAotICAqIEBwYXJhbSAgQ2hhbm5lbDogVGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLiAKKyAgKiBAYnJpZWYgIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbCB3YXZlIGdlbmVyYXRpb24uCisgICogQHBhcmFtICBoZGFjIHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucworICAqICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgREFDLgorICAqIEBwYXJhbSAgQ2hhbm5lbCBUaGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwuCiAgICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKLSAgKiAgICAgICAgICAgIEBhcmcgREFDX0NIQU5ORUxfMTogREFDIENoYW5uZWwxIHNlbGVjdGVkIAorICAqICAgICAgICAgICAgQGFyZyBEQUNfQ0hBTk5FTF8xOiBEQUMgQ2hhbm5lbDEgc2VsZWN0ZWQKICAgKiAgICAgICAgICAgIEBhcmcgREFDX0NIQU5ORUxfMjogREFDIENoYW5uZWwyIHNlbGVjdGVkCi0gICogQHBhcmFtICBBbXBsaXR1ZGU6IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24uIAotICAqICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6IAorICAqIEBwYXJhbSAgQW1wbGl0dWRlIFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24uCisgICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKICAgKiAgICAgICAgICAgIEBhcmcgREFDX0xGU1JVTk1BU0tfQklUMDogVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0MCBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uCi0gICogICAgICAgICAgICBAYXJnIERBQ19MRlNSVU5NQVNLX0JJVFMxXzA6IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGJpdFsxOjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24gIAorICAqICAgICAgICAgICAgQGFyZyBEQUNfTEZTUlVOTUFTS19CSVRTMV8wOiBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbMTowXSBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uCiAgICogICAgICAgICAgICBAYXJnIERBQ19MRlNSVU5NQVNLX0JJVFMyXzA6IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGJpdFsyOjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24KLSAgKiAgICAgICAgICAgIEBhcmcgREFDX0xGU1JVTk1BU0tfQklUUzNfMDogVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0WzM6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAKLSAgKiAgICAgICAgICAgIEBhcmcgREFDX0xGU1JVTk1BU0tfQklUUzRfMDogVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0WzQ6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAKLSAgKiAgICAgICAgICAgIEBhcmcgREFDX0xGU1JVTk1BU0tfQklUUzVfMDogVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0WzU6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAKLSAgKiAgICAgICAgICAgIEBhcmcgREFDX0xGU1JVTk1BU0tfQklUUzZfMDogVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0WzY6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAKLSAgKiAgICAgICAgICAgIEBhcmcgREFDX0xGU1JVTk1BU0tfQklUUzdfMDogVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0Wzc6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAKLSAgKiAgICAgICAgICAgIEBhcmcgREFDX0xGU1JVTk1BU0tfQklUUzhfMDogVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0Wzg6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAKLSAgKiAgICAgICAgICAgIEBhcmcgREFDX0xGU1JVTk1BU0tfQklUUzlfMDogVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0Wzk6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbiAKLSAgKiAgICAgICAgICAgIEBhcmcgREFDX0xGU1JVTk1BU0tfQklUUzEwXzA6IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGJpdFsxMDowXSBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uIAotICAqICAgICAgICAgICAgQGFyZyBEQUNfTEZTUlVOTUFTS19CSVRTMTFfMDogVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0WzExOjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24gCisgICogICAgICAgICAgICBAYXJnIERBQ19MRlNSVU5NQVNLX0JJVFMzXzA6IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGJpdFszOjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24KKyAgKiAgICAgICAgICAgIEBhcmcgREFDX0xGU1JVTk1BU0tfQklUUzRfMDogVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0WzQ6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbgorICAqICAgICAgICAgICAgQGFyZyBEQUNfTEZTUlVOTUFTS19CSVRTNV8wOiBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbNTowXSBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uCisgICogICAgICAgICAgICBAYXJnIERBQ19MRlNSVU5NQVNLX0JJVFM2XzA6IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGJpdFs2OjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24KKyAgKiAgICAgICAgICAgIEBhcmcgREFDX0xGU1JVTk1BU0tfQklUUzdfMDogVW5tYXNrIERBQyBjaGFubmVsIExGU1IgYml0Wzc6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbgorICAqICAgICAgICAgICAgQGFyZyBEQUNfTEZTUlVOTUFTS19CSVRTOF8wOiBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbODowXSBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uCisgICogICAgICAgICAgICBAYXJnIERBQ19MRlNSVU5NQVNLX0JJVFM5XzA6IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGJpdFs5OjBdIGZvciBub2lzZSB3YXZlIGdlbmVyYXRpb24KKyAgKiAgICAgICAgICAgIEBhcmcgREFDX0xGU1JVTk1BU0tfQklUUzEwXzA6IFVubWFzayBEQUMgY2hhbm5lbCBMRlNSIGJpdFsxMDowXSBmb3Igbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uCisgICogICAgICAgICAgICBAYXJnIERBQ19MRlNSVU5NQVNLX0JJVFMxMV8wOiBVbm1hc2sgREFDIGNoYW5uZWwgTEZTUiBiaXRbMTE6MF0gZm9yIG5vaXNlIHdhdmUgZ2VuZXJhdGlvbgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RBQ0V4X05vaXNlV2F2ZUdlbmVyYXRlKERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjLCB1aW50MzJfdCBDaGFubmVsLCB1aW50MzJfdCBBbXBsaXR1ZGUpCi17ICAKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9EQUNFeF9Ob2lzZVdhdmVHZW5lcmF0ZShEQUNfSGFuZGxlVHlwZURlZiAqaGRhYywgdWludDMyX3QgQ2hhbm5lbCwgdWludDMyX3QgQW1wbGl0dWRlKQorewogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfREFDX0NIQU5ORUwoQ2hhbm5lbCkpOwogICBhc3NlcnRfcGFyYW0oSVNfREFDX0xGU1JfVU5NQVNLX1RSSUFOR0xFX0FNUExJVFVERShBbXBsaXR1ZGUpKTsKLSAgCisKICAgLyogUHJvY2VzcyBsb2NrZWQgKi8KICAgX19IQUxfTE9DSyhoZGFjKTsKLSAgCisKICAgLyogQ2hhbmdlIERBQyBzdGF0ZSAqLwogICBoZGFjLT5TdGF0ZSA9IEhBTF9EQUNfU1RBVEVfQlVTWTsKLSAgCi0gIC8qIEVuYWJsZSB0aGUgc2VsZWN0ZWQgd2F2ZSBnZW5lcmF0aW9uIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgKi8KLSAgTU9ESUZZX1JFRyhoZGFjLT5JbnN0YW5jZS0+Q1IsIChEQUNfQ1JfV0FWRTEgfCBEQUNfQ1JfTUFNUDEpIDw8IENoYW5uZWwsIChEQUNfQ1JfV0FWRTFfMCB8IEFtcGxpdHVkZSkgPDwgQ2hhbm5lbCk7Ci0gIAorCisgIC8qIEVuYWJsZSB0aGUgbm9pc2Ugd2F2ZSBnZW5lcmF0aW9uIGZvciB0aGUgc2VsZWN0ZWQgREFDIGNoYW5uZWwgKi8KKyAgTU9ESUZZX1JFRyhoZGFjLT5JbnN0YW5jZS0+Q1IsICgoREFDX0NSX1dBVkUxKSB8IChEQUNfQ1JfTUFNUDEpKSA8PCAoQ2hhbm5lbCAmIDB4MTBVTCksCisgICAgICAgICAgICAgKERBQ19DUl9XQVZFMV8wIHwgQW1wbGl0dWRlKSA8PCAoQ2hhbm5lbCAmIDB4MTBVTCkpOworCiAgIC8qIENoYW5nZSBEQUMgc3RhdGUgKi8KICAgaGRhYy0+U3RhdGUgPSBIQUxfREFDX1NUQVRFX1JFQURZOwotICAKKwogICAvKiBQcm9jZXNzIHVubG9ja2VkICovCiAgIF9fSEFMX1VOTE9DSyhoZGFjKTsKLSAgCisKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwogICByZXR1cm4gSEFMX09LOwogfQogCisKIC8qKgogICAqIEBicmllZiAgU2V0IHRoZSBzcGVjaWZpZWQgZGF0YSBob2xkaW5nIHJlZ2lzdGVyIHZhbHVlIGZvciBkdWFsIERBQyBjaGFubmVsLgotICAqIEBwYXJhbSAgaGRhYzogcG9pbnRlciB0byBhIERBQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCisgICogQHBhcmFtICBoZGFjIHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgREFDLgotICAqIEBwYXJhbSAgQWxpZ25tZW50OiBTcGVjaWZpZXMgdGhlIGRhdGEgYWxpZ25tZW50IGZvciBkdWFsIGNoYW5uZWwgREFDLgorICAqIEBwYXJhbSAgQWxpZ25tZW50IFNwZWNpZmllcyB0aGUgZGF0YSBhbGlnbm1lbnQgZm9yIGR1YWwgY2hhbm5lbCBEQUMuCiAgICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKICAgKiAgICAgICAgICAgIERBQ19BTElHTl84Ql9SOiA4Yml0IHJpZ2h0IGRhdGEgYWxpZ25tZW50IHNlbGVjdGVkCiAgICogICAgICAgICAgICBEQUNfQUxJR05fMTJCX0w6IDEyYml0IGxlZnQgZGF0YSBhbGlnbm1lbnQgc2VsZWN0ZWQKICAgKiAgICAgICAgICAgIERBQ19BTElHTl8xMkJfUjogMTJiaXQgcmlnaHQgZGF0YSBhbGlnbm1lbnQgc2VsZWN0ZWQKLSAgKiBAcGFyYW0gIERhdGExOiBEYXRhIGZvciBEQUMgQ2hhbm5lbDIgdG8gYmUgbG9hZGVkIGluIHRoZSBzZWxlY3RlZCBkYXRhIGhvbGRpbmcgcmVnaXN0ZXIuCi0gICogQHBhcmFtICBEYXRhMjogRGF0YSBmb3IgREFDIENoYW5uZWwxIHRvIGJlIGxvYWRlZCBpbiB0aGUgc2VsZWN0ZWQgZGF0YSAgaG9sZGluZyByZWdpc3Rlci4KKyAgKiBAcGFyYW0gIERhdGExIERhdGEgZm9yIERBQyBDaGFubmVsMSB0byBiZSBsb2FkZWQgaW4gdGhlIHNlbGVjdGVkIGRhdGEgaG9sZGluZyByZWdpc3Rlci4KKyAgKiBAcGFyYW0gIERhdGEyIERhdGEgZm9yIERBQyBDaGFubmVsMiB0byBiZSBsb2FkZWQgaW4gdGhlIHNlbGVjdGVkIGRhdGEgIGhvbGRpbmcgcmVnaXN0ZXIuCiAgICogQG5vdGUgICBJbiBkdWFsIG1vZGUsIGEgdW5pcXVlIHJlZ2lzdGVyIGFjY2VzcyBpcyByZXF1aXJlZCB0byB3cml0ZSBpbiBib3RoCiAgICogICAgICAgICAgREFDIGNoYW5uZWxzIGF0IHRoZSBzYW1lIHRpbWUuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDRXhfRHVhbFNldFZhbHVlKERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjLCB1aW50MzJfdCBBbGlnbm1lbnQsIHVpbnQzMl90IERhdGExLCB1aW50MzJfdCBEYXRhMikKLXsgIAotICB1aW50MzJfdCBkYXRhID0gMCwgdG1wID0gMDsKLSAgCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfREFDRXhfRHVhbFNldFZhbHVlKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjLCB1aW50MzJfdCBBbGlnbm1lbnQsIHVpbnQzMl90IERhdGExLCB1aW50MzJfdCBEYXRhMikKK3sKKyAgdWludDMyX3QgZGF0YTsKKyAgdWludDMyX3QgdG1wOworCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19EQUNfQUxJR04oQWxpZ25tZW50KSk7CiAgIGFzc2VydF9wYXJhbShJU19EQUNfREFUQShEYXRhMSkpOwogICBhc3NlcnRfcGFyYW0oSVNfREFDX0RBVEEoRGF0YTIpKTsKLSAgCisKICAgLyogQ2FsY3VsYXRlIGFuZCBzZXQgZHVhbCBEQUMgZGF0YSBob2xkaW5nIHJlZ2lzdGVyIHZhbHVlICovCiAgIGlmIChBbGlnbm1lbnQgPT0gREFDX0FMSUdOXzhCX1IpCiAgIHsKLSAgICBkYXRhID0gKCh1aW50MzJfdClEYXRhMiA8PCA4KSB8IERhdGExOyAKKyAgICBkYXRhID0gKCh1aW50MzJfdClEYXRhMiA8PCA4VSkgfCBEYXRhMTsKICAgfQogICBlbHNlCiAgIHsKLSAgICBkYXRhID0gKCh1aW50MzJfdClEYXRhMiA8PCAxNikgfCBEYXRhMTsKKyAgICBkYXRhID0gKCh1aW50MzJfdClEYXRhMiA8PCAxNlUpIHwgRGF0YTE7CiAgIH0KLSAgCisKICAgdG1wID0gKHVpbnQzMl90KWhkYWMtPkluc3RhbmNlOwogICB0bXAgKz0gREFDX0RIUjEyUkRfQUxJR05NRU5UKEFsaWdubWVudCk7CiAKICAgLyogU2V0IHRoZSBkdWFsIERBQyBzZWxlY3RlZCBkYXRhIGhvbGRpbmcgcmVnaXN0ZXIgKi8KICAgKihfX0lPIHVpbnQzMl90ICopdG1wID0gZGF0YTsKLSAgCisKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwogICByZXR1cm4gSEFMX09LOwogfQogCiAvKioKLSAgKiBAfQotICAqLwotCi0vKioKLSAgKiBAYnJpZWYgIENvbnZlcnNpb24gY29tcGxldGUgY2FsbGJhY2sgaW4gbm9uIGJsb2NraW5nIG1vZGUgZm9yIENoYW5uZWwyIAotICAqIEBwYXJhbSAgaGRhYzogcG9pbnRlciB0byBhIERBQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCisgICogQGJyaWVmICBDb252ZXJzaW9uIGNvbXBsZXRlIGNhbGxiYWNrIGluIG5vbi1ibG9ja2luZyBtb2RlIGZvciBDaGFubmVsMi4KKyAgKiBAcGFyYW0gIGhkYWMgcG9pbnRlciB0byBhIERBQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBEQUMuCiAgICogQHJldHZhbCBOb25lCiAgICovCi1fX3dlYWsgdm9pZCBIQUxfREFDRXhfQ29udkNwbHRDYWxsYmFja0NoMihEQUNfSGFuZGxlVHlwZURlZiogaGRhYykKK19fd2VhayB2b2lkIEhBTF9EQUNFeF9Db252Q3BsdENhbGxiYWNrQ2gyKERBQ19IYW5kbGVUeXBlRGVmICpoZGFjKQogewogICAvKiBQcmV2ZW50IHVudXNlZCBhcmd1bWVudChzKSBjb21waWxhdGlvbiB3YXJuaW5nICovCiAgIFVOVVNFRChoZGFjKTsKLSAKLSAgLyogTk9URSA6IFRoaXMgZnVuY3Rpb24gU2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAotICAgICAgICAgICAgdGhlIEhBTF9EQUNfQ29udkNwbHRDYWxsYmFja0NoMiBjb3VsZCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgdXNlciBmaWxlCisKKyAgLyogTk9URSA6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAorICAgICAgICAgICAgdGhlIEhBTF9EQUNFeF9Db252Q3BsdENhbGxiYWNrQ2gyIGNvdWxkIGJlIGltcGxlbWVudGVkIGluIHRoZSB1c2VyIGZpbGUKICAgICovCiB9CiAKIC8qKgotICAqIEBicmllZiAgQ29udmVyc2lvbiBoYWxmIERNQSB0cmFuc2ZlciBjYWxsYmFjayBpbiBub24gYmxvY2tpbmcgbW9kZSBmb3IgQ2hhbm5lbDIgCi0gICogQHBhcmFtICBoZGFjOiBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiBAYnJpZWYgIENvbnZlcnNpb24gaGFsZiBETUEgdHJhbnNmZXIgY2FsbGJhY2sgaW4gbm9uLWJsb2NraW5nIG1vZGUgZm9yIENoYW5uZWwyLgorICAqIEBwYXJhbSAgaGRhYyBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIERBQy4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLV9fd2VhayB2b2lkIEhBTF9EQUNFeF9Db252SGFsZkNwbHRDYWxsYmFja0NoMihEQUNfSGFuZGxlVHlwZURlZiogaGRhYykKK19fd2VhayB2b2lkIEhBTF9EQUNFeF9Db252SGFsZkNwbHRDYWxsYmFja0NoMihEQUNfSGFuZGxlVHlwZURlZiAqaGRhYykKIHsKICAgLyogUHJldmVudCB1bnVzZWQgYXJndW1lbnQocykgY29tcGlsYXRpb24gd2FybmluZyAqLwogICBVTlVTRUQoaGRhYyk7Ci0gCi0gIC8qIE5PVEUgOiBUaGlzIGZ1bmN0aW9uIFNob3VsZCBub3QgYmUgbW9kaWZpZWQsIHdoZW4gdGhlIGNhbGxiYWNrIGlzIG5lZWRlZCwKKworICAvKiBOT1RFIDogVGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGJlIG1vZGlmaWVkLCB3aGVuIHRoZSBjYWxsYmFjayBpcyBuZWVkZWQsCiAgICAgICAgICAgICB0aGUgSEFMX0RBQ0V4X0NvbnZIYWxmQ3BsdENhbGxiYWNrQ2gyIGNvdWxkIGJlIGltcGxlbWVudGVkIGluIHRoZSB1c2VyIGZpbGUKICAgICovCiB9CiAKIC8qKgogICAqIEBicmllZiAgRXJyb3IgREFDIGNhbGxiYWNrIGZvciBDaGFubmVsMi4KLSAgKiBAcGFyYW0gIGhkYWM6IHBvaW50ZXIgdG8gYSBEQUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucworICAqIEBwYXJhbSAgaGRhYyBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIERBQy4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KQEAgLTI4NSwxNSArMzQzLDE1IEBACiB7CiAgIC8qIFByZXZlbnQgdW51c2VkIGFyZ3VtZW50KHMpIGNvbXBpbGF0aW9uIHdhcm5pbmcgKi8KICAgVU5VU0VEKGhkYWMpOwotIAotICAvKiBOT1RFIDogVGhpcyBmdW5jdGlvbiBTaG91bGQgbm90IGJlIG1vZGlmaWVkLCB3aGVuIHRoZSBjYWxsYmFjayBpcyBuZWVkZWQsCisKKyAgLyogTk9URSA6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAogICAgICAgICAgICAgdGhlIEhBTF9EQUNFeF9FcnJvckNhbGxiYWNrQ2gyIGNvdWxkIGJlIGltcGxlbWVudGVkIGluIHRoZSB1c2VyIGZpbGUKICAgICovCiB9CiAKIC8qKgotICAqIEBicmllZiAgRE1BIHVuZGVycnVuIERBQyBjYWxsYmFjayBmb3IgY2hhbm5lbDIuCi0gICogQHBhcmFtICBoZGFjOiBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiBAYnJpZWYgIERNQSB1bmRlcnJ1biBEQUMgY2FsbGJhY2sgZm9yIENoYW5uZWwyLgorICAqIEBwYXJhbSAgaGRhYyBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIERBQy4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KQEAgLTMwMSw4MiArMzU5LDEzOSBAQAogewogICAvKiBQcmV2ZW50IHVudXNlZCBhcmd1bWVudChzKSBjb21waWxhdGlvbiB3YXJuaW5nICovCiAgIFVOVVNFRChoZGFjKTsKLSAKLSAgLyogTk9URSA6IFRoaXMgZnVuY3Rpb24gU2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAorCisgIC8qIE5PVEUgOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgbW9kaWZpZWQsIHdoZW4gdGhlIGNhbGxiYWNrIGlzIG5lZWRlZCwKICAgICAgICAgICAgIHRoZSBIQUxfREFDRXhfRE1BVW5kZXJydW5DYWxsYmFja0NoMiBjb3VsZCBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgdXNlciBmaWxlCiAgICAqLwogfQogCisKKwogLyoqCi0gICogQGJyaWVmICBETUEgY29udmVyc2lvbiBjb21wbGV0ZSBjYWxsYmFjay4gCi0gICogQHBhcmFtICBoZG1hOiBwb2ludGVyIHRvIGEgRE1BX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiBAfQorICAqLworCisvKiogQGRlZmdyb3VwIERBQ0V4X0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDMgUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucworICAqICBAYnJpZWYgICAgRXh0ZW5kZWQgUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucworICAqCitAdmVyYmF0aW0KKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgICAgICAgIyMjIyMgUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucyAjIyMjIworICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBbLi5dICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgZnVuY3Rpb25zIGFsbG93aW5nIHRvOgorICAgICAgKCspIFNldCB0aGUgc3BlY2lmaWVkIGRhdGEgaG9sZGluZyByZWdpc3RlciB2YWx1ZSBmb3IgREFDIGNoYW5uZWwuCisKK0BlbmR2ZXJiYXRpbQorICAqIEB7CisgICovCisKKworLyoqCisgICogQGJyaWVmICBSZXR1cm4gdGhlIGxhc3QgZGF0YSBvdXRwdXQgdmFsdWUgb2YgdGhlIHNlbGVjdGVkIERBQyBjaGFubmVsLgorICAqIEBwYXJhbSAgaGRhYyBwb2ludGVyIHRvIGEgREFDX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIERBQy4KKyAgKiBAcmV0dmFsIFRoZSBzZWxlY3RlZCBEQUMgY2hhbm5lbCBkYXRhIG91dHB1dCB2YWx1ZS4KKyAgKi8KK3VpbnQzMl90IEhBTF9EQUNFeF9EdWFsR2V0VmFsdWUoREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMpCit7CisgIHVpbnQzMl90IHRtcCA9IDBVTDsKKworICB0bXAgfD0gaGRhYy0+SW5zdGFuY2UtPkRPUjE7CisKKyAgdG1wIHw9IGhkYWMtPkluc3RhbmNlLT5ET1IyIDw8IDE2VUw7CisKKyAgLyogUmV0dXJucyB0aGUgREFDIGNoYW5uZWwgZGF0YSBvdXRwdXQgcmVnaXN0ZXIgdmFsdWUgKi8KKyAgcmV0dXJuIHRtcDsKK30KKworCisvKioKKyAgKiBAfQorICAqLworLyoqCisgICogQH0KKyAgKi8KKworLyogUHJpdmF0ZSBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qKiBAZGVmZ3JvdXAgREFDRXhfUHJpdmF0ZV9GdW5jdGlvbnMgREFDRXggcHJpdmF0ZSBmdW5jdGlvbnMKKyAgKiAgQGJyaWVmICAgIEV4dGVuZGVkIHByaXZhdGUgZnVuY3Rpb25zCisgICogQHsKKyAgKi8KKworCisvKioKKyAgKiBAYnJpZWYgIERNQSBjb252ZXJzaW9uIGNvbXBsZXRlIGNhbGxiYWNrLgorICAqIEBwYXJhbSAgaGRtYSBwb2ludGVyIHRvIGEgRE1BX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBETUEgbW9kdWxlLgogICAqIEByZXR2YWwgTm9uZQogICAqLwotdm9pZCBEQUNfRE1BQ29udkNwbHRDaDIoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpICAgCit2b2lkIERBQ19ETUFDb252Q3BsdENoMihETUFfSGFuZGxlVHlwZURlZiAqaGRtYSkKIHsKLSAgREFDX0hhbmRsZVR5cGVEZWYqIGhkYWMgPSAoIERBQ19IYW5kbGVUeXBlRGVmKiApKChETUFfSGFuZGxlVHlwZURlZiogKWhkbWEpLT5QYXJlbnQ7Ci0gIAorICBEQUNfSGFuZGxlVHlwZURlZiAqaGRhYyA9IChEQUNfSGFuZGxlVHlwZURlZiAqKSgoRE1BX0hhbmRsZVR5cGVEZWYgKiloZG1hKS0+UGFyZW50OworCiAjaWYgKFVTRV9IQUxfREFDX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogICBoZGFjLT5Db252Q3BsdENhbGxiYWNrQ2gyKGhkYWMpOwogI2Vsc2UKLSAgSEFMX0RBQ0V4X0NvbnZDcGx0Q2FsbGJhY2tDaDIoaGRhYyk7IAorICBIQUxfREFDRXhfQ29udkNwbHRDYWxsYmFja0NoMihoZGFjKTsKICNlbmRpZiAvKiBVU0VfSEFMX0RBQ19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KLSAgCi0gIGhkYWMtPlN0YXRlPSBIQUxfREFDX1NUQVRFX1JFQURZOworCisgIGhkYWMtPlN0YXRlID0gSEFMX0RBQ19TVEFURV9SRUFEWTsKIH0KIAogLyoqCi0gICogQGJyaWVmICBETUEgaGFsZiB0cmFuc2ZlciBjb21wbGV0ZSBjYWxsYmFjay4gCi0gICogQHBhcmFtICBoZG1hOiBwb2ludGVyIHRvIGEgRE1BX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiBAYnJpZWYgIERNQSBoYWxmIHRyYW5zZmVyIGNvbXBsZXRlIGNhbGxiYWNrLgorICAqIEBwYXJhbSAgaGRtYSBwb2ludGVyIHRvIGEgRE1BX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIHNwZWNpZmllZCBETUEgbW9kdWxlLgogICAqIEByZXR2YWwgTm9uZQogICAqLwotdm9pZCBEQUNfRE1BSGFsZkNvbnZDcGx0Q2gyKERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKSAgIAordm9pZCBEQUNfRE1BSGFsZkNvbnZDcGx0Q2gyKERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKQogewotICAgIERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjID0gKCBEQUNfSGFuZGxlVHlwZURlZiogKSgoRE1BX0hhbmRsZVR5cGVEZWYqICloZG1hKS0+UGFyZW50OwotICAgIC8qIENvbnZlcnNpb24gY29tcGxldGUgY2FsbGJhY2sgKi8KKyAgREFDX0hhbmRsZVR5cGVEZWYgKmhkYWMgPSAoREFDX0hhbmRsZVR5cGVEZWYgKikoKERNQV9IYW5kbGVUeXBlRGVmICopaGRtYSktPlBhcmVudDsKKyAgLyogQ29udmVyc2lvbiBjb21wbGV0ZSBjYWxsYmFjayAqLwogI2lmIChVU0VfSEFMX0RBQ19SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKICAgaGRhYy0+Q29udkhhbGZDcGx0Q2FsbGJhY2tDaDIoaGRhYyk7CiAjZWxzZQotICAgIEhBTF9EQUNFeF9Db252SGFsZkNwbHRDYWxsYmFja0NoMihoZGFjKTsgCisgIEhBTF9EQUNFeF9Db252SGFsZkNwbHRDYWxsYmFja0NoMihoZGFjKTsKICNlbmRpZiAvKiBVU0VfSEFMX0RBQ19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIH0KIAogLyoqCi0gICogQGJyaWVmICBETUEgZXJyb3IgY2FsbGJhY2sgCi0gICogQHBhcmFtICBoZG1hOiBwb2ludGVyIHRvIGEgRE1BX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiBAYnJpZWYgIERNQSBlcnJvciBjYWxsYmFjay4KKyAgKiBAcGFyYW0gIGhkbWEgcG9pbnRlciB0byBhIERNQV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgRE1BIG1vZHVsZS4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLXZvaWQgREFDX0RNQUVycm9yQ2gyKERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKSAgIAordm9pZCBEQUNfRE1BRXJyb3JDaDIoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpCiB7Ci0gIERBQ19IYW5kbGVUeXBlRGVmKiBoZGFjID0gKCBEQUNfSGFuZGxlVHlwZURlZiogKSgoRE1BX0hhbmRsZVR5cGVEZWYqICloZG1hKS0+UGFyZW50OwotICAgIAorICBEQUNfSGFuZGxlVHlwZURlZiAqaGRhYyA9IChEQUNfSGFuZGxlVHlwZURlZiAqKSgoRE1BX0hhbmRsZVR5cGVEZWYgKiloZG1hKS0+UGFyZW50OworCiAgIC8qIFNldCBEQUMgZXJyb3IgY29kZSB0byBETUEgZXJyb3IgKi8KICAgaGRhYy0+RXJyb3JDb2RlIHw9IEhBTF9EQUNfRVJST1JfRE1BOwotICAgIAorCiAjaWYgKFVTRV9IQUxfREFDX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogICBoZGFjLT5FcnJvckNhbGxiYWNrQ2gyKGhkYWMpOwogI2Vsc2UKLSAgSEFMX0RBQ0V4X0Vycm9yQ2FsbGJhY2tDaDIoaGRhYyk7IAorICBIQUxfREFDRXhfRXJyb3JDYWxsYmFja0NoMihoZGFjKTsKICNlbmRpZiAvKiBVU0VfSEFMX0RBQ19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KLSAgICAKLSAgaGRhYy0+U3RhdGU9IEhBTF9EQUNfU1RBVEVfUkVBRFk7CisKKyAgaGRhYy0+U3RhdGUgPSBIQUxfREFDX1NUQVRFX1JFQURZOwogfQogCisKIC8qKgogICAqIEB9CiAgICovCiAKKy8qKgorICAqIEB9CisgICovCisKKyNlbmRpZiAvKiBEQUMgKi8KKwogI2VuZGlmIC8qIEhBTF9EQUNfTU9EVUxFX0VOQUJMRUQgKi8KIAogLyoqCiAgICogQH0KICAgKi8KIAotLyoqCi0gICogQH0KLSAgKi8KLQogLyoqKioqKioqKioqKioqKioqKioqKioqKiAoQykgQ09QWVJJR0hUIFNUTWljcm9lbGVjdHJvbmljcyAqKioqKkVORCBPRiBGSUxFKioqKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2Rmc2RtLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9kZnNkbS5jCmluZGV4IGRkMjUzZTUuLmNhZjMzOTggMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX2Rmc2RtLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfZGZzZG0uYwpAQCAtMzMzNCw3ICszMzM0LDcgQEAKICAgKi8KIHN0YXRpYyB1aW50MzJfdCBERlNETV9HZXRDaGFubmVsRnJvbUluc3RhbmNlKERGU0RNX0NoYW5uZWxfVHlwZURlZiogSW5zdGFuY2UpCiB7Ci0gIHVpbnQzMl90IGNoYW5uZWwgPSAweEZGOworICB1aW50MzJfdCBjaGFubmVsOwogICAKICAgLyogR2V0IGNoYW5uZWwgZnJvbSBpbnN0YW5jZSAqLwogICBpZihJbnN0YW5jZSA9PSBERlNETTFfQ2hhbm5lbDApCkBAIC0zMzY1LDcgKzMzNjUsNyBAQAogICB7CiAgICAgY2hhbm5lbCA9IDY7CiAgIH0KLSAgZWxzZSBpZihJbnN0YW5jZSA9PSBERlNETTFfQ2hhbm5lbDcpCisgIGVsc2UgLyogREZTRE0xX0NoYW5uZWw3ICovCiAgIHsKICAgICBjaGFubmVsID0gNzsKICAgfQpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfZG1hLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9kbWEuYwppbmRleCA4NGQwODBjLi45YjNhYmUzIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9kbWEuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9kbWEuYwpAQCAtNjA0LDcgKzYwNCw3IEBACiAgICogQHBhcmFtICBoZG1hICAgICAgICAgIHBvaW50ZXIgdG8gYSBETUFfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgRE1BIFN0cmVhbS4KICAgKiBAcGFyYW0gIENvbXBsZXRlTGV2ZWwgU3BlY2lmaWVzIHRoZSBETUEgbGV2ZWwgY29tcGxldGUuCi0gICogQG5vdGUgICBUaGUgcG9sbGluZyBtb2RlIGlzIGtlcHQgaW4gdGhpcyB2ZXJzaW9uIGZvciBsZWdhY3kuIGl0IGlzIHJlY29tbWFuZGVkIHRvIHVzZSB0aGUgSVQgbW9kZWwgaW5zdGVhZC4KKyAgKiBAbm90ZSAgIFRoZSBwb2xsaW5nIG1vZGUgaXMga2VwdCBpbiB0aGlzIHZlcnNpb24gZm9yIGxlZ2FjeS4gaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBJVCBtb2RlbCBpbnN0ZWFkLgogICAqICAgICAgICAgVGhpcyBtb2RlbCBjb3VsZCBiZSB1c2VkIGZvciBkZWJ1ZyBwdXJwb3NlLgogICAqIEBub3RlICAgVGhlIEhBTF9ETUFfUG9sbEZvclRyYW5zZmVyIEFQSSBjYW5ub3QgYmUgdXNlZCBpbiBjaXJjdWxhciBhbmQgZG91YmxlIGJ1ZmZlcmluZyBtb2RlIChhdXRvbWF0aWMgY2lyY3VsYXIgbW9kZSkuIAogICAqIEBwYXJhbSAgVGltZW91dCAgICAgICBUaW1lb3V0IGR1cmF0aW9uLgpAQCAtOTYxLDcgKzk2MSw3IEBACiAgICogQGJyaWVmICBSZWdpc3RlciBjYWxsYmFja3MKICAgKiBAcGFyYW0gIGhkbWEgICAgICAgICAgICAgICAgIHBvaW50ZXIgdG8gYSBETUFfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIERNQSBTdHJlYW0uCi0gICogQHBhcmFtICBDYWxsYmFja0lEICAgICAgICAgICBVc2VyIENhbGxiYWNrIGlkZW50aWZlcgorICAqIEBwYXJhbSAgQ2FsbGJhY2tJRCAgICAgICAgICAgVXNlciBDYWxsYmFjayBpZGVudGlmaWVyCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBETUFfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgYXMgcGFyYW1ldGVyLgogICAqIEBwYXJhbSAgcENhbGxiYWNrICAgICAgICAgICAgcG9pbnRlciB0byBwcml2YXRlIGNhbGxiYWNzayBmdW5jdGlvbiB3aGljaCBoYXMgcG9pbnRlciB0byAKICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIERNQV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSBhcyBwYXJhbWV0ZXIuCkBAIC0xMDIzLDcgKzEwMjMsNyBAQAogICAqIEBicmllZiAgVW5SZWdpc3RlciBjYWxsYmFja3MKICAgKiBAcGFyYW0gIGhkbWEgICAgICAgICAgICAgICAgIHBvaW50ZXIgdG8gYSBETUFfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIERNQSBTdHJlYW0uCi0gICogQHBhcmFtICBDYWxsYmFja0lEICAgICAgICAgICBVc2VyIENhbGxiYWNrIGlkZW50aWZlcgorICAqIEBwYXJhbSAgQ2FsbGJhY2tJRCAgICAgICAgICAgVXNlciBDYWxsYmFjayBpZGVudGlmaWVyCiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBIQUxfRE1BX0NhbGxiYWNrSURUeXBlRGVmIEVOVU0gYXMgcGFyYW1ldGVyLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLyAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9kbWEyZC5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfZG1hMmQuYwppbmRleCBjMDhhNGI5Li5lNTJiMjlmIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9kbWEyZC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX2RtYTJkLmMKQEAgLTIwMSw3ICsyMDEsOCBAQAogLyoqIEBhZGR0b2dyb3VwIERNQTJEX1ByaXZhdGVfRnVuY3Rpb25zIERNQTJEIFByaXZhdGUgRnVuY3Rpb25zCiAgICogQHsKICAgKi8KLXN0YXRpYyB2b2lkIERNQTJEX1NldENvbmZpZyhETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQsIHVpbnQzMl90IHBkYXRhLCB1aW50MzJfdCBEc3RBZGRyZXNzLCB1aW50MzJfdCBXaWR0aCwgdWludDMyX3QgSGVpZ2h0KTsKK3N0YXRpYyB2b2lkIERNQTJEX1NldENvbmZpZyhETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQsIHVpbnQzMl90IHBkYXRhLCB1aW50MzJfdCBEc3RBZGRyZXNzLCB1aW50MzJfdCBXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBIZWlnaHQpOwogLyoqCiAgICogQH0KICAgKi8KQEAgLTIxMyw4ICsyMTQsOCBAQAogICAqLwogCiAvKiogQGRlZmdyb3VwIERNQTJEX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucwotICogIEBicmllZiAgIEluaXRpYWxpemF0aW9uIGFuZCBDb25maWd1cmF0aW9uIGZ1bmN0aW9ucwotICoKKyAgKiAgQGJyaWVmICAgSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24gZnVuY3Rpb25zCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAjIyMjIyBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMgIyMjIyMKQEAgLTIzNyw5ICsyMzgsOSBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RNQTJEX0luaXQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkKQogewogICAvKiBDaGVjayB0aGUgRE1BMkQgcGVyaXBoZXJhbCBzdGF0ZSAqLwotICBpZihoZG1hMmQgPT0gTlVMTCkKKyAgaWYgKGhkbWEyZCA9PSBOVUxMKQogICB7Ci0gICAgIHJldHVybiBIQUxfRVJST1I7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQogCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCkBAIC0yNTgsNyArMjU5LDcgQEAKICAgICAvKiBSZXNldCBDYWxsYmFjayBwb2ludGVycyBpbiBIQUxfRE1BMkRfU1RBVEVfUkVTRVQgb25seSAqLwogICAgIGhkbWEyZC0+TGluZUV2ZW50Q2FsbGJhY2sgICAgICAgPSBIQUxfRE1BMkRfTGluZUV2ZW50Q2FsbGJhY2s7CiAgICAgaGRtYTJkLT5DTFVUTG9hZGluZ0NwbHRDYWxsYmFjayA9IEhBTF9ETUEyRF9DTFVUTG9hZGluZ0NwbHRDYWxsYmFjazsKLSAgICBpZihoZG1hMmQtPk1zcEluaXRDYWxsYmFjayA9PSBOVUxMKQorICAgIGlmIChoZG1hMmQtPk1zcEluaXRDYWxsYmFjayA9PSBOVUxMKQogICAgIHsKICAgICAgIGhkbWEyZC0+TXNwSW5pdENhbGxiYWNrID0gSEFMX0RNQTJEX01zcEluaXQ7CiAgICAgfQpAQCAtMjY3LDcgKzI2OCw3IEBACiAgICAgaGRtYTJkLT5Nc3BJbml0Q2FsbGJhY2soaGRtYTJkKTsKICAgfQogI2Vsc2UKLSAgaWYoaGRtYTJkLT5TdGF0ZSA9PSBIQUxfRE1BMkRfU1RBVEVfUkVTRVQpCisgIGlmIChoZG1hMmQtPlN0YXRlID09IEhBTF9ETUEyRF9TVEFURV9SRVNFVCkKICAgewogICAgIC8qIEFsbG9jYXRlIGxvY2sgcmVzb3VyY2UgYW5kIGluaXRpYWxpemUgaXQgKi8KICAgICBoZG1hMmQtPkxvY2sgPSBIQUxfVU5MT0NLRUQ7CkBAIC0yODksNyArMjkwLDkgQEAKICAgTU9ESUZZX1JFRyhoZG1hMmQtPkluc3RhbmNlLT5PT1IsIERNQTJEX09PUl9MTywgaGRtYTJkLT5Jbml0Lk91dHB1dE9mZnNldCk7CiAjaWYgZGVmaW5lZCAoRE1BMkRfQUxQSEFfSU5WX1JCX1NXQVBfU1VQUE9SVCkKICAgLyogRE1BMkQgT1BGQ0NSIEFJIGFuZCBSQlMgZmllbGRzIHNldHRpbmcgKE91dHB1dCBBbHBoYSBJbnZlcnNpb24pKi8KLSAgTU9ESUZZX1JFRyhoZG1hMmQtPkluc3RhbmNlLT5PUEZDQ1IsKERNQTJEX09QRkNDUl9BSXxETUEyRF9PUEZDQ1JfUkJTKSwgKChoZG1hMmQtPkluaXQuQWxwaGFJbnZlcnRlZCA8PCBETUEyRF9PUEZDQ1JfQUlfUG9zKSB8IChoZG1hMmQtPkluaXQuUmVkQmx1ZVN3YXAgPDwgRE1BMkRfT1BGQ0NSX1JCU19Qb3MpKSk7CisgIE1PRElGWV9SRUcoaGRtYTJkLT5JbnN0YW5jZS0+T1BGQ0NSLCAoRE1BMkRfT1BGQ0NSX0FJIHwgRE1BMkRfT1BGQ0NSX1JCUyksCisgICAgICAgICAgICAgKChoZG1hMmQtPkluaXQuQWxwaGFJbnZlcnRlZCA8PCBETUEyRF9PUEZDQ1JfQUlfUG9zKSB8IFwKKyAgICAgICAgICAgICAgKGhkbWEyZC0+SW5pdC5SZWRCbHVlU3dhcCA8PCBETUEyRF9PUEZDQ1JfUkJTX1BvcykpKTsKICNlbmRpZiAvKiBETUEyRF9BTFBIQV9JTlZfUkJfU1dBUF9TVVBQT1JUICovCiAKIApAQCAtMzE0LDkgKzMxNyw5IEBACiB7CiAKICAgLyogQ2hlY2sgdGhlIERNQTJEIHBlcmlwaGVyYWwgc3RhdGUgKi8KLSAgaWYoaGRtYTJkID09IE5VTEwpCisgIGlmIChoZG1hMmQgPT0gTlVMTCkKICAgewotICAgICByZXR1cm4gSEFMX0VSUk9SOworICAgIHJldHVybiBIQUxfRVJST1I7CiAgIH0KIAogICAvKiBCZWZvcmUgYWJvcnRpbmcgYW55IERNQTJEIHRyYW5zZmVyIG9yIENMVVQgbG9hZGluZywgY2hlY2sKQEAgLTM2OSwxMyArMzcyLDEzIEBACiAKICNpZiAoVVNFX0hBTF9ETUEyRF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKIAotICAgIGlmKGhkbWEyZC0+TXNwRGVJbml0Q2FsbGJhY2sgPT0gTlVMTCkKLSAgICB7Ci0gICAgICBoZG1hMmQtPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX0RNQTJEX01zcERlSW5pdDsKLSAgICB9CisgIGlmIChoZG1hMmQtPk1zcERlSW5pdENhbGxiYWNrID09IE5VTEwpCisgIHsKKyAgICBoZG1hMmQtPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX0RNQTJEX01zcERlSW5pdDsKKyAgfQogCi0gICAgLyogRGVJbml0IHRoZSBsb3cgbGV2ZWwgaGFyZHdhcmUgKi8KLSAgICBoZG1hMmQtPk1zcERlSW5pdENhbGxiYWNrKGhkbWEyZCk7CisgIC8qIERlSW5pdCB0aGUgbG93IGxldmVsIGhhcmR3YXJlICovCisgIGhkbWEyZC0+TXNwRGVJbml0Q2FsbGJhY2soaGRtYTJkKTsKIAogI2Vsc2UKICAgLyogQ2Fycnkgb24gd2l0aCBkZS1pbml0aWFsaXphdGlvbiBvZiBsb3cgbGV2ZWwgaGFyZHdhcmUgKi8KQEAgLTQwMCw3ICs0MDMsNyBAQAogICAqICAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIERNQTJELgogICAqIEByZXR2YWwgTm9uZQogICAqLwotX193ZWFrIHZvaWQgSEFMX0RNQTJEX01zcEluaXQoRE1BMkRfSGFuZGxlVHlwZURlZiogaGRtYTJkKQorX193ZWFrIHZvaWQgSEFMX0RNQTJEX01zcEluaXQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkKQogewogICAvKiBQcmV2ZW50IHVudXNlZCBhcmd1bWVudChzKSBjb21waWxhdGlvbiB3YXJuaW5nICovCiAgIFVOVVNFRChoZG1hMmQpOwpAQCAtNDE2LDcgKzQxOSw3IEBACiAgICogICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgRE1BMkQuCiAgICogQHJldHZhbCBOb25lCiAgICovCi1fX3dlYWsgdm9pZCBIQUxfRE1BMkRfTXNwRGVJbml0KERNQTJEX0hhbmRsZVR5cGVEZWYqIGhkbWEyZCkKK19fd2VhayB2b2lkIEhBTF9ETUEyRF9Nc3BEZUluaXQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkKQogewogICAvKiBQcmV2ZW50IHVudXNlZCBhcmd1bWVudChzKSBjb21waWxhdGlvbiB3YXJuaW5nICovCiAgIFVOVVNFRChoZG1hMmQpOwpAQCAtNDQzLDExICs0NDYsMTIgQEAKICAgKiBAbm90ZSBObyB3ZWFrIHByZWRlZmluZWQgY2FsbGJhY2tzIGFyZSBkZWZpbmVkIGZvciBIQUxfRE1BMkRfVFJBTlNGRVJDT01QTEVURV9DQl9JRCBvciBIQUxfRE1BMkRfVFJBTlNGRVJFUlJPUl9DQl9JRAogICAqIEByZXR2YWwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfRE1BMkRfUmVnaXN0ZXJDYWxsYmFjayhETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQsIEhBTF9ETUEyRF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELCBwRE1BMkRfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9ETUEyRF9SZWdpc3RlckNhbGxiYWNrKERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCwgSEFMX0RNQTJEX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwRE1BMkRfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogCi0gIGlmKHBDYWxsYmFjayA9PSBOVUxMKQorICBpZiAocENhbGxiYWNrID09IE5VTEwpCiAgIHsKICAgICAvKiBVcGRhdGUgdGhlIGVycm9yIGNvZGUgKi8KICAgICBoZG1hMmQtPkVycm9yQ29kZSB8PSBIQUxfRE1BMkRfRVJST1JfSU5WQUxJRF9DQUxMQkFDSzsKQEAgLTQ1Niw2OCArNDYwLDY4IEBACiAgIC8qIFByb2Nlc3MgbG9ja2VkICovCiAgIF9fSEFMX0xPQ0soaGRtYTJkKTsKIAotICBpZihIQUxfRE1BMkRfU1RBVEVfUkVBRFkgPT0gaGRtYTJkLT5TdGF0ZSkKKyAgaWYgKEhBTF9ETUEyRF9TVEFURV9SRUFEWSA9PSBoZG1hMmQtPlN0YXRlKQogICB7CiAgICAgc3dpdGNoIChDYWxsYmFja0lEKQogICAgIHsKLSAgICBjYXNlIEhBTF9ETUEyRF9UUkFOU0ZFUkNPTVBMRVRFX0NCX0lEIDoKLSAgICAgIGhkbWEyZC0+WGZlckNwbHRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfRE1BMkRfVFJBTlNGRVJDT01QTEVURV9DQl9JRCA6CisgICAgICAgIGhkbWEyZC0+WGZlckNwbHRDYWxsYmFjayA9IHBDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIEhBTF9ETUEyRF9UUkFOU0ZFUkVSUk9SX0NCX0lEIDoKLSAgICAgIGhkbWEyZC0+WGZlckVycm9yQ2FsbGJhY2sgPSBwQ2FsbGJhY2s7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0RNQTJEX1RSQU5TRkVSRVJST1JfQ0JfSUQgOgorICAgICAgICBoZG1hMmQtPlhmZXJFcnJvckNhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSEFMX0RNQTJEX0xJTkVFVkVOVF9DQl9JRCA6Ci0gICAgICBoZG1hMmQtPkxpbmVFdmVudENhbGxiYWNrID0gcENhbGxiYWNrOwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9ETUEyRF9MSU5FRVZFTlRfQ0JfSUQgOgorICAgICAgICBoZG1hMmQtPkxpbmVFdmVudENhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSEFMX0RNQTJEX0NMVVRMT0FESU5HQ1BMVF9DQl9JRCA6Ci0gICAgICBoZG1hMmQtPkNMVVRMb2FkaW5nQ3BsdENhbGxiYWNrID0gcENhbGxiYWNrOwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9ETUEyRF9DTFVUTE9BRElOR0NQTFRfQ0JfSUQgOgorICAgICAgICBoZG1hMmQtPkNMVVRMb2FkaW5nQ3BsdENhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSEFMX0RNQTJEX01TUElOSVRfQ0JfSUQgOgotICAgICAgaGRtYTJkLT5Nc3BJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0RNQTJEX01TUElOSVRfQ0JfSUQgOgorICAgICAgICBoZG1hMmQtPk1zcEluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIEhBTF9ETUEyRF9NU1BERUlOSVRfQ0JfSUQgOgotICAgICAgaGRtYTJkLT5Nc3BEZUluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfRE1BMkRfTVNQREVJTklUX0NCX0lEIDoKKyAgICAgICAgaGRtYTJkLT5Nc3BEZUluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CiAKLSAgICBkZWZhdWx0IDoKLSAgICAgLyogVXBkYXRlIHRoZSBlcnJvciBjb2RlICovCi0gICAgIGhkbWEyZC0+RXJyb3JDb2RlIHw9IEhBTF9ETUEyRF9FUlJPUl9JTlZBTElEX0NBTExCQUNLOwotICAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLwotICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKLSAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdCA6CisgICAgICAgIC8qIFVwZGF0ZSB0aGUgZXJyb3IgY29kZSAqLworICAgICAgICBoZG1hMmQtPkVycm9yQ29kZSB8PSBIQUxfRE1BMkRfRVJST1JfSU5WQUxJRF9DQUxMQkFDSzsKKyAgICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KKyAgICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIGVsc2UgaWYoSEFMX0RNQTJEX1NUQVRFX1JFU0VUID09IGhkbWEyZC0+U3RhdGUpCisgIGVsc2UgaWYgKEhBTF9ETUEyRF9TVEFURV9SRVNFVCA9PSBoZG1hMmQtPlN0YXRlKQogICB7CiAgICAgc3dpdGNoIChDYWxsYmFja0lEKQogICAgIHsKLSAgICBjYXNlIEhBTF9ETUEyRF9NU1BJTklUX0NCX0lEIDoKLSAgICAgIGhkbWEyZC0+TXNwSW5pdENhbGxiYWNrID0gcENhbGxiYWNrOwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9ETUEyRF9NU1BJTklUX0NCX0lEIDoKKyAgICAgICAgaGRtYTJkLT5Nc3BJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBIQUxfRE1BMkRfTVNQREVJTklUX0NCX0lEIDoKLSAgICAgIGhkbWEyZC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0RNQTJEX01TUERFSU5JVF9DQl9JRCA6CisgICAgICAgIGhkbWEyZC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOwogCi0gICAgZGVmYXVsdCA6Ci0gICAgIC8qIFVwZGF0ZSB0aGUgZXJyb3IgY29kZSAqLwotICAgICBoZG1hMmQtPkVycm9yQ29kZSB8PSBIQUxfRE1BMkRfRVJST1JfSU5WQUxJRF9DQUxMQkFDSzsKLSAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KLSAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7Ci0gICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQgOgorICAgICAgICAvKiBVcGRhdGUgdGhlIGVycm9yIGNvZGUgKi8KKyAgICAgICAgaGRtYTJkLT5FcnJvckNvZGUgfD0gSEFMX0RNQTJEX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0s7CisgICAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCisgICAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogICBlbHNlCiAgIHsKICAgICAvKiBVcGRhdGUgdGhlIGVycm9yIGNvZGUgKi8KLSAgICAgaGRtYTJkLT5FcnJvckNvZGUgfD0gSEFMX0RNQTJEX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0s7Ci0gICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCi0gICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOworICAgIGhkbWEyZC0+RXJyb3JDb2RlIHw9IEhBTF9ETUEyRF9FUlJPUl9JTlZBTElEX0NBTExCQUNLOworICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCisgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKICAgfQogCiAgIC8qIFJlbGVhc2UgTG9jayAqLwpAQCAtNTQyLDczICs1NDYsNzMgQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9ETUEyRF9VblJlZ2lzdGVyQ2FsbGJhY2soRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkLCBIQUxfRE1BMkRfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCkKIHsKLUhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKKyAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogCiAgIC8qIFByb2Nlc3MgbG9ja2VkICovCiAgIF9fSEFMX0xPQ0soaGRtYTJkKTsKIAotICBpZihIQUxfRE1BMkRfU1RBVEVfUkVBRFkgPT0gaGRtYTJkLT5TdGF0ZSkKKyAgaWYgKEhBTF9ETUEyRF9TVEFURV9SRUFEWSA9PSBoZG1hMmQtPlN0YXRlKQogICB7CiAgICAgc3dpdGNoIChDYWxsYmFja0lEKQogICAgIHsKLSAgICBjYXNlIEhBTF9ETUEyRF9UUkFOU0ZFUkNPTVBMRVRFX0NCX0lEIDoKLSAgICAgIGhkbWEyZC0+WGZlckNwbHRDYWxsYmFjayA9IE5VTEw7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0RNQTJEX1RSQU5TRkVSQ09NUExFVEVfQ0JfSUQgOgorICAgICAgICBoZG1hMmQtPlhmZXJDcGx0Q2FsbGJhY2sgPSBOVUxMOworICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSEFMX0RNQTJEX1RSQU5TRkVSRVJST1JfQ0JfSUQgOgotICAgICAgaGRtYTJkLT5YZmVyRXJyb3JDYWxsYmFjayA9IE5VTEw7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0RNQTJEX1RSQU5TRkVSRVJST1JfQ0JfSUQgOgorICAgICAgICBoZG1hMmQtPlhmZXJFcnJvckNhbGxiYWNrID0gTlVMTDsKKyAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIEhBTF9ETUEyRF9MSU5FRVZFTlRfQ0JfSUQgOgotICAgICAgaGRtYTJkLT5MaW5lRXZlbnRDYWxsYmFjayA9IEhBTF9ETUEyRF9MaW5lRXZlbnRDYWxsYmFjazsKLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfRE1BMkRfTElORUVWRU5UX0NCX0lEIDoKKyAgICAgICAgaGRtYTJkLT5MaW5lRXZlbnRDYWxsYmFjayA9IEhBTF9ETUEyRF9MaW5lRXZlbnRDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIEhBTF9ETUEyRF9DTFVUTE9BRElOR0NQTFRfQ0JfSUQgOgotICAgICAgaGRtYTJkLT5DTFVUTG9hZGluZ0NwbHRDYWxsYmFjayA9IEhBTF9ETUEyRF9DTFVUTG9hZGluZ0NwbHRDYWxsYmFjazsKLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfRE1BMkRfQ0xVVExPQURJTkdDUExUX0NCX0lEIDoKKyAgICAgICAgaGRtYTJkLT5DTFVUTG9hZGluZ0NwbHRDYWxsYmFjayA9IEhBTF9ETUEyRF9DTFVUTG9hZGluZ0NwbHRDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIEhBTF9ETUEyRF9NU1BJTklUX0NCX0lEIDoKLSAgICAgIGhkbWEyZC0+TXNwSW5pdENhbGxiYWNrID0gSEFMX0RNQTJEX01zcEluaXQ7IC8qIExlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBNc3AgSW5pdCAqLwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9ETUEyRF9NU1BJTklUX0NCX0lEIDoKKyAgICAgICAgaGRtYTJkLT5Nc3BJbml0Q2FsbGJhY2sgPSBIQUxfRE1BMkRfTXNwSW5pdDsgLyogTGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIE1zcCBJbml0ICovCisgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBIQUxfRE1BMkRfTVNQREVJTklUX0NCX0lEIDoKLSAgICAgIGhkbWEyZC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfRE1BMkRfTXNwRGVJbml0OyAvKiBMZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgTXNwIERlSW5pdCAqLwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9ETUEyRF9NU1BERUlOSVRfQ0JfSUQgOgorICAgICAgICBoZG1hMmQtPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX0RNQTJEX01zcERlSW5pdDsgLyogTGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIE1zcCBEZUluaXQgKi8KKyAgICAgICAgYnJlYWs7CiAKLSAgICBkZWZhdWx0IDoKLSAgICAgLyogVXBkYXRlIHRoZSBlcnJvciBjb2RlICovCi0gICAgIGhkbWEyZC0+RXJyb3JDb2RlIHw9IEhBTF9ETUEyRF9FUlJPUl9JTlZBTElEX0NBTExCQUNLOwotICAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLwotICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKLSAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdCA6CisgICAgICAgIC8qIFVwZGF0ZSB0aGUgZXJyb3IgY29kZSAqLworICAgICAgICBoZG1hMmQtPkVycm9yQ29kZSB8PSBIQUxfRE1BMkRfRVJST1JfSU5WQUxJRF9DQUxMQkFDSzsKKyAgICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KKyAgICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICB9Ci0gIGVsc2UgaWYoSEFMX0RNQTJEX1NUQVRFX1JFU0VUID09IGhkbWEyZC0+U3RhdGUpCisgIGVsc2UgaWYgKEhBTF9ETUEyRF9TVEFURV9SRVNFVCA9PSBoZG1hMmQtPlN0YXRlKQogICB7CiAgICAgc3dpdGNoIChDYWxsYmFja0lEKQogICAgIHsKLSAgICBjYXNlIEhBTF9ETUEyRF9NU1BJTklUX0NCX0lEIDoKLSAgICAgIGhkbWEyZC0+TXNwSW5pdENhbGxiYWNrID0gSEFMX0RNQTJEX01zcEluaXQ7ICAgLyogTGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIE1zcCBJbml0ICovCi0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0RNQTJEX01TUElOSVRfQ0JfSUQgOgorICAgICAgICBoZG1hMmQtPk1zcEluaXRDYWxsYmFjayA9IEhBTF9ETUEyRF9Nc3BJbml0OyAgIC8qIExlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBNc3AgSW5pdCAqLworICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSEFMX0RNQTJEX01TUERFSU5JVF9DQl9JRCA6Ci0gICAgICBoZG1hMmQtPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX0RNQTJEX01zcERlSW5pdDsgIC8qIExlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBNc3AgRGVJbml0ICovCi0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0RNQTJEX01TUERFSU5JVF9DQl9JRCA6CisgICAgICAgIGhkbWEyZC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfRE1BMkRfTXNwRGVJbml0OyAgLyogTGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIE1zcCBEZUluaXQgKi8KKyAgICAgICAgYnJlYWs7CiAKLSAgICBkZWZhdWx0IDoKLSAgICAgLyogVXBkYXRlIHRoZSBlcnJvciBjb2RlICovCi0gICAgIGhkbWEyZC0+RXJyb3JDb2RlIHw9IEhBTF9ETUEyRF9FUlJPUl9JTlZBTElEX0NBTExCQUNLOwotICAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLwotICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKLSAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdCA6CisgICAgICAgIC8qIFVwZGF0ZSB0aGUgZXJyb3IgY29kZSAqLworICAgICAgICBoZG1hMmQtPkVycm9yQ29kZSB8PSBIQUxfRE1BMkRfRVJST1JfSU5WQUxJRF9DQUxMQkFDSzsKKyAgICAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KKyAgICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICB9CiAgIGVsc2UKICAgewotICAgICAvKiBVcGRhdGUgdGhlIGVycm9yIGNvZGUgKi8KLSAgICAgaGRtYTJkLT5FcnJvckNvZGUgfD0gSEFMX0RNQTJEX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0s7Ci0gICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCi0gICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOworICAgIC8qIFVwZGF0ZSB0aGUgZXJyb3IgY29kZSAqLworICAgIGhkbWEyZC0+RXJyb3JDb2RlIHw9IEhBTF9ETUEyRF9FUlJPUl9JTlZBTElEX0NBTExCQUNLOworICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCisgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKICAgfQogCiAgIC8qIFJlbGVhc2UgTG9jayAqLwpAQCAtNjIzLDggKzYyNyw4IEBACiAKIAogLyoqIEBkZWZncm91cCBETUEyRF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAyIElPIG9wZXJhdGlvbiBmdW5jdGlvbnMKLSAqICBAYnJpZWYgICBJTyBvcGVyYXRpb24gZnVuY3Rpb25zCi0gKgorICAqICBAYnJpZWYgICBJTyBvcGVyYXRpb24gZnVuY3Rpb25zCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyAgSU8gb3BlcmF0aW9uIGZ1bmN0aW9ucyAgIyMjIyMKQEAgLTY2NiwxMSArNjcwLDEzIEBACiAgICogICAgICAgICAgICAgICAgICAgICBjb252ZXJzaW9uIG1vZGUgaXMgc2VsZWN0ZWQsIG9yIGNvbmZpZ3VyZQogICAqICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbG9yIHZhbHVlIGlmIFJlZ2lzdGVyLXRvLU1lbW9yeSBtb2RlIGlzIHNlbGVjdGVkLgogICAqIEBwYXJhbSAgRHN0QWRkcmVzcyBUaGUgZGVzdGluYXRpb24gbWVtb3J5IEJ1ZmZlciBhZGRyZXNzLgotICAqIEBwYXJhbSAgV2lkdGggICAgICBUaGUgd2lkdGggb2YgZGF0YSB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHNvdXJjZSB0byBkZXN0aW5hdGlvbiAoZXhwcmVzc2VkIGluIG51bWJlciBvZiBwaXhlbHMgcGVyIGxpbmUpLgorICAqIEBwYXJhbSAgV2lkdGggICAgICBUaGUgd2lkdGggb2YgZGF0YSB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHNvdXJjZQorICAqICAgICAgICAgICAgICAgICAgICB0byBkZXN0aW5hdGlvbiAoZXhwcmVzc2VkIGluIG51bWJlciBvZiBwaXhlbHMgcGVyIGxpbmUpLgogICAqIEBwYXJhbSAgSGVpZ2h0ICAgICBUaGUgaGVpZ2h0IG9mIGRhdGEgdG8gYmUgdHJhbnNmZXJyZWQgZnJvbSBzb3VyY2UgdG8gZGVzdGluYXRpb24gKGV4cHJlc3NlZCBpbiBudW1iZXIgb2YgbGluZXMpLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RNQTJEX1N0YXJ0KERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCwgdWludDMyX3QgcGRhdGEsIHVpbnQzMl90IERzdEFkZHJlc3MsIHVpbnQzMl90IFdpZHRoLCAgdWludDMyX3QgSGVpZ2h0KQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RNQTJEX1N0YXJ0KERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCwgdWludDMyX3QgcGRhdGEsIHVpbnQzMl90IERzdEFkZHJlc3MsIHVpbnQzMl90IFdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEhlaWdodCkKIHsKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX0RNQTJEX0xJTkUoSGVpZ2h0KSk7CkBAIC03MDAsMTEgKzcwNiwxMyBAQAogICAqICAgICAgICAgICAgICAgICAgICAgY29udmVyc2lvbiBtb2RlIGlzIHNlbGVjdGVkLCBvciBjb25maWd1cmUKICAgKiAgICAgICAgICAgICAgICAgICAgIHRoZSBjb2xvciB2YWx1ZSBpZiBSZWdpc3Rlci10by1NZW1vcnkgbW9kZSBpcyBzZWxlY3RlZC4KICAgKiBAcGFyYW0gIERzdEFkZHJlc3MgVGhlIGRlc3RpbmF0aW9uIG1lbW9yeSBCdWZmZXIgYWRkcmVzcy4KLSAgKiBAcGFyYW0gIFdpZHRoICAgICAgVGhlIHdpZHRoIG9mIGRhdGEgdG8gYmUgdHJhbnNmZXJyZWQgZnJvbSBzb3VyY2UgdG8gZGVzdGluYXRpb24gKGV4cHJlc3NlZCBpbiBudW1iZXIgb2YgcGl4ZWxzIHBlciBsaW5lKS4KKyAgKiBAcGFyYW0gIFdpZHRoICAgICAgVGhlIHdpZHRoIG9mIGRhdGEgdG8gYmUgdHJhbnNmZXJyZWQgZnJvbSBzb3VyY2UKKyAgKiAgICAgICAgICAgICAgICAgICAgdG8gZGVzdGluYXRpb24gKGV4cHJlc3NlZCBpbiBudW1iZXIgb2YgcGl4ZWxzIHBlciBsaW5lKS4KICAgKiBAcGFyYW0gIEhlaWdodCAgICAgVGhlIGhlaWdodCBvZiBkYXRhIHRvIGJlIHRyYW5zZmVycmVkIGZyb20gc291cmNlIHRvIGRlc3RpbmF0aW9uIChleHByZXNzZWQgaW4gbnVtYmVyIG9mIGxpbmVzKS4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9ETUEyRF9TdGFydF9JVChETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQsIHVpbnQzMl90IHBkYXRhLCB1aW50MzJfdCBEc3RBZGRyZXNzLCB1aW50MzJfdCBXaWR0aCwgIHVpbnQzMl90IEhlaWdodCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9ETUEyRF9TdGFydF9JVChETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQsIHVpbnQzMl90IHBkYXRhLCB1aW50MzJfdCBEc3RBZGRyZXNzLCB1aW50MzJfdCBXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBIZWlnaHQpCiB7CiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19ETUEyRF9MSU5FKEhlaWdodCkpOwpAQCAtNzIwLDcgKzcyOCw3IEBACiAgIERNQTJEX1NldENvbmZpZyhoZG1hMmQsIHBkYXRhLCBEc3RBZGRyZXNzLCBXaWR0aCwgSGVpZ2h0KTsKIAogICAvKiBFbmFibGUgdGhlIHRyYW5zZmVyIGNvbXBsZXRlLCB0cmFuc2ZlciBlcnJvciBhbmQgY29uZmlndXJhdGlvbiBlcnJvciBpbnRlcnJ1cHRzICovCi0gIF9fSEFMX0RNQTJEX0VOQUJMRV9JVChoZG1hMmQsIERNQTJEX0lUX1RDfERNQTJEX0lUX1RFfERNQTJEX0lUX0NFKTsKKyAgX19IQUxfRE1BMkRfRU5BQkxFX0lUKGhkbWEyZCwgRE1BMkRfSVRfVEMgfCBETUEyRF9JVF9URSB8IERNQTJEX0lUX0NFKTsKIAogICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgX19IQUxfRE1BMkRfRU5BQkxFKGhkbWEyZCk7CkBAIC03MzUsMTEgKzc0MywxMyBAQAogICAqIEBwYXJhbSAgU3JjQWRkcmVzczEgVGhlIHNvdXJjZSBtZW1vcnkgQnVmZmVyIGFkZHJlc3MgZm9yIHRoZSBmb3JlZ3JvdW5kIGxheWVyLgogICAqIEBwYXJhbSAgU3JjQWRkcmVzczIgVGhlIHNvdXJjZSBtZW1vcnkgQnVmZmVyIGFkZHJlc3MgZm9yIHRoZSBiYWNrZ3JvdW5kIGxheWVyLgogICAqIEBwYXJhbSAgRHN0QWRkcmVzcyAgVGhlIGRlc3RpbmF0aW9uIG1lbW9yeSBCdWZmZXIgYWRkcmVzcy4KLSAgKiBAcGFyYW0gIFdpZHRoICAgICAgIFRoZSB3aWR0aCBvZiBkYXRhIHRvIGJlIHRyYW5zZmVycmVkIGZyb20gc291cmNlIHRvIGRlc3RpbmF0aW9uIChleHByZXNzZWQgaW4gbnVtYmVyIG9mIHBpeGVscyBwZXIgbGluZSkuCisgICogQHBhcmFtICBXaWR0aCAgICAgICBUaGUgd2lkdGggb2YgZGF0YSB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHNvdXJjZQorICAqICAgICAgICAgICAgICAgICAgICAgdG8gZGVzdGluYXRpb24gKGV4cHJlc3NlZCBpbiBudW1iZXIgb2YgcGl4ZWxzIHBlciBsaW5lKS4KICAgKiBAcGFyYW0gIEhlaWdodCAgICAgIFRoZSBoZWlnaHQgb2YgZGF0YSB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHNvdXJjZSB0byBkZXN0aW5hdGlvbiAoZXhwcmVzc2VkIGluIG51bWJlciBvZiBsaW5lcykuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfRE1BMkRfQmxlbmRpbmdTdGFydChETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQsIHVpbnQzMl90IFNyY0FkZHJlc3MxLCB1aW50MzJfdCAgU3JjQWRkcmVzczIsIHVpbnQzMl90IERzdEFkZHJlc3MsIHVpbnQzMl90IFdpZHRoLCAgdWludDMyX3QgSGVpZ2h0KQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RNQTJEX0JsZW5kaW5nU3RhcnQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkLCB1aW50MzJfdCBTcmNBZGRyZXNzMSwgdWludDMyX3QgIFNyY0FkZHJlc3MyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgRHN0QWRkcmVzcywgdWludDMyX3QgV2lkdGgsICB1aW50MzJfdCBIZWlnaHQpCiB7CiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19ETUEyRF9MSU5FKEhlaWdodCkpOwpAQCAtNzcwLDExICs3ODAsMTMgQEAKICAgKiBAcGFyYW0gIFNyY0FkZHJlc3MxIFRoZSBzb3VyY2UgbWVtb3J5IEJ1ZmZlciBhZGRyZXNzIGZvciB0aGUgZm9yZWdyb3VuZCBsYXllci4KICAgKiBAcGFyYW0gIFNyY0FkZHJlc3MyIFRoZSBzb3VyY2UgbWVtb3J5IEJ1ZmZlciBhZGRyZXNzIGZvciB0aGUgYmFja2dyb3VuZCBsYXllci4KICAgKiBAcGFyYW0gIERzdEFkZHJlc3MgIFRoZSBkZXN0aW5hdGlvbiBtZW1vcnkgQnVmZmVyIGFkZHJlc3MuCi0gICogQHBhcmFtICBXaWR0aCAgICAgICBUaGUgd2lkdGggb2YgZGF0YSB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHNvdXJjZSB0byBkZXN0aW5hdGlvbiAoZXhwcmVzc2VkIGluIG51bWJlciBvZiBwaXhlbHMgcGVyIGxpbmUpLgorICAqIEBwYXJhbSAgV2lkdGggICAgICAgVGhlIHdpZHRoIG9mIGRhdGEgdG8gYmUgdHJhbnNmZXJyZWQgZnJvbSBzb3VyY2UKKyAgKiAgICAgICAgICAgICAgICAgICAgIHRvIGRlc3RpbmF0aW9uIChleHByZXNzZWQgaW4gbnVtYmVyIG9mIHBpeGVscyBwZXIgbGluZSkuCiAgICogQHBhcmFtICBIZWlnaHQgICAgICBUaGUgaGVpZ2h0IG9mIGRhdGEgdG8gYmUgdHJhbnNmZXJyZWQgZnJvbSBzb3VyY2UgdG8gZGVzdGluYXRpb24gKGV4cHJlc3NlZCBpbiBudW1iZXIgb2YgbGluZXMpLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RNQTJEX0JsZW5kaW5nU3RhcnRfSVQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkLCB1aW50MzJfdCBTcmNBZGRyZXNzMSwgdWludDMyX3QgIFNyY0FkZHJlc3MyLCB1aW50MzJfdCBEc3RBZGRyZXNzLCB1aW50MzJfdCBXaWR0aCwgIHVpbnQzMl90IEhlaWdodCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9ETUEyRF9CbGVuZGluZ1N0YXJ0X0lUKERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCwgdWludDMyX3QgU3JjQWRkcmVzczEsIHVpbnQzMl90ICBTcmNBZGRyZXNzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IERzdEFkZHJlc3MsIHVpbnQzMl90IFdpZHRoLCAgdWludDMyX3QgSGVpZ2h0KQogewogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfRE1BMkRfTElORShIZWlnaHQpKTsKQEAgLTc5Myw3ICs4MDUsNyBAQAogICBETUEyRF9TZXRDb25maWcoaGRtYTJkLCBTcmNBZGRyZXNzMSwgRHN0QWRkcmVzcywgV2lkdGgsIEhlaWdodCk7CiAKICAgLyogRW5hYmxlIHRoZSB0cmFuc2ZlciBjb21wbGV0ZSwgdHJhbnNmZXIgZXJyb3IgYW5kIGNvbmZpZ3VyYXRpb24gZXJyb3IgaW50ZXJydXB0cyAqLwotICBfX0hBTF9ETUEyRF9FTkFCTEVfSVQoaGRtYTJkLCBETUEyRF9JVF9UQ3xETUEyRF9JVF9URXxETUEyRF9JVF9DRSk7CisgIF9fSEFMX0RNQTJEX0VOQUJMRV9JVChoZG1hMmQsIERNQTJEX0lUX1RDIHwgRE1BMkRfSVRfVEUgfCBETUEyRF9JVF9DRSk7CiAKICAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsICovCiAgIF9fSEFMX0RNQTJEX0VOQUJMRShoZG1hMmQpOwpAQCAtODE1LDE1ICs4MjcsMTUgQEAKICAgLyogU1RBUlQgYml0IGlzIHJlc2V0IHRvIG1ha2Ugc3VyZSBub3QgdG8gc2V0IGl0IGFnYWluLCBpbiB0aGUgZXZlbnQgdGhlIEhXIGNsZWFycyBpdAogICAgICBiZXR3ZWVuIHRoZSByZWdpc3RlciByZWFkIGFuZCB0aGUgcmVnaXN0ZXIgd3JpdGUgYnkgdGhlIENQVSAod3JpdGluZyAwIGhhcyBubwogICAgICBlZmZlY3Qgb24gU1RBUlQgYml0dmFsdWUpICovCi0gICBNT0RJRllfUkVHKGhkbWEyZC0+SW5zdGFuY2UtPkNSLCBETUEyRF9DUl9BQk9SVHxETUEyRF9DUl9TVEFSVCwgRE1BMkRfQ1JfQUJPUlQpOworICBNT0RJRllfUkVHKGhkbWEyZC0+SW5zdGFuY2UtPkNSLCBETUEyRF9DUl9BQk9SVCB8IERNQTJEX0NSX1NUQVJULCBETUEyRF9DUl9BQk9SVCk7CiAKICAgLyogR2V0IHRpY2sgKi8KICAgdGlja3N0YXJ0ID0gSEFMX0dldFRpY2soKTsKIAogICAvKiBDaGVjayBpZiB0aGUgRE1BMkQgaXMgZWZmZWN0aXZlbHkgZGlzYWJsZWQgKi8KLSAgd2hpbGUoKGhkbWEyZC0+SW5zdGFuY2UtPkNSICYgRE1BMkRfQ1JfU1RBUlQpICE9IDBVKQorICB3aGlsZSAoKGhkbWEyZC0+SW5zdGFuY2UtPkNSICYgRE1BMkRfQ1JfU1RBUlQpICE9IDBVKQogICB7Ci0gICAgaWYoKEhBTF9HZXRUaWNrKCkgLSB0aWNrc3RhcnQgKSA+IERNQTJEX1RJTUVPVVRfQUJPUlQpCisgICAgaWYgKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0KSA+IERNQTJEX1RJTUVPVVRfQUJPUlQpCiAgICAgewogICAgICAgLyogVXBkYXRlIGVycm9yIGNvZGUgKi8KICAgICAgIGhkbWEyZC0+RXJyb3JDb2RlIHw9IEhBTF9ETUEyRF9FUlJPUl9USU1FT1VUOwpAQCAtODM5LDcgKzg1MSw3IEBACiAgIH0KIAogICAvKiBEaXNhYmxlIHRoZSBUcmFuc2ZlciBDb21wbGV0ZSwgVHJhbnNmZXIgRXJyb3IgYW5kIENvbmZpZ3VyYXRpb24gRXJyb3IgaW50ZXJydXB0cyAqLwotICBfX0hBTF9ETUEyRF9ESVNBQkxFX0lUKGhkbWEyZCwgRE1BMkRfSVRfVEN8RE1BMkRfSVRfVEV8RE1BMkRfSVRfQ0UpOworICBfX0hBTF9ETUEyRF9ESVNBQkxFX0lUKGhkbWEyZCwgRE1BMkRfSVRfVEMgfCBETUEyRF9JVF9URSB8IERNQTJEX0lUX0NFKTsKIAogICAvKiBDaGFuZ2UgdGhlIERNQTJEIHN0YXRlKi8KICAgaGRtYTJkLT5TdGF0ZSA9IEhBTF9ETUEyRF9TVEFURV9SRUFEWTsKQEAgLTg2NCw3ICs4NzYsNyBAQAogICAvKiBTVEFSVCBiaXQgaXMgcmVzZXQgdG8gbWFrZSBzdXJlIG5vdCB0byBzZXQgaXQgYWdhaW4sIGluIHRoZSBldmVudCB0aGUgSFcgY2xlYXJzIGl0CiAgICAgIGJldHdlZW4gdGhlIHJlZ2lzdGVyIHJlYWQgYW5kIHRoZSByZWdpc3RlciB3cml0ZSBieSB0aGUgQ1BVICh3cml0aW5nIDAgaGFzIG5vCiAgICAgIGVmZmVjdCBvbiBTVEFSVCBiaXR2YWx1ZSkuICovCi0gIE1PRElGWV9SRUcoaGRtYTJkLT5JbnN0YW5jZS0+Q1IsIERNQTJEX0NSX1NVU1B8RE1BMkRfQ1JfU1RBUlQsIERNQTJEX0NSX1NVU1ApOworICBNT0RJRllfUkVHKGhkbWEyZC0+SW5zdGFuY2UtPkNSLCBETUEyRF9DUl9TVVNQIHwgRE1BMkRfQ1JfU1RBUlQsIERNQTJEX0NSX1NVU1ApOwogCiAgIC8qIEdldCB0aWNrICovCiAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CkBAIC04NzIsNyArODg0LDcgQEAKICAgLyogQ2hlY2sgaWYgdGhlIERNQTJEIGlzIGVmZmVjdGl2ZWx5IHN1c3BlbmRlZCAqLwogICB3aGlsZSAoKGhkbWEyZC0+SW5zdGFuY2UtPkNSICYgKERNQTJEX0NSX1NVU1AgfCBETUEyRF9DUl9TVEFSVCkpID09IERNQTJEX0NSX1NUQVJUKQogICB7Ci0gICAgaWYoKEhBTF9HZXRUaWNrKCkgLSB0aWNrc3RhcnQgKSA+IERNQTJEX1RJTUVPVVRfU1VTUEVORCkKKyAgICBpZiAoKEhBTF9HZXRUaWNrKCkgLSB0aWNrc3RhcnQpID4gRE1BMkRfVElNRU9VVF9TVVNQRU5EKQogICAgIHsKICAgICAgIC8qIFVwZGF0ZSBlcnJvciBjb2RlICovCiAgICAgICBoZG1hMmQtPkVycm9yQ29kZSB8PSBIQUxfRE1BMkRfRVJST1JfVElNRU9VVDsKQEAgLTg4NCw3ICs4OTYsNyBAQAogICAgIH0KICAgfQogCi0gICAvKiBDaGVjayB3aGV0aGVyIG9yIG5vdCBhIHRyYW5zZmVyIGlzIGFjdHVhbGx5IHN1c3BlbmRlZCBhbmQgY2hhbmdlIHRoZSBETUEyRCBzdGF0ZSBhY2NvcmRpbmdseSAqLworICAvKiBDaGVjayB3aGV0aGVyIG9yIG5vdCBhIHRyYW5zZmVyIGlzIGFjdHVhbGx5IHN1c3BlbmRlZCBhbmQgY2hhbmdlIHRoZSBETUEyRCBzdGF0ZSBhY2NvcmRpbmdseSAqLwogICBpZiAoKGhkbWEyZC0+SW5zdGFuY2UtPkNSICYgRE1BMkRfQ1JfU1RBUlQpICE9IDBVKQogICB7CiAgICAgaGRtYTJkLT5TdGF0ZSA9IEhBTF9ETUEyRF9TVEFURV9TVVNQRU5EOwpAQCAtODkyLDcgKzkwNCw3IEBACiAgIGVsc2UKICAgewogICAgIC8qIE1ha2Ugc3VyZSBTVVNQIGJpdCBpcyBjbGVhcmVkIHNpbmNlIGl0IGlzIG1lYW5pbmdsZXNzCi0gICAgICAgd2hlbiBubyB0cmFuZmVyIGlzIG9uLWdvaW5nICovCisgICAgICAgd2hlbiBubyB0cmFuc2ZlciBpcyBvbi1nb2luZyAqLwogICAgIENMRUFSX0JJVChoZG1hMmQtPkluc3RhbmNlLT5DUiwgRE1BMkRfQ1JfU1VTUCk7CiAgIH0KIApAQCAtOTA4LDcgKzkyMCw3IEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfRE1BMkRfUmVzdW1lKERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCkKIHsKICAgLyogQ2hlY2sgdGhlIFNVU1AgYW5kIFNUQVJUIGJpdHMgKi8KLSAgaWYoKGhkbWEyZC0+SW5zdGFuY2UtPkNSICYgKERNQTJEX0NSX1NVU1AgfCBETUEyRF9DUl9TVEFSVCkpID09IChETUEyRF9DUl9TVVNQIHwgRE1BMkRfQ1JfU1RBUlQpKQorICBpZiAoKGhkbWEyZC0+SW5zdGFuY2UtPkNSICYgKERNQTJEX0NSX1NVU1AgfCBETUEyRF9DUl9TVEFSVCkpID09IChETUEyRF9DUl9TVVNQIHwgRE1BMkRfQ1JfU1RBUlQpKQogICB7CiAgICAgLyogT25nb2luZyB0cmFuc2ZlciBpcyBzdXNwZW5kZWQ6IGNoYW5nZSB0aGUgRE1BMkQgc3RhdGUgYmVmb3JlIHJlc3VtaW5nICovCiAgICAgaGRtYTJkLT5TdGF0ZSA9IEhBTF9ETUEyRF9TVEFURV9CVVNZOwpAQCAtOTE4LDcgKzkzMCw3IEBACiAgIC8qIFNUQVJUIGJpdCBpcyByZXNldCB0byBtYWtlIHN1cmUgbm90IHRvIHNldCBpdCBhZ2FpbiwgaW4gdGhlIGV2ZW50IHRoZSBIVyBjbGVhcnMgaXQKICAgICAgYmV0d2VlbiB0aGUgcmVnaXN0ZXIgcmVhZCBhbmQgdGhlIHJlZ2lzdGVyIHdyaXRlIGJ5IHRoZSBDUFUgKHdyaXRpbmcgMCBoYXMgbm8KICAgICAgZWZmZWN0IG9uIFNUQVJUIGJpdHZhbHVlKS4gKi8KLSAgQ0xFQVJfQklUKGhkbWEyZC0+SW5zdGFuY2UtPkNSLCAoRE1BMkRfQ1JfU1VTUHxETUEyRF9DUl9TVEFSVCkpOworICBDTEVBUl9CSVQoaGRtYTJkLT5JbnN0YW5jZS0+Q1IsIChETUEyRF9DUl9TVVNQIHwgRE1BMkRfQ1JfU1RBUlQpKTsKIAogICByZXR1cm4gSEFMX09LOwogfQpAQCAtOTQ0LDcgKzk1Niw3IEBACiAgIC8qIENoYW5nZSBETUEyRCBwZXJpcGhlcmFsIHN0YXRlICovCiAgIGhkbWEyZC0+U3RhdGUgPSBIQUxfRE1BMkRfU1RBVEVfQlVTWTsKIAotICBpZihMYXllcklkeCA9PSBETUEyRF9CQUNLR1JPVU5EX0xBWUVSKQorICBpZiAoTGF5ZXJJZHggPT0gRE1BMkRfQkFDS0dST1VORF9MQVlFUikKICAgewogICAgIC8qIEVuYWJsZSB0aGUgYmFja2dyb3VuZCBDTFVUIGxvYWRpbmcgKi8KICAgICBTRVRfQklUKGhkbWEyZC0+SW5zdGFuY2UtPkJHUEZDQ1IsIERNQTJEX0JHUEZDQ1JfU1RBUlQpOwpAQCAtOTU4LDcgKzk3MCw2IEBACiAgIHJldHVybiBIQUxfT0s7CiB9CiAKLQogLyoqCiAgICogQGJyaWVmICBTdGFydCBETUEyRCBDTFVUIExvYWRpbmcuCiAgICogQHBhcmFtICBoZG1hMmQgICBQb2ludGVyIHRvIGEgRE1BMkRfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwpAQCAtOTY4LDE1ICs5NzksMTQgQEAKICAgKiBAcGFyYW0gIExheWVySWR4IERNQTJEIExheWVyIGluZGV4LgogICAqICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAgICogICAgICAgICAgICAgICAgICAgRE1BMkRfQkFDS0dST1VORF9MQVlFUigwKSAvIERNQTJEX0ZPUkVHUk9VTkRfTEFZRVIoMSkKLSAgKiBAbm90ZSBJbnZva2luZyB0aGlzIEFQSSBpcyBzaW1pbGFyIHRvIGNhbGxpbmcgSEFMX0RNQTJEX0NvbmZpZ0NMVVQoKSB0aGVuIEhBTF9ETUEyRF9FbmFibGVDTFVUKCkuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfRE1BMkRfQ0xVVExvYWQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkLCBETUEyRF9DTFVUQ2ZnVHlwZURlZiBDTFVUQ2ZnLCB1aW50MzJfdCBMYXllcklkeCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9ETUEyRF9DTFVUU3RhcnRMb2FkKERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCwgRE1BMkRfQ0xVVENmZ1R5cGVEZWYgKkNMVVRDZmcsIHVpbnQzMl90IExheWVySWR4KQogewogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfRE1BMkRfTEFZRVIoTGF5ZXJJZHgpKTsKLSAgYXNzZXJ0X3BhcmFtKElTX0RNQTJEX0NMVVRfQ00oQ0xVVENmZy5DTFVUQ29sb3JNb2RlKSk7Ci0gIGFzc2VydF9wYXJhbShJU19ETUEyRF9DTFVUX1NJWkUoQ0xVVENmZy5TaXplKSk7CisgIGFzc2VydF9wYXJhbShJU19ETUEyRF9DTFVUX0NNKENMVVRDZmctPkNMVVRDb2xvck1vZGUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0RNQTJEX0NMVVRfU0laRShDTFVUQ2ZnLT5TaXplKSk7CiAKICAgLyogUHJvY2VzcyBsb2NrZWQgKi8KICAgX19IQUxfTE9DSyhoZG1hMmQpOwpAQCAtOTg1LDE0ICs5OTUsMTQgQEAKICAgaGRtYTJkLT5TdGF0ZSA9IEhBTF9ETUEyRF9TVEFURV9CVVNZOwogCiAgIC8qIENvbmZpZ3VyZSB0aGUgQ0xVVCBvZiB0aGUgYmFja2dyb3VuZCBETUEyRCBsYXllciAqLwotICBpZihMYXllcklkeCA9PSBETUEyRF9CQUNLR1JPVU5EX0xBWUVSKQorICBpZiAoTGF5ZXJJZHggPT0gRE1BMkRfQkFDS0dST1VORF9MQVlFUikKICAgewogICAgIC8qIFdyaXRlIGJhY2tncm91bmQgQ0xVVCBtZW1vcnkgYWRkcmVzcyAqLwotICAgIFdSSVRFX1JFRyhoZG1hMmQtPkluc3RhbmNlLT5CR0NNQVIsICh1aW50MzJfdClDTFVUQ2ZnLnBDTFVUKTsKKyAgICBXUklURV9SRUcoaGRtYTJkLT5JbnN0YW5jZS0+QkdDTUFSLCAodWludDMyX3QpQ0xVVENmZy0+cENMVVQpOwogCiAgICAgLyogV3JpdGUgYmFja2dyb3VuZCBDTFVUIHNpemUgYW5kIENMVVQgY29sb3IgbW9kZSAqLwogICAgIE1PRElGWV9SRUcoaGRtYTJkLT5JbnN0YW5jZS0+QkdQRkNDUiwgKERNQTJEX0JHUEZDQ1JfQ1MgfCBETUEyRF9CR1BGQ0NSX0NDTSksCi0gICAgICAgICAgICAoKENMVVRDZmcuU2l6ZSA8PCBETUEyRF9CR1BGQ0NSX0NTX1BvcykgfCAoQ0xVVENmZy5DTFVUQ29sb3JNb2RlIDw8IERNQTJEX0JHUEZDQ1JfQ0NNX1BvcykpKTsKKyAgICAgICAgICAgICAgICgoQ0xVVENmZy0+U2l6ZSA8PCBETUEyRF9CR1BGQ0NSX0NTX1BvcykgfCAoQ0xVVENmZy0+Q0xVVENvbG9yTW9kZSA8PCBETUEyRF9CR1BGQ0NSX0NDTV9Qb3MpKSk7CiAKICAgICAvKiBFbmFibGUgdGhlIENMVVQgbG9hZGluZyBmb3IgdGhlIGJhY2tncm91bmQgKi8KICAgICBTRVRfQklUKGhkbWEyZC0+SW5zdGFuY2UtPkJHUEZDQ1IsIERNQTJEX0JHUEZDQ1JfU1RBUlQpOwpAQCAtMTAwMSwxMyArMTAxMSwxMyBAQAogICBlbHNlCiAgIHsKICAgICAvKiBXcml0ZSBmb3JlZ3JvdW5kIENMVVQgbWVtb3J5IGFkZHJlc3MgKi8KLSAgICBXUklURV9SRUcoaGRtYTJkLT5JbnN0YW5jZS0+RkdDTUFSLCAodWludDMyX3QpQ0xVVENmZy5wQ0xVVCk7CisgICAgV1JJVEVfUkVHKGhkbWEyZC0+SW5zdGFuY2UtPkZHQ01BUiwgKHVpbnQzMl90KUNMVVRDZmctPnBDTFVUKTsKIAogICAgIC8qIFdyaXRlIGZvcmVncm91bmQgQ0xVVCBzaXplIGFuZCBDTFVUIGNvbG9yIG1vZGUgKi8KICAgICBNT0RJRllfUkVHKGhkbWEyZC0+SW5zdGFuY2UtPkZHUEZDQ1IsIChETUEyRF9GR1BGQ0NSX0NTIHwgRE1BMkRfRkdQRkNDUl9DQ00pLAotICAgICAgICAgICAgKChDTFVUQ2ZnLlNpemUgPDwgRE1BMkRfRkdQRkNDUl9DU19Qb3MpIHwgKENMVVRDZmcuQ0xVVENvbG9yTW9kZSA8PCBETUEyRF9GR1BGQ0NSX0NDTV9Qb3MpKSk7CisgICAgICAgICAgICAgICAoKENMVVRDZmctPlNpemUgPDwgRE1BMkRfRkdQRkNDUl9DU19Qb3MpIHwgKENMVVRDZmctPkNMVVRDb2xvck1vZGUgPDwgRE1BMkRfRkdQRkNDUl9DQ01fUG9zKSkpOwogCi0gLyogRW5hYmxlIHRoZSBDTFVUIGxvYWRpbmcgZm9yIHRoZSBmb3JlZ3JvdW5kICovCisgICAgLyogRW5hYmxlIHRoZSBDTFVUIGxvYWRpbmcgZm9yIHRoZSBmb3JlZ3JvdW5kICovCiAgICAgU0VUX0JJVChoZG1hMmQtPkluc3RhbmNlLT5GR1BGQ0NSLCBETUEyRF9GR1BGQ0NSX1NUQVJUKTsKICAgfQogCkBAIC0xMDI1LDYgKzEwMzUsMTI3IEBACiAgICogICAgICAgICAgICAgICAgICAgRE1BMkRfQkFDS0dST1VORF9MQVlFUigwKSAvIERNQTJEX0ZPUkVHUk9VTkRfTEFZRVIoMSkKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9ETUEyRF9DTFVUU3RhcnRMb2FkX0lUKERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCwgRE1BMkRfQ0xVVENmZ1R5cGVEZWYgKkNMVVRDZmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBMYXllcklkeCkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX0RNQTJEX0xBWUVSKExheWVySWR4KSk7CisgIGFzc2VydF9wYXJhbShJU19ETUEyRF9DTFVUX0NNKENMVVRDZmctPkNMVVRDb2xvck1vZGUpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0RNQTJEX0NMVVRfU0laRShDTFVUQ2ZnLT5TaXplKSk7CisKKyAgLyogUHJvY2VzcyBsb2NrZWQgKi8KKyAgX19IQUxfTE9DSyhoZG1hMmQpOworCisgIC8qIENoYW5nZSBETUEyRCBwZXJpcGhlcmFsIHN0YXRlICovCisgIGhkbWEyZC0+U3RhdGUgPSBIQUxfRE1BMkRfU1RBVEVfQlVTWTsKKworICAvKiBDb25maWd1cmUgdGhlIENMVVQgb2YgdGhlIGJhY2tncm91bmQgRE1BMkQgbGF5ZXIgKi8KKyAgaWYgKExheWVySWR4ID09IERNQTJEX0JBQ0tHUk9VTkRfTEFZRVIpCisgIHsKKyAgICAvKiBXcml0ZSBiYWNrZ3JvdW5kIENMVVQgbWVtb3J5IGFkZHJlc3MgKi8KKyAgICBXUklURV9SRUcoaGRtYTJkLT5JbnN0YW5jZS0+QkdDTUFSLCAodWludDMyX3QpQ0xVVENmZy0+cENMVVQpOworCisgICAgLyogV3JpdGUgYmFja2dyb3VuZCBDTFVUIHNpemUgYW5kIENMVVQgY29sb3IgbW9kZSAqLworICAgIE1PRElGWV9SRUcoaGRtYTJkLT5JbnN0YW5jZS0+QkdQRkNDUiwgKERNQTJEX0JHUEZDQ1JfQ1MgfCBETUEyRF9CR1BGQ0NSX0NDTSksCisgICAgICAgICAgICAgICAoKENMVVRDZmctPlNpemUgPDwgRE1BMkRfQkdQRkNDUl9DU19Qb3MpIHwgKENMVVRDZmctPkNMVVRDb2xvck1vZGUgPDwgRE1BMkRfQkdQRkNDUl9DQ01fUG9zKSkpOworCisgICAgLyogRW5hYmxlIHRoZSBDTFVUIFRyYW5zZmVyIENvbXBsZXRlLCB0cmFuc2ZlciBFcnJvciwgY29uZmlndXJhdGlvbiBFcnJvciBhbmQgQ0xVVCBBY2Nlc3MgRXJyb3IgaW50ZXJydXB0cyAqLworICAgIF9fSEFMX0RNQTJEX0VOQUJMRV9JVChoZG1hMmQsIERNQTJEX0lUX0NUQyB8IERNQTJEX0lUX1RFIHwgRE1BMkRfSVRfQ0UgfCBETUEyRF9JVF9DQUUpOworCisgICAgLyogRW5hYmxlIHRoZSBDTFVUIGxvYWRpbmcgZm9yIHRoZSBiYWNrZ3JvdW5kICovCisgICAgU0VUX0JJVChoZG1hMmQtPkluc3RhbmNlLT5CR1BGQ0NSLCBETUEyRF9CR1BGQ0NSX1NUQVJUKTsKKyAgfQorICAvKiBDb25maWd1cmUgdGhlIENMVVQgb2YgdGhlIGZvcmVncm91bmQgRE1BMkQgbGF5ZXIgKi8KKyAgZWxzZQorICB7CisgICAgLyogV3JpdGUgZm9yZWdyb3VuZCBDTFVUIG1lbW9yeSBhZGRyZXNzICovCisgICAgV1JJVEVfUkVHKGhkbWEyZC0+SW5zdGFuY2UtPkZHQ01BUiwgKHVpbnQzMl90KUNMVVRDZmctPnBDTFVUKTsKKworICAgIC8qIFdyaXRlIGZvcmVncm91bmQgQ0xVVCBzaXplIGFuZCBDTFVUIGNvbG9yIG1vZGUgKi8KKyAgICBNT0RJRllfUkVHKGhkbWEyZC0+SW5zdGFuY2UtPkZHUEZDQ1IsIChETUEyRF9GR1BGQ0NSX0NTIHwgRE1BMkRfRkdQRkNDUl9DQ00pLAorICAgICAgICAgICAgICAgKChDTFVUQ2ZnLT5TaXplIDw8IERNQTJEX0ZHUEZDQ1JfQ1NfUG9zKSB8IChDTFVUQ2ZnLT5DTFVUQ29sb3JNb2RlIDw8IERNQTJEX0ZHUEZDQ1JfQ0NNX1BvcykpKTsKKworICAgIC8qIEVuYWJsZSB0aGUgQ0xVVCBUcmFuc2ZlciBDb21wbGV0ZSwgdHJhbnNmZXIgRXJyb3IsIGNvbmZpZ3VyYXRpb24gRXJyb3IgYW5kIENMVVQgQWNjZXNzIEVycm9yIGludGVycnVwdHMgKi8KKyAgICBfX0hBTF9ETUEyRF9FTkFCTEVfSVQoaGRtYTJkLCBETUEyRF9JVF9DVEMgfCBETUEyRF9JVF9URSB8IERNQTJEX0lUX0NFIHwgRE1BMkRfSVRfQ0FFKTsKKworICAgIC8qIEVuYWJsZSB0aGUgQ0xVVCBsb2FkaW5nIGZvciB0aGUgZm9yZWdyb3VuZCAqLworICAgIFNFVF9CSVQoaGRtYTJkLT5JbnN0YW5jZS0+RkdQRkNDUiwgRE1BMkRfRkdQRkNDUl9TVEFSVCk7CisgIH0KKworICByZXR1cm4gSEFMX09LOworfQorCisvKioKKyAgKiBAYnJpZWYgIFN0YXJ0IERNQTJEIENMVVQgTG9hZGluZy4KKyAgKiBAcGFyYW0gIGhkbWEyZCAgIFBvaW50ZXIgdG8gYSBETUEyRF9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCisgICogICAgICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBETUEyRC4KKyAgKiBAcGFyYW0gIENMVVRDZmcgIFBvaW50ZXIgdG8gYSBETUEyRF9DTFVUQ2ZnVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucworICAqICAgICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgY29sb3IgbG9vayB1cCB0YWJsZS4KKyAgKiBAcGFyYW0gIExheWVySWR4IERNQTJEIExheWVyIGluZGV4LgorICAqICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CisgICogICAgICAgICAgICAgICAgICAgRE1BMkRfQkFDS0dST1VORF9MQVlFUigwKSAvIERNQTJEX0ZPUkVHUk9VTkRfTEFZRVIoMSkKKyAgKiBAbm90ZSBBUEkgb2Jzb2xldGUgYW5kIG1haW50YWluZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBsZWdhY3kuIFVzZXIgaXMKKyAgKiAgICAgIGludml0ZWQgdG8gcmVzb3J0IHRvIEhBTF9ETUEyRF9DTFVUU3RhcnRMb2FkKCkgaW5zdGVhZCB0byBiZW5lZml0IGZyb20KKyAgKiAgICAgIGNvZGUgY29tcGFjdG5lc3MsIGNvZGUgc2l6ZSBhbmQgaW1wcm92ZWQgaGVhcCB1c2FnZS4KKyAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKKyAgKi8KK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9ETUEyRF9DTFVUTG9hZChETUEyRF9IYW5kbGVUeXBlRGVmICpoZG1hMmQsIERNQTJEX0NMVVRDZmdUeXBlRGVmIENMVVRDZmcsIHVpbnQzMl90IExheWVySWR4KQoreworICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLworICBhc3NlcnRfcGFyYW0oSVNfRE1BMkRfTEFZRVIoTGF5ZXJJZHgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX0RNQTJEX0NMVVRfQ00oQ0xVVENmZy5DTFVUQ29sb3JNb2RlKSk7CisgIGFzc2VydF9wYXJhbShJU19ETUEyRF9DTFVUX1NJWkUoQ0xVVENmZy5TaXplKSk7CisKKyAgLyogUHJvY2VzcyBsb2NrZWQgKi8KKyAgX19IQUxfTE9DSyhoZG1hMmQpOworCisgIC8qIENoYW5nZSBETUEyRCBwZXJpcGhlcmFsIHN0YXRlICovCisgIGhkbWEyZC0+U3RhdGUgPSBIQUxfRE1BMkRfU1RBVEVfQlVTWTsKKworICAvKiBDb25maWd1cmUgdGhlIENMVVQgb2YgdGhlIGJhY2tncm91bmQgRE1BMkQgbGF5ZXIgKi8KKyAgaWYgKExheWVySWR4ID09IERNQTJEX0JBQ0tHUk9VTkRfTEFZRVIpCisgIHsKKyAgICAvKiBXcml0ZSBiYWNrZ3JvdW5kIENMVVQgbWVtb3J5IGFkZHJlc3MgKi8KKyAgICBXUklURV9SRUcoaGRtYTJkLT5JbnN0YW5jZS0+QkdDTUFSLCAodWludDMyX3QpQ0xVVENmZy5wQ0xVVCk7CisKKyAgICAvKiBXcml0ZSBiYWNrZ3JvdW5kIENMVVQgc2l6ZSBhbmQgQ0xVVCBjb2xvciBtb2RlICovCisgICAgTU9ESUZZX1JFRyhoZG1hMmQtPkluc3RhbmNlLT5CR1BGQ0NSLCAoRE1BMkRfQkdQRkNDUl9DUyB8IERNQTJEX0JHUEZDQ1JfQ0NNKSwKKyAgICAgICAgICAgICAgICgoQ0xVVENmZy5TaXplIDw8IERNQTJEX0JHUEZDQ1JfQ1NfUG9zKSB8IChDTFVUQ2ZnLkNMVVRDb2xvck1vZGUgPDwgRE1BMkRfQkdQRkNDUl9DQ01fUG9zKSkpOworCisgICAgLyogRW5hYmxlIHRoZSBDTFVUIGxvYWRpbmcgZm9yIHRoZSBiYWNrZ3JvdW5kICovCisgICAgU0VUX0JJVChoZG1hMmQtPkluc3RhbmNlLT5CR1BGQ0NSLCBETUEyRF9CR1BGQ0NSX1NUQVJUKTsKKyAgfQorICAvKiBDb25maWd1cmUgdGhlIENMVVQgb2YgdGhlIGZvcmVncm91bmQgRE1BMkQgbGF5ZXIgKi8KKyAgZWxzZQorICB7CisgICAgLyogV3JpdGUgZm9yZWdyb3VuZCBDTFVUIG1lbW9yeSBhZGRyZXNzICovCisgICAgV1JJVEVfUkVHKGhkbWEyZC0+SW5zdGFuY2UtPkZHQ01BUiwgKHVpbnQzMl90KUNMVVRDZmcucENMVVQpOworCisgICAgLyogV3JpdGUgZm9yZWdyb3VuZCBDTFVUIHNpemUgYW5kIENMVVQgY29sb3IgbW9kZSAqLworICAgIE1PRElGWV9SRUcoaGRtYTJkLT5JbnN0YW5jZS0+RkdQRkNDUiwgKERNQTJEX0ZHUEZDQ1JfQ1MgfCBETUEyRF9GR1BGQ0NSX0NDTSksCisgICAgICAgICAgICAgICAoKENMVVRDZmcuU2l6ZSA8PCBETUEyRF9GR1BGQ0NSX0NTX1BvcykgfCAoQ0xVVENmZy5DTFVUQ29sb3JNb2RlIDw8IERNQTJEX0ZHUEZDQ1JfQ0NNX1BvcykpKTsKKworICAgIC8qIEVuYWJsZSB0aGUgQ0xVVCBsb2FkaW5nIGZvciB0aGUgZm9yZWdyb3VuZCAqLworICAgIFNFVF9CSVQoaGRtYTJkLT5JbnN0YW5jZS0+RkdQRkNDUiwgRE1BMkRfRkdQRkNDUl9TVEFSVCk7CisgIH0KKworICByZXR1cm4gSEFMX09LOworfQorCisvKioKKyAgKiBAYnJpZWYgIFN0YXJ0IERNQTJEIENMVVQgTG9hZGluZyB3aXRoIGludGVycnVwdCBlbmFibGVkLgorICAqIEBwYXJhbSAgaGRtYTJkICAgUG9pbnRlciB0byBhIERNQTJEX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKKyAgKiAgICAgICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIERNQTJELgorICAqIEBwYXJhbSAgQ0xVVENmZyAgUG9pbnRlciB0byBhIERNQTJEX0NMVVRDZmdUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCisgICogICAgICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBjb2xvciBsb29rIHVwIHRhYmxlLgorICAqIEBwYXJhbSAgTGF5ZXJJZHggRE1BMkQgTGF5ZXIgaW5kZXguCisgICogICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgICAgICAgICAgICAgICBETUEyRF9CQUNLR1JPVU5EX0xBWUVSKDApIC8gRE1BMkRfRk9SRUdST1VORF9MQVlFUigxKQorICAqIEBub3RlIEFQSSBvYnNvbGV0ZSBhbmQgbWFpbnRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGxlZ2FjeS4gVXNlciBpcworICAqICAgICAgaW52aXRlZCB0byByZXNvcnQgdG8gSEFMX0RNQTJEX0NMVVRTdGFydExvYWRfSVQoKSBpbnN0ZWFkIHRvIGJlbmVmaXQKKyAgKiAgICAgIGZyb20gY29kZSBjb21wYWN0bmVzcywgY29kZSBzaXplIGFuZCBpbXByb3ZlZCBoZWFwIHVzYWdlLgorICAqIEByZXR2YWwgSEFMIHN0YXR1cworICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RNQTJEX0NMVVRMb2FkX0lUKERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCwgRE1BMkRfQ0xVVENmZ1R5cGVEZWYgQ0xVVENmZywgdWludDMyX3QgTGF5ZXJJZHgpCiB7CiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCkBAIC0xMDM5LDE3ICsxMTcwLDE3IEBACiAgIGhkbWEyZC0+U3RhdGUgPSBIQUxfRE1BMkRfU1RBVEVfQlVTWTsKIAogICAvKiBDb25maWd1cmUgdGhlIENMVVQgb2YgdGhlIGJhY2tncm91bmQgRE1BMkQgbGF5ZXIgKi8KLSAgaWYoTGF5ZXJJZHggPT0gRE1BMkRfQkFDS0dST1VORF9MQVlFUikKKyAgaWYgKExheWVySWR4ID09IERNQTJEX0JBQ0tHUk9VTkRfTEFZRVIpCiAgIHsKICAgICAvKiBXcml0ZSBiYWNrZ3JvdW5kIENMVVQgbWVtb3J5IGFkZHJlc3MgKi8KICAgICBXUklURV9SRUcoaGRtYTJkLT5JbnN0YW5jZS0+QkdDTUFSLCAodWludDMyX3QpQ0xVVENmZy5wQ0xVVCk7CiAKICAgICAvKiBXcml0ZSBiYWNrZ3JvdW5kIENMVVQgc2l6ZSBhbmQgQ0xVVCBjb2xvciBtb2RlICovCiAgICAgTU9ESUZZX1JFRyhoZG1hMmQtPkluc3RhbmNlLT5CR1BGQ0NSLCAoRE1BMkRfQkdQRkNDUl9DUyB8IERNQTJEX0JHUEZDQ1JfQ0NNKSwKLSAgICAgICAgICAgICgoQ0xVVENmZy5TaXplIDw8IERNQTJEX0JHUEZDQ1JfQ1NfUG9zKSB8IChDTFVUQ2ZnLkNMVVRDb2xvck1vZGUgPDwgRE1BMkRfQkdQRkNDUl9DQ01fUG9zKSkpOworICAgICAgICAgICAgICAgKChDTFVUQ2ZnLlNpemUgPDwgRE1BMkRfQkdQRkNDUl9DU19Qb3MpIHwgKENMVVRDZmcuQ0xVVENvbG9yTW9kZSA8PCBETUEyRF9CR1BGQ0NSX0NDTV9Qb3MpKSk7CiAKICAgICAvKiBFbmFibGUgdGhlIENMVVQgVHJhbnNmZXIgQ29tcGxldGUsIHRyYW5zZmVyIEVycm9yLCBjb25maWd1cmF0aW9uIEVycm9yIGFuZCBDTFVUIEFjY2VzcyBFcnJvciBpbnRlcnJ1cHRzICovCi0gICAgX19IQUxfRE1BMkRfRU5BQkxFX0lUKGhkbWEyZCwgRE1BMkRfSVRfQ1RDIHwgRE1BMkRfSVRfVEUgfCBETUEyRF9JVF9DRSB8RE1BMkRfSVRfQ0FFKTsKKyAgICBfX0hBTF9ETUEyRF9FTkFCTEVfSVQoaGRtYTJkLCBETUEyRF9JVF9DVEMgfCBETUEyRF9JVF9URSB8IERNQTJEX0lUX0NFIHwgRE1BMkRfSVRfQ0FFKTsKIAogICAgIC8qIEVuYWJsZSB0aGUgQ0xVVCBsb2FkaW5nIGZvciB0aGUgYmFja2dyb3VuZCAqLwogICAgIFNFVF9CSVQoaGRtYTJkLT5JbnN0YW5jZS0+QkdQRkNDUiwgRE1BMkRfQkdQRkNDUl9TVEFSVCk7CkBAIC0xMDYyLDEwICsxMTkzLDEwIEBACiAKICAgICAvKiBXcml0ZSBmb3JlZ3JvdW5kIENMVVQgc2l6ZSBhbmQgQ0xVVCBjb2xvciBtb2RlICovCiAgICAgTU9ESUZZX1JFRyhoZG1hMmQtPkluc3RhbmNlLT5GR1BGQ0NSLCAoRE1BMkRfRkdQRkNDUl9DUyB8IERNQTJEX0ZHUEZDQ1JfQ0NNKSwKLSAgICAgICAgICAgICgoQ0xVVENmZy5TaXplIDw8IERNQTJEX0ZHUEZDQ1JfQ1NfUG9zKSB8IChDTFVUQ2ZnLkNMVVRDb2xvck1vZGUgPDwgRE1BMkRfRkdQRkNDUl9DQ01fUG9zKSkpOworICAgICAgICAgICAgICAgKChDTFVUQ2ZnLlNpemUgPDwgRE1BMkRfRkdQRkNDUl9DU19Qb3MpIHwgKENMVVRDZmcuQ0xVVENvbG9yTW9kZSA8PCBETUEyRF9GR1BGQ0NSX0NDTV9Qb3MpKSk7CiAKICAgICAvKiBFbmFibGUgdGhlIENMVVQgVHJhbnNmZXIgQ29tcGxldGUsIHRyYW5zZmVyIEVycm9yLCBjb25maWd1cmF0aW9uIEVycm9yIGFuZCBDTFVUIEFjY2VzcyBFcnJvciBpbnRlcnJ1cHRzICovCi0gICAgX19IQUxfRE1BMkRfRU5BQkxFX0lUKGhkbWEyZCwgRE1BMkRfSVRfQ1RDIHwgRE1BMkRfSVRfVEUgfCBETUEyRF9JVF9DRSB8RE1BMkRfSVRfQ0FFKTsKKyAgICBfX0hBTF9ETUEyRF9FTkFCTEVfSVQoaGRtYTJkLCBETUEyRF9JVF9DVEMgfCBETUEyRF9JVF9URSB8IERNQTJEX0lUX0NFIHwgRE1BMkRfSVRfQ0FFKTsKIAogICAgIC8qIEVuYWJsZSB0aGUgQ0xVVCBsb2FkaW5nIGZvciB0aGUgZm9yZWdyb3VuZCAqLwogICAgIFNFVF9CSVQoaGRtYTJkLT5JbnN0YW5jZS0+RkdQRkNDUiwgRE1BMkRfRkdQRkNDUl9TVEFSVCk7CkBAIC0xMDg2LDEzICsxMjE3LDEzIEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfRE1BMkRfQ0xVVExvYWRpbmdfQWJvcnQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkLCB1aW50MzJfdCBMYXllcklkeCkKIHsKICAgdWludDMyX3QgdGlja3N0YXJ0OwotICBjb25zdCBfX0lPIHVpbnQzMl90ICogcmVnID0gICYoaGRtYTJkLT5JbnN0YW5jZS0+QkdQRkNDUik7IC8qIGJ5IGRlZmF1bHQsIHBvaW50IGF0IGJhY2tncm91bmQgcmVnaXN0ZXIgKi8KKyAgY29uc3QgX19JTyB1aW50MzJfdCAqcmVnID0gICYoaGRtYTJkLT5JbnN0YW5jZS0+QkdQRkNDUik7ICAvKiBieSBkZWZhdWx0LCBwb2ludCBhdCBiYWNrZ3JvdW5kIHJlZ2lzdGVyICovCiAKICAgLyogQWJvcnQgdGhlIENMVVQgbG9hZGluZyAqLwogICBTRVRfQklUKGhkbWEyZC0+SW5zdGFuY2UtPkNSLCBETUEyRF9DUl9BQk9SVCk7CiAKICAgLyogSWYgZm9yZWdyb3VuZCBDTFVUIGxvYWRpbmcgaXMgY29uc2lkZXJlZCwgdXBkYXRlIGxvY2FsIHZhcmlhYmxlcyAqLwotICBpZihMYXllcklkeCA9PSBETUEyRF9GT1JFR1JPVU5EX0xBWUVSKQorICBpZiAoTGF5ZXJJZHggPT0gRE1BMkRfRk9SRUdST1VORF9MQVlFUikKICAgewogICAgIHJlZyAgPSAmKGhkbWEyZC0+SW5zdGFuY2UtPkZHUEZDQ1IpOwogICB9CkBAIC0xMTAyLDkgKzEyMzMsOSBAQAogICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOwogCiAgIC8qIENoZWNrIGlmIHRoZSBDTFVUIGxvYWRpbmcgaXMgYWJvcnRlZCAqLwotICB3aGlsZSgoKnJlZyAmIERNQTJEX0JHUEZDQ1JfU1RBUlQpICE9IDBVKQorICB3aGlsZSAoKCpyZWcgJiBETUEyRF9CR1BGQ0NSX1NUQVJUKSAhPSAwVSkKICAgewotICAgIGlmKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0ICkgPiBETUEyRF9USU1FT1VUX0FCT1JUKQorICAgIGlmICgoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCkgPiBETUEyRF9USU1FT1VUX0FCT1JUKQogICAgIHsKICAgICAgIC8qIFVwZGF0ZSBlcnJvciBjb2RlICovCiAgICAgICBoZG1hMmQtPkVycm9yQ29kZSB8PSBIQUxfRE1BMkRfRVJST1JfVElNRU9VVDsKQEAgLTExMjAsNyArMTI1MSw3IEBACiAgIH0KIAogICAvKiBEaXNhYmxlIHRoZSBDTFVUIFRyYW5zZmVyIENvbXBsZXRlLCBUcmFuc2ZlciBFcnJvciwgQ29uZmlndXJhdGlvbiBFcnJvciBhbmQgQ0xVVCBBY2Nlc3MgRXJyb3IgaW50ZXJydXB0cyAqLwotICBfX0hBTF9ETUEyRF9ESVNBQkxFX0lUKGhkbWEyZCwgRE1BMkRfSVRfQ1RDIHwgRE1BMkRfSVRfVEUgfCBETUEyRF9JVF9DRSB8RE1BMkRfSVRfQ0FFKTsKKyAgX19IQUxfRE1BMkRfRElTQUJMRV9JVChoZG1hMmQsIERNQTJEX0lUX0NUQyB8IERNQTJEX0lUX1RFIHwgRE1BMkRfSVRfQ0UgfCBETUEyRF9JVF9DQUUpOwogCiAgIC8qIENoYW5nZSB0aGUgRE1BMkQgc3RhdGUqLwogICBoZG1hMmQtPlN0YXRlID0gSEFMX0RNQTJEX1NUQVRFX1JFQURZOwpAQCAtMTE0NCwxMyArMTI3NSwxMyBAQAogewogICB1aW50MzJfdCB0aWNrc3RhcnQ7CiAgIHVpbnQzMl90IGxvYWRzdXNwZW5kZWQ7Ci0gIGNvbnN0IF9fSU8gdWludDMyX3QgKiByZWcgPSAgJihoZG1hMmQtPkluc3RhbmNlLT5CR1BGQ0NSKTsgLyogYnkgZGVmYXVsdCwgcG9pbnQgYXQgYmFja2dyb3VuZCByZWdpc3RlciAqLworICBjb25zdCBfX0lPIHVpbnQzMl90ICpyZWcgPSAgJihoZG1hMmQtPkluc3RhbmNlLT5CR1BGQ0NSKTsgIC8qIGJ5IGRlZmF1bHQsIHBvaW50IGF0IGJhY2tncm91bmQgcmVnaXN0ZXIgKi8KIAogICAvKiBTdXNwZW5kIHRoZSBDTFVUIGxvYWRpbmcgKi8KICAgU0VUX0JJVChoZG1hMmQtPkluc3RhbmNlLT5DUiwgRE1BMkRfQ1JfU1VTUCk7CiAKICAgLyogSWYgZm9yZWdyb3VuZCBDTFVUIGxvYWRpbmcgaXMgY29uc2lkZXJlZCwgdXBkYXRlIGxvY2FsIHZhcmlhYmxlcyAqLwotICBpZihMYXllcklkeCA9PSBETUEyRF9GT1JFR1JPVU5EX0xBWUVSKQorICBpZiAoTGF5ZXJJZHggPT0gRE1BMkRfRk9SRUdST1VORF9MQVlFUikKICAgewogICAgIHJlZyAgPSAmKGhkbWEyZC0+SW5zdGFuY2UtPkZHUEZDQ1IpOwogICB9CkBAIC0xMTU5LDExICsxMjkwLDEzIEBACiAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CiAKICAgLyogQ2hlY2sgaWYgdGhlIENMVVQgbG9hZGluZyBpcyBzdXNwZW5kZWQgKi8KLSAgbG9hZHN1c3BlbmRlZCA9ICgoaGRtYTJkLT5JbnN0YW5jZS0+Q1IgJiBETUEyRF9DUl9TVVNQKSA9PSBETUEyRF9DUl9TVVNQKT8gMVVMOiAwVUw7IC8qMXN0IGNvbmRpdGlvbjogU3VzcGVuZCBDaGVjayovCi0gIGxvYWRzdXNwZW5kZWQgfD0gKCgqcmVnICYgRE1BMkRfQkdQRkNDUl9TVEFSVCkgIT0gRE1BMkRfQkdQRkNDUl9TVEFSVCk/IDFVTDogMFVMOyAvKjJuZCBjb25kaXRpb246IE5vdCBTdGFydCBDaGVjayAqLworICAvKiAxc3QgY29uZGl0aW9uOiBTdXNwZW5kIENoZWNrICovCisgIGxvYWRzdXNwZW5kZWQgPSAoKGhkbWEyZC0+SW5zdGFuY2UtPkNSICYgRE1BMkRfQ1JfU1VTUCkgPT0gRE1BMkRfQ1JfU1VTUCkgPyAxVUwgOiAwVUw7CisgIC8qIDJuZCBjb25kaXRpb246IE5vdCBTdGFydCBDaGVjayAqLworICBsb2Fkc3VzcGVuZGVkIHw9ICgoKnJlZyAmIERNQTJEX0JHUEZDQ1JfU1RBUlQpICE9IERNQTJEX0JHUEZDQ1JfU1RBUlQpID8gMVVMIDogMFVMOwogICB3aGlsZSAobG9hZHN1c3BlbmRlZCA9PSAwVUwpCiAgIHsKLSAgICBpZigoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCApID4gRE1BMkRfVElNRU9VVF9TVVNQRU5EKQorICAgIGlmICgoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCkgPiBETUEyRF9USU1FT1VUX1NVU1BFTkQpCiAgICAgewogICAgICAgLyogVXBkYXRlIGVycm9yIGNvZGUgKi8KICAgICAgIGhkbWEyZC0+RXJyb3JDb2RlIHw9IEhBTF9ETUEyRF9FUlJPUl9USU1FT1VUOwpAQCAtMTE3MywxMSArMTMwNiwxMyBAQAogCiAgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CiAgICAgfQotICAgIGxvYWRzdXNwZW5kZWQgPSAoKGhkbWEyZC0+SW5zdGFuY2UtPkNSICYgRE1BMkRfQ1JfU1VTUCkgPT0gRE1BMkRfQ1JfU1VTUCk/IDFVTDogMFVMOyAvKjFzdCBjb25kaXRpb246IFN1c3BlbmQgQ2hlY2sqLwotICAgIGxvYWRzdXNwZW5kZWQgfD0gKCgqcmVnICYgRE1BMkRfQkdQRkNDUl9TVEFSVCkgIT0gRE1BMkRfQkdQRkNDUl9TVEFSVCk/IDFVTDogMFVMOyAvKjJuZCBjb25kaXRpb246IE5vdCBTdGFydCBDaGVjayAqLworICAgIC8qIDFzdCBjb25kaXRpb246IFN1c3BlbmQgQ2hlY2sgKi8KKyAgICBsb2Fkc3VzcGVuZGVkID0gKChoZG1hMmQtPkluc3RhbmNlLT5DUiAmIERNQTJEX0NSX1NVU1ApID09IERNQTJEX0NSX1NVU1ApID8gMVVMIDogMFVMOworICAgIC8qIDJuZCBjb25kaXRpb246IE5vdCBTdGFydCBDaGVjayAqLworICAgIGxvYWRzdXNwZW5kZWQgfD0gKCgqcmVnICYgRE1BMkRfQkdQRkNDUl9TVEFSVCkgIT0gRE1BMkRfQkdQRkNDUl9TVEFSVCkgPyAxVUwgOiAwVUw7CiAgIH0KIAotICAgLyogQ2hlY2sgd2hldGhlciBvciBub3QgYSB0cmFuc2ZlciBpcyBhY3R1YWxseSBzdXNwZW5kZWQgYW5kIGNoYW5nZSB0aGUgRE1BMkQgc3RhdGUgYWNjb3JkaW5nbHkgKi8KKyAgLyogQ2hlY2sgd2hldGhlciBvciBub3QgYSB0cmFuc2ZlciBpcyBhY3R1YWxseSBzdXNwZW5kZWQgYW5kIGNoYW5nZSB0aGUgRE1BMkQgc3RhdGUgYWNjb3JkaW5nbHkgKi8KICAgaWYgKCgqcmVnICYgRE1BMkRfQkdQRkNDUl9TVEFSVCkgIT0gMFUpCiAgIHsKICAgICBoZG1hMmQtPlN0YXRlID0gSEFMX0RNQTJEX1NUQVRFX1NVU1BFTkQ7CkBAIC0xMTg1LDcgKzEzMjAsNyBAQAogICBlbHNlCiAgIHsKICAgICAvKiBNYWtlIHN1cmUgU1VTUCBiaXQgaXMgY2xlYXJlZCBzaW5jZSBpdCBpcyBtZWFuaW5nbGVzcwotICAgICAgIHdoZW4gbm8gdHJhbmZlciBpcyBvbi1nb2luZyAqLworICAgICAgIHdoZW4gbm8gdHJhbnNmZXIgaXMgb24tZ29pbmcgKi8KICAgICBDTEVBUl9CSVQoaGRtYTJkLT5JbnN0YW5jZS0+Q1IsIERNQTJEX0NSX1NVU1ApOwogICB9CiAKQEAgLTEyMDQsMTggKzEzMzksMTggQEAKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9ETUEyRF9DTFVUTG9hZGluZ19SZXN1bWUoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkLCB1aW50MzJfdCBMYXllcklkeCkKIHsKICAgLyogQ2hlY2sgdGhlIFNVU1AgYW5kIFNUQVJUIGJpdHMgZm9yIGJhY2tncm91bmQgb3IgZm9yZWdyb3VuZCBDTFVUIGxvYWRpbmcgKi8KLSAgaWYoTGF5ZXJJZHggPT0gRE1BMkRfQkFDS0dST1VORF9MQVlFUikKKyAgaWYgKExheWVySWR4ID09IERNQTJEX0JBQ0tHUk9VTkRfTEFZRVIpCiAgIHsKICAgICAvKiBCYWNrZ3JvdW5kIENMVVQgbG9hZGluZyBzdXNwZW5zaW9uIGNoZWNrICovCiAgICAgaWYgKChoZG1hMmQtPkluc3RhbmNlLT5DUiAmIERNQTJEX0NSX1NVU1ApID09IERNQTJEX0NSX1NVU1ApCiAgICAgewotICAgICAgaWYoKGhkbWEyZC0+SW5zdGFuY2UtPkJHUEZDQ1IgJiBETUEyRF9CR1BGQ0NSX1NUQVJUKSA9PSBETUEyRF9CR1BGQ0NSX1NUQVJUKQorICAgICAgaWYgKChoZG1hMmQtPkluc3RhbmNlLT5CR1BGQ0NSICYgRE1BMkRfQkdQRkNDUl9TVEFSVCkgPT0gRE1BMkRfQkdQRkNDUl9TVEFSVCkKICAgICAgIHsKLSAgICAgIC8qIE9uZ29pbmcgQ0xVVCBsb2FkaW5nIGlzIHN1c3BlbmRlZDogY2hhbmdlIHRoZSBETUEyRCBzdGF0ZSBiZWZvcmUgcmVzdW1pbmcgKi8KLSAgICAgIGhkbWEyZC0+U3RhdGUgPSBIQUxfRE1BMkRfU1RBVEVfQlVTWTsKKyAgICAgICAgLyogT25nb2luZyBDTFVUIGxvYWRpbmcgaXMgc3VzcGVuZGVkOiBjaGFuZ2UgdGhlIERNQTJEIHN0YXRlIGJlZm9yZSByZXN1bWluZyAqLworICAgICAgICBoZG1hMmQtPlN0YXRlID0gSEFMX0RNQTJEX1NUQVRFX0JVU1k7CisgICAgICB9CiAgICAgfQogICB9Ci0gIH0KICAgZWxzZQogICB7CiAgICAgLyogRm9yZWdyb3VuZCBDTFVUIGxvYWRpbmcgc3VzcGVuc2lvbiBjaGVjayAqLwpAQCAtMTIyMywxMSArMTM1OCwxMSBAQAogICAgIHsKICAgICAgIGlmICgoaGRtYTJkLT5JbnN0YW5jZS0+RkdQRkNDUiAmIERNQTJEX0ZHUEZDQ1JfU1RBUlQpID09IERNQTJEX0ZHUEZDQ1JfU1RBUlQpCiAgICAgICB7Ci0gICAgICAvKiBPbmdvaW5nIENMVVQgbG9hZGluZyBpcyBzdXNwZW5kZWQ6IGNoYW5nZSB0aGUgRE1BMkQgc3RhdGUgYmVmb3JlIHJlc3VtaW5nICovCi0gICAgICBoZG1hMmQtPlN0YXRlID0gSEFMX0RNQTJEX1NUQVRFX0JVU1k7CisgICAgICAgIC8qIE9uZ29pbmcgQ0xVVCBsb2FkaW5nIGlzIHN1c3BlbmRlZDogY2hhbmdlIHRoZSBETUEyRCBzdGF0ZSBiZWZvcmUgcmVzdW1pbmcgKi8KKyAgICAgICAgaGRtYTJkLT5TdGF0ZSA9IEhBTF9ETUEyRF9TVEFURV9CVVNZOworICAgICAgfQogICAgIH0KICAgfQotICB9CiAKICAgLyogUmVzdW1lIHRoZSBDTFVUIGxvYWRpbmcgKi8KICAgQ0xFQVJfQklUKGhkbWEyZC0+SW5zdGFuY2UtPkNSLCBETUEyRF9DUl9TVVNQKTsKQEAgLTEyNTEsMTUgKzEzODYsMTUgQEAKICAgX19JTyB1aW50MzJfdCBpc3JmbGFncyA9IDB4MFU7CiAKICAgLyogUG9sbGluZyBmb3IgRE1BMkQgdHJhbnNmZXIgKi8KLSAgaWYoKGhkbWEyZC0+SW5zdGFuY2UtPkNSICYgRE1BMkRfQ1JfU1RBUlQpICE9IDBVKQorICBpZiAoKGhkbWEyZC0+SW5zdGFuY2UtPkNSICYgRE1BMkRfQ1JfU1RBUlQpICE9IDBVKQogICB7Ci0gICAvKiBHZXQgdGljayAqLwotICAgdGlja3N0YXJ0ID0gSEFMX0dldFRpY2soKTsKKyAgICAvKiBHZXQgdGljayAqLworICAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CiAKLSAgICB3aGlsZShfX0hBTF9ETUEyRF9HRVRfRkxBRyhoZG1hMmQsIERNQTJEX0ZMQUdfVEMpID09IDBVKQorICAgIHdoaWxlIChfX0hBTF9ETUEyRF9HRVRfRkxBRyhoZG1hMmQsIERNQTJEX0ZMQUdfVEMpID09IDBVKQogICAgIHsKICAgICAgIGlzcmZsYWdzID0gUkVBRF9SRUcoaGRtYTJkLT5JbnN0YW5jZS0+SVNSKTsKLSAgICAgIGlmICgoaXNyZmxhZ3MgJiAoRE1BMkRfRkxBR19DRXxETUEyRF9GTEFHX1RFKSkgIT0gMFUpCisgICAgICBpZiAoKGlzcmZsYWdzICYgKERNQTJEX0ZMQUdfQ0UgfCBETUEyRF9GTEFHX1RFKSkgIT0gMFUpCiAgICAgICB7CiAgICAgICAgIGlmICgoaXNyZmxhZ3MgJiBETUEyRF9GTEFHX0NFKSAhPSAwVSkKICAgICAgICAgewpAQCAtMTI4MSw5ICsxNDE2LDkgQEAKICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICAgIH0KICAgICAgIC8qIENoZWNrIGZvciB0aGUgVGltZW91dCAqLwotICAgICAgaWYoVGltZW91dCAhPSBIQUxfTUFYX0RFTEFZKQorICAgICAgaWYgKFRpbWVvdXQgIT0gSEFMX01BWF9ERUxBWSkKICAgICAgIHsKLSAgICAgICAgaWYoKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0ICkgPiBUaW1lb3V0KXx8KFRpbWVvdXQgPT0gMFUpKQorICAgICAgICBpZiAoKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0KSA+IFRpbWVvdXQpIHx8IChUaW1lb3V0ID09IDBVKSkKICAgICAgICAgewogICAgICAgICAgIC8qIFVwZGF0ZSBlcnJvciBjb2RlICovCiAgICAgICAgICAgaGRtYTJkLT5FcnJvckNvZGUgfD0gSEFMX0RNQTJEX0VSUk9SX1RJTUVPVVQ7CkBAIC0xMzA3LDEwICsxNDQyLDEwIEBACiAgICAgLyogR2V0IHRpY2sgKi8KICAgICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOwogCi0gICAgd2hpbGUoX19IQUxfRE1BMkRfR0VUX0ZMQUcoaGRtYTJkLCBETUEyRF9GTEFHX0NUQykgPT0gMFUpCisgICAgd2hpbGUgKF9fSEFMX0RNQTJEX0dFVF9GTEFHKGhkbWEyZCwgRE1BMkRfRkxBR19DVEMpID09IDBVKQogICAgIHsKICAgICAgIGlzcmZsYWdzID0gUkVBRF9SRUcoaGRtYTJkLT5JbnN0YW5jZS0+SVNSKTsKLSAgICAgIGlmICgoaXNyZmxhZ3MgJiAoRE1BMkRfRkxBR19DQUV8RE1BMkRfRkxBR19DRXxETUEyRF9GTEFHX1RFKSkgIT0gMFUpCisgICAgICBpZiAoKGlzcmZsYWdzICYgKERNQTJEX0ZMQUdfQ0FFIHwgRE1BMkRfRkxBR19DRSB8IERNQTJEX0ZMQUdfVEUpKSAhPSAwVSkKICAgICAgIHsKICAgICAgICAgaWYgKChpc3JmbGFncyAmIERNQTJEX0ZMQUdfQ0FFKSAhPSAwVSkKICAgICAgICAgewpAQCAtMTMyOCw3ICsxNDYzLDcgQEAKICAgICAgICAgX19IQUxfRE1BMkRfQ0xFQVJfRkxBRyhoZG1hMmQsIERNQTJEX0ZMQUdfQ0FFIHwgRE1BMkRfRkxBR19DRSB8IERNQTJEX0ZMQUdfVEUpOwogCiAgICAgICAgIC8qIENoYW5nZSBETUEyRCBzdGF0ZSAqLwotICAgICAgICBoZG1hMmQtPlN0YXRlPSBIQUxfRE1BMkRfU1RBVEVfRVJST1I7CisgICAgICAgIGhkbWEyZC0+U3RhdGUgPSBIQUxfRE1BMkRfU1RBVEVfRVJST1I7CiAKICAgICAgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLwogICAgICAgICBfX0hBTF9VTkxPQ0soaGRtYTJkKTsKQEAgLTEzMzYsMTUgKzE0NzEsMTUgQEAKICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICAgIH0KICAgICAgIC8qIENoZWNrIGZvciB0aGUgVGltZW91dCAqLwotICAgICAgaWYoVGltZW91dCAhPSBIQUxfTUFYX0RFTEFZKQorICAgICAgaWYgKFRpbWVvdXQgIT0gSEFMX01BWF9ERUxBWSkKICAgICAgIHsKLSAgICAgICAgaWYoKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0ICkgPiBUaW1lb3V0KXx8KFRpbWVvdXQgPT0gMFUpKQorICAgICAgICBpZiAoKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0KSA+IFRpbWVvdXQpIHx8IChUaW1lb3V0ID09IDBVKSkKICAgICAgICAgewogICAgICAgICAgIC8qIFVwZGF0ZSBlcnJvciBjb2RlICovCiAgICAgICAgICAgaGRtYTJkLT5FcnJvckNvZGUgfD0gSEFMX0RNQTJEX0VSUk9SX1RJTUVPVVQ7CiAKICAgICAgICAgICAvKiBDaGFuZ2UgdGhlIERNQTJEIHN0YXRlICovCi0gICAgICAgICAgaGRtYTJkLT5TdGF0ZT0gSEFMX0RNQTJEX1NUQVRFX1RJTUVPVVQ7CisgICAgICAgICAgaGRtYTJkLT5TdGF0ZSA9IEhBTF9ETUEyRF9TVEFURV9USU1FT1VUOwogCiAgICAgICAgICAgLyogUHJvY2VzcyB1bmxvY2tlZCAqLwogICAgICAgICAgIF9fSEFMX1VOTE9DSyhoZG1hMmQpOwpAQCAtMTM1Niw3ICsxNDkxLDcgQEAKICAgfQogCiAgIC8qIENsZWFyIHRoZSB0cmFuc2ZlciBjb21wbGV0ZSBhbmQgQ0xVVCBsb2FkaW5nIGZsYWdzICovCi0gIF9fSEFMX0RNQTJEX0NMRUFSX0ZMQUcoaGRtYTJkLCBETUEyRF9GTEFHX1RDfERNQTJEX0ZMQUdfQ1RDKTsKKyAgX19IQUxfRE1BMkRfQ0xFQVJfRkxBRyhoZG1hMmQsIERNQTJEX0ZMQUdfVEMgfCBETUEyRF9GTEFHX0NUQyk7CiAKICAgLyogQ2hhbmdlIERNQTJEIHN0YXRlICovCiAgIGhkbWEyZC0+U3RhdGUgPSBIQUxfRE1BMkRfU1RBVEVfUkVBRFk7CkBAIC0xMzk3LDcgKzE1MzIsNyBAQAogICAgICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwogICAgICAgX19IQUxfVU5MT0NLKGhkbWEyZCk7CiAKLSAgICAgIGlmKGhkbWEyZC0+WGZlckVycm9yQ2FsbGJhY2sgIT0gTlVMTCkKKyAgICAgIGlmIChoZG1hMmQtPlhmZXJFcnJvckNhbGxiYWNrICE9IE5VTEwpCiAgICAgICB7CiAgICAgICAgIC8qIFRyYW5zZmVyIGVycm9yIENhbGxiYWNrICovCiAgICAgICAgIGhkbWEyZC0+WGZlckVycm9yQ2FsbGJhY2soaGRtYTJkKTsKQEAgLTE0MjQsNyArMTU1OSw3IEBACiAgICAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCiAgICAgICBfX0hBTF9VTkxPQ0soaGRtYTJkKTsKIAotICAgICAgaWYoaGRtYTJkLT5YZmVyRXJyb3JDYWxsYmFjayAhPSBOVUxMKQorICAgICAgaWYgKGhkbWEyZC0+WGZlckVycm9yQ2FsbGJhY2sgIT0gTlVMTCkKICAgICAgIHsKICAgICAgICAgLyogVHJhbnNmZXIgZXJyb3IgQ2FsbGJhY2sgKi8KICAgICAgICAgaGRtYTJkLT5YZmVyRXJyb3JDYWxsYmFjayhoZG1hMmQpOwpAQCAtMTQ1MSw3ICsxNTg2LDcgQEAKICAgICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KICAgICAgIF9fSEFMX1VOTE9DSyhoZG1hMmQpOwogCi0gICAgICBpZihoZG1hMmQtPlhmZXJFcnJvckNhbGxiYWNrICE9IE5VTEwpCisgICAgICBpZiAoaGRtYTJkLT5YZmVyRXJyb3JDYWxsYmFjayAhPSBOVUxMKQogICAgICAgewogICAgICAgICAvKiBUcmFuc2ZlciBlcnJvciBDYWxsYmFjayAqLwogICAgICAgICBoZG1hMmQtPlhmZXJFcnJvckNhbGxiYWNrKGhkbWEyZCk7CkBAIC0xNDk4LDcgKzE2MzMsNyBAQAogICAgICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwogICAgICAgX19IQUxfVU5MT0NLKGhkbWEyZCk7CiAKLSAgICAgIGlmKGhkbWEyZC0+WGZlckNwbHRDYWxsYmFjayAhPSBOVUxMKQorICAgICAgaWYgKGhkbWEyZC0+WGZlckNwbHRDYWxsYmFjayAhPSBOVUxMKQogICAgICAgewogICAgICAgICAvKiBUcmFuc2ZlciBjb21wbGV0ZSBDYWxsYmFjayAqLwogICAgICAgICBoZG1hMmQtPlhmZXJDcGx0Q2FsbGJhY2soaGRtYTJkKTsKQEAgLTE1NzMsOCArMTcwOCw4IEBACiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgRE1BMkRfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMyBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zCi0gKiAgQGJyaWVmICAgIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKLSAqCisgICogIEBicmllZiAgICBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgIyMjIyMgUGVyaXBoZXJhbCBDb250cm9sIGZ1bmN0aW9ucyAjIyMjIwpAQCAtMTYwNCwxNSArMTczOSwxNiBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RNQTJEX0NvbmZpZ0xheWVyKERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCwgdWludDMyX3QgTGF5ZXJJZHgpCiB7CiAgIERNQTJEX0xheWVyQ2ZnVHlwZURlZiAqcExheWVyQ2ZnOwotICB1aW50MzJfdCByZWdNYXNrLCByZWdWYWx1ZTsKKyAgdWludDMyX3QgcmVnTWFzazsKKyAgdWludDMyX3QgcmVnVmFsdWU7CiAKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX0RNQTJEX0xBWUVSKExheWVySWR4KSk7CiAgIGFzc2VydF9wYXJhbShJU19ETUEyRF9PRkZTRVQoaGRtYTJkLT5MYXllckNmZ1tMYXllcklkeF0uSW5wdXRPZmZzZXQpKTsKLSAgaWYoaGRtYTJkLT5Jbml0Lk1vZGUgIT0gRE1BMkRfUjJNKQorICBpZiAoaGRtYTJkLT5Jbml0Lk1vZGUgIT0gRE1BMkRfUjJNKQogICB7CiAgICAgYXNzZXJ0X3BhcmFtKElTX0RNQTJEX0lOUFVUX0NPTE9SX01PREUoaGRtYTJkLT5MYXllckNmZ1tMYXllcklkeF0uSW5wdXRDb2xvck1vZGUpKTsKLSAgICBpZihoZG1hMmQtPkluaXQuTW9kZSAhPSBETUEyRF9NMk0pCisgICAgaWYgKGhkbWEyZC0+SW5pdC5Nb2RlICE9IERNQTJEX00yTSkKICAgICB7CiAgICAgICBhc3NlcnRfcGFyYW0oSVNfRE1BMkRfQUxQSEFfTU9ERShoZG1hMmQtPkxheWVyQ2ZnW0xheWVySWR4XS5BbHBoYU1vZGUpKTsKICAgICB9CkBAIC0xNjMyLDcgKzE3NjgsNyBAQAogCiAgIC8qIFByZXBhcmUgdGhlIHZhbHVlIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIEJHUEZDQ1Igb3IgRkdQRkNDUiByZWdpc3RlciAqLwogI2lmIGRlZmluZWQgKERNQTJEX0FMUEhBX0lOVl9SQl9TV0FQX1NVUFBPUlQpCi0gIHJlZ1ZhbHVlID0gcExheWVyQ2ZnLT5JbnB1dENvbG9yTW9kZSB8IChwTGF5ZXJDZmctPkFscGhhTW9kZSA8PCBETUEyRF9CR1BGQ0NSX0FNX1BvcykgfFwKKyAgcmVnVmFsdWUgPSBwTGF5ZXJDZmctPklucHV0Q29sb3JNb2RlIHwgKHBMYXllckNmZy0+QWxwaGFNb2RlIDw8IERNQTJEX0JHUEZDQ1JfQU1fUG9zKSB8IFwKICAgICAgICAgICAgICAocExheWVyQ2ZnLT5BbHBoYUludmVydGVkIDw8IERNQTJEX0JHUEZDQ1JfQUlfUG9zKSB8IChwTGF5ZXJDZmctPlJlZEJsdWVTd2FwIDw8IERNQTJEX0JHUEZDQ1JfUkJTX1Bvcyk7CiAgIHJlZ01hc2sgID0gKERNQTJEX0JHUEZDQ1JfQ00gfCBETUEyRF9CR1BGQ0NSX0FNIHwgRE1BMkRfQkdQRkNDUl9BTFBIQSB8IERNQTJEX0JHUEZDQ1JfQUkgfCBETUEyRF9CR1BGQ0NSX1JCUyk7CiAjZWxzZQpAQCAtMTY0NywxMSArMTc4MywxMSBAQAogICB9CiAgIGVsc2UKICAgewotICAgIHJlZ1ZhbHVlIHw9ICAocExheWVyQ2ZnLT5JbnB1dEFscGhhIDw8IERNQTJEX0JHUEZDQ1JfQUxQSEFfUG9zKTsKKyAgICByZWdWYWx1ZSB8PSAocExheWVyQ2ZnLT5JbnB1dEFscGhhIDw8IERNQTJEX0JHUEZDQ1JfQUxQSEFfUG9zKTsKICAgfQogCiAgIC8qIENvbmZpZ3VyZSB0aGUgYmFja2dyb3VuZCBETUEyRCBsYXllciAqLwotICBpZihMYXllcklkeCA9PSBETUEyRF9CQUNLR1JPVU5EX0xBWUVSKQorICBpZiAoTGF5ZXJJZHggPT0gRE1BMkRfQkFDS0dST1VORF9MQVlFUikKICAgewogICAgIC8qIFdyaXRlIERNQTJEIEJHUEZDQ1IgcmVnaXN0ZXIgKi8KICAgICBNT0RJRllfUkVHKGhkbWEyZC0+SW5zdGFuY2UtPkJHUEZDQ1IsIHJlZ01hc2ssIHJlZ1ZhbHVlKTsKQEAgLTE2NjIsNyArMTc5OCw4IEBACiAgICAgLyogRE1BMkQgQkdDT0xSIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgICAgaWYgKChwTGF5ZXJDZmctPklucHV0Q29sb3JNb2RlID09IERNQTJEX0lOUFVUX0E0KSB8fCAocExheWVyQ2ZnLT5JbnB1dENvbG9yTW9kZSA9PSBETUEyRF9JTlBVVF9BOCkpCiAgICAgewotICAgICAgV1JJVEVfUkVHKGhkbWEyZC0+SW5zdGFuY2UtPkJHQ09MUiwgcExheWVyQ2ZnLT5JbnB1dEFscGhhICYgKERNQTJEX0JHQ09MUl9CTFVFfERNQTJEX0JHQ09MUl9HUkVFTnxETUEyRF9CR0NPTFJfUkVEKSk7CisgICAgICBXUklURV9SRUcoaGRtYTJkLT5JbnN0YW5jZS0+QkdDT0xSLCBwTGF5ZXJDZmctPklucHV0QWxwaGEgJiAoRE1BMkRfQkdDT0xSX0JMVUUgfCBETUEyRF9CR0NPTFJfR1JFRU4gfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE1BMkRfQkdDT0xSX1JFRCkpOwogICAgIH0KICAgfQogICAvKiBDb25maWd1cmUgdGhlIGZvcmVncm91bmQgRE1BMkQgbGF5ZXIgKi8KQEAgLTE2NzAsNyArMTgwNyw3IEBACiAgIHsKIAogCi0gICAgIC8qIFdyaXRlIERNQTJEIEZHUEZDQ1IgcmVnaXN0ZXIgKi8KKyAgICAvKiBXcml0ZSBETUEyRCBGR1BGQ0NSIHJlZ2lzdGVyICovCiAgICAgTU9ESUZZX1JFRyhoZG1hMmQtPkluc3RhbmNlLT5GR1BGQ0NSLCByZWdNYXNrLCByZWdWYWx1ZSk7CiAKICAgICAvKiBETUEyRCBGR09SIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xNjc5LDcgKzE4MTYsOCBAQAogICAgIC8qIERNQTJEIEZHQ09MUiByZWdpc3RlciBjb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogICAgIGlmICgocExheWVyQ2ZnLT5JbnB1dENvbG9yTW9kZSA9PSBETUEyRF9JTlBVVF9BNCkgfHwgKHBMYXllckNmZy0+SW5wdXRDb2xvck1vZGUgPT0gRE1BMkRfSU5QVVRfQTgpKQogICAgIHsKLSAgICAgIFdSSVRFX1JFRyhoZG1hMmQtPkluc3RhbmNlLT5GR0NPTFIsIHBMYXllckNmZy0+SW5wdXRBbHBoYSAmIChETUEyRF9GR0NPTFJfQkxVRXxETUEyRF9GR0NPTFJfR1JFRU58RE1BMkRfRkdDT0xSX1JFRCkpOworICAgICAgV1JJVEVfUkVHKGhkbWEyZC0+SW5zdGFuY2UtPkZHQ09MUiwgcExheWVyQ2ZnLT5JbnB1dEFscGhhICYgKERNQTJEX0ZHQ09MUl9CTFVFIHwgRE1BMkRfRkdDT0xSX0dSRUVOIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERNQTJEX0ZHQ09MUl9SRUQpKTsKICAgICB9CiAgIH0KICAgLyogSW5pdGlhbGl6ZSB0aGUgRE1BMkQgc3RhdGUqLwpAQCAtMTcwMCw2ICsxODM4LDkgQEAKICAgKiBAcGFyYW0gIExheWVySWR4IERNQTJEIExheWVyIGluZGV4LgogICAqICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAgICogICAgICAgICAgICAgICAgICAgRE1BMkRfQkFDS0dST1VORF9MQVlFUigwKSAvIERNQTJEX0ZPUkVHUk9VTkRfTEFZRVIoMSkKKyAgKiBAbm90ZSBBUEkgb2Jzb2xldGUgYW5kIG1haW50YWluZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBsZWdhY3kuIFVzZXIgaXMgaW52aXRlZAorICAqICAgICAgdG8gcmVzb3J0IHRvIEhBTF9ETUEyRF9DTFVUU3RhcnRMb2FkKCkgaW5zdGVhZCB0byBiZW5lZml0IGZyb20gY29kZSBjb21wYWN0bmVzcywKKyAgKiAgICAgIGNvZGUgc2l6ZSBhbmQgaW1wcm92ZWQgaGVhcCB1c2FnZS4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9ETUEyRF9Db25maWdDTFVUKERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCwgRE1BMkRfQ0xVVENmZ1R5cGVEZWYgQ0xVVENmZywgdWludDMyX3QgTGF5ZXJJZHgpCkBAIC0xNzE2LDI0ICsxODU3LDI0IEBACiAgIGhkbWEyZC0+U3RhdGUgPSBIQUxfRE1BMkRfU1RBVEVfQlVTWTsKIAogICAvKiBDb25maWd1cmUgdGhlIENMVVQgb2YgdGhlIGJhY2tncm91bmQgRE1BMkQgbGF5ZXIgKi8KLSAgaWYoTGF5ZXJJZHggPT0gRE1BMkRfQkFDS0dST1VORF9MQVlFUikKKyAgaWYgKExheWVySWR4ID09IERNQTJEX0JBQ0tHUk9VTkRfTEFZRVIpCiAgIHsKICAgICAvKiBXcml0ZSBiYWNrZ3JvdW5kIENMVVQgbWVtb3J5IGFkZHJlc3MgKi8KICAgICBXUklURV9SRUcoaGRtYTJkLT5JbnN0YW5jZS0+QkdDTUFSLCAodWludDMyX3QpQ0xVVENmZy5wQ0xVVCk7CiAKICAgICAvKiBXcml0ZSBiYWNrZ3JvdW5kIENMVVQgc2l6ZSBhbmQgQ0xVVCBjb2xvciBtb2RlICovCiAgICAgTU9ESUZZX1JFRyhoZG1hMmQtPkluc3RhbmNlLT5CR1BGQ0NSLCAoRE1BMkRfQkdQRkNDUl9DUyB8IERNQTJEX0JHUEZDQ1JfQ0NNKSwKLSAgICAgICAgICAgICgoQ0xVVENmZy5TaXplIDw8IERNQTJEX0JHUEZDQ1JfQ1NfUG9zKSB8IChDTFVUQ2ZnLkNMVVRDb2xvck1vZGUgPDwgRE1BMkRfQkdQRkNDUl9DQ01fUG9zKSkpOwotIH0KLSAvKiBDb25maWd1cmUgdGhlIENMVVQgb2YgdGhlIGZvcmVncm91bmQgRE1BMkQgbGF5ZXIgKi8KLSBlbHNlCi0gewotICAgLyogV3JpdGUgZm9yZWdyb3VuZCBDTFVUIG1lbW9yeSBhZGRyZXNzICovCisgICAgICAgICAgICAgICAoKENMVVRDZmcuU2l6ZSA8PCBETUEyRF9CR1BGQ0NSX0NTX1BvcykgfCAoQ0xVVENmZy5DTFVUQ29sb3JNb2RlIDw8IERNQTJEX0JHUEZDQ1JfQ0NNX1BvcykpKTsKKyAgfQorICAvKiBDb25maWd1cmUgdGhlIENMVVQgb2YgdGhlIGZvcmVncm91bmQgRE1BMkQgbGF5ZXIgKi8KKyAgZWxzZQorICB7CisgICAgLyogV3JpdGUgZm9yZWdyb3VuZCBDTFVUIG1lbW9yeSBhZGRyZXNzICovCiAgICAgV1JJVEVfUkVHKGhkbWEyZC0+SW5zdGFuY2UtPkZHQ01BUiwgKHVpbnQzMl90KUNMVVRDZmcucENMVVQpOwogCiAgICAgLyogV3JpdGUgZm9yZWdyb3VuZCBDTFVUIHNpemUgYW5kIENMVVQgY29sb3IgbW9kZSAqLwogICAgIE1PRElGWV9SRUcoaGRtYTJkLT5JbnN0YW5jZS0+RkdQRkNDUiwgKERNQTJEX0ZHUEZDQ1JfQ1MgfCBETUEyRF9GR1BGQ0NSX0NDTSksCi0gICAgICAgICAgICAoKENMVVRDZmcuU2l6ZSA8PCBETUEyRF9GR1BGQ0NSX0NTX1BvcykgfCAoQ0xVVENmZy5DTFVUQ29sb3JNb2RlIDw8IERNQTJEX0ZHUEZDQ1JfQ0NNX1BvcykpKTsKKyAgICAgICAgICAgICAgICgoQ0xVVENmZy5TaXplIDw8IERNQTJEX0ZHUEZDQ1JfQ1NfUG9zKSB8IChDTFVUQ2ZnLkNMVVRDb2xvck1vZGUgPDwgRE1BMkRfRkdQRkNDUl9DQ01fUG9zKSkpOwogICB9CiAKICAgLyogU2V0IHRoZSBETUEyRCBzdGF0ZSB0byBSZWFkeSovCkBAIC0xNzU5LDggKzE5MDAsNiBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RNQTJEX1Byb2dyYW1MaW5lRXZlbnQoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkLCB1aW50MzJfdCBMaW5lKQogewogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwotICBhc3NlcnRfcGFyYW0oSVNfRE1BMkRfTElORVdBVEVSTUFSSyhMaW5lKSk7Ci0KICAgaWYgKExpbmUgPiBETUEyRF9MV1JfTFcpCiAgIHsKICAgICByZXR1cm4gSEFMX0VSUk9SOwpAQCAtMTg2Nyw4ICsyMDA2LDggQEAKIAogCiAvKiogQGRlZmdyb3VwIERNQTJEX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDQgUGVyaXBoZXJhbCBTdGF0ZSBhbmQgRXJyb3IgZnVuY3Rpb25zCi0gKiAgQGJyaWVmICAgIFBlcmlwaGVyYWwgU3RhdGUgZnVuY3Rpb25zCi0gKgorICAqICBAYnJpZWYgICAgUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMKKyAgKgogQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgIyMjIyMgUGVyaXBoZXJhbCBTdGF0ZSBhbmQgRXJyb3JzIGZ1bmN0aW9ucyAjIyMjIwpAQCAtMTkyNyw3ICsyMDY2LDggQEAKICAgKiBAcGFyYW0gIEhlaWdodCAgICAgVGhlIGhlaWdodCBvZiBkYXRhIHRvIGJlIHRyYW5zZmVycmVkIGZyb20gc291cmNlIHRvIGRlc3RpbmF0aW9uLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotc3RhdGljIHZvaWQgRE1BMkRfU2V0Q29uZmlnKERNQTJEX0hhbmRsZVR5cGVEZWYgKmhkbWEyZCwgdWludDMyX3QgcGRhdGEsIHVpbnQzMl90IERzdEFkZHJlc3MsIHVpbnQzMl90IFdpZHRoLCB1aW50MzJfdCBIZWlnaHQpCitzdGF0aWMgdm9pZCBETUEyRF9TZXRDb25maWcoRE1BMkRfSGFuZGxlVHlwZURlZiAqaGRtYTJkLCB1aW50MzJfdCBwZGF0YSwgdWludDMyX3QgRHN0QWRkcmVzcywgdWludDMyX3QgV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgSGVpZ2h0KQogewogICB1aW50MzJfdCB0bXA7CiAgIHVpbnQzMl90IHRtcDE7CkBAIC0xOTM2LDcgKzIwNzYsNyBAQAogICB1aW50MzJfdCB0bXA0OwogCiAgIC8qIENvbmZpZ3VyZSBETUEyRCBkYXRhIHNpemUgKi8KLSAgTU9ESUZZX1JFRyhoZG1hMmQtPkluc3RhbmNlLT5OTFIsIChETUEyRF9OTFJfTkx8RE1BMkRfTkxSX1BMKSwgKEhlaWdodHwgKFdpZHRoIDw8IERNQTJEX05MUl9QTF9Qb3MpKSk7CisgIE1PRElGWV9SRUcoaGRtYTJkLT5JbnN0YW5jZS0+TkxSLCAoRE1BMkRfTkxSX05MIHwgRE1BMkRfTkxSX1BMKSwgKEhlaWdodCB8IChXaWR0aCA8PCBETUEyRF9OTFJfUExfUG9zKSkpOwogCiAgIC8qIENvbmZpZ3VyZSBETUEyRCBkZXN0aW5hdGlvbiBhZGRyZXNzICovCiAgIFdSSVRFX1JFRyhoZG1hMmQtPkluc3RhbmNlLT5PTUFSLCBEc3RBZGRyZXNzKTsKQEAgLTE5NTIsNyArMjA5Miw3IEBACiAgICAgLyogUHJlcGFyZSB0aGUgdmFsdWUgdG8gYmUgd3JpdHRlbiB0byB0aGUgT0NPTFIgcmVnaXN0ZXIgYWNjb3JkaW5nIHRvIHRoZSBjb2xvciBtb2RlICovCiAgICAgaWYgKGhkbWEyZC0+SW5pdC5Db2xvck1vZGUgPT0gRE1BMkRfT1VUUFVUX0FSR0I4ODg4KQogICAgIHsKLSAgICAgIHRtcCA9ICh0bXAzIHwgdG1wMiB8IHRtcDF8IHRtcDQpOworICAgICAgdG1wID0gKHRtcDMgfCB0bXAyIHwgdG1wMSB8IHRtcDQpOwogICAgIH0KICAgICBlbHNlIGlmIChoZG1hMmQtPkluaXQuQ29sb3JNb2RlID09IERNQTJEX09VVFBVVF9SR0I4ODgpCiAgICAgewpAQCAtMTk2Miw3ICsyMTAyLDcgQEAKICAgICB7CiAgICAgICB0bXAyID0gKHRtcDIgPj4gMTlVKTsKICAgICAgIHRtcDMgPSAodG1wMyA+PiAxMFUpOwotICAgICAgdG1wNCA9ICh0bXA0ID4+IDNVICk7CisgICAgICB0bXA0ID0gKHRtcDQgPj4gM1UpOwogICAgICAgdG1wICA9ICgodG1wMyA8PCA1VSkgfCAodG1wMiA8PCAxMVUpIHwgdG1wNCk7CiAgICAgfQogICAgIGVsc2UgaWYgKGhkbWEyZC0+SW5pdC5Db2xvck1vZGUgPT0gRE1BMkRfT1VUUFVUX0FSR0IxNTU1KQpAQCAtMTk3MCw3ICsyMTEwLDcgQEAKICAgICAgIHRtcDEgPSAodG1wMSA+PiAzMVUpOwogICAgICAgdG1wMiA9ICh0bXAyID4+IDE5VSk7CiAgICAgICB0bXAzID0gKHRtcDMgPj4gMTFVKTsKLSAgICAgIHRtcDQgPSAodG1wNCA+PiAzVSApOworICAgICAgdG1wNCA9ICh0bXA0ID4+IDNVKTsKICAgICAgIHRtcCAgPSAoKHRtcDMgPDwgNVUpIHwgKHRtcDIgPDwgMTBVKSB8ICh0bXAxIDw8IDE1VSkgfCB0bXA0KTsKICAgICB9CiAgICAgZWxzZSAvKiBEaGRtYTJkLT5Jbml0LkNvbG9yTW9kZSA9IERNQTJEX09VVFBVVF9BUkdCNDQ0NCAqLwpAQCAtMTk3OCw3ICsyMTE4LDcgQEAKICAgICAgIHRtcDEgPSAodG1wMSA+PiAyOFUpOwogICAgICAgdG1wMiA9ICh0bXAyID4+IDIwVSk7CiAgICAgICB0bXAzID0gKHRtcDMgPj4gMTJVKTsKLSAgICAgIHRtcDQgPSAodG1wNCA+PiA0VSApOworICAgICAgdG1wNCA9ICh0bXA0ID4+IDRVKTsKICAgICAgIHRtcCAgPSAoKHRtcDMgPDwgNFUpIHwgKHRtcDIgPDwgOFUpIHwgKHRtcDEgPDwgMTJVKSB8IHRtcDQpOwogICAgIH0KICAgICAvKiBXcml0ZSB0byBETUEyRCBPQ09MUiByZWdpc3RlciAqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfZHNpLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9kc2kuYwppbmRleCBhMDFhNmRlLi4zNDFiNDhkIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9kc2kuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9kc2kuYwpAQCAtMTMsMzYgKzEzLDU3IEBACiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgSG93IHRvIHVzZSB0aGlzIGRyaXZlciAjIyMjIwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgWy4uXQorICAgIFRoZSBEU0kgSEFMIGRyaXZlciBjYW4gYmUgdXNlZCBhcyBmb2xsb3dzOgorCisgICAgKCMpIERlY2xhcmUgYSBEU0lfSGFuZGxlVHlwZURlZiBoYW5kbGUgc3RydWN0dXJlLCBmb3IgZXhhbXBsZTogRFNJX0hhbmRsZVR5cGVEZWYgIGhkc2k7CisKKyAgICAoIykgSW5pdGlhbGl6ZSB0aGUgRFNJIGxvdyBsZXZlbCByZXNvdXJjZXMgYnkgaW1wbGVtZW50aW5nIHRoZSBIQUxfRFNJX01zcEluaXQoKSBBUEk6CisgICAgICAgICgjIykgRW5hYmxlIHRoZSBEU0kgaW50ZXJmYWNlIGNsb2NrCisgICAgICAgICgjIykgTlZJQyBjb25maWd1cmF0aW9uIGlmIHlvdSBuZWVkIHRvIHVzZSBpbnRlcnJ1cHQgcHJvY2VzcworICAgICAgICAgICAgKCsrKykgQ29uZmlndXJlIHRoZSBEU0kgaW50ZXJydXB0IHByaW9yaXR5CisgICAgICAgICAgICAoKysrKSBFbmFibGUgdGhlIE5WSUMgRFNJIElSUSBDaGFubmVsCisKKyAgICAoIykgSW5pdGlhbGl6ZSB0aGUgRFNJIEhvc3QgcGVyaXBoZXJhbCwgdGhlIHJlcXVpcmVkIFBMTCBwYXJhbWV0ZXJzLCBudW1iZXIgb2YgbGFuY2VzIGFuZAorICAgICAgICBUWCBFc2NhcGUgY2xvY2sgZGl2aWRlciBieSBjYWxsaW5nIHRoZSBIQUxfRFNJX0luaXQoKSBBUEkgd2hpY2ggY2FsbHMgSEFMX0RTSV9Nc3BJbml0KCkuCisKKyAgICAqKiogQ29uZmlndXJhdGlvbiAqKioKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgWy4uXQotICAgICgjKSBVc2UgQHJlZiBIQUxfRFNJX0luaXQoKSBmdW5jdGlvbiB0byBpbml0aWFsaXplIHRoZSBEU0kgSG9zdCBJUCBhbmQgcHJvZ3JhbSB0aGUgcmVxdWlyZWQKLSAgICAgICAgUExMIHBhcmFtZXRlcnMsIG51bWJlciBvZiBsYW5lcyBhbmQgVFggRXNjYXBlIGNsb2NrIGRpdmlkZXIuCi0gICAgKCMpIFVzZSBAcmVmIEhBTF9EU0lfQ29uZmlnQWRhcHRlZENvbW1hbmRNb2RlKCkgZnVuY3Rpb24gdG8gY29uZmlndXJlIHRoZSBEU0kgaG9zdCBpbiBhZGFwdGVkCisgICAgKCMpIFVzZSBIQUxfRFNJX0NvbmZpZ0FkYXB0ZWRDb21tYW5kTW9kZSgpIGZ1bmN0aW9uIHRvIGNvbmZpZ3VyZSB0aGUgRFNJIGhvc3QgaW4gYWRhcHRlZAogICAgICAgICBjb21tYW5kIG1vZGUuCi0gICAgKCMpIFdoZW4gb3BlcmF0aW5nIGluIHZpZGVvIG1vZGUgLCB1c2UgQHJlZiBIQUxfRFNJX0NvbmZpZ1ZpZGVvTW9kZSgpIHRvIGNvbmZpZ3VyZSB0aGUgRFNJIGhvc3QuCi0gICAgKCMpIEZ1bmN0aW9uIEByZWYgSEFMX0RTSV9Db25maWdDb21tYW5kKCkgaXMgdXNlZCB0byBjb25maWd1cmUgdGhlIERTSSBjb21tYW5kcyBiZWhhdmlvciBpbiBsb3cgcG93ZXIgbW9kZS4KLSAgICAoIykgVG8gY29uZmlndXJlIHRoZSBEU0kgUEhZIHRpbWluZ3MgcGFyYW1ldGVycywgdXNlIGZ1bmN0aW9uIEByZWYgSEFMX0RTSV9Db25maWdQaHlUaW1lcigpLgotICAgICgjKSBUaGUgRFNJIEhvc3QgY2FuIGJlIHN0YXJ0ZWQvc3RvcHBlZCB1c2luZyByZXNwZWN0aXZlbHkgZnVuY3Rpb25zIEByZWYgSEFMX0RTSV9TdGFydCgpIGFuZCBAcmVmIEhBTF9EU0lfU3RvcCgpLgotICAgICAgICBGdW5jdGlvbnMgQHJlZiBIQUxfRFNJX1Nob3J0V3JpdGUoKSwgQHJlZiBIQUxfRFNJX0xvbmdXcml0ZSgpIGFuZCBAcmVmIEhBTF9EU0lfUmVhZCgpIGFsbG93cyByZXNwZWN0aXZlbHkKKworICAgICgjKSBXaGVuIG9wZXJhdGluZyBpbiB2aWRlbyBtb2RlICwgdXNlIEhBTF9EU0lfQ29uZmlnVmlkZW9Nb2RlKCkgdG8gY29uZmlndXJlIHRoZSBEU0kgaG9zdC4KKworICAgICgjKSBGdW5jdGlvbiBIQUxfRFNJX0NvbmZpZ0NvbW1hbmQoKSBpcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgRFNJIGNvbW1hbmRzIGJlaGF2aW9yIGluIGxvdyBwb3dlciBtb2RlLgorCisgICAgKCMpIFRvIGNvbmZpZ3VyZSB0aGUgRFNJIFBIWSB0aW1pbmdzIHBhcmFtZXRlcnMsIHVzZSBmdW5jdGlvbiBIQUxfRFNJX0NvbmZpZ1BoeVRpbWVyKCkuCisKKyAgICAoIykgVGhlIERTSSBIb3N0IGNhbiBiZSBzdGFydGVkL3N0b3BwZWQgdXNpbmcgcmVzcGVjdGl2ZWx5IGZ1bmN0aW9ucyBIQUxfRFNJX1N0YXJ0KCkgYW5kIEhBTF9EU0lfU3RvcCgpLgorICAgICAgICBGdW5jdGlvbnMgSEFMX0RTSV9TaG9ydFdyaXRlKCksIEhBTF9EU0lfTG9uZ1dyaXRlKCkgYW5kIEhBTF9EU0lfUmVhZCgpIGFsbG93cyByZXNwZWN0aXZlbHkKICAgICAgICAgdG8gd3JpdGUgRFNJIHNob3J0IHBhY2tldHMsIGxvbmcgcGFja2V0cyBhbmQgdG8gcmVhZCBEU0kgcGFja2V0cy4KIAogICAgICgjKSBUaGUgRFNJIEhvc3QgT2ZmZXJzIHR3byBMb3cgcG93ZXIgbW9kZXMgOgotICAgICAgICAoKykgTG93IFBvd2VyIE1vZGUgb24gZGF0YSBsYW5lcyBvbmx5OiBPbmx5IERTSSBkYXRhIGxhbmVzIGFyZSBzaHV0IGRvd24uCi0gICAgICAgICAgICBJdCBpcyBwb3NzaWJsZSB0byBlbnRlci9leGl0IGZyb20gdGhpcyBtb2RlIHVzaW5nIHJlc3BlY3RpdmVseSBmdW5jdGlvbnMgQHJlZiBIQUxfRFNJX0VudGVyVUxQTURhdGEoKQotICAgICAgICAgICAgYW5kIEByZWYgSEFMX0RTSV9FeGl0VUxQTURhdGEoKQorICAgICAgICAoKyspIExvdyBQb3dlciBNb2RlIG9uIGRhdGEgbGFuZXMgb25seTogT25seSBEU0kgZGF0YSBsYW5lcyBhcmUgc2h1dCBkb3duLgorICAgICAgICAgICAgSXQgaXMgcG9zc2libGUgdG8gZW50ZXIvZXhpdCBmcm9tIHRoaXMgbW9kZSB1c2luZyByZXNwZWN0aXZlbHkgZnVuY3Rpb25zIEhBTF9EU0lfRW50ZXJVTFBNRGF0YSgpCisgICAgICAgICAgICBhbmQgSEFMX0RTSV9FeGl0VUxQTURhdGEoKQogCi0gICAgICAgICgrKSBMb3cgUG93ZXIgTW9kZSBvbiBkYXRhIGFuZCBjbG9jayBsYW5lcyA6IEFsbCBEU0kgbGFuZXMgYXJlIHNodXQgZG93biBpbmNsdWRpbmcgZGF0YSBhbmQgY2xvY2sgbGFuZXMuCi0gICAgICAgICAgICBJdCBpcyBwb3NzaWJsZSB0byBlbnRlci9leGl0IGZyb20gdGhpcyBtb2RlIHVzaW5nIHJlc3BlY3RpdmVseSBmdW5jdGlvbnMgQHJlZiBIQUxfRFNJX0VudGVyVUxQTSgpCi0gICAgICAgICAgICBhbmQgQHJlZiBIQUxfRFNJX0V4aXRVTFBNKCkKLQotICAgICgjKSBVc2VyIGNhbiBzZWxlY3QgdGhlIERTSSBlcnJvcnMgdG8gYmUgcmVwb3J0ZWQvbW9uaXRvcmVkIHVzaW5nIGZ1bmN0aW9uIEByZWYgSEFMX0RTSV9Db25maWdFcnJvck1vbml0b3IoKQotICAgICAgICBXaGVuIGFuIGVycm9yIG9jY3VycywgdGhlIGNhbGxiYWNrIEByZWYgSEFMX0RTSV9FcnJvckNhbGxiYWNrKCkgaXMgYXNzZXJ0ZWQgYW5kIHRoZW4gdXNlciBjYW4gcmV0cmlldmUKLSAgICAgICAgdGhlIGVycm9yIGNvZGUgYnkgY2FsbGluZyBmdW5jdGlvbiBAcmVmIEhBTF9EU0lfR2V0RXJyb3IoKQorICAgICAgICAoKyspIExvdyBQb3dlciBNb2RlIG9uIGRhdGEgYW5kIGNsb2NrIGxhbmVzIDogQWxsIERTSSBsYW5lcyBhcmUgc2h1dCBkb3duIGluY2x1ZGluZyBkYXRhIGFuZCBjbG9jayBsYW5lcy4KKyAgICAgICAgICAgIEl0IGlzIHBvc3NpYmxlIHRvIGVudGVyL2V4aXQgZnJvbSB0aGlzIG1vZGUgdXNpbmcgcmVzcGVjdGl2ZWx5IGZ1bmN0aW9ucyBIQUxfRFNJX0VudGVyVUxQTSgpCisgICAgICAgICAgICBhbmQgSEFMX0RTSV9FeGl0VUxQTSgpCiAKICAgICAoIykgVG8gY29udHJvbCBEU0kgc3RhdGUgeW91IGNhbiB1c2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbjogSEFMX0RTSV9HZXRTdGF0ZSgpCiAKLSAgICAgKioqIERTSSBIQUwgZHJpdmVyIG1hY3JvcyBsaXN0ICoqKgotICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICAgWy4uXQorICAgICoqKiBFcnJvciBtYW5hZ2VtZW50ICoqKgorICAgID09PT09PT09PT09PT09PT09PT09PT09PQorICAgIFsuLl0KKyAgICAoIykgVXNlciBjYW4gc2VsZWN0IHRoZSBEU0kgZXJyb3JzIHRvIGJlIHJlcG9ydGVkL21vbml0b3JlZCB1c2luZyBmdW5jdGlvbiBIQUxfRFNJX0NvbmZpZ0Vycm9yTW9uaXRvcigpCisgICAgICAgIFdoZW4gYW4gZXJyb3Igb2NjdXJzLCB0aGUgY2FsbGJhY2sgSEFMX0RTSV9FcnJvckNhbGxiYWNrKCkgaXMgYXNzZXJ0ZWQgYW5kIHRoZW4gdXNlciBjYW4gcmV0cmlldmUKKyAgICAgICAgdGhlIGVycm9yIGNvZGUgYnkgY2FsbGluZyBmdW5jdGlvbiBIQUxfRFNJX0dldEVycm9yKCkKKworICAgICoqKiBEU0kgSEFMIGRyaXZlciBtYWNyb3MgbGlzdCAqKioKKyAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBbLi5dCiAgICAgICAgQmVsb3cgdGhlIGxpc3Qgb2YgbW9zdCB1c2VkIG1hY3JvcyBpbiBEU0kgSEFMIGRyaXZlci4KIAogICAgICAgKCspIF9fSEFMX0RTSV9FTkFCTEU6IEVuYWJsZSB0aGUgRFNJIEhvc3QuCkBAIC01OSw1OCArODAsNjMgQEAKICAgICAgICgrKSBfX0hBTF9EU0lfRElTQUJMRV9JVDogRGlzYWJsZXMgdGhlIHNwZWNpZmllZCBEU0kgaW50ZXJydXB0cy4KICAgICAgICgrKSBfX0hBTF9EU0lfR0VUX0lUX1NPVVJDRTogQ2hlY2tzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBEU0kgaW50ZXJydXB0IHNvdXJjZSBpcyBlbmFibGVkIG9yIG5vdC4KIAorICAgIFsuLl0KKyAgICAgIChAKSBZb3UgY2FuIHJlZmVyIHRvIHRoZSBEU0kgSEFMIGRyaXZlciBoZWFkZXIgZmlsZSBmb3IgbW9yZSB1c2VmdWwgbWFjcm9zCiAKKyAgICAqKiogQ2FsbGJhY2sgcmVnaXN0cmF0aW9uICoqKgorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIFsuLl0KKyAgICBUaGUgY29tcGlsYXRpb24gZGVmaW5lICBVU0VfSEFMX0RTSV9SRUdJU1RFUl9DQUxMQkFDS1Mgd2hlbiBzZXQgdG8gMQorICAgIGFsbG93cyB0aGUgdXNlciB0byBjb25maWd1cmUgZHluYW1pY2FsbHkgdGhlIGRyaXZlciBjYWxsYmFja3MuCisgICAgVXNlIEZ1bmN0aW9uIEhBTF9EU0lfUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlZ2lzdGVyIGEgY2FsbGJhY2suCiAKLSAgKioqIENhbGxiYWNrIHJlZ2lzdHJhdGlvbiAqKioKLSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgWy4uXQorICAgIEZ1bmN0aW9uIEhBTF9EU0lfUmVnaXN0ZXJDYWxsYmFjaygpIGFsbG93cyB0byByZWdpc3RlciBmb2xsb3dpbmcgY2FsbGJhY2tzOgorICAgICAgKCspIFRlYXJpbmdFZmZlY3RDYWxsYmFjayA6IERTSSBUZWFyaW5nIEVmZmVjdCBDYWxsYmFjay4KKyAgICAgICgrKSBFbmRPZlJlZnJlc2hDYWxsYmFjayAgOiBEU0kgRW5kIE9mIFJlZnJlc2ggQ2FsbGJhY2suCisgICAgICAoKykgRXJyb3JDYWxsYmFjayAgICAgICAgIDogRFNJIEVycm9yIENhbGxiYWNrCisgICAgICAoKykgTXNwSW5pdENhbGxiYWNrICAgICAgIDogRFNJIE1zcEluaXQuCisgICAgICAoKykgTXNwRGVJbml0Q2FsbGJhY2sgICAgIDogRFNJIE1zcERlSW5pdC4KKyAgICBbLi5dCisgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsIHRoZSBjYWxsYmFjayBJRAorICAgIGFuZCBhIHBvaW50ZXIgdG8gdGhlIHVzZXIgY2FsbGJhY2sgZnVuY3Rpb24uCiAKLSAgVGhlIGNvbXBpbGF0aW9uIGRlZmluZSAgVVNFX0hBTF9EU0lfUkVHSVNURVJfQ0FMTEJBQ0tTIHdoZW4gc2V0IHRvIDEKLSAgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbmZpZ3VyZSBkeW5hbWljYWxseSB0aGUgZHJpdmVyIGNhbGxiYWNrcy4KLSAgVXNlIEZ1bmN0aW9uIEByZWYgSEFMX0RTSV9SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVnaXN0ZXIgYSBjYWxsYmFjay4KKyAgICBbLi5dCisgICAgVXNlIGZ1bmN0aW9uIEhBTF9EU0lfVW5SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVzZXQgYSBjYWxsYmFjayB0byB0aGUgZGVmYXVsdAorICAgIHdlYWsgZnVuY3Rpb24uCisgICAgSEFMX0RTSV9VblJlZ2lzdGVyQ2FsbGJhY2sgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAorICAgIGFuZCB0aGUgY2FsbGJhY2sgSUQuCisgICAgWy4uXQorICAgIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRvIHJlc2V0IGZvbGxvd2luZyBjYWxsYmFja3M6CisgICAgICAoKykgVGVhcmluZ0VmZmVjdENhbGxiYWNrIDogRFNJIFRlYXJpbmcgRWZmZWN0IENhbGxiYWNrLgorICAgICAgKCspIEVuZE9mUmVmcmVzaENhbGxiYWNrICA6IERTSSBFbmQgT2YgUmVmcmVzaCBDYWxsYmFjay4KKyAgICAgICgrKSBFcnJvckNhbGxiYWNrICAgICAgICAgOiBEU0kgRXJyb3IgQ2FsbGJhY2sKKyAgICAgICgrKSBNc3BJbml0Q2FsbGJhY2sgICAgICAgOiBEU0kgTXNwSW5pdC4KKyAgICAgICgrKSBNc3BEZUluaXRDYWxsYmFjayAgICAgOiBEU0kgTXNwRGVJbml0LgogCi0gIEZ1bmN0aW9uIEByZWYgSEFMX0RTSV9SZWdpc3RlckNhbGxiYWNrKCkgYWxsb3dzIHRvIHJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6Ci0gICAgKCspIFRlYXJpbmdFZmZlY3RDYWxsYmFjayA6IERTSSBUZWFyaW5nIEVmZmVjdCBDYWxsYmFjay4KLSAgICAoKykgRW5kT2ZSZWZyZXNoQ2FsbGJhY2sgIDogRFNJIEVuZCBPZiBSZWZyZXNoIENhbGxiYWNrLgotICAgICgrKSBFcnJvckNhbGxiYWNrICAgICAgICAgOiBEU0kgRXJyb3IgQ2FsbGJhY2sKLSAgICAoKykgTXNwSW5pdENhbGxiYWNrICAgICAgIDogRFNJIE1zcEluaXQuCi0gICAgKCspIE1zcERlSW5pdENhbGxiYWNrICAgICA6IERTSSBNc3BEZUluaXQuCi0gIFRoaXMgZnVuY3Rpb24gdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLCB0aGUgQ2FsbGJhY2sgSUQKLSAgYW5kIGEgcG9pbnRlciB0byB0aGUgdXNlciBjYWxsYmFjayBmdW5jdGlvbi4KKyAgICBbLi5dCisgICAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEhBTF9EU0lfSW5pdCBhbmQgd2hlbiB0aGUgc3RhdGUgaXMgSEFMX0RTSV9TVEFURV9SRVNFVAorICAgIGFsbCBjYWxsYmFja3MgYXJlIHNldCB0byB0aGUgY29ycmVzcG9uZGluZyB3ZWFrIGZ1bmN0aW9uczoKKyAgICBleGFtcGxlcyBIQUxfRFNJX1RlYXJpbmdFZmZlY3RDYWxsYmFjaygpLCBIQUxfRFNJX0VuZE9mUmVmcmVzaENhbGxiYWNrKCkuCisgICAgRXhjZXB0aW9uIGRvbmUgZm9yIE1zcEluaXQgYW5kIE1zcERlSW5pdCBmdW5jdGlvbnMgdGhhdCBhcmUgcmVzcGVjdGl2ZWx5CisgICAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMgaW4gdGhlIEhBTF9EU0lfSW5pdCgpCisgICAgYW5kIEhBTF9EU0lfRGVJbml0KCkgb25seSB3aGVuIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbCAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCisgICAgSWYgbm90LCBNc3BJbml0IG9yIE1zcERlSW5pdCBhcmUgbm90IG51bGwsIHRoZSBIQUxfRFNJX0luaXQoKSBhbmQgSEFMX0RTSV9EZUluaXQoKQorICAgIGtlZXAgYW5kIHVzZSB0aGUgdXNlciBNc3BJbml0L01zcERlSW5pdCBjYWxsYmFja3MgKHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCiAKLSAgVXNlIGZ1bmN0aW9uIEByZWYgSEFMX0RTSV9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvIHRoZSBkZWZhdWx0Ci0gIHdlYWsgZnVuY3Rpb24uCi0gIEByZWYgSEFMX0RTSV9VblJlZ2lzdGVyQ2FsbGJhY2sgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAotICBhbmQgdGhlIENhbGxiYWNrIElELgotICBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0byByZXNldCBmb2xsb3dpbmcgY2FsbGJhY2tzOgotICAgICgrKSBUZWFyaW5nRWZmZWN0Q2FsbGJhY2sgOiBEU0kgVGVhcmluZyBFZmZlY3QgQ2FsbGJhY2suCi0gICAgKCspIEVuZE9mUmVmcmVzaENhbGxiYWNrICA6IERTSSBFbmQgT2YgUmVmcmVzaCBDYWxsYmFjay4KLSAgICAoKykgRXJyb3JDYWxsYmFjayAgICAgICAgIDogRFNJIEVycm9yIENhbGxiYWNrCi0gICAgKCspIE1zcEluaXRDYWxsYmFjayAgICAgICA6IERTSSBNc3BJbml0LgotICAgICgrKSBNc3BEZUluaXRDYWxsYmFjayAgICAgOiBEU0kgTXNwRGVJbml0LgorICAgIFsuLl0KKyAgICBDYWxsYmFja3MgY2FuIGJlIHJlZ2lzdGVyZWQvdW5yZWdpc3RlcmVkIGluIEhBTF9EU0lfU1RBVEVfUkVBRFkgc3RhdGUgb25seS4KKyAgICBFeGNlcHRpb24gZG9uZSBNc3BJbml0L01zcERlSW5pdCB0aGF0IGNhbiBiZSByZWdpc3RlcmVkL3VucmVnaXN0ZXJlZAorICAgIGluIEhBTF9EU0lfU1RBVEVfUkVBRFkgb3IgSEFMX0RTSV9TVEFURV9SRVNFVCBzdGF0ZSwKKyAgICB0aHVzIHJlZ2lzdGVyZWQgKHVzZXIpIE1zcEluaXQvRGVJbml0IGNhbGxiYWNrcyBjYW4gYmUgdXNlZCBkdXJpbmcgdGhlIEluaXQvRGVJbml0LgorICAgIEluIHRoYXQgY2FzZSBmaXJzdCByZWdpc3RlciB0aGUgTXNwSW5pdC9Nc3BEZUluaXQgdXNlciBjYWxsYmFja3MKKyAgICB1c2luZyBIQUxfRFNJX1JlZ2lzdGVyQ2FsbGJhY2soKSBiZWZvcmUgY2FsbGluZyBIQUxfRFNJX0RlSW5pdCgpCisgICAgb3IgSEFMX0RTSV9Jbml0KCkgZnVuY3Rpb24uCiAKLSAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEhBTF9EU0lfSW5pdCBhbmQgd2hlbiB0aGUgc3RhdGUgaXMgSEFMX0RTSV9TVEFURV9SRVNFVAotICBhbGwgY2FsbGJhY2tzIGFyZSBzZXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgd2VhayBmdW5jdGlvbnM6Ci0gIGV4YW1wbGVzIEByZWYgSEFMX0RTSV9UZWFyaW5nRWZmZWN0Q2FsbGJhY2soKSwgQHJlZiBIQUxfRFNJX0VuZE9mUmVmcmVzaENhbGxiYWNrKCkuCi0gIEV4Y2VwdGlvbiBkb25lIGZvciBNc3BJbml0IGFuZCBNc3BEZUluaXQgZnVuY3Rpb25zIHRoYXQgYXJlCi0gIHJlc2V0IHRvIHRoZSBsZWdhY3kgd2VhayBmdW5jdGlvbiBpbiB0aGUgSEFMX0RTSV9Jbml0LyBAcmVmIEhBTF9EU0lfRGVJbml0IG9ubHkgd2hlbgotICB0aGVzZSBjYWxsYmFja3MgYXJlIG51bGwgKG5vdCByZWdpc3RlcmVkIGJlZm9yZWhhbmQpLgotICBpZiBub3QsIE1zcEluaXQgb3IgTXNwRGVJbml0IGFyZSBub3QgbnVsbCwgdGhlIEByZWYgSEFMX0RTSV9Jbml0LyBAcmVmIEhBTF9EU0lfRGVJbml0Ci0gIGtlZXAgYW5kIHVzZSB0aGUgdXNlciBNc3BJbml0L01zcERlSW5pdCBjYWxsYmFja3MgKHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkKLQotICBDYWxsYmFja3MgY2FuIGJlIHJlZ2lzdGVyZWQvdW5yZWdpc3RlcmVkIGluIEhBTF9EU0lfU1RBVEVfUkVBRFkgc3RhdGUgb25seS4KLSAgRXhjZXB0aW9uIGRvbmUgTXNwSW5pdC9Nc3BEZUluaXQgdGhhdCBjYW4gYmUgcmVnaXN0ZXJlZC91bnJlZ2lzdGVyZWQKLSAgaW4gSEFMX0RTSV9TVEFURV9SRUFEWSBvciBIQUxfRFNJX1NUQVRFX1JFU0VUIHN0YXRlLAotICB0aHVzIHJlZ2lzdGVyZWQgKHVzZXIpIE1zcEluaXQvRGVJbml0IGNhbGxiYWNrcyBjYW4gYmUgdXNlZCBkdXJpbmcgdGhlIEluaXQvRGVJbml0LgotICBJbiB0aGF0IGNhc2UgZmlyc3QgcmVnaXN0ZXIgdGhlIE1zcEluaXQvTXNwRGVJbml0IHVzZXIgY2FsbGJhY2tzCi0gIHVzaW5nIEByZWYgSEFMX0RTSV9SZWdpc3RlckNhbGxiYWNrKCkgYmVmb3JlIGNhbGxpbmcgQHJlZiBIQUxfRFNJX0RlSW5pdAotICBvciBIQUxfRFNJX0luaXQgZnVuY3Rpb24uCi0KLSAgV2hlbiBUaGUgY29tcGlsYXRpb24gZGVmaW5lIFVTRV9IQUxfRFNJX1JFR0lTVEVSX0NBTExCQUNLUyBpcyBzZXQgdG8gMCBvcgotICBub3QgZGVmaW5lZCwgdGhlIGNhbGxiYWNrIHJlZ2lzdHJhdGlvbiBmZWF0dXJlIGlzIG5vdCBhdmFpbGFibGUgYW5kIGFsbCBjYWxsYmFja3MKLSAgYXJlIHNldCB0byB0aGUgY29ycmVzcG9uZGluZyB3ZWFrIGZ1bmN0aW9ucy4KLQotICAgICBbLi5dCi0gICAgICAgKEApIFlvdSBjYW4gcmVmZXIgdG8gdGhlIERTSSBIQUwgZHJpdmVyIGhlYWRlciBmaWxlIGZvciBtb3JlIHVzZWZ1bCBtYWNyb3MKKyAgICBbLi5dCisgICAgV2hlbiBUaGUgY29tcGlsYXRpb24gZGVmaW5lIFVTRV9IQUxfRFNJX1JFR0lTVEVSX0NBTExCQUNLUyBpcyBzZXQgdG8gMCBvcgorICAgIG5vdCBkZWZpbmVkLCB0aGUgY2FsbGJhY2sgcmVnaXN0cmF0aW9uIGZlYXR1cmUgaXMgbm90IGF2YWlsYWJsZSBhbmQgYWxsIGNhbGxiYWNrcworICAgIGFyZSBzZXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgd2VhayBmdW5jdGlvbnMuCiAKICAgQGVuZHZlcmJhdGltCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTg2LDEwICsyMTIsMTAgQEAKICAgKiBAcGFyYW0gIENoYW5uZWxJRCBWaXJ0dWFsIGNoYW5uZWwgSUQgb2YgdGhlIGhlYWRlciBwYWNrZXQKICAgKiBAcGFyYW0gIERhdGFUeXBlICBQYWNrZXQgZGF0YSB0eXBlIG9mIHRoZSBoZWFkZXIgcGFja2V0CiAgICogICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiA6Ci0gICogICAgICAgICAgICAgICAgICAgICAgQHJlZiBEU0lfU0hPUlRfV1JJVEVfUEtUX0RhdGFfVHlwZQotICAqICAgICAgICAgICAgICAgICAgIG9yIEByZWYgRFNJX0xPTkdfV1JJVEVfUEtUX0RhdGFfVHlwZQotICAqICAgICAgICAgICAgICAgICAgIG9yIEByZWYgRFNJX1NIT1JUX1JFQURfUEtUX0RhdGFfVHlwZQotICAqICAgICAgICAgICAgICAgICAgIG9yIERTSV9NQVhfUkVUVVJOX1BLVF9TSVpFCisgICogICAgICAgICAgICAgICAgICAgICAgQGFyZyBEU0lfU0hPUlRfV1JJVEVfUEtUX0RhdGFfVHlwZQorICAqICAgICAgICAgICAgICAgICAgICAgIEBhcmcgRFNJX0xPTkdfV1JJVEVfUEtUX0RhdGFfVHlwZQorICAqICAgICAgICAgICAgICAgICAgICAgIEBhcmcgRFNJX1NIT1JUX1JFQURfUEtUX0RhdGFfVHlwZQorICAqICAgICAgICAgICAgICAgICAgICAgIEBhcmcgRFNJX01BWF9SRVRVUk5fUEtUX1NJWkUKICAgKiBAcGFyYW0gIERhdGEwICBXb3JkIGNvdW50IExTQgogICAqIEBwYXJhbSAgRGF0YTEgIFdvcmQgY291bnQgTVNCCiAgICogQHJldHZhbCBOb25lCkBAIC0yMTAsOSArMjM2LDkgQEAKICAgKiAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgRFNJLgogICAqIEBwYXJhbSAgQ2hhbm5lbElEICBWaXJ0dWFsIGNoYW5uZWwgSUQuCiAgICogQHBhcmFtICBNb2RlICBEU0kgc2hvcnQgcGFja2V0IGRhdGEgdHlwZS4KLSAgKiAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBEU0lfU0hPUlRfV1JJVEVfUEtUX0RhdGFfVHlwZS4KKyAgKiAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQGFyZyBEU0lfU0hPUlRfV1JJVEVfUEtUX0RhdGFfVHlwZS4KICAgKiBAcGFyYW0gIFBhcmFtMSAgRFNDIGNvbW1hbmQgb3IgZmlyc3QgZ2VuZXJpYyBwYXJhbWV0ZXIuCi0gICogICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBEU0lfRENTX0NvbW1hbmQgb3IgYQorICAqICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEBhcmcgRFNJX0RDU19Db21tYW5kIG9yIGEKICAgKiAgICAgICAgICAgICAgICAgZ2VuZXJpYyBjb21tYW5kIGNvZGUuCiAgICogQHBhcmFtICBQYXJhbTIgIERTQyBwYXJhbWV0ZXIgb3Igc2Vjb25kIGdlbmVyaWMgcGFyYW1ldGVyLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwpAQCAtNDY0LDcgKzQ5MCw3IEBACiAgICogQHBhcmFtICBoZHNpICBwb2ludGVyIHRvIGEgRFNJX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgRFNJLgogICAqIEBwYXJhbSAgQWN0aXZlRXJyb3JzICBpbmRpY2F0ZXMgd2hpY2ggZXJyb3IgaW50ZXJydXB0cyB3aWxsIGJlIGVuYWJsZWQuCi0gICogICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiBAcmVmIERTSV9FcnJvcl9EYXRhX1R5cGUuCisgICogICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiBAYXJnIERTSV9FcnJvcl9EYXRhX1R5cGUuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfRFNJX0NvbmZpZ0Vycm9yTW9uaXRvcihEU0lfSGFuZGxlVHlwZURlZiAqaGRzaSwgdWludDMyX3QgQWN0aXZlRXJyb3JzKQpAQCAtNTgxLDExICs2MDcsMTEgQEAKICAgKiBAcGFyYW0gaGRzaSBkc2kgaGFuZGxlCiAgICogQHBhcmFtIENhbGxiYWNrSUQgSUQgb2YgdGhlIGNhbGxiYWNrIHRvIGJlIHJlZ2lzdGVyZWQKICAgKiAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKLSAgKiAgICAgICAgICBAYXJnIEByZWYgSEFMX0RTSV9URUFSSU5HX0VGRkVDVF9DQl9JRCBUZWFyaW5nIEVmZmVjdCBDYWxsYmFjayBJRAotICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfRFNJX0VORE9GX1JFRlJFU0hfQ0JfSUQgRW5kIE9mIFJlZnJlc2ggQ2FsbGJhY2sgSUQKLSAgKiAgICAgICAgICBAYXJnIEByZWYgSEFMX0RTSV9FUlJPUl9DQl9JRCBFcnJvciBDYWxsYmFjayBJRAotICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfRFNJX01TUElOSVRfQ0JfSUQgTXNwSW5pdCBjYWxsYmFjayBJRAotICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfRFNJX01TUERFSU5JVF9DQl9JRCBNc3BEZUluaXQgY2FsbGJhY2sgSUQKKyAgKiAgICAgICAgICBAYXJnIEhBTF9EU0lfVEVBUklOR19FRkZFQ1RfQ0JfSUQgVGVhcmluZyBFZmZlY3QgQ2FsbGJhY2sgSUQKKyAgKiAgICAgICAgICBAYXJnIEhBTF9EU0lfRU5ET0ZfUkVGUkVTSF9DQl9JRCBFbmQgT2YgUmVmcmVzaCBDYWxsYmFjayBJRAorICAqICAgICAgICAgIEBhcmcgSEFMX0RTSV9FUlJPUl9DQl9JRCBFcnJvciBDYWxsYmFjayBJRAorICAqICAgICAgICAgIEBhcmcgSEFMX0RTSV9NU1BJTklUX0NCX0lEIE1zcEluaXQgY2FsbGJhY2sgSUQKKyAgKiAgICAgICAgICBAYXJnIEhBTF9EU0lfTVNQREVJTklUX0NCX0lEIE1zcERlSW5pdCBjYWxsYmFjayBJRAogICAqIEBwYXJhbSBwQ2FsbGJhY2sgcG9pbnRlciB0byB0aGUgQ2FsbGJhY2sgZnVuY3Rpb24KICAgKiBAcmV0dmFsIHN0YXR1cwogICAqLwpAQCAtNjc2LDExICs3MDIsMTEgQEAKICAgKiBAcGFyYW0gaGRzaSBkc2kgaGFuZGxlCiAgICogQHBhcmFtIENhbGxiYWNrSUQgSUQgb2YgdGhlIGNhbGxiYWNrIHRvIGJlIHVucmVnaXN0ZXJlZAogICAqICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgotICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfRFNJX1RFQVJJTkdfRUZGRUNUX0NCX0lEIFRlYXJpbmcgRWZmZWN0IENhbGxiYWNrIElECi0gICogICAgICAgICAgQGFyZyBAcmVmIEhBTF9EU0lfRU5ET0ZfUkVGUkVTSF9DQl9JRCBFbmQgT2YgUmVmcmVzaCBDYWxsYmFjayBJRAotICAqICAgICAgICAgIEBhcmcgQHJlZiBIQUxfRFNJX0VSUk9SX0NCX0lEIEVycm9yIENhbGxiYWNrIElECi0gICogICAgICAgICAgQGFyZyBAcmVmIEhBTF9EU0lfTVNQSU5JVF9DQl9JRCBNc3BJbml0IGNhbGxiYWNrIElECi0gICogICAgICAgICAgQGFyZyBAcmVmIEhBTF9EU0lfTVNQREVJTklUX0NCX0lEIE1zcERlSW5pdCBjYWxsYmFjayBJRAorICAqICAgICAgICAgIEBhcmcgSEFMX0RTSV9URUFSSU5HX0VGRkVDVF9DQl9JRCBUZWFyaW5nIEVmZmVjdCBDYWxsYmFjayBJRAorICAqICAgICAgICAgIEBhcmcgSEFMX0RTSV9FTkRPRl9SRUZSRVNIX0NCX0lEIEVuZCBPZiBSZWZyZXNoIENhbGxiYWNrIElECisgICogICAgICAgICAgQGFyZyBIQUxfRFNJX0VSUk9SX0NCX0lEIEVycm9yIENhbGxiYWNrIElECisgICogICAgICAgICAgQGFyZyBIQUxfRFNJX01TUElOSVRfQ0JfSUQgTXNwSW5pdCBjYWxsYmFjayBJRAorICAqICAgICAgICAgIEBhcmcgSEFMX0RTSV9NU1BERUlOSVRfQ0JfSUQgTXNwRGVJbml0IGNhbGxiYWNrIElECiAgICogQHJldHZhbCBzdGF0dXMKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EU0lfVW5SZWdpc3RlckNhbGxiYWNrKERTSV9IYW5kbGVUeXBlRGVmICpoZHNpLCBIQUxfRFNJX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQpCkBAIC0xMjk1LDcgKzEzMjEsNyBAQAogICAqIEBwYXJhbSAgaGRzaSAgcG9pbnRlciB0byBhIERTSV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIERTSS4KICAgKiBAcGFyYW0gIEZsb3dDb250cm9sICBmbG93IGNvbnRyb2wgZmVhdHVyZShzKSB0byBiZSBlbmFibGVkLgotICAqICAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgY29tYmluYXRpb24gb2YgQHJlZiBEU0lfRmxvd0NvbnRyb2wuCisgICogICAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSBjb21iaW5hdGlvbiBvZiBAYXJnIERTSV9GbG93Q29udHJvbC4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9EU0lfQ29uZmlnRmxvd0NvbnRyb2woRFNJX0hhbmRsZVR5cGVEZWYgKmhkc2ksIHVpbnQzMl90IEZsb3dDb250cm9sKQpAQCAtMTQ4OCw3ICsxNTE0LDcgQEAKICAgKiBAcGFyYW0gIGhkc2kgIHBvaW50ZXIgdG8gYSBEU0lfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBEU0kuCiAgICogQHBhcmFtICBDb2xvck1vZGUgIENvbG9yIG1vZGUgKGZ1bGwgb3IgOC1jb2xvcnMpLgotICAqICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgRFNJX0NvbG9yX01vZGUKKyAgKiAgICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAYXJnIERTSV9Db2xvcl9Nb2RlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfRFNJX0NvbG9yTW9kZShEU0lfSGFuZGxlVHlwZURlZiAqaGRzaSwgdWludDMyX3QgQ29sb3JNb2RlKQpAQCAtMTUxNCw3ICsxNTQwLDcgQEAKICAgKiBAcGFyYW0gIGhkc2kgIHBvaW50ZXIgdG8gYSBEU0lfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBEU0kuCiAgICogQHBhcmFtICBTaHV0ZG93biAgU2h1dC1kb3duIChEaXNwbGF5LU9OIG9yIERpc3BsYXktT0ZGKS4KLSAgKiAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgRFNJX1NodXREb3duCisgICogICAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAYXJnIERTSV9TaHV0RG93bgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0RTSV9TaHV0ZG93bihEU0lfSGFuZGxlVHlwZURlZiAqaGRzaSwgdWludDMyX3QgU2h1dGRvd24pCkBAIC0xNTQxLDkgKzE1NjcsOSBAQAogICAqICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBEU0kuCiAgICogQHBhcmFtICBDaGFubmVsSUQgIFZpcnR1YWwgY2hhbm5lbCBJRC4KICAgKiBAcGFyYW0gIE1vZGUgIERTSSBzaG9ydCBwYWNrZXQgZGF0YSB0eXBlLgotICAqICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAcmVmIERTSV9TSE9SVF9XUklURV9QS1RfRGF0YV9UeXBlLgorICAqICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAYXJnIERTSV9TSE9SVF9XUklURV9QS1RfRGF0YV9UeXBlLgogICAqIEBwYXJhbSAgUGFyYW0xICBEU0MgY29tbWFuZCBvciBmaXJzdCBnZW5lcmljIHBhcmFtZXRlci4KLSAgKiAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAcmVmIERTSV9EQ1NfQ29tbWFuZCBvciBhCisgICogICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQGFyZyBEU0lfRENTX0NvbW1hbmQgb3IgYQogICAqICAgICAgICAgICAgICAgICBnZW5lcmljIGNvbW1hbmQgY29kZS4KICAgKiBAcGFyYW0gIFBhcmFtMiAgRFNDIHBhcmFtZXRlciBvciBzZWNvbmQgZ2VuZXJpYyBwYXJhbWV0ZXIuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCkBAIC0xNTc1LDEwICsxNjAxLDEwIEBACiAgICogICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIERTSS4KICAgKiBAcGFyYW0gIENoYW5uZWxJRCAgVmlydHVhbCBjaGFubmVsIElELgogICAqIEBwYXJhbSAgTW9kZSAgRFNJIGxvbmcgcGFja2V0IGRhdGEgdHlwZS4KLSAgKiAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBEU0lfTE9OR19XUklURV9QS1RfRGF0YV9UeXBlLgorICAqICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAYXJnIERTSV9MT05HX1dSSVRFX1BLVF9EYXRhX1R5cGUuCiAgICogQHBhcmFtICBOYlBhcmFtcyAgTnVtYmVyIG9mIHBhcmFtZXRlcnMuCiAgICogQHBhcmFtICBQYXJhbTEgIERTQyBjb21tYW5kIG9yIGZpcnN0IGdlbmVyaWMgcGFyYW1ldGVyLgotICAqICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgRFNJX0RDU19Db21tYW5kIG9yIGEKKyAgKiAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAYXJnIERTSV9EQ1NfQ29tbWFuZCBvciBhCiAgICogICAgICAgICAgICAgICAgIGdlbmVyaWMgY29tbWFuZCBjb2RlCiAgICogQHBhcmFtICBQYXJhbWV0ZXJzVGFibGUgIFBvaW50ZXIgdG8gcGFyYW1ldGVyIHZhbHVlcyB0YWJsZS4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKQEAgLTE2NjUsNyArMTY5MSw3IEBACiAgICogQHBhcmFtICBBcnJheSBwb2ludGVyIHRvIGEgYnVmZmVyIHRvIHN0b3JlIHRoZSBwYXlsb2FkIG9mIGEgcmVhZCBiYWNrIG9wZXJhdGlvbi4KICAgKiBAcGFyYW0gIFNpemUgIERhdGEgc2l6ZSB0byBiZSByZWFkIChpbiBieXRlKS4KICAgKiBAcGFyYW0gIE1vZGUgIERTSSByZWFkIHBhY2tldCBkYXRhIHR5cGUuCi0gICogICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgRFNJX1NIT1JUX1JFQURfUEtUX0RhdGFfVHlwZS4KKyAgKiAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQGFyZyBEU0lfU0hPUlRfUkVBRF9QS1RfRGF0YV9UeXBlLgogICAqIEBwYXJhbSAgRENTQ21kICBEQ1MgZ2V0L3JlYWQgY29tbWFuZC4KICAgKiBAcGFyYW0gIFBhcmFtZXRlcnNUYWJsZSAgUG9pbnRlciB0byBwYXJhbWV0ZXIgdmFsdWVzIHRhYmxlLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwpAQCAtMjEyMCw5ICsyMTQ2LDkgQEAKICAgKiBAcGFyYW0gIGhkc2kgIHBvaW50ZXIgdG8gYSBEU0lfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBEU0kuCiAgICogQHBhcmFtICBDb21tRGVsYXkgIENvbW11bmljYXRpb24gZGVsYXkgdG8gYmUgYWRqdXN0ZWQuCi0gICogICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQHJlZiBEU0lfQ29tbXVuaWNhdGlvbl9EZWxheQorICAqICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEBhcmcgRFNJX0NvbW11bmljYXRpb25fRGVsYXkKICAgKiBAcGFyYW0gIExhbmUgIHNlbGVjdCBiZXR3ZWVuIGNsb2NrIG9yIGRhdGEgbGFuZXMuCi0gICogICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgRFNJX0xhbmVfR3JvdXAKKyAgKiAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQGFyZyBEU0lfTGFuZV9Hcm91cAogICAqIEBwYXJhbSAgVmFsdWUgIEN1c3RvbSB2YWx1ZSBvZiB0aGUgc2xldy1yYXRlIG9yIGRlbGF5CiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCkBAIC0yMjYzLDEwICsyMjg5LDEwIEBACiAgICogQGJyaWVmICBDdXN0b20gbGFuZSBwaW5zIGNvbmZpZ3VyYXRpb24KICAgKiBAcGFyYW0gIGhkc2kgIHBvaW50ZXIgdG8gYSBEU0lfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBEU0kuCi0gICogQHBhcmFtICBDdXN0b21MYW5lICBGdW5jdGlvbiB0byBiZSBhcHBseWVkIG9uIHNlbGVjdGVkIGxhbmUuCi0gICogICAgICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgRFNJX0N1c3RvbUxhbmUKKyAgKiBAcGFyYW0gIEN1c3RvbUxhbmUgIEZ1bmN0aW9uIHRvIGJlIGFwcGxpZWQgb24gc2VsZWN0ZWQgbGFuZS4KKyAgKiAgICAgICAgICAgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgdmFsdWUgb2YgQGFyZyBEU0lfQ3VzdG9tTGFuZQogICAqIEBwYXJhbSAgTGFuZSAgc2VsZWN0IGJldHdlZW4gY2xvY2sgb3IgZGF0YSBsYW5lIDAgb3IgZGF0YSBsYW5lIDEuCi0gICogICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgRFNJX0xhbmVfU2VsZWN0CisgICogICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEBhcmcgRFNJX0xhbmVfU2VsZWN0CiAgICogQHBhcmFtICBTdGF0ZSAgRU5BQkxFIG9yIERJU0FCTEUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KQEAgLTIzNTIsNyArMjM3OCw3IEBACiAgICogQHBhcmFtICBoZHNpICBwb2ludGVyIHRvIGEgRFNJX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgRFNJLgogICAqIEBwYXJhbSAgVGltaW5nICBQSFkgdGltaW5nIHRvIGJlIGFkanVzdGVkLgotICAqICAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEByZWYgRFNJX1BIWV9UaW1pbmcKKyAgKiAgICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAYXJnIERTSV9QSFlfVGltaW5nCiAgICogQHBhcmFtICBTdGF0ZSAgRU5BQkxFIG9yIERJU0FCTEUKICAgKiBAcGFyYW0gIFZhbHVlICBDdXN0b20gdmFsdWUgb2YgdGhlIHRpbWluZwogICAqIEByZXR2YWwgSEFMIHN0YXR1cwpAQCAtMjUwMCw3ICsyNTI2LDcgQEAKICAgKiBAcGFyYW0gIGhkc2kgIHBvaW50ZXIgdG8gYSBEU0lfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBEU0kuCiAgICogQHBhcmFtICBMYW5lICBzZWxlY3QgYmV0d2VlbiBjbG9jayBvciBkYXRhIGxhbmVzLgotICAqICAgICAgICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGFueSB2YWx1ZSBvZiBAcmVmIERTSV9MYW5lX0dyb3VwCisgICogICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYW55IHZhbHVlIG9mIEBhcmcgRFNJX0xhbmVfR3JvdXAKICAgKiBAcGFyYW0gIFN0YXRlICBFTkFCTEUgb3IgRElTQUJMRQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfZXRoLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9ldGguYwppbmRleCAwZGVhMTE0Li4yMTY0MjI5IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9ldGguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9ldGguYwpAQCAtNTQzLDcgKzU0Myw3IEBACiAgIC8qIEZpbGwgZWFjaCBETUFUeERlc2MgZGVzY3JpcHRvciB3aXRoIHRoZSByaWdodCB2YWx1ZXMgKi8gICAKICAgZm9yKGk9MDsgaSA8IFR4QnVmZkNvdW50OyBpKyspCiAgIHsKLSAgICAvKiBHZXQgdGhlIHBvaW50ZXIgb24gdGhlIGl0aCBtZW1iZXIgb2YgdGhlIFR4IERlc2MgbGlzdCAqLworICAgIC8qIEdldCB0aGUgcG9pbnRlciBvbiB0aGUgbWVtYmVyIChpKSBvZiB0aGUgVHggRGVzYyBsaXN0ICovCiAgICAgZG1hdHhkZXNjID0gRE1BVHhEZXNjVGFiICsgaTsKICAgICAKICAgICAvKiBTZXQgU2Vjb25kIEFkZHJlc3MgQ2hhaW5lZCBiaXQgKi8KQEAgLTYxMCw3ICs2MTAsNyBAQAogICAvKiBGaWxsIGVhY2ggRE1BUnhEZXNjIGRlc2NyaXB0b3Igd2l0aCB0aGUgcmlnaHQgdmFsdWVzICovCiAgIGZvcihpPTA7IGkgPCBSeEJ1ZmZDb3VudDsgaSsrKQogICB7Ci0gICAgLyogR2V0IHRoZSBwb2ludGVyIG9uIHRoZSBpdGggbWVtYmVyIG9mIHRoZSBSeCBEZXNjIGxpc3QgKi8KKyAgICAvKiBHZXQgdGhlIHBvaW50ZXIgb24gdGhlIG1lbWJlciAoaSkgb2YgdGhlIFJ4IERlc2MgbGlzdCAqLwogICAgIERNQVJ4RGVzYyA9IERNQVJ4RGVzY1RhYitpOwogICAgIAogICAgIC8qIFNldCBPd24gYml0IG9mIHRoZSBSeCBkZXNjcmlwdG9yIFN0YXR1cyAqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfZmxhc2guYyBiL1NyYy9zdG0zMmY3eHhfaGFsX2ZsYXNoLmMKaW5kZXggOWNiNTY5ZS4uY2M4OTMyZSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfZmxhc2guYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9mbGFzaC5jCkBAIC02NjAsOCArNjYwLDEzIEBACiAgIEZMQVNILT5DUiB8PSBGTEFTSF9QU0laRV9ET1VCTEVfV09SRDsKICAgRkxBU0gtPkNSIHw9IEZMQVNIX0NSX1BHOwogCi0gIC8qIFByb2dyYW0gdGhlIGRvdWJsZS13b3JkICovCisgIC8qIFByb2dyYW0gZmlyc3Qgd29yZCAqLwogICAqKF9fSU8gdWludDMyX3QqKUFkZHJlc3MgPSAodWludDMyX3QpRGF0YTsKKyAgLyogQmFycmllciB0byBlbnN1cmUgcHJvZ3JhbW1pbmcgaXMgcGVyZm9ybWVkIGluIDIgc3RlcHMsIGluIHJpZ2h0IG9yZGVyCisgICAgKGluZGVwZW5kZW50bHkgb2YgY29tcGlsZXIgb3B0aW1pemF0aW9uIGJlaGF2aW9yKSAqLworICBfX0lTQigpOworCisgIC8qIFByb2dyYW0gc2Vjb25kIHdvcmQgKi8KICAgKihfX0lPIHVpbnQzMl90KikoQWRkcmVzcys0KSA9ICh1aW50MzJfdCkoRGF0YSA+PiAzMik7CiAKICAgLyogRGF0YSBzeW5jaHJvbm91cyBCYXJyaWVyIChEU0IpIEp1c3QgYWZ0ZXIgdGhlIHdyaXRlIG9wZXJhdGlvbgpAQCAtNjczLDcgKzY3OCw3IEBACiAvKioKICAgKiBAYnJpZWYgIFByb2dyYW0gd29yZCAoMzItYml0KSBhdCBhIHNwZWNpZmllZCBhZGRyZXNzLgogICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVzZWQgd2hlbiB0aGUgZGV2aWNlIHZvbHRhZ2UgcmFuZ2UgaXMgZnJvbQotICAqICAgICAgICAgMi43ViB0byAzLjZWLgorICAqICAgICAgICAgMi43ViB0byAzLjNWLgogICAqCiAgICogQG5vdGUgICBJZiBhbiBlcmFzZSBhbmQgYSBwcm9ncmFtIG9wZXJhdGlvbnMgYXJlIHJlcXVlc3RlZCBzaW11bHRhbmVvdXNseSwgICAgCiAgICogICAgICAgICB0aGUgZXJhc2Ugb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBiZWZvcmUgdGhlIHByb2dyYW0gb25lLgpAQCAtNzAyLDcgKzcwNyw3IEBACiAvKioKICAgKiBAYnJpZWYgIFByb2dyYW0gYSBoYWxmLXdvcmQgKDE2LWJpdCkgYXQgYSBzcGVjaWZpZWQgYWRkcmVzcy4KICAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSB1c2VkIHdoZW4gdGhlIGRldmljZSB2b2x0YWdlIHJhbmdlIGlzIGZyb20KLSAgKiAgICAgICAgIDIuN1YgdG8gMy42Vi4KKyAgKiAgICAgICAgIDIuMVYgdG8gMy42Vi4KICAgKgogICAqIEBub3RlICAgSWYgYW4gZXJhc2UgYW5kIGEgcHJvZ3JhbSBvcGVyYXRpb25zIGFyZSByZXF1ZXN0ZWQgc2ltdWx0YW5lb3VzbHksICAgIAogICAqICAgICAgICAgdGhlIGVyYXNlIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgYmVmb3JlIHRoZSBwcm9ncmFtIG9uZS4KQEAgLTczMiw3ICs3MzcsNyBAQAogLyoqCiAgICogQGJyaWVmICBQcm9ncmFtIGJ5dGUgKDgtYml0KSBhdCBhIHNwZWNpZmllZCBhZGRyZXNzLgogICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHVzZWQgd2hlbiB0aGUgZGV2aWNlIHZvbHRhZ2UgcmFuZ2UgaXMgZnJvbQotICAqICAgICAgICAgMi43ViB0byAzLjZWLgorICAqICAgICAgICAgMS43ViB0byAzLjZWLgogICAqCiAgICogQG5vdGUgICBJZiBhbiBlcmFzZSBhbmQgYSBwcm9ncmFtIG9wZXJhdGlvbnMgYXJlIHJlcXVlc3RlZCBzaW11bHRhbmVvdXNseSwgICAgCiAgICogICAgICAgICB0aGUgZXJhc2Ugb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBiZWZvcmUgdGhlIHByb2dyYW0gb25lLgpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfZ3Bpby5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfZ3Bpby5jCmluZGV4IDc1ZTRiNWIuLmM5ZDRjMTIgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX2dwaW8uYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9ncGlvLmMKQEAgLTQyOCwxNyArNDI4LDE2IEBACiAgICovCiB2b2lkIEhBTF9HUElPX1RvZ2dsZVBpbihHUElPX1R5cGVEZWYqIEdQSU94LCB1aW50MTZfdCBHUElPX1BpbikKIHsKKyAgdWludDMyX3Qgb2RyOworCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19HUElPX1BJTihHUElPX1BpbikpOwogCi0gIGlmICgoR1BJT3gtPk9EUiAmIEdQSU9fUGluKSAhPSAwWDAwdSkKLSAgewotICAgIEdQSU94LT5CU1JSID0gKHVpbnQzMl90KUdQSU9fUGluIDw8IEdQSU9fTlVNQkVSOwotICB9Ci0gIGVsc2UKLSAgewotICAgIEdQSU94LT5CU1JSID0gKHVpbnQzMl90KUdQSU9fUGluOwotICB9CisgIC8qIGdldCBjdXJyZW50IE91dHB1dCBEYXRhIFJlZ2lzdGVyIHZhbHVlICovCisgIG9kciA9IEdQSU94LT5PRFI7CisKKyAgLyogU2V0IHNlbGVjdGVkIHBpbnMgdGhhdCB3ZXJlIGF0IGxvdyBsZXZlbCwgYW5kIHJlc2V0IG9uZXMgdGhhdCB3ZXJlIGhpZ2ggKi8KKyAgR1BJT3gtPkJTUlIgPSAoKG9kciAmIEdQSU9fUGluKSA8PCBHUElPX05VTUJFUikgfCAofm9kciAmIEdQSU9fUGluKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9oYXNoLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9oYXNoLmMKaW5kZXggYzc1MmVmYS4uNTIxZTM5NSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfaGFzaC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX2hhc2guYwpAQCAtMzQsNyArMzQsNyBAQAogICAgICAgICAgICAgKCsrKykgQXNzb2NpYXRlIHRoZSBpbml0aWFsaXplZCBETUEgaGFuZGxlIHRvIHRoZSBIQVNIIERNQSBoYW5kbGUKICAgICAgICAgICAgICAgICB1c2luZyAgX19IQUxfTElOS0RNQSgpCiAgICAgICAgICAgICAoKysrKSBDb25maWd1cmUgdGhlIHByaW9yaXR5IGFuZCBlbmFibGUgdGhlIE5WSUMgZm9yIHRoZSB0cmFuc2ZlciBjb21wbGV0ZQotICAgICAgICAgICAgICAgIGludGVycnVwdCBvbiB0aGUgRE1BIFN0cmVhbTogdXNlCisgICAgICAgICAgICAgICAgaW50ZXJydXB0IG9uIHRoZSBETUEgc3RyZWFtOiB1c2UKICAgICAgICAgICAgICAgICAgSEFMX05WSUNfU2V0UHJpb3JpdHkoKSBhbmQKICAgICAgICAgICAgICAgICAgSEFMX05WSUNfRW5hYmxlSVJRKCkKIApAQCAtNzEsMTAgKzcxLDExIEBACiAgICAgICAgICAgICAgd2VsbCB0aGUgY29tcHV0ZWQgZGlnZXN0LgogCiAgICAgICAgICgjIykgSW4gRE1BIG1vZGUsIG11bHRpLWJ1ZmZlciBIQVNIIGFuZCBITUFDIHByb2Nlc3NpbmcgYXJlIHBvc3NpYmxlLgotICAgICAgICAgICAgICAoKysrKSBIQVNIIHByb2Nlc3Npbmc6IG9uY2UgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSwgTURNQVQgYml0IG11c3QgYmUgc2V0IHRocnUgX19IQUxfSEFTSF9TRVRfTURNQVQoKSBtYWNyby4KLSAgICAgICAgICAgICBGcm9tIHRoYXQgcG9pbnQsIGVhY2ggYnVmZmVyIGNhbiBiZSBmZWQgdG8gdGhlIFBlcmlwaGVyYWwgdGhydSBIQUxfSEFTSF94eHhfU3RhcnRfRE1BKCkgQVBJLgorICAgICAgICAgICAgICAoKysrKSBIQVNIIHByb2Nlc3Npbmc6IG9uY2UgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSwgTURNQVQgYml0IG11c3QgYmUgc2V0CisgICAgICAgICAgICAgICB0aHJvdWdoIF9fSEFMX0hBU0hfU0VUX01ETUFUKCkgbWFjcm8uCisgICAgICAgICAgICAgRnJvbSB0aGF0IHBvaW50LCBlYWNoIGJ1ZmZlciBjYW4gYmUgZmVkIHRvIHRoZSBQZXJpcGhlcmFsIHRocm91Z2ggSEFMX0hBU0hfeHh4X1N0YXJ0X0RNQSgpIEFQSS4KICAgICAgICAgICAgICBCZWZvcmUgZW50ZXJpbmcgdGhlIGxhc3QgYnVmZmVyLCByZXNldCB0aGUgTURNQVQgYml0IHdpdGggX19IQUxfSEFTSF9SRVNFVF9NRE1BVCgpCi0gICAgICAgICAgICAgbWFjcm8gdGhlbiB3cmFwLXVwIHRoZSBIQVNIIHByb2Nlc3NpbmcgaW4gZmVlZGluZyB0aGUgbGFzdCBpbnB1dCBidWZmZXIgdGhydSB0aGUKKyAgICAgICAgICAgICBtYWNybyB0aGVuIHdyYXAtdXAgdGhlIEhBU0ggcHJvY2Vzc2luZyBpbiBmZWVkaW5nIHRoZSBsYXN0IGlucHV0IGJ1ZmZlciB0aHJvdWdoIHRoZQogICAgICAgICAgICAgIHNhbWUgQVBJIEhBTF9IQVNIX3h4eF9TdGFydF9ETUEoKS4gVGhlIGRpZ2VzdCBjYW4gdGhlbiBiZSByZXRyaWV2ZWQgd2l0aCBhIGNhbGwgdG8KICAgICAgICAgICAgICBBUEkgSEFMX0hBU0hfeHh4X0ZpbmlzaCgpLgogICAgICAgICAgICAgICgrKyspIEhNQUMgcHJvY2Vzc2luZyAocmVxdWlyZXMgdG8gcmVzb3J0IHRvIGV4dGVuZGVkIGZ1bmN0aW9ucyk6CkBAIC0xMTksMjUgKzEyMCwyNyBAQAogICAgICAgICBhbmQgbm90IGV4dHJhIGJpdHMuCiAKICAgICAgICAgKCMjKSBJZiB1c2VyIG5lZWRzIHRvIHBlcmZvcm0gYSBoYXNoIGNvbXB1dGF0aW9uIG9mIGEgbGFyZ2UgaW5wdXQgYnVmZmVyIHRoYXQgaXMgc3ByZWFkIGFyb3VuZCB2YXJpb3VzIHBsYWNlcwotICAgICAgICBpbiBtZW1vcnkgYW5kIHdoZXJlIGVhY2ggcGllY2Ugb2YgdGhpcyBpbnB1dCBidWZmZXIgaXMgbm90IG5lY2Vzc2FyaWx5IGEgbXVsdGlwbGUgb2YgNCBieXRlcyBpbiBzaXplLCBpdAotICAgICAgICBiZWNvbWVzIG5lY2Vzc2FyeSB0byB1c2UgYSB0ZW1wb3JhcnkgYnVmZmVyIHRvIGZvcm1hdCB0aGUgZGF0YSBhY2NvcmRpbmdseSBiZWZvcmUgZmVlZGluZyB0aGVtIHRvIHRoZSBQZXJpcGhlcmFsLgorICAgICAgICBpbiBtZW1vcnkgYW5kIHdoZXJlIGVhY2ggcGllY2Ugb2YgdGhpcyBpbnB1dCBidWZmZXIgaXMgbm90IG5lY2Vzc2FyaWx5IGEgbXVsdGlwbGUgb2YgNCBieXRlcyBpbiBzaXplLCBpdCBiZWNvbWVzCisgICAgICAgIG5lY2Vzc2FyeSB0byB1c2UgYSB0ZW1wb3JhcnkgYnVmZmVyIHRvIGZvcm1hdCB0aGUgZGF0YSBhY2NvcmRpbmdseSBiZWZvcmUgZmVlZGluZyB0aGVtIHRvIHRoZSBQZXJpcGhlcmFsLgogICAgICAgICBJdCBpcyBhZHZpc2VkIHRvIHRoZSB1c2VyIHRvCiAgICAgICAgKCsrKykgYWNoaWV2ZSB0aGUgZmlyc3QgZm9ybWF0dGluZyBvcGVyYXRpb24gYnkgc29mdHdhcmUgdGhlbiBlbnRlciB0aGUgZGF0YQotICAgICAgICgrKyspIHdoaWxlIHRoZSBQZXJpcGhlcmFsIGlzIHByb2Nlc3NpbmcgdGhlIGZpcnN0IGlucHV0IHNldCwgY2Fycnkgb3V0IHRoZSBzZWNvbmQgZm9ybWF0dGluZyBvcGVyYXRpb24gYnkgc29mdHdhcmUsIHRvIGJlIHJlYWR5IHdoZW4gRElOSVMgb2NjdXJzLgorICAgICAgICgrKyspIHdoaWxlIHRoZSBQZXJpcGhlcmFsIGlzIHByb2Nlc3NpbmcgdGhlIGZpcnN0IGlucHV0IHNldCwgY2Fycnkgb3V0IHRoZSBzZWNvbmQgZm9ybWF0dGluZworICAgICAgICBvcGVyYXRpb24gYnkgc29mdHdhcmUsIHRvIGJlIHJlYWR5IHdoZW4gRElOSVMgb2NjdXJzLgogICAgICAgICgrKyspIHJlcGVhdCBzdGVwIDIgdW50aWwgdGhlIHdob2xlIG1lc3NhZ2UgaXMgcHJvY2Vzc2VkLgogCiAgICAgIFsuLl0KICAgICAgICgjKSBIQUwgaW4gRE1BIG1vZGUKIAogICAgICAgICAoIyMpIEFnYWluLCBkdWUgdG8gaGFyZHdhcmUgZGVzaWduLCB0aGUgRE1BIHRyYW5zZmVyIHRvIGZlZWQgdGhlIGRhdGEgY2FuIG9ubHkgYmUgZG9uZSBvbiBhIHdvcmQtYmFzaXMuCi0gICAgICAgIFRoZSBzYW1lIGZpZWxkIGRlc2NyaWJlZCBhYm92ZSBpbiBIQVNIX1NUUiBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggYml0cyB0byBkaXNjYXJkIGF0IHRoZSBlbmQgb2YgdGhlIERNQSB0cmFuc2ZlcgotICAgICAgICB0byBwcm9jZXNzIG9ubHkgdGhlIG1lc3NhZ2UgYml0cyBhbmQgbm90IGV4dHJhIGJpdHMuIER1ZSB0byBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbiwgdGhpcyBpcyBwb3NzaWJsZSBvbmx5IGF0IHRoZQotICAgICAgICBlbmQgb2YgdGhlIGNvbXBsZXRlIG1lc3NhZ2UuIFdoZW4gc2V2ZXJhbCBETUEgdHJhbnNmZXJzIGFyZSBuZWVkZWQgdG8gZW50ZXIgdGhlIG1lc3NhZ2UsIHRoaXMgaXMgbm90IGFwcGxpY2FibGUgYXQKLSAgICAgICAgdGhlIGVuZCBvZiB0aGUgaW50ZXJtZWRpYXJ5IHRyYW5zZmVycy4KKyAgICAgICAgVGhlIHNhbWUgZmllbGQgZGVzY3JpYmVkIGFib3ZlIGluIEhBU0hfU1RSIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCBiaXRzIHRvIGRpc2NhcmQgYXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAgRE1BIHRyYW5zZmVyIHRvIHByb2Nlc3Mgb25seSB0aGUgbWVzc2FnZSBiaXRzIGFuZCBub3QgZXh0cmEgYml0cy4gRHVlIHRvIGhhcmR3YXJlIGltcGxlbWVudGF0aW9uLAorICAgICAgICB0aGlzIGlzIHBvc3NpYmxlIG9ubHkgYXQgdGhlIGVuZCBvZiB0aGUgY29tcGxldGUgbWVzc2FnZS4gV2hlbiBzZXZlcmFsIERNQSB0cmFuc2ZlcnMgYXJlIG5lZWRlZCB0bworICAgICAgICBlbnRlciB0aGUgbWVzc2FnZSwgdGhpcyBpcyBub3QgYXBwbGljYWJsZSBhdCB0aGUgZW5kIG9mIHRoZSBpbnRlcm1lZGlhcnkgdHJhbnNmZXJzLgogCi0gICAgICAgICgjIykgU2ltaWxhcmx5IHRvIHRoZSBpbnRlcnJ1cHRpb24tZHJpdmVuIG1vZGUsIGl0IGlzIHN1Z2dlc3RlZCB0byB0aGUgdXNlciB0byBmb3JtYXQgdGhlIGNvbnNlY3V0aXZlIGNodW5rcyBvZiBkYXRhCi0gICAgICAgIGJ5IHNvZnR3YXJlIHdoaWxlIHRoZSBETUEgdHJhbnNmZXIgYW5kIHByb2Nlc3NpbmcgaXMgb24tZ29pbmcgZm9yIHRoZSBmaXJzdCBwYXJ0cyBvZiB0aGUgbWVzc2FnZS4gRHVlIHRvIHRoZSAzMi1iaXQgYWxpZ25tZW50Ci0gICAgICAgIHJlcXVpcmVkIGZvciB0aGUgRE1BIHRyYW5zZmVyLCBpdCBpcyB1bmRlcmxpbmVkIHRoYXQgdGhlIHNvZnR3YXJlIGZvcm1hdHRpbmcgb3BlcmF0aW9uIGlzIG1vcmUgY29tcGxleCB0aGFuIGluIHRoZSBJVCBtb2RlLgorICAgICAgICAoIyMpIFNpbWlsYXJseSB0byB0aGUgaW50ZXJydXB0aW9uLWRyaXZlbiBtb2RlLCBpdCBpcyBzdWdnZXN0ZWQgdG8gdGhlIHVzZXIgdG8gZm9ybWF0IHRoZSBjb25zZWN1dGl2ZQorICAgICAgICBjaHVua3Mgb2YgZGF0YSBieSBzb2Z0d2FyZSB3aGlsZSB0aGUgRE1BIHRyYW5zZmVyIGFuZCBwcm9jZXNzaW5nIGlzIG9uLWdvaW5nIGZvciB0aGUgZmlyc3QgcGFydHMgb2YKKyAgICAgICAgdGhlIG1lc3NhZ2UuIER1ZSB0byB0aGUgMzItYml0IGFsaWdubWVudCByZXF1aXJlZCBmb3IgdGhlIERNQSB0cmFuc2ZlciwgaXQgaXMgdW5kZXJsaW5lZCB0aGF0IHRoZQorICAgICAgICBzb2Z0d2FyZSBmb3JtYXR0aW5nIG9wZXJhdGlvbiBpcyBtb3JlIGNvbXBsZXggdGhhbiBpbiB0aGUgSVQgbW9kZS4KIAogICAgICAqKiogQ2FsbGJhY2sgcmVnaXN0cmF0aW9uICoqKgogICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMjcwLDcgKzI3Myw4IEBACiBzdGF0aWMgdm9pZCBIQVNIX0RNQVhmZXJDcGx0KERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKTsKIHN0YXRpYyB2b2lkIEhBU0hfRE1BRXJyb3IoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpOwogc3RhdGljIHZvaWQgSEFTSF9HZXREaWdlc3QodWludDhfdCAqcE1zZ0RpZ2VzdCwgdWludDhfdCBTaXplKTsKLXN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBIQVNIX1dhaXRPbkZsYWdVbnRpbFRpbWVvdXQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDMyX3QgRmxhZywgRmxhZ1N0YXR1cyBTdGF0dXMsIHVpbnQzMl90IFRpbWVvdXQpOworc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEhBU0hfV2FpdE9uRmxhZ1VudGlsVGltZW91dChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50MzJfdCBGbGFnLCBGbGFnU3RhdHVzIFN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgVGltZW91dCk7CiBzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSEFTSF9Xcml0ZURhdGEoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplKTsKIHN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBIQVNIX0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gpOwogc3RhdGljIHVpbnQzMl90IEhBU0hfV3JpdGVfQmxvY2tfRGF0YShIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoKTsKQEAgLTI4NCw4ICsyODgsOCBAQAogICAqLwogCiAvKiogQGRlZmdyb3VwIEhBU0hfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMSBJbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zCi0gKiAgQGJyaWVmICAgIEluaXRpYWxpemF0aW9uLCBjb25maWd1cmF0aW9uIGFuZCBjYWxsLWJhY2sgZnVuY3Rpb25zLgotICoKKyAgKiAgQGJyaWVmICAgIEluaXRpYWxpemF0aW9uLCBjb25maWd1cmF0aW9uIGFuZCBjYWxsLWJhY2sgZnVuY3Rpb25zLgorICAqCiBAdmVyYmF0aW0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICMjIyMjIEluaXRpYWxpemF0aW9uIGFuZCBkZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgIyMjIyMKQEAgLTMyNCwxMSArMzI4LDExIEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9Jbml0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gpCiB7CiAgIC8qIENoZWNrIHRoZSBoYXNoIGhhbmRsZSBhbGxvY2F0aW9uICovCi0gIGlmKGhoYXNoID09IE5VTEwpCisgIGlmIChoaGFzaCA9PSBOVUxMKQogICB7CiAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQotICAKKwogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfSEFTSF9EQVRBVFlQRShoaGFzaC0+SW5pdC5EYXRhVHlwZSkpOwogCkBAIC0zNDAsOSArMzQ0LDEwIEBACiAKICAgICAvKiBSZXNldCBDYWxsYmFjayBwb2ludGVycyBpbiBIQUxfSEFTSF9TVEFURV9SRVNFVCBvbmx5ICovCiAgICAgaGhhc2gtPkluQ3BsdENhbGxiYWNrID0gIEhBTF9IQVNIX0luQ3BsdENhbGxiYWNrOyAgICAgLyogTGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIGlucHV0IGNvbXBsZXRpb24gY2FsbGJhY2sgKi8KLSAgICBoaGFzaC0+RGdzdENwbHRDYWxsYmFjayA9ICBIQUxfSEFTSF9EZ3N0Q3BsdENhbGxiYWNrOyAvKiBMZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgZGlnZXN0IGNvbXB1dGF0aW9uIGNvbXBsZXRpb24gY2FsbGJhY2sgKi8KKyAgICBoaGFzaC0+RGdzdENwbHRDYWxsYmFjayA9ICBIQUxfSEFTSF9EZ3N0Q3BsdENhbGxiYWNrOyAvKiBMZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgZGlnZXN0IGNvbXB1dGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbiBjYWxsYmFjayAqLwogICAgIGhoYXNoLT5FcnJvckNhbGxiYWNrID0gIEhBTF9IQVNIX0Vycm9yQ2FsbGJhY2s7ICAgICAgIC8qIExlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBlcnJvciBjYWxsYmFjayAqLwotICAgIGlmKGhoYXNoLT5Nc3BJbml0Q2FsbGJhY2sgPT0gTlVMTCkKKyAgICBpZiAoaGhhc2gtPk1zcEluaXRDYWxsYmFjayA9PSBOVUxMKQogICAgIHsKICAgICAgIGhoYXNoLT5Nc3BJbml0Q2FsbGJhY2sgPSBIQUxfSEFTSF9Nc3BJbml0OwogICAgIH0KQEAgLTM1MSw3ICszNTYsNyBAQAogICAgIGhoYXNoLT5Nc3BJbml0Q2FsbGJhY2soaGhhc2gpOwogICB9CiAjZWxzZQotICBpZihoaGFzaC0+U3RhdGUgPT0gSEFMX0hBU0hfU1RBVEVfUkVTRVQpCisgIGlmIChoaGFzaC0+U3RhdGUgPT0gSEFMX0hBU0hfU1RBVEVfUkVTRVQpCiAgIHsKICAgICAvKiBBbGxvY2F0ZSBsb2NrIHJlc291cmNlIGFuZCBpbml0aWFsaXplIGl0ICovCiAgICAgaGhhc2gtPkxvY2sgPSBIQUxfVU5MT0NLRUQ7CkBAIC0zNjEsNyArMzY2LDcgQEAKICAgfQogI2VuZGlmIC8qIChVU0VfSEFMX0hBU0hfUkVHSVNURVJfQ0FMTEJBQ0tTKSAqLwogCi0gICAgLyogQ2hhbmdlIHRoZSBIQVNIIHN0YXRlICovCisgIC8qIENoYW5nZSB0aGUgSEFTSCBzdGF0ZSAqLwogICBoaGFzaC0+U3RhdGUgPSBIQUxfSEFTSF9TVEFURV9CVVNZOwogCiAgIC8qIFJlc2V0IEhhc2hJbkNvdW50LCBIYXNoSVRDb3VudGVyLCBIYXNoQnVmZlNpemUgYW5kIE5iV29yZHNBbHJlYWR5UHVzaGVkICovCkBAIC0zNzksNyArMzg0LDcgQEAKICAgLyogU2V0IHRoZSBkYXRhIHR5cGUgYml0ICovCiAgIE1PRElGWV9SRUcoSEFTSC0+Q1IsIEhBU0hfQ1JfREFUQVRZUEUsIGhoYXNoLT5Jbml0LkRhdGFUeXBlKTsKICAgLyogUmVzZXQgTURNQVQgYml0ICovCi1fX0hBTF9IQVNIX1JFU0VUX01ETUFUKCk7CisgIF9fSEFMX0hBU0hfUkVTRVRfTURNQVQoKTsKICAgLyogUmVzZXQgSEFTSCBoYW5kbGUgc3RhdHVzICovCiAgIGhoYXNoLT5TdGF0dXMgPSBIQUxfT0s7CiAKQEAgLTQwMSw3ICs0MDYsNyBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfRGVJbml0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gpCiB7CiAgIC8qIENoZWNrIHRoZSBIQVNIIGhhbmRsZSBhbGxvY2F0aW9uICovCi0gIGlmKGhoYXNoID09IE5VTEwpCisgIGlmIChoaGFzaCA9PSBOVUxMKQogICB7CiAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQpAQCAtNDIwLDEzICs0MjUsMTMgQEAKICAgaGhhc2gtPkRpZ2VzdENhbGN1bGF0aW9uRGlzYWJsZSA9IFJFU0VUOwogCiAjaWYgKFVTRV9IQUxfSEFTSF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSAgICBpZihoaGFzaC0+TXNwRGVJbml0Q2FsbGJhY2sgPT0gTlVMTCkKLSAgICB7Ci0gICAgICBoaGFzaC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfSEFTSF9Nc3BEZUluaXQ7Ci0gICAgfQorICBpZiAoaGhhc2gtPk1zcERlSW5pdENhbGxiYWNrID09IE5VTEwpCisgIHsKKyAgICBoaGFzaC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfSEFTSF9Nc3BEZUluaXQ7CisgIH0KIAotICAgIC8qIERlSW5pdCB0aGUgbG93IGxldmVsIGhhcmR3YXJlICovCi0gICAgaGhhc2gtPk1zcERlSW5pdENhbGxiYWNrKGhoYXNoKTsKKyAgLyogRGVJbml0IHRoZSBsb3cgbGV2ZWwgaGFyZHdhcmUgKi8KKyAgaGhhc2gtPk1zcERlSW5pdENhbGxiYWNrKGhoYXNoKTsKICNlbHNlCiAgIC8qIERlSW5pdCB0aGUgbG93IGxldmVsIGhhcmR3YXJlOiBDTE9DSywgTlZJQyAqLwogICBIQUxfSEFTSF9Nc3BEZUluaXQoaGhhc2gpOwpAQCAtNDgzLDcgKzQ4OCw3IEBACiAgICogQGJyaWVmICBJbnB1dCBkYXRhIHRyYW5zZmVyIGNvbXBsZXRlIGNhbGwgYmFjay4KICAgKiBAbm90ZSAgIEhBTF9IQVNIX0luQ3BsdENhbGxiYWNrKCkgaXMgY2FsbGVkIHdoZW4gdGhlIGNvbXBsZXRlIGlucHV0IG1lc3NhZ2UKICAgKiAgICAgICAgIGhhcyBiZWVuIGZlZCB0byB0aGUgUGVyaXBoZXJhbC4gVGhpcyBBUEkgaXMgaW52b2tlZCBvbmx5IHdoZW4gaW5wdXQgZGF0YSBhcmUKLSAgKiAgICAgICAgIGVudGVyZWQgdW5kZXIgaW50ZXJydXB0aW9uIG9yIHRocnUgRE1BLgorICAqICAgICAgICAgZW50ZXJlZCB1bmRlciBpbnRlcnJ1cHRpb24gb3IgdGhyb3VnaCBETUEuCiAgICogQG5vdGUgICBJbiBjYXNlIG9mIEhBU0ggb3IgSE1BQyBtdWx0aS1idWZmZXIgRE1BIGZlZWRpbmcgY2FzZSAoTURNQVQgYml0IHNldCksCiAgICogICAgICAgICBIQUxfSEFTSF9JbkNwbHRDYWxsYmFjaygpIGlzIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGVhY2ggYnVmZmVyIGZlZWRpbmcKICAgKiAgICAgICAgIHRvIHRoZSBQZXJpcGhlcmFsLgpAQCAtNTQ5LDExICs1NTQsMTIgQEAKICAgKiBAcGFyYW0gcENhbGxiYWNrIHBvaW50ZXIgdG8gdGhlIENhbGxiYWNrIGZ1bmN0aW9uCiAgICogQHJldHZhbCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX1JlZ2lzdGVyQ2FsbGJhY2soSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgSEFMX0hBU0hfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCwgcEhBU0hfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX1JlZ2lzdGVyQ2FsbGJhY2soSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgSEFMX0hBU0hfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEhBU0hfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogCi0gIGlmKHBDYWxsYmFjayA9PSBOVUxMKQorICBpZiAocENhbGxiYWNrID09IE5VTEwpCiAgIHsKICAgICAvKiBVcGRhdGUgdGhlIGVycm9yIGNvZGUgKi8KICAgICBoaGFzaC0+RXJyb3JDb2RlIHw9IEhBTF9IQVNIX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0s7CkBAIC01NjIsNjQgKzU2OCw2NCBAQAogICAvKiBQcm9jZXNzIGxvY2tlZCAqLwogICBfX0hBTF9MT0NLKGhoYXNoKTsKIAotICBpZihIQUxfSEFTSF9TVEFURV9SRUFEWSA9PSBoaGFzaC0+U3RhdGUpCisgIGlmIChIQUxfSEFTSF9TVEFURV9SRUFEWSA9PSBoaGFzaC0+U3RhdGUpCiAgIHsKICAgICBzd2l0Y2ggKENhbGxiYWNrSUQpCiAgICAgewotICAgIGNhc2UgSEFMX0hBU0hfSU5QVVRDUExUX0NCX0lEIDoKLSAgICAgIGhoYXNoLT5JbkNwbHRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfSEFTSF9JTlBVVENQTFRfQ0JfSUQgOgorICAgICAgICBoaGFzaC0+SW5DcGx0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7CisgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBIQUxfSEFTSF9ER1NUQ1BMVF9DQl9JRCA6Ci0gICAgICBoaGFzaC0+RGdzdENwbHRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfSEFTSF9ER1NUQ1BMVF9DQl9JRCA6CisgICAgICAgIGhoYXNoLT5EZ3N0Q3BsdENhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSEFMX0hBU0hfRVJST1JfQ0JfSUQgOgotICAgICAgaGhhc2gtPkVycm9yQ2FsbGJhY2sgPSBwQ2FsbGJhY2s7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0hBU0hfRVJST1JfQ0JfSUQgOgorICAgICAgICBoaGFzaC0+RXJyb3JDYWxsYmFjayA9IHBDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIEhBTF9IQVNIX01TUElOSVRfQ0JfSUQgOgotICAgICAgaGhhc2gtPk1zcEluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfSEFTSF9NU1BJTklUX0NCX0lEIDoKKyAgICAgICAgaGhhc2gtPk1zcEluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIEhBTF9IQVNIX01TUERFSU5JVF9DQl9JRCA6Ci0gICAgICBoaGFzaC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0hBU0hfTVNQREVJTklUX0NCX0lEIDoKKyAgICAgICAgaGhhc2gtPk1zcERlSW5pdENhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKIAotICAgIGRlZmF1bHQgOgotICAgICAvKiBVcGRhdGUgdGhlIGVycm9yIGNvZGUgKi8KLSAgICAgaGhhc2gtPkVycm9yQ29kZSB8PSBIQUxfSEFTSF9FUlJPUl9JTlZBTElEX0NBTExCQUNLOwotICAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLwotICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKLSAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdCA6CisgICAgICAgIC8qIFVwZGF0ZSB0aGUgZXJyb3IgY29kZSAqLworICAgICAgICBoaGFzaC0+RXJyb3JDb2RlIHw9IEhBTF9IQVNIX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0s7CisgICAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCisgICAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgfQotICBlbHNlIGlmKEhBTF9IQVNIX1NUQVRFX1JFU0VUID09IGhoYXNoLT5TdGF0ZSkKKyAgZWxzZSBpZiAoSEFMX0hBU0hfU1RBVEVfUkVTRVQgPT0gaGhhc2gtPlN0YXRlKQogICB7CiAgICAgc3dpdGNoIChDYWxsYmFja0lEKQogICAgIHsKLSAgICBjYXNlIEhBTF9IQVNIX01TUElOSVRfQ0JfSUQgOgotICAgICAgaGhhc2gtPk1zcEluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfSEFTSF9NU1BJTklUX0NCX0lEIDoKKyAgICAgICAgaGhhc2gtPk1zcEluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKKyAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIEhBTF9IQVNIX01TUERFSU5JVF9DQl9JRCA6Ci0gICAgICBoaGFzaC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBwQ2FsbGJhY2s7Ci0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0hBU0hfTVNQREVJTklUX0NCX0lEIDoKKyAgICAgICAgaGhhc2gtPk1zcERlSW5pdENhbGxiYWNrID0gcENhbGxiYWNrOworICAgICAgICBicmVhazsKIAotICAgIGRlZmF1bHQgOgotICAgICAvKiBVcGRhdGUgdGhlIGVycm9yIGNvZGUgKi8KLSAgICAgaGhhc2gtPkVycm9yQ29kZSB8PSBIQUxfSEFTSF9FUlJPUl9JTlZBTElEX0NBTExCQUNLOwotICAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLwotICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKLSAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdCA6CisgICAgICAgIC8qIFVwZGF0ZSB0aGUgZXJyb3IgY29kZSAqLworICAgICAgICBoaGFzaC0+RXJyb3JDb2RlIHw9IEhBTF9IQVNIX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0s7CisgICAgICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCisgICAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgfQogICBlbHNlCiAgIHsKICAgICAvKiBVcGRhdGUgdGhlIGVycm9yIGNvZGUgKi8KLSAgICAgaGhhc2gtPkVycm9yQ29kZSB8PSBIQUxfSEFTSF9FUlJPUl9JTlZBTElEX0NBTExCQUNLOwotICAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLwotICAgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKKyAgICBoaGFzaC0+RXJyb3JDb2RlIHw9IEhBTF9IQVNIX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0s7CisgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KKyAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOwogICB9CiAKICAgLyogUmVsZWFzZSBMb2NrICovCkBAIC02NDIsNjkgKzY0OCw3MCBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfVW5SZWdpc3RlckNhbGxiYWNrKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIEhBTF9IQVNIX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQpCiB7Ci1IQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CisgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKIAogICAvKiBQcm9jZXNzIGxvY2tlZCAqLwogICBfX0hBTF9MT0NLKGhoYXNoKTsKIAotICBpZihIQUxfSEFTSF9TVEFURV9SRUFEWSA9PSBoaGFzaC0+U3RhdGUpCisgIGlmIChIQUxfSEFTSF9TVEFURV9SRUFEWSA9PSBoaGFzaC0+U3RhdGUpCiAgIHsKICAgICBzd2l0Y2ggKENhbGxiYWNrSUQpCiAgICAgewotICAgIGNhc2UgSEFMX0hBU0hfSU5QVVRDUExUX0NCX0lEIDoKLSAgICAgIGhoYXNoLT5JbkNwbHRDYWxsYmFjayA9IEhBTF9IQVNIX0luQ3BsdENhbGxiYWNrOyAgICAgLyogTGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIGlucHV0IGNvbXBsZXRpb24gY2FsbGJhY2sgKi8KLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfSEFTSF9JTlBVVENQTFRfQ0JfSUQgOgorICAgICAgICBoaGFzaC0+SW5DcGx0Q2FsbGJhY2sgPSBIQUxfSEFTSF9JbkNwbHRDYWxsYmFjazsgICAgIC8qIExlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBpbnB1dCBjb21wbGV0aW9uIGNhbGxiYWNrICovCisgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBIQUxfSEFTSF9ER1NUQ1BMVF9DQl9JRCA6Ci0gICAgICBoaGFzaC0+RGdzdENwbHRDYWxsYmFjayA9IEhBTF9IQVNIX0Rnc3RDcGx0Q2FsbGJhY2s7IC8qIExlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBkaWdlc3QgY29tcHV0YXRpb24gY29tcGxldGlvbiBjYWxsYmFjayAqLwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9IQVNIX0RHU1RDUExUX0NCX0lEIDoKKyAgICAgICAgaGhhc2gtPkRnc3RDcGx0Q2FsbGJhY2sgPSBIQUxfSEFTSF9EZ3N0Q3BsdENhbGxiYWNrOyAvKiBMZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgZGlnZXN0IGNvbXB1dGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbiBjYWxsYmFjayAqLworICAgICAgICBicmVhazsKIAotICAgIGNhc2UgSEFMX0hBU0hfRVJST1JfQ0JfSUQgOgotICAgICAgaGhhc2gtPkVycm9yQ2FsbGJhY2sgPSBIQUxfSEFTSF9FcnJvckNhbGxiYWNrOyAgICAgICAvKiBMZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgZXJyb3IgY2FsbGJhY2sgKi8KLSAgICAgIGJyZWFrOworICAgICAgY2FzZSBIQUxfSEFTSF9FUlJPUl9DQl9JRCA6CisgICAgICAgIGhoYXNoLT5FcnJvckNhbGxiYWNrID0gSEFMX0hBU0hfRXJyb3JDYWxsYmFjazsgICAgICAgLyogTGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIGVycm9yIGNhbGxiYWNrICovCisgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBIQUxfSEFTSF9NU1BJTklUX0NCX0lEIDoKLSAgICAgIGhoYXNoLT5Nc3BJbml0Q2FsbGJhY2sgPSBIQUxfSEFTSF9Nc3BJbml0OyAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIE1zcCBJbml0ICovCi0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0hBU0hfTVNQSU5JVF9DQl9JRCA6CisgICAgICAgIGhoYXNoLT5Nc3BJbml0Q2FsbGJhY2sgPSBIQUxfSEFTSF9Nc3BJbml0OyAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIE1zcCBJbml0ICovCisgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBIQUxfSEFTSF9NU1BERUlOSVRfQ0JfSUQgOgotICAgICAgaGhhc2gtPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX0hBU0hfTXNwRGVJbml0OyAgICAgICAvKiBMZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgTXNwIERlSW5pdCAqLwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9IQVNIX01TUERFSU5JVF9DQl9JRCA6CisgICAgICAgIGhoYXNoLT5Nc3BEZUluaXRDYWxsYmFjayA9IEhBTF9IQVNIX01zcERlSW5pdDsgICAgICAgLyogTGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIE1zcCBEZUluaXQgKi8KKyAgICAgICAgYnJlYWs7CiAKLSAgICBkZWZhdWx0IDoKLSAgICAgLyogVXBkYXRlIHRoZSBlcnJvciBjb2RlICovCi0gICAgIGhoYXNoLT5FcnJvckNvZGUgfD0gSEFMX0hBU0hfRVJST1JfSU5WQUxJRF9DQUxMQkFDSzsKLSAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KLSAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7Ci0gICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQgOgorICAgICAgICAvKiBVcGRhdGUgdGhlIGVycm9yIGNvZGUgKi8KKyAgICAgICAgaGhhc2gtPkVycm9yQ29kZSB8PSBIQUxfSEFTSF9FUlJPUl9JTlZBTElEX0NBTExCQUNLOworICAgICAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLworICAgICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOworICAgICAgICBicmVhazsKICAgICB9CiAgIH0KLSAgZWxzZSBpZihIQUxfSEFTSF9TVEFURV9SRVNFVCA9PSBoaGFzaC0+U3RhdGUpCisgIGVsc2UgaWYgKEhBTF9IQVNIX1NUQVRFX1JFU0VUID09IGhoYXNoLT5TdGF0ZSkKICAgewogICAgIHN3aXRjaCAoQ2FsbGJhY2tJRCkKICAgICB7Ci0gICAgY2FzZSBIQUxfSEFTSF9NU1BJTklUX0NCX0lEIDoKLSAgICAgIGhoYXNoLT5Nc3BJbml0Q2FsbGJhY2sgPSBIQUxfSEFTSF9Nc3BJbml0OyAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIE1zcCBJbml0ICovCi0gICAgICBicmVhazsKKyAgICAgIGNhc2UgSEFMX0hBU0hfTVNQSU5JVF9DQl9JRCA6CisgICAgICAgIGhoYXNoLT5Nc3BJbml0Q2FsbGJhY2sgPSBIQUxfSEFTSF9Nc3BJbml0OyAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIE1zcCBJbml0ICovCisgICAgICAgIGJyZWFrOwogCi0gICAgY2FzZSBIQUxfSEFTSF9NU1BERUlOSVRfQ0JfSUQgOgotICAgICAgaGhhc2gtPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX0hBU0hfTXNwRGVJbml0OyAgICAgICAvKiBMZWdhY3kgd2VhayAoc3VyY2hhcmdlZCkgTXNwIERlSW5pdCAqLwotICAgICAgYnJlYWs7CisgICAgICBjYXNlIEhBTF9IQVNIX01TUERFSU5JVF9DQl9JRCA6CisgICAgICAgIGhoYXNoLT5Nc3BEZUluaXRDYWxsYmFjayA9IEhBTF9IQVNIX01zcERlSW5pdDsgICAgICAgLyogTGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIE1zcCBEZUluaXQgKi8KKyAgICAgICAgYnJlYWs7CiAKLSAgICBkZWZhdWx0IDoKLSAgICAgLyogVXBkYXRlIHRoZSBlcnJvciBjb2RlICovCi0gICAgIGhoYXNoLT5FcnJvckNvZGUgfD0gSEFMX0hBU0hfRVJST1JfSU5WQUxJRF9DQUxMQkFDSzsKLSAgICAgLyogdXBkYXRlIHJldHVybiBzdGF0dXMgKi8KLSAgICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7Ci0gICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQgOgorICAgICAgICAvKiBVcGRhdGUgdGhlIGVycm9yIGNvZGUgKi8KKyAgICAgICAgaGhhc2gtPkVycm9yQ29kZSB8PSBIQUxfSEFTSF9FUlJPUl9JTlZBTElEX0NBTExCQUNLOworICAgICAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLworICAgICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOworICAgICAgICBicmVhazsKICAgICB9CiAgIH0KICAgZWxzZQogICB7Ci0gICAgIC8qIFVwZGF0ZSB0aGUgZXJyb3IgY29kZSAqLwotICAgICBoaGFzaC0+RXJyb3JDb2RlIHw9IEhBTF9IQVNIX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0s7Ci0gICAgIC8qIHVwZGF0ZSByZXR1cm4gc3RhdHVzICovCi0gICAgICBzdGF0dXMgPSAgSEFMX0VSUk9SOworICAgIC8qIFVwZGF0ZSB0aGUgZXJyb3IgY29kZSAqLworICAgIGhoYXNoLT5FcnJvckNvZGUgfD0gSEFMX0hBU0hfRVJST1JfSU5WQUxJRF9DQUxMQkFDSzsKKyAgICAvKiB1cGRhdGUgcmV0dXJuIHN0YXR1cyAqLworICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CiAgIH0KIAogICAvKiBSZWxlYXNlIExvY2sgKi8KQEAgLTcxOCw4ICs3MjUsOCBAQAogICAqLwogCiAvKiogQGRlZmdyb3VwIEhBU0hfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMiBIQVNIIHByb2Nlc3NpbmcgZnVuY3Rpb25zIGluIHBvbGxpbmcgbW9kZQotICogIEBicmllZiAgIEhBU0ggcHJvY2Vzc2luZyBmdW5jdGlvbnMgdXNpbmcgcG9sbGluZyBtb2RlLgotICoKKyAgKiAgQGJyaWVmICAgSEFTSCBwcm9jZXNzaW5nIGZ1bmN0aW9ucyB1c2luZyBwb2xsaW5nIG1vZGUuCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgIyMjIyMgUG9sbGluZyBtb2RlIEhBU0ggcHJvY2Vzc2luZyBmdW5jdGlvbnMgIyMjIyMKQEAgLTc1Nyw3ICs3NjQsOCBAQAogICAqIEBwYXJhbSAgVGltZW91dCBUaW1lb3V0IHZhbHVlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9NRDVfU3RhcnQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90KiBwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfTUQ1X1N0YXJ0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCAqcE91dEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KQogewogICByZXR1cm4gSEFTSF9TdGFydChoaGFzaCwgcEluQnVmZmVyLCBTaXplLCBwT3V0QnVmZmVyLCBUaW1lb3V0LCBIQVNIX0FMR09TRUxFQ1RJT05fTUQ1KTsKIH0KQEAgLTc4NCw3ICs3OTIsNyBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfTUQ1X0FjY21sdChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUpCiB7Ci0gIHJldHVybiAgSEFTSF9BY2N1bXVsYXRlKGhoYXNoLCBwSW5CdWZmZXIsIFNpemUsSEFTSF9BTEdPU0VMRUNUSU9OX01ENSk7CisgIHJldHVybiAgSEFTSF9BY2N1bXVsYXRlKGhoYXNoLCBwSW5CdWZmZXIsIFNpemUsIEhBU0hfQUxHT1NFTEVDVElPTl9NRDUpOwogfQogCiAvKioKQEAgLTc5Nyw3ICs4MDUsOCBAQAogICAqIEBwYXJhbSAgVGltZW91dCBUaW1lb3V0IHZhbHVlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9NRDVfQWNjbWx0X0VuZChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9NRDVfQWNjbWx0X0VuZChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KQogewogICByZXR1cm4gSEFTSF9TdGFydChoaGFzaCwgcEluQnVmZmVyLCBTaXplLCBwT3V0QnVmZmVyLCBUaW1lb3V0LCBIQVNIX0FMR09TRUxFQ1RJT05fTUQ1KTsKIH0KQEAgLTgxMyw3ICs4MjIsOCBAQAogICAqIEBwYXJhbSAgVGltZW91dCBUaW1lb3V0IHZhbHVlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9TSEExX1N0YXJ0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX1NIQTFfU3RhcnQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90ICpwT3V0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KQogewogICByZXR1cm4gSEFTSF9TdGFydChoaGFzaCwgcEluQnVmZmVyLCBTaXplLCBwT3V0QnVmZmVyLCBUaW1lb3V0LCBIQVNIX0FMR09TRUxFQ1RJT05fU0hBMSk7CiB9CkBAIC04NDAsNyArODUwLDcgQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX1NIQTFfQWNjbWx0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSkKIHsKLSAgcmV0dXJuICBIQVNIX0FjY3VtdWxhdGUoaGhhc2gsIHBJbkJ1ZmZlciwgU2l6ZSxIQVNIX0FMR09TRUxFQ1RJT05fU0hBMSk7CisgIHJldHVybiAgSEFTSF9BY2N1bXVsYXRlKGhoYXNoLCBwSW5CdWZmZXIsIFNpemUsIEhBU0hfQUxHT1NFTEVDVElPTl9TSEExKTsKIH0KIAogLyoqCkBAIC04NTMsNyArODYzLDggQEAKICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCB2YWx1ZQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfU0hBMV9BY2NtbHRfRW5kKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX1NIQTFfQWNjbWx0X0VuZChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCkKIHsKICAgcmV0dXJuIEhBU0hfU3RhcnQoaGhhc2gsIHBJbkJ1ZmZlciwgU2l6ZSwgcE91dEJ1ZmZlciwgVGltZW91dCwgSEFTSF9BTEdPU0VMRUNUSU9OX1NIQTEpOwogfQpAQCAtODYzLDggKzg3NCw4IEBACiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgSEFTSF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAzIEhBU0ggcHJvY2Vzc2luZyBmdW5jdGlvbnMgaW4gaW50ZXJydXB0IG1vZGUKLSAqICBAYnJpZWYgICBIQVNIIHByb2Nlc3NpbmcgZnVuY3Rpb25zIHVzaW5nIGludGVycnVwdCBtb2RlLgotICoKKyAgKiAgQGJyaWVmICAgSEFTSCBwcm9jZXNzaW5nIGZ1bmN0aW9ucyB1c2luZyBpbnRlcnJ1cHQgbW9kZS4KKyAgKgogQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAjIyMjIyBJbnRlcnJ1cHRpb24gbW9kZSBIQVNIIHByb2Nlc3NpbmcgZnVuY3Rpb25zICMjIyMjCkBAIC05MDAsOSArOTExLDEwIEBACiAgICogQHBhcmFtICBwT3V0QnVmZmVyIHBvaW50ZXIgdG8gdGhlIGNvbXB1dGVkIGRpZ2VzdC4gRGlnZXN0IHNpemUgaXMgMTYgYnl0ZXMuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9NRDVfU3RhcnRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90KiBwT3V0QnVmZmVyKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfTUQ1X1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwT3V0QnVmZmVyKQogewotICByZXR1cm4gSEFTSF9TdGFydF9JVChoaGFzaCwgcEluQnVmZmVyLCBTaXplLCBwT3V0QnVmZmVyLEhBU0hfQUxHT1NFTEVDVElPTl9NRDUpOworICByZXR1cm4gSEFTSF9TdGFydF9JVChoaGFzaCwgcEluQnVmZmVyLCBTaXplLCBwT3V0QnVmZmVyLCBIQVNIX0FMR09TRUxFQ1RJT05fTUQ1KTsKIH0KIAogLyoqCkBAIC05MjUsNyArOTM3LDcgQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX01ENV9BY2NtbHRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplKQogewotICByZXR1cm4gIEhBU0hfQWNjdW11bGF0ZV9JVChoaGFzaCwgcEluQnVmZmVyLCBTaXplLEhBU0hfQUxHT1NFTEVDVElPTl9NRDUpOworICByZXR1cm4gIEhBU0hfQWNjdW11bGF0ZV9JVChoaGFzaCwgcEluQnVmZmVyLCBTaXplLCBIQVNIX0FMR09TRUxFQ1RJT05fTUQ1KTsKIH0KIAogLyoqCkBAIC05MzcsOSArOTQ5LDEwIEBACiAgICogQHBhcmFtICBwT3V0QnVmZmVyIHBvaW50ZXIgdG8gdGhlIGNvbXB1dGVkIGRpZ2VzdC4gRGlnZXN0IHNpemUgaXMgMTYgYnl0ZXMuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9NRDVfQWNjbWx0X0VuZF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9NRDVfQWNjbWx0X0VuZF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwT3V0QnVmZmVyKQogewotICByZXR1cm4gSEFTSF9TdGFydF9JVChoaGFzaCwgcEluQnVmZmVyLCBTaXplLCBwT3V0QnVmZmVyLEhBU0hfQUxHT1NFTEVDVElPTl9NRDUpOworICByZXR1cm4gSEFTSF9TdGFydF9JVChoaGFzaCwgcEluQnVmZmVyLCBTaXplLCBwT3V0QnVmZmVyLCBIQVNIX0FMR09TRUxFQ1RJT05fTUQ1KTsKIH0KIAogLyoqCkBAIC05NTIsOSArOTY1LDEwIEBACiAgICogQHBhcmFtICBwT3V0QnVmZmVyIHBvaW50ZXIgdG8gdGhlIGNvbXB1dGVkIGRpZ2VzdC4gRGlnZXN0IHNpemUgaXMgMjAgYnl0ZXMuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9TSEExX1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlcikKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX1NIQTFfU3RhcnRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwT3V0QnVmZmVyKQogewotICByZXR1cm4gSEFTSF9TdGFydF9JVChoaGFzaCwgcEluQnVmZmVyLCBTaXplLCBwT3V0QnVmZmVyLEhBU0hfQUxHT1NFTEVDVElPTl9TSEExKTsKKyAgcmV0dXJuIEhBU0hfU3RhcnRfSVQoaGhhc2gsIHBJbkJ1ZmZlciwgU2l6ZSwgcE91dEJ1ZmZlciwgSEFTSF9BTEdPU0VMRUNUSU9OX1NIQTEpOwogfQogCiAKQEAgLTk3OCw3ICs5OTIsNyBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfU0hBMV9BY2NtbHRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplKQogewotICByZXR1cm4gIEhBU0hfQWNjdW11bGF0ZV9JVChoaGFzaCwgcEluQnVmZmVyLCBTaXplLEhBU0hfQUxHT1NFTEVDVElPTl9TSEExKTsKKyAgcmV0dXJuICBIQVNIX0FjY3VtdWxhdGVfSVQoaGhhc2gsIHBJbkJ1ZmZlciwgU2l6ZSwgSEFTSF9BTEdPU0VMRUNUSU9OX1NIQTEpOwogfQogCiAvKioKQEAgLTk5MCw5ICsxMDA0LDEwIEBACiAgICogQHBhcmFtICBwT3V0QnVmZmVyIHBvaW50ZXIgdG8gdGhlIGNvbXB1dGVkIGRpZ2VzdC4gRGlnZXN0IHNpemUgaXMgMjAgYnl0ZXMuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSF9TSEExX0FjY21sdF9FbmRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90KiBwT3V0QnVmZmVyKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfU0hBMV9BY2NtbHRfRW5kX0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwT3V0QnVmZmVyKQogewotICByZXR1cm4gSEFTSF9TdGFydF9JVChoaGFzaCwgcEluQnVmZmVyLCBTaXplLCBwT3V0QnVmZmVyLEhBU0hfQUxHT1NFTEVDVElPTl9TSEExKTsKKyAgcmV0dXJuIEhBU0hfU3RhcnRfSVQoaGhhc2gsIHBJbkJ1ZmZlciwgU2l6ZSwgcE91dEJ1ZmZlciwgSEFTSF9BTEdPU0VMRUNUSU9OX1NIQTEpOwogfQogCiAvKioKQEAgLTEwMjUsOCArMTA0MCw4IEBACiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgSEFTSF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXA0IEhBU0ggcHJvY2Vzc2luZyBmdW5jdGlvbnMgaW4gRE1BIG1vZGUKLSAqICBAYnJpZWYgICBIQVNIIHByb2Nlc3NpbmcgZnVuY3Rpb25zIHVzaW5nIERNQSBtb2RlLgotICoKKyAgKiAgQGJyaWVmICAgSEFTSCBwcm9jZXNzaW5nIGZ1bmN0aW9ucyB1c2luZyBETUEgbW9kZS4KKyAgKgogQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAjIyMjIyBETUEgbW9kZSBIQVNIIHByb2Nlc3NpbmcgZnVuY3Rpb25zICMjIyMjCkBAIC0xMDc3LDkgKzEwOTIsOSBAQAogICAqIEBwYXJhbSAgVGltZW91dCBUaW1lb3V0IHZhbHVlLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfTUQ1X0ZpbmlzaChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90KiBwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfTUQ1X0ZpbmlzaChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KQogewotICAgcmV0dXJuIEhBU0hfRmluaXNoKGhoYXNoLCBwT3V0QnVmZmVyLCBUaW1lb3V0KTsKKyAgcmV0dXJuIEhBU0hfRmluaXNoKGhoYXNoLCBwT3V0QnVmZmVyLCBUaW1lb3V0KTsKIH0KIAogLyoqCkBAIC0xMTA4LDkgKzExMjMsOSBAQAogICAqIEBwYXJhbSAgVGltZW91dCBUaW1lb3V0IHZhbHVlLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hfU0hBMV9GaW5pc2goSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCogcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIX1NIQTFfRmluaXNoKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpCiB7Ci0gICByZXR1cm4gSEFTSF9GaW5pc2goaGhhc2gsIHBPdXRCdWZmZXIsIFRpbWVvdXQpOworICByZXR1cm4gSEFTSF9GaW5pc2goaGhhc2gsIHBPdXRCdWZmZXIsIFRpbWVvdXQpOwogfQogCiAvKioKQEAgLTExMTgsOCArMTEzMyw4IEBACiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgSEFTSF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXA1IEhNQUMgcHJvY2Vzc2luZyBmdW5jdGlvbnMgaW4gcG9sbGluZyBtb2RlCi0gKiAgQGJyaWVmICAgSE1BQyBwcm9jZXNzaW5nIGZ1bmN0aW9ucyB1c2luZyBwb2xsaW5nIG1vZGUuCi0gKgorICAqICBAYnJpZWYgICBITUFDIHByb2Nlc3NpbmcgZnVuY3Rpb25zIHVzaW5nIHBvbGxpbmcgbW9kZS4KKyAgKgogQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAjIyMjIyBQb2xsaW5nIG1vZGUgSE1BQyBwcm9jZXNzaW5nIGZ1bmN0aW9ucyAjIyMjIwpAQCAtMTE0OSw3ICsxMTY0LDggQEAKICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCB2YWx1ZS4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9ITUFDX01ENV9TdGFydChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSE1BQ19NRDVfU3RhcnQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90ICpwT3V0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpbWVvdXQpCiB7CiAgIHJldHVybiBITUFDX1N0YXJ0KGhoYXNoLCBwSW5CdWZmZXIsIFNpemUsIHBPdXRCdWZmZXIsIFRpbWVvdXQsIEhBU0hfQUxHT1NFTEVDVElPTl9NRDUpOwogfQpAQCAtMTE2Nyw3ICsxMTgzLDggQEAKICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCB2YWx1ZS4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9ITUFDX1NIQTFfU3RhcnQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90KiBwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hNQUNfU0hBMV9TdGFydChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QgKnBPdXRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpbWVvdXQpCiB7CiAgIHJldHVybiBITUFDX1N0YXJ0KGhoYXNoLCBwSW5CdWZmZXIsIFNpemUsIHBPdXRCdWZmZXIsIFRpbWVvdXQsIEhBU0hfQUxHT1NFTEVDVElPTl9TSEExKTsKIH0KQEAgLTExNzgsOCArMTE5NSw4IEBACiAKIAogLyoqIEBkZWZncm91cCBIQVNIX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDYgSE1BQyBwcm9jZXNzaW5nIGZ1bmN0aW9ucyBpbiBpbnRlcnJ1cHQgbW9kZQotICogIEBicmllZiAgIEhNQUMgcHJvY2Vzc2luZyBmdW5jdGlvbnMgdXNpbmcgaW50ZXJydXB0IG1vZGUuCi0gKgorICAqICBAYnJpZWYgICBITUFDIHByb2Nlc3NpbmcgZnVuY3Rpb25zIHVzaW5nIGludGVycnVwdCBtb2RlLgorICAqCiBAdmVyYmF0aW0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICMjIyMjIEludGVycnVwdCBtb2RlIEhNQUMgcHJvY2Vzc2luZyBmdW5jdGlvbnMgIyMjIyMKQEAgLTEyMDgsNyArMTIyNSw4IEBACiAgICogQHBhcmFtICBwT3V0QnVmZmVyIHBvaW50ZXIgdG8gdGhlIGNvbXB1dGVkIGRpZ2VzdC4gRGlnZXN0IHNpemUgaXMgMTYgYnl0ZXMuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSE1BQ19NRDVfU3RhcnRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90KiBwT3V0QnVmZmVyKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hNQUNfTUQ1X1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwT3V0QnVmZmVyKQogewogICByZXR1cm4gIEhNQUNfU3RhcnRfSVQoaGhhc2gsIHBJbkJ1ZmZlciwgU2l6ZSwgcE91dEJ1ZmZlciwgSEFTSF9BTEdPU0VMRUNUSU9OX01ENSk7CiB9CkBAIC0xMjI1LDcgKzEyNDMsOCBAQAogICAqIEBwYXJhbSAgcE91dEJ1ZmZlciBwb2ludGVyIHRvIHRoZSBjb21wdXRlZCBkaWdlc3QuIERpZ2VzdCBzaXplIGlzIDIwIGJ5dGVzLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hNQUNfU0hBMV9TdGFydF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSE1BQ19TSEExX1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcE91dEJ1ZmZlcikKIHsKICAgcmV0dXJuICBITUFDX1N0YXJ0X0lUKGhoYXNoLCBwSW5CdWZmZXIsIFNpemUsIHBPdXRCdWZmZXIsIEhBU0hfQUxHT1NFTEVDVElPTl9TSEExKTsKIH0KQEAgLTEyMzcsOCArMTI1Niw4IEBACiAKIAogLyoqIEBkZWZncm91cCBIQVNIX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDcgSE1BQyBwcm9jZXNzaW5nIGZ1bmN0aW9ucyBpbiBETUEgbW9kZQotICogIEBicmllZiAgIEhNQUMgcHJvY2Vzc2luZyBmdW5jdGlvbnMgdXNpbmcgRE1BIG1vZGVzLgotICoKKyAgKiAgQGJyaWVmICAgSE1BQyBwcm9jZXNzaW5nIGZ1bmN0aW9ucyB1c2luZyBETUEgbW9kZXMuCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgIyMjIyMgRE1BIG1vZGUgSE1BQyBwcm9jZXNzaW5nIGZ1bmN0aW9ucyAjIyMjIwpAQCAtMTMxMyw4ICsxMzMyLDggQEAKICAgKi8KIAogLyoqIEBkZWZncm91cCBIQVNIX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDggUGVyaXBoZXJhbCBzdGF0ZXMgZnVuY3Rpb25zCi0gKiAgQGJyaWVmICAgUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMuCi0gKgorICAqICBAYnJpZWYgICBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucy4KKyAgKgogQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICMjIyMjIFBlcmlwaGVyYWwgU3RhdGUgbWV0aG9kcyAjIyMjIwpAQCAtMTM4MSw3ICsxNDAwLDcgQEAKICAgKiAgICAgICAgIG11c3QgYmUgYXQgbGVhc3QgKEhBU0hfTlVNQkVSX09GX0NTUl9SRUdJU1RFUlMgKyAzKSAqIDQgdWludDggbG9uZy4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLXZvaWQgSEFMX0hBU0hfQ29udGV4dFNhdmluZyhIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90KiBwTWVtQnVmZmVyKQordm9pZCBIQUxfSEFTSF9Db250ZXh0U2F2aW5nKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBNZW1CdWZmZXIpCiB7CiAgIHVpbnQzMl90IG1lbV9wdHIgPSAodWludDMyX3QpcE1lbUJ1ZmZlcjsKICAgdWludDMyX3QgY3NyX3B0ciA9ICh1aW50MzJfdClIQVNILT5DU1I7CkBAIC0xMzkxLDIwICsxNDEwLDIxIEBACiAgIFVOVVNFRChoaGFzaCk7CiAKICAgLyogU2F2ZSBJTVIgcmVnaXN0ZXIgY29udGVudCAqLwotICAqKHVpbnQzMl90KikobWVtX3B0cikgPSBSRUFEX0JJVChIQVNILT5JTVIsSEFTSF9JVF9ESU5JfEhBU0hfSVRfRENJKTsKLSAgbWVtX3B0cis9NFU7CisgICoodWludDMyX3QgKikobWVtX3B0cikgPSBSRUFEX0JJVChIQVNILT5JTVIsIEhBU0hfSVRfRElOSSB8IEhBU0hfSVRfRENJKTsKKyAgbWVtX3B0ciArPSA0VTsKICAgLyogU2F2ZSBTVFIgcmVnaXN0ZXIgY29udGVudCAqLwotICAqKHVpbnQzMl90KikobWVtX3B0cikgPSBSRUFEX0JJVChIQVNILT5TVFIsSEFTSF9TVFJfTkJMVyk7Ci0gIG1lbV9wdHIrPTRVOworICAqKHVpbnQzMl90ICopKG1lbV9wdHIpID0gUkVBRF9CSVQoSEFTSC0+U1RSLCBIQVNIX1NUUl9OQkxXKTsKKyAgbWVtX3B0ciArPSA0VTsKICAgLyogU2F2ZSBDUiByZWdpc3RlciBjb250ZW50ICovCi0gICoodWludDMyX3QqKShtZW1fcHRyKSA9IFJFQURfQklUKEhBU0gtPkNSLEhBU0hfQ1JfRE1BRXxIQVNIX0NSX0RBVEFUWVBFfEhBU0hfQ1JfTU9ERXxIQVNIX0NSX0FMR098SEFTSF9DUl9MS0VZfEhBU0hfQ1JfTURNQVQpOwotICBtZW1fcHRyKz00VTsKKyAgKih1aW50MzJfdCAqKShtZW1fcHRyKSA9IFJFQURfQklUKEhBU0gtPkNSLCBIQVNIX0NSX0RNQUUgfCBIQVNIX0NSX0RBVEFUWVBFIHwgSEFTSF9DUl9NT0RFIHwgSEFTSF9DUl9BTEdPIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBU0hfQ1JfTEtFWSB8IEhBU0hfQ1JfTURNQVQpOworICBtZW1fcHRyICs9IDRVOwogICAvKiBCeSBkZWZhdWx0LCBzYXZlIGFsbCBDU1JzIHJlZ2lzdGVycyAqLwotICBmb3IgKGkgPSBIQVNIX05VTUJFUl9PRl9DU1JfUkVHSVNURVJTOyBpID4wVTsgaS0tKQorICBmb3IgKGkgPSBIQVNIX05VTUJFUl9PRl9DU1JfUkVHSVNURVJTOyBpID4gMFU7IGktLSkKICAgewotICAgICoodWludDMyX3QqKShtZW1fcHRyKSA9ICoodWludDMyX3QqKShjc3JfcHRyKTsKLSAgICBtZW1fcHRyKz00VTsKLSAgICBjc3JfcHRyKz00VTsKKyAgICAqKHVpbnQzMl90ICopKG1lbV9wdHIpID0gKih1aW50MzJfdCAqKShjc3JfcHRyKTsKKyAgICBtZW1fcHRyICs9IDRVOworICAgIGNzcl9wdHIgKz0gNFU7CiAgIH0KIH0KIApAQCAtMTQyMSw3ICsxNDQxLDcgQEAKICAgKiAgICAgICAgIGJlZm9yZWhhbmQpLgogICAqIEByZXR2YWwgTm9uZQogICAqLwotdm9pZCBIQUxfSEFTSF9Db250ZXh0UmVzdG9yaW5nKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QqIHBNZW1CdWZmZXIpCit2b2lkIEhBTF9IQVNIX0NvbnRleHRSZXN0b3JpbmcoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcE1lbUJ1ZmZlcikKIHsKICAgdWludDMyX3QgbWVtX3B0ciA9ICh1aW50MzJfdClwTWVtQnVmZmVyOwogICB1aW50MzJfdCBjc3JfcHRyID0gKHVpbnQzMl90KUhBU0gtPkNTUjsKQEAgLTE0MzEsMjUgKzE0NTEsMjUgQEAKICAgVU5VU0VEKGhoYXNoKTsKIAogICAvKiBSZXN0b3JlIElNUiByZWdpc3RlciBjb250ZW50ICovCi0gIFdSSVRFX1JFRyhIQVNILT5JTVIsICgqKHVpbnQzMl90KikobWVtX3B0cikpKTsKLSAgbWVtX3B0cis9NFU7CisgIFdSSVRFX1JFRyhIQVNILT5JTVIsICgqKHVpbnQzMl90ICopKG1lbV9wdHIpKSk7CisgIG1lbV9wdHIgKz0gNFU7CiAgIC8qIFJlc3RvcmUgU1RSIHJlZ2lzdGVyIGNvbnRlbnQgKi8KLSAgV1JJVEVfUkVHKEhBU0gtPlNUUiwgKCoodWludDMyX3QqKShtZW1fcHRyKSkpOwotICBtZW1fcHRyKz00VTsKKyAgV1JJVEVfUkVHKEhBU0gtPlNUUiwgKCoodWludDMyX3QgKikobWVtX3B0cikpKTsKKyAgbWVtX3B0ciArPSA0VTsKICAgLyogUmVzdG9yZSBDUiByZWdpc3RlciBjb250ZW50ICovCi0gIFdSSVRFX1JFRyhIQVNILT5DUiwgKCoodWludDMyX3QqKShtZW1fcHRyKSkpOwotICBtZW1fcHRyKz00VTsKKyAgV1JJVEVfUkVHKEhBU0gtPkNSLCAoKih1aW50MzJfdCAqKShtZW1fcHRyKSkpOworICBtZW1fcHRyICs9IDRVOwogCiAgIC8qIFJlc2V0IHRoZSBIQVNIIHByb2Nlc3NvciBiZWZvcmUgcmVzdG9yaW5nIHRoZSBDb250ZXh0CiAgIFN3YXAgUmVnaXN0ZXJzIChDU1IpICovCiAgIF9fSEFMX0hBU0hfSU5JVCgpOwogCiAgIC8qIEJ5IGRlZmF1bHQsIHJlc3RvcmUgYWxsIENTUiByZWdpc3RlcnMgKi8KLSAgZm9yIChpID0gSEFTSF9OVU1CRVJfT0ZfQ1NSX1JFR0lTVEVSUzsgaSA+MFU7IGktLSkKKyAgZm9yIChpID0gSEFTSF9OVU1CRVJfT0ZfQ1NSX1JFR0lTVEVSUzsgaSA+IDBVOyBpLS0pCiAgIHsKLSAgICBXUklURV9SRUcoKCoodWludDMyX3QqKShjc3JfcHRyKSksICgqKHVpbnQzMl90KikobWVtX3B0cikpKTsKLSAgICBtZW1fcHRyKz00VTsKLSAgICBjc3JfcHRyKz00VTsKKyAgICBXUklURV9SRUcoKCoodWludDMyX3QgKikoY3NyX3B0cikpLCAoKih1aW50MzJfdCAqKShtZW1fcHRyKSkpOworICAgIG1lbV9wdHIgKz0gNFU7CisgICAgY3NyX3B0ciArPSA0VTsKICAgfQogfQogCkBAIC0xNDkyLDcgKzE1MTIsNyBAQAogICBlbHNlCiAgIHsKIAotICAgLyogTWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCB0aW1lIHRvIHN1c3BlbmQgdGhlIHByb2Nlc3NpbmcgKi8KKyAgICAvKiBNYWtlIHN1cmUgdGhlcmUgaXMgZW5vdWdoIHRpbWUgdG8gc3VzcGVuZCB0aGUgcHJvY2Vzc2luZyAqLwogICAgIHRtcF9yZW1haW5pbmdfRE1BVHJhbnNmZXJTaXplX2luV29yZHMgPSAoKERNQV9TdHJlYW1fVHlwZURlZiAqKWhoYXNoLT5oZG1haW4tPkluc3RhbmNlKS0+TkRUUjsKIAogICAgIGlmICh0bXBfcmVtYWluaW5nX0RNQVRyYW5zZmVyU2l6ZV9pbldvcmRzIDw9IEhBU0hfRE1BX1NVU1BFTlNJT05fV09SRFNfTElNSVQpCkBAIC0xNTA1LDcgKzE1MjUsNyBAQAogICAgIC8qIFdhaXQgZm9yIEJVU1kgZmxhZyB0byBiZSByZXNldCAqLwogICAgIGlmIChIQVNIX1dhaXRPbkZsYWdVbnRpbFRpbWVvdXQoaGhhc2gsIEhBU0hfRkxBR19CVVNZLCBTRVQsIEhBU0hfVElNRU9VVFZBTFVFKSAhPSBIQUxfT0spCiAgICAgewotICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKKyAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKICAgICB9CiAKICAgICBpZiAoX19IQUxfSEFTSF9HRVRfRkxBRyhIQVNIX0ZMQUdfRENJUykgIT0gUkVTRVQpCkBAIC0xNTE2LDcgKzE1MzYsNyBAQAogICAgIC8qIFdhaXQgZm9yIEJVU1kgZmxhZyB0byBiZSBzZXQgKi8KICAgICBpZiAoSEFTSF9XYWl0T25GbGFnVW50aWxUaW1lb3V0KGhoYXNoLCBIQVNIX0ZMQUdfQlVTWSwgUkVTRVQsIEhBU0hfVElNRU9VVFZBTFVFKSAhPSBIQUxfT0spCiAgICAgewotICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKKyAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKICAgICB9CiAgICAgLyogRGlzYWJsZSBETUEgY2hhbm5lbCAqLwogICAgIC8qIE5vdGUgdGhhdCB0aGUgQWJvcnQgZnVuY3Rpb24gd2lsbApAQCAtMTUyNCwxMyArMTU0NCwxMyBAQAogICAgICAgLSBVbmxvY2sKICAgICAgIC0gU2V0IHRoZSBTdGF0ZQogICAgICovCi0gICAgaWYgKEhBTF9ETUFfQWJvcnQoaGhhc2gtPmhkbWFpbikgIT1IQUxfT0spCisgICAgaWYgKEhBTF9ETUFfQWJvcnQoaGhhc2gtPmhkbWFpbikgIT0gSEFMX09LKQogICAgIHsKICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgfQogCiAgICAgLyogQ2xlYXIgRE1BRSBiaXQgKi8KLSAgICBDTEVBUl9CSVQoSEFTSC0+Q1IsSEFTSF9DUl9ETUFFKTsKKyAgICBDTEVBUl9CSVQoSEFTSC0+Q1IsIEhBU0hfQ1JfRE1BRSk7CiAKICAgICAvKiBXYWl0IGZvciBCVVNZIGZsYWcgdG8gYmUgcmVzZXQgKi8KICAgICBpZiAoSEFTSF9XYWl0T25GbGFnVW50aWxUaW1lb3V0KGhoYXNoLCBIQVNIX0ZMQUdfQlVTWSwgU0VULCBIQVNIX1RJTUVPVVRWQUxVRSkgIT0gSEFMX09LKQpAQCAtMTU2NCwxOSArMTU4NCwyMiBAQAogICAgIHsKIAogICAgICAgLyogQ29tcHV0ZSBob3cgbWFueSB3b3JkcyB3ZXJlIHN1cHBvc2VkIHRvIGJlIHRyYW5zZmVycmVkIGJ5IERNQSAqLwotICAgICAgdG1wX2luaXRpYWxfRE1BVHJhbnNmZXJTaXplX2luV29yZHMgPSAoKChoaGFzaC0+SGFzaEluQ291bnQlNFUpIT0wVSkgPyAgKChoaGFzaC0+SGFzaEluQ291bnQrM1UpLzRVKTogKGhoYXNoLT5IYXNoSW5Db3VudC80VSkpOworICAgICAgdG1wX2luaXRpYWxfRE1BVHJhbnNmZXJTaXplX2luV29yZHMgPSAoKChoaGFzaC0+SGFzaEluQ291bnQgJSA0VSkgIT0gMFUpID8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChoaGFzaC0+SGFzaEluQ291bnQgKyAzVSkgLyA0VSkgOiAoaGhhc2gtPkhhc2hJbkNvdW50IC8gNFUpKTsKIAotICAgICAgLyogSWYgZGlzY3JlcGFuY3kgYmV0d2VlbiB0aGUgbnVtYmVyIG9mIHdvcmRzIHJlcG9ydGVkIGJ5IERNQSBQZXJpcGhlcmFsIGFuZCB0aGUgbnVtYmVycyBvZiB3b3JkcyBlbnRlcmVkIGFzIHJlcG9ydGVkCi0gICAgICAgIGJ5IEhBU0ggUGVyaXBoZXJhbCwgY29ycmVjdCBpdCAqLworICAgICAgLyogSWYgZGlzY3JlcGFuY3kgYmV0d2VlbiB0aGUgbnVtYmVyIG9mIHdvcmRzIHJlcG9ydGVkIGJ5IERNQSBQZXJpcGhlcmFsIGFuZAorICAgICAgICB0aGUgbnVtYmVycyBvZiB3b3JkcyBlbnRlcmVkIGFzIHJlcG9ydGVkIGJ5IEhBU0ggUGVyaXBoZXJhbCwgY29ycmVjdCBpdCAqLwogICAgICAgLyogdG1wX3dvcmRzX2FscmVhZHlfcHVzaGVkIHJlZmxlY3RzIHRoZSBudW1iZXIgb2Ygd29yZHMgdGhhdCB3ZXJlIGFscmVhZHkgcHVzaGVkIGJlZm9yZQogICAgICAgICAgdGhlIHN0YXJ0IG9mIERNQSB0cmFuc2ZlciAobXVsdGktYnVmZmVyIHByb2Nlc3NpbmcgY2FzZSkgKi8KICAgICAgIHRtcF93b3Jkc19hbHJlYWR5X3B1c2hlZCA9IGhoYXNoLT5OYldvcmRzQWxyZWFkeVB1c2hlZDsKLSAgICAgIGlmICgoKHRtcF93b3Jkc19hbHJlYWR5X3B1c2hlZCArIHRtcF9pbml0aWFsX0RNQVRyYW5zZmVyU2l6ZV9pbldvcmRzIC0gdG1wX3JlbWFpbmluZ19ETUFUcmFuc2ZlclNpemVfaW5Xb3JkcykgJTE2VSkgICE9IEhBU0hfTkJXX1BVU0hFRCgpKQorICAgICAgaWYgKCgodG1wX3dvcmRzX2FscmVhZHlfcHVzaGVkICsgdG1wX2luaXRpYWxfRE1BVHJhbnNmZXJTaXplX2luV29yZHMgLSBcCisgICAgICAgICAgICB0bXBfcmVtYWluaW5nX0RNQVRyYW5zZmVyU2l6ZV9pbldvcmRzKSAlIDE2VSkgIT0gSEFTSF9OQldfUFVTSEVEKCkpCiAgICAgICB7CiAgICAgICAgIHRtcF9yZW1haW5pbmdfRE1BVHJhbnNmZXJTaXplX2luV29yZHMtLTsgLyogb25lIGxlc3Mgd29yZCB0byBiZSB0cmFuc2ZlcnJlZCBhZ2FpbiAqLwogICAgICAgfQogCi0gICAgICAvKiBBY2NvcmRpbmdseSwgdXBkYXRlIHRoZSBpbnB1dCBwb2ludGVyIHRoYXQgcG9pbnRzIGF0IHRoZSBuZXh0IHdvcmQgdG8gYmUgdHJhbnNmZXJyZWQgdG8gdGhlIFBlcmlwaGVyYWwgYnkgRE1BICovCisgICAgICAvKiBBY2NvcmRpbmdseSwgdXBkYXRlIHRoZSBpbnB1dCBwb2ludGVyIHRoYXQgcG9pbnRzIGF0IHRoZSBuZXh0IHdvcmQgdG8gYmUKKyAgICAgICAgIHRyYW5zZmVycmVkIHRvIHRoZSBQZXJpcGhlcmFsIGJ5IERNQSAqLwogICAgICAgaGhhc2gtPnBIYXNoSW5CdWZmUHRyICs9ICA0VSAqICh0bXBfaW5pdGlhbF9ETUFUcmFuc2ZlclNpemVfaW5Xb3JkcyAtIHRtcF9yZW1haW5pbmdfRE1BVHJhbnNmZXJTaXplX2luV29yZHMpIDsKIAogICAgICAgLyogQW5kIHN0b3JlIGluIEhhc2hJbkNvdW50IHRoZSByZW1haW5pbmcgc2l6ZSB0byB0cmFuc2ZlciAoaW4gYnl0ZXMpICovCkBAIC0xNTk2LDcgKzE2MTksNyBAQAogICAqIEBicmllZiAgUmV0dXJuIHRoZSBIQVNIIGhhbmRsZSBlcnJvciBjb2RlLgogICAqIEBwYXJhbSAgaGhhc2ggcG9pbnRlciB0byBhIEhBU0hfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUuCiAgICogQHJldHZhbCBIQVNIIEVycm9yIENvZGUKLSovCisgICovCiB1aW50MzJfdCBIQUxfSEFTSF9HZXRFcnJvcihIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoKQogewogICAvKiBSZXR1cm4gSEFTSCBFcnJvciBDb2RlICovCkBAIC0xNjI0LDEwICsxNjQ3LDEwIEBACiAgICovCiBzdGF0aWMgdm9pZCBIQVNIX0RNQVhmZXJDcGx0KERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKQogewotICBIQVNIX0hhbmRsZVR5cGVEZWYqIGhoYXNoID0gKCBIQVNIX0hhbmRsZVR5cGVEZWYqICkoKERNQV9IYW5kbGVUeXBlRGVmKiApaGRtYSktPlBhcmVudDsKKyAgSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCA9IChIQVNIX0hhbmRsZVR5cGVEZWYgKikoKERNQV9IYW5kbGVUeXBlRGVmICopaGRtYSktPlBhcmVudDsKICAgdWludDMyX3QgaW5wdXRhZGRyOwogICB1aW50MzJfdCBidWZmZXJzaXplOwotICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgOworICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAKICAgaWYgKGhoYXNoLT5TdGF0ZSAhPSBIQUxfSEFTSF9TVEFURV9TVVNQRU5ERUQpCiAgIHsKQEAgLTE3MjYsMTkgKzE3NDksMjMgQEAKICAgICAgICAgfQogICAgICAgfQogCi0gICAgLyogQ29uZmlndXJlIHRoZSBOdW1iZXIgb2YgdmFsaWQgYml0cyBpbiBsYXN0IHdvcmQgb2YgdGhlIG1lc3NhZ2UgKi8KLSAgICBfX0hBTF9IQVNIX1NFVF9OQlZBTElEQklUUyhidWZmZXJzaXplKTsKKyAgICAgIC8qIENvbmZpZ3VyZSB0aGUgTnVtYmVyIG9mIHZhbGlkIGJpdHMgaW4gbGFzdCB3b3JkIG9mIHRoZSBtZXNzYWdlICovCisgICAgICBfX0hBTF9IQVNIX1NFVF9OQlZBTElEQklUUyhidWZmZXJzaXplKTsKIAotICAgICAgLyogU2V0IHRoZSBIQVNIIERNQSB0cmFuc2ZlcnQgY29tcGxldGlvbiBjYWxsIGJhY2sgKi8KKyAgICAgIC8qIFNldCB0aGUgSEFTSCBETUEgdHJhbnNmZXIgY29tcGxldGlvbiBjYWxsIGJhY2sgKi8KICAgICAgIGhoYXNoLT5oZG1haW4tPlhmZXJDcGx0Q2FsbGJhY2sgPSBIQVNIX0RNQVhmZXJDcGx0OwogCi0gICAgICAvKiBFbmFibGUgdGhlIERNQSBJbiBETUEgU3RyZWFtICovCi0gICAgc3RhdHVzID0gSEFMX0RNQV9TdGFydF9JVChoaGFzaC0+aGRtYWluLCBpbnB1dGFkZHIsICh1aW50MzJfdCkmSEFTSC0+RElOLCAoKChidWZmZXJzaXplICU0VSkhPTBVKSA/ICgoYnVmZmVyc2l6ZSsoNFUtKGJ1ZmZlcnNpemUgJTRVKSkpLzRVKTooYnVmZmVyc2l6ZS80VSkpKTsKKyAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIEluIERNQSBzdHJlYW0gKi8KKyAgICAgIHN0YXR1cyA9IEhBTF9ETUFfU3RhcnRfSVQoaGhhc2gtPmhkbWFpbiwgaW5wdXRhZGRyLCAodWludDMyX3QpJkhBU0gtPkRJTiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChidWZmZXJzaXplICUgNFUpICE9IDBVKSA/ICgoYnVmZmVyc2l6ZSArICg0VSAtIChidWZmZXJzaXplICUgNFUpKSkgLyA0VSkgOiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyc2l6ZSAvIDRVKSkpOwogCi0gICAgLyogRW5hYmxlIERNQSByZXF1ZXN0cyAqLwotICAgIFNFVF9CSVQoSEFTSC0+Q1IsIEhBU0hfQ1JfRE1BRSk7CiAKLSAgICAgICAgICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCisKKyAgICAgIC8qIEVuYWJsZSBETUEgcmVxdWVzdHMgKi8KKyAgICAgIFNFVF9CSVQoSEFTSC0+Q1IsIEhBU0hfQ1JfRE1BRSk7CisKKyAgICAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KICAgICAgIGlmIChzdGF0dXMgIT0gSEFMX09LKQogICAgICAgewogICAgICAgICAvKiBVcGRhdGUgSEFTSCBzdGF0ZSBtYWNoaW5lIHRvIGVycm9yICovCkBAIC0xNzQ3LDkgKzE3NzQsOSBAQAogICAgICAgZWxzZQogICAgICAgewogICAgICAgICAvKiBDaGFuZ2UgSEFTSCBzdGF0ZSAqLwotICAgICAgICBoaGFzaC0+U3RhdGUgPSBIQUxfSEFTSF9TVEFURV9SRUFEWTsKKyAgICAgICAgaGhhc2gtPlN0YXRlID0gSEFMX0hBU0hfU1RBVEVfQlVTWTsKICAgICAgIH0KLSAgfQorICAgIH0KICAgfQogCiAgIHJldHVybjsKQEAgLTE3NjQsMTQgKzE3OTEsMTQgQEAKICAgKi8KIHN0YXRpYyB2b2lkIEhBU0hfRE1BRXJyb3IoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpCiB7Ci0gIEhBU0hfSGFuZGxlVHlwZURlZiogaGhhc2ggPSAoIEhBU0hfSGFuZGxlVHlwZURlZiogKSgoRE1BX0hhbmRsZVR5cGVEZWYqICloZG1hKS0+UGFyZW50OworICBIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoID0gKEhBU0hfSGFuZGxlVHlwZURlZiAqKSgoRE1BX0hhbmRsZVR5cGVEZWYgKiloZG1hKS0+UGFyZW50OwogCiAgIGlmIChoaGFzaC0+U3RhdGUgIT0gSEFMX0hBU0hfU1RBVEVfU1VTUEVOREVEKQogICB7CiAgICAgaGhhc2gtPkVycm9yQ29kZSB8PSBIQUxfSEFTSF9FUlJPUl9ETUE7CiAgICAgLyogU2V0IEhBU0ggc3RhdGUgdG8gcmVhZHkgdG8gcHJldmVudCBhbnkgYmxvY2tpbmcgaXNzdWUgaW4gdXNlciBjb2RlCiAgICAgICAgcHJlc2VudCBpbiBIQUxfSEFTSF9FcnJvckNhbGxiYWNrKCkgKi8KLSAgICBoaGFzaC0+U3RhdGU9IEhBTF9IQVNIX1NUQVRFX1JFQURZOworICAgIGhoYXNoLT5TdGF0ZSA9IEhBTF9IQVNIX1NUQVRFX1JFQURZOwogICAgIC8qIFNldCBIQVNIIGhhbmRsZSBzdGF0dXMgdG8gZXJyb3IgKi8KICAgICBoaGFzaC0+U3RhdHVzID0gSEFMX0VSUk9SOwogI2lmIChVU0VfSEFMX0hBU0hfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCkBAIC0xODAxLDE1ICsxODI4LDE1IEBACiAgIHVpbnQzMl90IGJ1ZmZlcmNvdW50ZXI7CiAgIF9fSU8gdWludDMyX3QgaW5wdXRhZGRyID0gKHVpbnQzMl90KSBwSW5CdWZmZXI7CiAKLSAgZm9yKGJ1ZmZlcmNvdW50ZXIgPSAwVTsgYnVmZmVyY291bnRlciA8IFNpemU7IGJ1ZmZlcmNvdW50ZXIrPTRVKQorICBmb3IgKGJ1ZmZlcmNvdW50ZXIgPSAwVTsgYnVmZmVyY291bnRlciA8IFNpemU7IGJ1ZmZlcmNvdW50ZXIgKz0gNFUpCiAgIHsKICAgICAvKiBXcml0ZSBpbnB1dCBkYXRhIDQgYnl0ZXMgYXQgYSB0aW1lICovCi0gICAgSEFTSC0+RElOID0gKih1aW50MzJfdCopaW5wdXRhZGRyOwotICAgIGlucHV0YWRkcis9NFU7CisgICAgSEFTSC0+RElOID0gKih1aW50MzJfdCAqKWlucHV0YWRkcjsKKyAgICBpbnB1dGFkZHIgKz0gNFU7CiAKICAgICAvKiBJZiB0aGUgc3VzcGVuc2lvbiBmbGFnIGhhcyBiZWVuIHJhaXNlZCBhbmQgaWYgdGhlIHByb2Nlc3NpbmcgaXMgbm90IGFib3V0CiAgICAgdG8gZW5kLCBzdXNwZW5kIHByb2Nlc3NpbmcgKi8KLSAgICBpZiAoKGhoYXNoLT5TdXNwZW5kUmVxdWVzdCA9PSBIQUxfSEFTSF9TVVNQRU5EKSAmJiAoKGJ1ZmZlcmNvdW50ZXIrNFUpIDwgU2l6ZSkpCisgICAgaWYgKChoaGFzaC0+U3VzcGVuZFJlcXVlc3QgPT0gSEFMX0hBU0hfU1VTUEVORCkgJiYgKChidWZmZXJjb3VudGVyICsgNFUpIDwgU2l6ZSkpCiAgICAgewogICAgICAgLyogV2FpdCBmb3IgRElOSVMgPSAxLCB3aGljaCBvY2N1cnMgd2hlbiAxNiAzMi1iaXQgbG9jYXRpb25zIGFyZSBmcmVlCiAgICAgICBpbiB0aGUgaW5wdXQgYnVmZmVyICovCkBAIC0xODIzLDE0ICsxODUwLDE0IEBACiAgICAgICAgIGlmICgoaGhhc2gtPlBoYXNlID09IEhBTF9IQVNIX1BIQVNFX1BST0NFU1MpIHx8IChoaGFzaC0+UGhhc2UgPT0gSEFMX0hBU0hfUEhBU0VfSE1BQ19TVEVQXzIpKQogICAgICAgICB7CiAgICAgICAgICAgLyogU2F2ZSBjdXJyZW50IHJlYWRpbmcgYW5kIHdyaXRpbmcgbG9jYXRpb25zIG9mIElucHV0IGFuZCBPdXRwdXQgYnVmZmVycyAqLwotICAgICAgICAgIGhoYXNoLT5wSGFzaEluQnVmZlB0ciA9ICAodWludDhfdCAqKWlucHV0YWRkcjsKKyAgICAgICAgICBoaGFzaC0+cEhhc2hJbkJ1ZmZQdHIgPSAodWludDhfdCAqKWlucHV0YWRkcjsKICAgICAgICAgICAvKiBTYXZlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCByZW1haW4gdG8gYmUgcHJvY2Vzc2VkIGF0IHRoaXMgcG9pbnQgKi8KICAgICAgICAgICBoaGFzaC0+SGFzaEluQ291bnQgICAgPSAgU2l6ZSAtIChidWZmZXJjb3VudGVyICsgNFUpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKChoaGFzaC0+UGhhc2UgPT0gSEFMX0hBU0hfUEhBU0VfSE1BQ19TVEVQXzEpIHx8IChoaGFzaC0+UGhhc2UgPT0gSEFMX0hBU0hfUEhBU0VfSE1BQ19TVEVQXzMpKQogICAgICAgICB7CiAgICAgICAgICAgLyogU2F2ZSBjdXJyZW50IHJlYWRpbmcgYW5kIHdyaXRpbmcgbG9jYXRpb25zIG9mIElucHV0IGFuZCBPdXRwdXQgYnVmZmVycyAqLwotICAgICAgICAgIGhoYXNoLT5wSGFzaEtleUJ1ZmZQdHIgID0gICh1aW50OF90ICopaW5wdXRhZGRyOworICAgICAgICAgIGhoYXNoLT5wSGFzaEtleUJ1ZmZQdHIgID0gKHVpbnQ4X3QgKilpbnB1dGFkZHI7CiAgICAgICAgICAgLyogU2F2ZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgcmVtYWluIHRvIGJlIHByb2Nlc3NlZCBhdCB0aGlzIHBvaW50ICovCiAgICAgICAgICAgaGhhc2gtPkhhc2hLZXlDb3VudCAgPSAgU2l6ZSAtIChidWZmZXJjb3VudGVyICsgNFUpOwogICAgICAgICB9CkBAIC0xODY0LDYzICsxODkxLDYzIEBACiB7CiAgIHVpbnQzMl90IG1zZ2RpZ2VzdCA9ICh1aW50MzJfdClwTXNnRGlnZXN0OwogCi0gIHN3aXRjaChTaXplKQorICBzd2l0Y2ggKFNpemUpCiAgIHsKICAgICAvKiBSZWFkIHRoZSBtZXNzYWdlIGRpZ2VzdCAqLwogICAgIGNhc2UgMTY6ICAvKiBNRDUgKi8KLSAgICAgICoodWludDMyX3QqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMF0pOwotICAgICAgbXNnZGlnZXN0Kz00VTsKLSAgICAgICoodWludDMyX3QqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMV0pOwotICAgICAgbXNnZGlnZXN0Kz00VTsKLSAgICAgICoodWludDMyX3QqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMl0pOwotICAgICAgbXNnZGlnZXN0Kz00VTsKLSAgICAgICoodWludDMyX3QqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbM10pOwotICAgIGJyZWFrOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMF0pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMV0pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMl0pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbM10pOworICAgICAgYnJlYWs7CiAgICAgY2FzZSAyMDogIC8qIFNIQTEgKi8KLSAgICAgICoodWludDMyX3QqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMF0pOwotICAgICAgbXNnZGlnZXN0Kz00VTsKLSAgICAgICoodWludDMyX3QqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMV0pOwotICAgICAgbXNnZGlnZXN0Kz00VTsKLSAgICAgICoodWludDMyX3QqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMl0pOwotICAgICAgbXNnZGlnZXN0Kz00VTsKLSAgICAgICoodWludDMyX3QqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbM10pOwotICAgICAgbXNnZGlnZXN0Kz00VTsKLSAgICAgICoodWludDMyX3QqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbNF0pOwotICAgIGJyZWFrOwotICBjYXNlIDI4OiAgLyogU0hBMjI0ICovCi0gICAgKih1aW50MzJfdCopKG1zZ2RpZ2VzdCkgPSBfX1JFVihIQVNILT5IUlswXSk7Ci0gICAgbXNnZGlnZXN0Kz00VTsKLSAgICAqKHVpbnQzMl90KikobXNnZGlnZXN0KSA9IF9fUkVWKEhBU0gtPkhSWzFdKTsKLSAgICBtc2dkaWdlc3QrPTRVOwotICAgICoodWludDMyX3QqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMl0pOwotICAgIG1zZ2RpZ2VzdCs9NFU7Ci0gICAgKih1aW50MzJfdCopKG1zZ2RpZ2VzdCkgPSBfX1JFVihIQVNILT5IUlszXSk7Ci0gICAgbXNnZGlnZXN0Kz00VTsKLSAgICAqKHVpbnQzMl90KikobXNnZGlnZXN0KSA9IF9fUkVWKEhBU0gtPkhSWzRdKTsKLSAgICBtc2dkaWdlc3QrPTRVOwotICAgICoodWludDMyX3QqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSF9ESUdFU1QtPkhSWzVdKTsKLSAgICBtc2dkaWdlc3QrPTRVOwotICAgICoodWludDMyX3QqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSF9ESUdFU1QtPkhSWzZdKTsKLSAgICBicmVhazsKLSAgY2FzZSAzMjogICAvKiBTSEEyNTYgKi8KLSAgICAqKHVpbnQzMl90KikobXNnZGlnZXN0KSA9IF9fUkVWKEhBU0gtPkhSWzBdKTsKLSAgICBtc2dkaWdlc3QrPTRVOwotICAgICoodWludDMyX3QqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMV0pOwotICAgIG1zZ2RpZ2VzdCs9NFU7Ci0gICAgKih1aW50MzJfdCopKG1zZ2RpZ2VzdCkgPSBfX1JFVihIQVNILT5IUlsyXSk7Ci0gICAgbXNnZGlnZXN0Kz00VTsKLSAgICAqKHVpbnQzMl90KikobXNnZGlnZXN0KSA9IF9fUkVWKEhBU0gtPkhSWzNdKTsKLSAgICBtc2dkaWdlc3QrPTRVOwotICAgICoodWludDMyX3QqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbNF0pOwotICAgIG1zZ2RpZ2VzdCs9NFU7Ci0gICAgKih1aW50MzJfdCopKG1zZ2RpZ2VzdCkgPSBfX1JFVihIQVNIX0RJR0VTVC0+SFJbNV0pOwotICAgIG1zZ2RpZ2VzdCs9NFU7Ci0gICAgKih1aW50MzJfdCopKG1zZ2RpZ2VzdCkgPSBfX1JFVihIQVNIX0RJR0VTVC0+SFJbNl0pOwotICAgIG1zZ2RpZ2VzdCs9NFU7Ci0gICAgKih1aW50MzJfdCopKG1zZ2RpZ2VzdCkgPSBfX1JFVihIQVNIX0RJR0VTVC0+SFJbN10pOwotICAgIGJyZWFrOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMF0pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMV0pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMl0pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbM10pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbNF0pOworICAgICAgYnJlYWs7CisgICAgY2FzZSAyODogIC8qIFNIQTIyNCAqLworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMF0pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMV0pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMl0pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbM10pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbNF0pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSF9ESUdFU1QtPkhSWzVdKTsKKyAgICAgIG1zZ2RpZ2VzdCArPSA0VTsKKyAgICAgICoodWludDMyX3QgKikobXNnZGlnZXN0KSA9IF9fUkVWKEhBU0hfRElHRVNULT5IUls2XSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIDMyOiAgIC8qIFNIQTI1NiAqLworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMF0pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMV0pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbMl0pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbM10pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSC0+SFJbNF0pOworICAgICAgbXNnZGlnZXN0ICs9IDRVOworICAgICAgKih1aW50MzJfdCAqKShtc2dkaWdlc3QpID0gX19SRVYoSEFTSF9ESUdFU1QtPkhSWzVdKTsKKyAgICAgIG1zZ2RpZ2VzdCArPSA0VTsKKyAgICAgICoodWludDMyX3QgKikobXNnZGlnZXN0KSA9IF9fUkVWKEhBU0hfRElHRVNULT5IUls2XSk7CisgICAgICBtc2dkaWdlc3QgKz0gNFU7CisgICAgICAqKHVpbnQzMl90ICopKG1zZ2RpZ2VzdCkgPSBfX1JFVihIQVNIX0RJR0VTVC0+SFJbN10pOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICBicmVhazsKKyAgICAgIGJyZWFrOwogICB9CiB9CiAKQEAgLTE5MzQsMTkgKzE5NjEsMjAgQEAKICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCBkdXJhdGlvbi4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLXN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBIQVNIX1dhaXRPbkZsYWdVbnRpbFRpbWVvdXQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDMyX3QgRmxhZywgRmxhZ1N0YXR1cyBTdGF0dXMsIHVpbnQzMl90IFRpbWVvdXQpCitzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSEFTSF9XYWl0T25GbGFnVW50aWxUaW1lb3V0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQzMl90IEZsYWcsIEZsYWdTdGF0dXMgU3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KQogewogICB1aW50MzJfdCB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOwogCiAgIC8qIFdhaXQgdW50aWwgZmxhZyBpcyBzZXQgKi8KLSAgaWYoU3RhdHVzID09IFJFU0VUKQorICBpZiAoU3RhdHVzID09IFJFU0VUKQogICB7Ci0gICAgd2hpbGUoX19IQUxfSEFTSF9HRVRfRkxBRyhGbGFnKSA9PSBSRVNFVCkKKyAgICB3aGlsZSAoX19IQUxfSEFTSF9HRVRfRkxBRyhGbGFnKSA9PSBSRVNFVCkKICAgICB7CiAgICAgICAvKiBDaGVjayBmb3IgdGhlIFRpbWVvdXQgKi8KLSAgICAgIGlmKFRpbWVvdXQgIT0gSEFMX01BWF9ERUxBWSkKKyAgICAgIGlmIChUaW1lb3V0ICE9IEhBTF9NQVhfREVMQVkpCiAgICAgICB7Ci0gICAgICAgIGlmKCgoSEFMX0dldFRpY2soKS10aWNrc3RhcnQpID4gVGltZW91dCkgfHwgKFRpbWVvdXQgPT0gMFUpKQorICAgICAgICBpZiAoKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0KSA+IFRpbWVvdXQpIHx8IChUaW1lb3V0ID09IDBVKSkKICAgICAgICAgewogICAgICAgICAgIC8qIFNldCBTdGF0ZSB0byBSZWFkeSB0byBiZSBhYmxlIHRvIHJlc3RhcnQgbGF0ZXIgb24gKi8KICAgICAgICAgICBoaGFzaC0+U3RhdGUgID0gSEFMX0hBU0hfU1RBVEVfUkVBRFk7CkBAIC0xOTYzLDEyICsxOTkxLDEyIEBACiAgIH0KICAgZWxzZQogICB7Ci0gICAgd2hpbGUoX19IQUxfSEFTSF9HRVRfRkxBRyhGbGFnKSAhPSBSRVNFVCkKKyAgICB3aGlsZSAoX19IQUxfSEFTSF9HRVRfRkxBRyhGbGFnKSAhPSBSRVNFVCkKICAgICB7CiAgICAgICAvKiBDaGVjayBmb3IgdGhlIFRpbWVvdXQgKi8KLSAgICAgIGlmKFRpbWVvdXQgIT0gSEFMX01BWF9ERUxBWSkKKyAgICAgIGlmIChUaW1lb3V0ICE9IEhBTF9NQVhfREVMQVkpCiAgICAgICB7Ci0gICAgICAgIGlmKCgoSEFMX0dldFRpY2soKS10aWNrc3RhcnQpID4gVGltZW91dCkgfHwgKFRpbWVvdXQgPT0gMFUpKQorICAgICAgICBpZiAoKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0KSA+IFRpbWVvdXQpIHx8IChUaW1lb3V0ID09IDBVKSkKICAgICAgICAgewogICAgICAgICAgIC8qIFNldCBTdGF0ZSB0byBSZWFkeSB0byBiZSBhYmxlIHRvIHJlc3RhcnQgbGF0ZXIgb24gKi8KICAgICAgICAgICBoaGFzaC0+U3RhdGUgID0gSEFMX0hBU0hfU1RBVEVfUkVBRFk7CkBAIC0yMDAxLDEwICsyMDI5LDEwIEBACiAgIGlmIChoaGFzaC0+U3RhdGUgPT0gSEFMX0hBU0hfU1RBVEVfQlVTWSkKICAgewogICAgIC8qIElUQ291bnRlciBtdXN0IG5vdCBiZSBlcXVhbCB0byAwIGF0IHRoaXMgcG9pbnQuIFJlcG9ydCBhbiBlcnJvciBpZiB0aGlzIGlzIHRoZSBjYXNlLiAqLwotICAgIGlmKGhoYXNoLT5IYXNoSVRDb3VudGVyID09IDBVKQorICAgIGlmIChoaGFzaC0+SGFzaElUQ291bnRlciA9PSAwVSkKICAgICB7CiAgICAgICAvKiBEaXNhYmxlIEludGVycnVwdHMgKi8KLSAgICAgIF9fSEFMX0hBU0hfRElTQUJMRV9JVChIQVNIX0lUX0RJTkl8SEFTSF9JVF9EQ0kpOworICAgICAgX19IQUxfSEFTSF9ESVNBQkxFX0lUKEhBU0hfSVRfRElOSSB8IEhBU0hfSVRfRENJKTsKICAgICAgIC8qIEhBU0ggc3RhdGUgc2V0IGJhY2sgdG8gUmVhZHkgdG8gcHJldmVudCBhbnkgaXNzdWUgaW4gdXNlciBjb2RlCiAgICAgICAgICBwcmVzZW50IGluIEhBTF9IQVNIX0Vycm9yQ2FsbGJhY2soKSAqLwogICAgICAgaGhhc2gtPlN0YXRlID0gSEFMX0hBU0hfU1RBVEVfUkVBRFk7CkBAIC0yMDEyLDkgKzIwNDAsOSBAQAogICAgIH0KICAgICBlbHNlIGlmIChoaGFzaC0+SGFzaElUQ291bnRlciA9PSAxVSkKICAgICB7Ci0gICAgIC8qIFRoaXMgaXMgdGhlIGZpcnN0IGNhbGwgdG8gSEFTSF9JVCwgdGhlIGZpcnN0IGlucHV0IGRhdGEgYXJlIGFib3V0IHRvIGJlCi0gICAgICAgIGVudGVyZWQgaW4gdGhlIFBlcmlwaGVyYWwuIEEgc3BlY2lmaWMgcHJvY2Vzc2luZyBpcyBjYXJyaWVkIG91dCBhdCB0aGlzIHBvaW50IHRvCi0gICAgICAgIHN0YXJ0LXVwIHRoZSBwcm9jZXNzaW5nLiAqLworICAgICAgLyogVGhpcyBpcyB0aGUgZmlyc3QgY2FsbCB0byBIQVNIX0lULCB0aGUgZmlyc3QgaW5wdXQgZGF0YSBhcmUgYWJvdXQgdG8gYmUKKyAgICAgICAgIGVudGVyZWQgaW4gdGhlIFBlcmlwaGVyYWwuIEEgc3BlY2lmaWMgcHJvY2Vzc2luZyBpcyBjYXJyaWVkIG91dCBhdCB0aGlzIHBvaW50IHRvCisgICAgICAgICBzdGFydC11cCB0aGUgcHJvY2Vzc2luZy4gKi8KICAgICAgIGhoYXNoLT5IYXNoSVRDb3VudGVyID0gMlU7CiAgICAgfQogICAgIGVsc2UKQEAgLTIwMzEsNyArMjA1OSw3IEBACiAgICAgICBIQVNIX0dldERpZ2VzdChoaGFzaC0+cEhhc2hPdXRCdWZmUHRyLCBIQVNIX0RJR0VTVF9MRU5HVEgoKSk7CiAKICAgICAgIC8qIERpc2FibGUgSW50ZXJydXB0cyAqLwotICAgICAgX19IQUxfSEFTSF9ESVNBQkxFX0lUKEhBU0hfSVRfRElOSXxIQVNIX0lUX0RDSSk7CisgICAgICBfX0hBTF9IQVNIX0RJU0FCTEVfSVQoSEFTSF9JVF9ESU5JIHwgSEFTSF9JVF9EQ0kpOwogICAgICAgLyogQ2hhbmdlIHRoZSBIQVNIIHN0YXRlICovCiAgICAgICBoaGFzaC0+U3RhdGUgPSBIQUxfSEFTSF9TVEFURV9SRUFEWTsKICAgICAgIC8qIFJlc2V0IEhBU0ggc3RhdGUgbWFjaGluZSAqLwpAQCAtMjA1MiwxMCArMjA4MCwxMCBAQAogCiAgICAgICAvKiBJZiB0aGUgc3VzcGVuc2lvbiBmbGFnIGhhcyBiZWVuIHJhaXNlZCBhbmQgaWYgdGhlIHByb2Nlc3NpbmcgaXMgbm90IGFib3V0CiAgICAgICAgICB0byBlbmQsIHN1c3BlbmQgcHJvY2Vzc2luZyAqLwotICAgICAgaWYgKCAoaGhhc2gtPkhhc2hJbkNvdW50ICE9IDBVKSAmJiAgKGhoYXNoLT5TdXNwZW5kUmVxdWVzdCA9PSBIQUxfSEFTSF9TVVNQRU5EKSkKKyAgICAgIGlmICgoaGhhc2gtPkhhc2hJbkNvdW50ICE9IDBVKSAmJiAoaGhhc2gtPlN1c3BlbmRSZXF1ZXN0ID09IEhBTF9IQVNIX1NVU1BFTkQpKQogICAgICAgewogICAgICAgICAvKiBEaXNhYmxlIEludGVycnVwdHMgKi8KLSAgICAgICAgX19IQUxfSEFTSF9ESVNBQkxFX0lUKEhBU0hfSVRfRElOSXxIQVNIX0lUX0RDSSk7CisgICAgICAgIF9fSEFMX0hBU0hfRElTQUJMRV9JVChIQVNIX0lUX0RJTkkgfCBIQVNIX0lUX0RDSSk7CiAKICAgICAgICAgLyogUmVzZXQgU3VzcGVuZFJlcXVlc3QgKi8KICAgICAgICAgaGhhc2gtPlN1c3BlbmRSZXF1ZXN0ID0gSEFMX0hBU0hfU1VTUEVORF9OT05FOwpAQCAtMjA2Niw3ICsyMDk0LDcgQEAKICAgICAgICAgcmV0dXJuIEhBTF9PSzsKICAgICAgIH0KIAotICAgICAgLyogRW50ZXIgaW5wdXQgZGF0YSBpbiB0aGUgUGVyaXBoZXJhbCB0aHJ1IEhBU0hfV3JpdGVfQmxvY2tfRGF0YSgpIGNhbGwgYW5kCisgICAgICAvKiBFbnRlciBpbnB1dCBkYXRhIGluIHRoZSBQZXJpcGhlcmFsIHRocm91Z2ggSEFTSF9Xcml0ZV9CbG9ja19EYXRhKCkgY2FsbCBhbmQKICAgICAgICAgY2hlY2sgd2hldGhlciB0aGUgZGlnZXN0IGNhbGN1bGF0aW9uIGhhcyBiZWVuIHRyaWdnZXJlZCAqLwogICAgICAgaWYgKEhBU0hfV3JpdGVfQmxvY2tfRGF0YShoaGFzaCkgPT0gSEFTSF9ESUdFU1RfQ0FMQ1VMQVRJT05fU1RBUlRFRCkKICAgICAgIHsKQEAgLTIwODQsNyArMjExMiw3IEBACiAgICAgICAgICAgaWYgKEhBU0hfV2FpdE9uRmxhZ1VudGlsVGltZW91dChoaGFzaCwgSEFTSF9GTEFHX0JVU1ksIFNFVCwgSEFTSF9USU1FT1VUVkFMVUUpICE9IEhBTF9PSykKICAgICAgICAgICB7CiAgICAgICAgICAgICAvKiBEaXNhYmxlIEludGVycnVwdHMgKi8KLSAgICAgICAgICAgIF9fSEFMX0hBU0hfRElTQUJMRV9JVChIQVNIX0lUX0RJTkl8SEFTSF9JVF9EQ0kpOworICAgICAgICAgICAgX19IQUxfSEFTSF9ESVNBQkxFX0lUKEhBU0hfSVRfRElOSSB8IEhBU0hfSVRfRENJKTsKICAgICAgICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKICAgICAgICAgICB9CiAgICAgICAgICAgLyogSW5pdGlhbGl6YXRpb24gc3RhcnQgZm9yIEhNQUMgU1RFUCAyICovCkBAIC0yMDkyLDcgKzIxMjAsOCBAQAogICAgICAgICAgIF9fSEFMX0hBU0hfU0VUX05CVkFMSURCSVRTKGhoYXNoLT5IYXNoQnVmZlNpemUpOyAgLyogU2V0IE5CTFcgZm9yIHRoZSBpbnB1dCBtZXNzYWdlICovCiAgICAgICAgICAgaGhhc2gtPkhhc2hJbkNvdW50ID0gaGhhc2gtPkhhc2hCdWZmU2l6ZTsgICAgICAgICAvKiBTZXQgdGhlIGlucHV0IGRhdGEgc2l6ZSAoaW4gYnl0ZXMpICovCiAgICAgICAgICAgaGhhc2gtPnBIYXNoSW5CdWZmUHRyID0gaGhhc2gtPnBIYXNoTXNnQnVmZlB0cjsgICAvKiBTZXQgdGhlIGlucHV0IGRhdGEgYWRkcmVzcyAqLwotICAgICAgICAgIGhoYXNoLT5IYXNoSVRDb3VudGVyID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogU2V0IElUQ291bnRlciB0byAxIHRvIGluZGljYXRlIHRoZSBzdGFydCBvZiBhIG5ldyBwaGFzZSAqLworICAgICAgICAgIGhoYXNoLT5IYXNoSVRDb3VudGVyID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogU2V0IElUQ291bnRlciB0byAxIHRvIGluZGljYXRlIHRoZSBzdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgYSBuZXcgcGhhc2UgKi8KICAgICAgICAgICBfX0hBTF9IQVNIX0VOQUJMRV9JVChIQVNIX0lUX0RJTkkpOyAgICAgICAgICAgICAgIC8qIEVuYWJsZSBJVCAod2FzIGRpc2FibGVkIGluIEhBU0hfV3JpdGVfQmxvY2tfRGF0YSkgKi8KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChoaGFzaC0+UGhhc2UgPT0gSEFMX0hBU0hfUEhBU0VfSE1BQ19TVEVQXzIpCkBAIC0yMTAxLDcgKzIxMzAsNyBAQAogICAgICAgICAgIGlmIChIQVNIX1dhaXRPbkZsYWdVbnRpbFRpbWVvdXQoaGhhc2gsIEhBU0hfRkxBR19CVVNZLCBTRVQsIEhBU0hfVElNRU9VVFZBTFVFKSAhPSBIQUxfT0spCiAgICAgICAgICAgewogICAgICAgICAgICAgLyogRGlzYWJsZSBJbnRlcnJ1cHRzICovCi0gICAgICAgICAgICBfX0hBTF9IQVNIX0RJU0FCTEVfSVQoSEFTSF9JVF9ESU5JfEhBU0hfSVRfRENJKTsKKyAgICAgICAgICAgIF9fSEFMX0hBU0hfRElTQUJMRV9JVChIQVNIX0lUX0RJTkkgfCBIQVNIX0lUX0RDSSk7CiAgICAgICAgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CiAgICAgICAgICAgfQogICAgICAgICAgIC8qIEluaXRpYWxpemF0aW9uIHN0YXJ0IGZvciBITUFDIFNURVAgMyAqLwpAQCAtMjEwOSw3ICsyMTM4LDggQEAKICAgICAgICAgICBfX0hBTF9IQVNIX1NFVF9OQlZBTElEQklUUyhoaGFzaC0+SW5pdC5LZXlTaXplKTsgICAvKiBTZXQgTkJMVyBmb3IgdGhlIGtleSAqLwogICAgICAgICAgIGhoYXNoLT5IYXNoSW5Db3VudCA9IGhoYXNoLT5Jbml0LktleVNpemU7ICAgICAgICAgIC8qIFNldCB0aGUga2V5IHNpemUgKGluIGJ5dGVzKSAqLwogICAgICAgICAgIGhoYXNoLT5wSGFzaEluQnVmZlB0ciA9IGhoYXNoLT5Jbml0LnBLZXk7ICAgICAgICAgIC8qIFNldCB0aGUga2V5IGFkZHJlc3MgKi8KLSAgICAgICAgICBoaGFzaC0+SGFzaElUQ291bnRlciA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTZXQgSVRDb3VudGVyIHRvIDEgdG8gaW5kaWNhdGUgdGhlIHN0YXJ0IG9mIGEgbmV3IHBoYXNlICovCisgICAgICAgICAgaGhhc2gtPkhhc2hJVENvdW50ZXIgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU2V0IElUQ291bnRlciB0byAxIHRvIGluZGljYXRlIHRoZSBzdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGEgbmV3IHBoYXNlICovCiAgICAgICAgICAgX19IQUxfSEFTSF9FTkFCTEVfSVQoSEFTSF9JVF9ESU5JKTsgICAgICAgICAgICAgICAgLyogRW5hYmxlIElUICh3YXMgZGlzYWJsZWQgaW4gSEFTSF9Xcml0ZV9CbG9ja19EYXRhKSAqLwogICAgICAgICB9CiAgICAgICAgIGVsc2UKQEAgLTIxNDMsMjggKzIxNzMsMjggQEAKICAgdWludDMyX3QgcmV0ID0gSEFTSF9ESUdFU1RfQ0FMQ1VMQVRJT05fTk9UX1NUQVJURUQ7CiAKICAgLyogSWYgdGhlcmUgYXJlIG1vcmUgdGhhbiA2NCBieXRlcyByZW1haW5pbmcgdG8gYmUgZW50ZXJlZCAqLwotICBpZihoaGFzaC0+SGFzaEluQ291bnQgPiA2NFUpCisgIGlmIChoaGFzaC0+SGFzaEluQ291bnQgPiA2NFUpCiAgIHsKICAgICBpbnB1dGFkZHIgPSAodWludDMyX3QpaGhhc2gtPnBIYXNoSW5CdWZmUHRyOwogICAgIC8qIFdyaXRlIHRoZSBJbnB1dCBibG9jayBpbiB0aGUgRGF0YSBJTiByZWdpc3RlcgogICAgICAgKDE2IDMyLWJpdCB3b3Jkcywgb3IgNjQgYnl0ZXMgYXJlIGVudGVyZWQpICovCi0gICAgZm9yKGJ1ZmZlcmNvdW50ZXIgPSAwVTsgYnVmZmVyY291bnRlciA8IDY0VTsgYnVmZmVyY291bnRlcis9NFUpCisgICAgZm9yIChidWZmZXJjb3VudGVyID0gMFU7IGJ1ZmZlcmNvdW50ZXIgPCA2NFU7IGJ1ZmZlcmNvdW50ZXIgKz0gNFUpCiAgICAgewotICAgICAgSEFTSC0+RElOID0gKih1aW50MzJfdCopaW5wdXRhZGRyOwotICAgICAgaW5wdXRhZGRyKz00VTsKKyAgICAgIEhBU0gtPkRJTiA9ICoodWludDMyX3QgKilpbnB1dGFkZHI7CisgICAgICBpbnB1dGFkZHIgKz0gNFU7CiAgICAgfQogICAgIC8qIElmIHRoaXMgaXMgdGhlIHN0YXJ0IG9mIGlucHV0IGRhdGEgZW50ZXJpbmcsIGFuIGFkZGl0aW9uYWwgd29yZAogICAgICAgbXVzdCBiZSBlbnRlcmVkIHRvIHN0YXJ0IHVwIHRoZSBIQVNIIHByb2Nlc3NpbmcgKi8KLSAgICBpZihoaGFzaC0+SGFzaElUQ291bnRlciA9PSAyVSkKKyAgICBpZiAoaGhhc2gtPkhhc2hJVENvdW50ZXIgPT0gMlUpCiAgICAgewotICAgICAgSEFTSC0+RElOID0gKih1aW50MzJfdCopaW5wdXRhZGRyOwotICAgICAgaWYoaGhhc2gtPkhhc2hJbkNvdW50ID49IDY4VSkKKyAgICAgIEhBU0gtPkRJTiA9ICoodWludDMyX3QgKilpbnB1dGFkZHI7CisgICAgICBpZiAoaGhhc2gtPkhhc2hJbkNvdW50ID49IDY4VSkKICAgICAgIHsKICAgICAgICAgLyogVGhlcmUgYXJlIHN0aWxsIGRhdGEgd2FpdGluZyB0byBiZSBlbnRlcmVkIGluIHRoZSBQZXJpcGhlcmFsLgogICAgICAgICAgICBEZWNyZW1lbnQgYnVmZmVyIGNvdW50ZXIgYW5kIHNldCBwb2ludGVyIHRvIHRoZSBwcm9wZXIKICAgICAgICAgICAgbWVtb3J5IGxvY2F0aW9uIGZvciB0aGUgbmV4dCBkYXRhIGVudGVyaW5nIHJvdW5kLiAqLwogICAgICAgICBoaGFzaC0+SGFzaEluQ291bnQgLT0gNjhVOwotICAgICAgICBoaGFzaC0+cEhhc2hJbkJ1ZmZQdHIrPSA2OFU7CisgICAgICAgIGhoYXNoLT5wSGFzaEluQnVmZlB0ciArPSA2OFU7CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CkBAIC0yMTc4LDcgKzIyMDgsNyBAQAogICAgICAgICAgRGVjcmVtZW50IGJ1ZmZlciBjb3VudGVyIGFuZCBzZXQgcG9pbnRlciB0byB0aGUgcHJvcGVyCiAgICAgICAgIG1lbW9yeSBsb2NhdGlvbiBmb3IgdGhlIG5leHQgZGF0YSBlbnRlcmluZyByb3VuZC4qLwogICAgICAgaGhhc2gtPkhhc2hJbkNvdW50IC09IDY0VTsKLSAgICAgIGhoYXNoLT5wSGFzaEluQnVmZlB0cis9IDY0VTsKKyAgICAgIGhoYXNoLT5wSGFzaEluQnVmZlB0ciArPSA2NFU7CiAgICAgfQogICB9CiAgIGVsc2UKQEAgLTIxOTQsMTAgKzIyMjQsMTAgQEAKICAgICBfX0hBTF9IQVNIX0RJU0FCTEVfSVQoSEFTSF9JVF9ESU5JKTsKIAogICAgIC8qIFdyaXRlIHRoZSBJbnB1dCBibG9jayBpbiB0aGUgRGF0YSBJTiByZWdpc3RlciAqLwotICAgIGZvcihidWZmZXJjb3VudGVyID0gMFU7IGJ1ZmZlcmNvdW50ZXIgPCAoKGlucHV0Y291bnRlciszVSkvNFUpOyBidWZmZXJjb3VudGVyKyspCisgICAgZm9yIChidWZmZXJjb3VudGVyID0gMFU7IGJ1ZmZlcmNvdW50ZXIgPCAoKGlucHV0Y291bnRlciArIDNVKSAvIDRVKTsgYnVmZmVyY291bnRlcisrKQogICAgIHsKLSAgICAgIEhBU0gtPkRJTiA9ICoodWludDMyX3QqKWlucHV0YWRkcjsKLSAgICAgIGlucHV0YWRkcis9NFU7CisgICAgICBIQVNILT5ESU4gPSAqKHVpbnQzMl90ICopaW5wdXRhZGRyOworICAgICAgaW5wdXRhZGRyICs9IDRVOwogICAgIH0KIAogICAgIGlmIChoaGFzaC0+QWNjdW11bGF0aW9uID09IDFVKQpAQCAtMjIxMSw5ICsyMjQxLDkgQEAKICAgICAgIGhoYXNoLT5TdGF0ZSA9IEhBTF9IQVNIX1NUQVRFX1JFQURZOwogICAgICAgLyogQ2FsbCBJbnB1dCBkYXRhIHRyYW5zZmVyIGNvbXBsZXRlIGNhbGwgYmFjayAqLwogI2lmIChVU0VfSEFMX0hBU0hfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCi0gICAgICAgIGhoYXNoLT5JbkNwbHRDYWxsYmFjayhoaGFzaCk7CisgICAgICBoaGFzaC0+SW5DcGx0Q2FsbGJhY2soaGhhc2gpOwogI2Vsc2UKLSAgICAgICAgSEFMX0hBU0hfSW5DcGx0Q2FsbGJhY2soaGhhc2gpOworICAgICAgSEFMX0hBU0hfSW5DcGx0Q2FsbGJhY2soaGhhc2gpOwogI2VuZGlmIC8qIFVTRV9IQUxfSEFTSF9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KICAgICB9CiAgICAgZWxzZQpAQCAtMjI0Myw3ICsyMjczLDggQEAKIHN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBITUFDX1Byb2Nlc3NpbmcoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDMyX3QgVGltZW91dCkKIHsKICAgLyogRW5zdXJlIGZpcnN0IHRoYXQgUGhhc2UgaXMgY29ycmVjdCAqLwotICBpZiAoKGhoYXNoLT5QaGFzZSAhPSBIQUxfSEFTSF9QSEFTRV9ITUFDX1NURVBfMSkgJiYgKGhoYXNoLT5QaGFzZSAhPSBIQUxfSEFTSF9QSEFTRV9ITUFDX1NURVBfMikgJiYgKGhoYXNoLT5QaGFzZSAhPSBIQUxfSEFTSF9QSEFTRV9ITUFDX1NURVBfMykpCisgIGlmICgoaGhhc2gtPlBoYXNlICE9IEhBTF9IQVNIX1BIQVNFX0hNQUNfU1RFUF8xKSAmJiAoaGhhc2gtPlBoYXNlICE9IEhBTF9IQVNIX1BIQVNFX0hNQUNfU1RFUF8yKQorICAgICAgJiYgKGhoYXNoLT5QaGFzZSAhPSBIQUxfSEFTSF9QSEFTRV9ITUFDX1NURVBfMykpCiAgIHsKICAgICAvKiBDaGFuZ2UgdGhlIEhBU0ggc3RhdGUgKi8KICAgICBoaGFzaC0+U3RhdGUgPSBIQUxfSEFTSF9TVEFURV9SRUFEWTsKQEAgLTIzNDAsMTEgKzIzNzEsMTEgQEAKICAgfQogCiAKLSAvKiBITUFDIFN0ZXAgMyBwcm9jZXNzaW5nLgotICAgICBBZnRlciBwaGFzZSBjaGVjaywgSE1BQ19Qcm9jZXNzaW5nKCkgbWF5Ci0gICAgIC0gZGlyZWN0bHkgc3RhcnQgdXAgZnJvbSB0aGlzIHBvaW50IGluIHJlc3VtcHRpb24gY2FzZQotICAgICAgIGlmIHRoZSBzYW1lIFN0ZXAgMyBwcm9jZXNzaW5nIHdhcyBzdXNwZW5kZWQgcHJldmlvdXNseQotICAgIC0gb3IgZmFsbCB0aHJvdWdoIGZyb20gdGhlIFN0ZXAgMiBwcm9jZXNzaW5nIGNhcnJpZWQgb3V0IGhlcmVhYm92ZSAqLworICAvKiBITUFDIFN0ZXAgMyBwcm9jZXNzaW5nLgorICAgICAgQWZ0ZXIgcGhhc2UgY2hlY2ssIEhNQUNfUHJvY2Vzc2luZygpIG1heQorICAgICAgLSBkaXJlY3RseSBzdGFydCB1cCBmcm9tIHRoaXMgcG9pbnQgaW4gcmVzdW1wdGlvbiBjYXNlCisgICAgICAgIGlmIHRoZSBzYW1lIFN0ZXAgMyBwcm9jZXNzaW5nIHdhcyBzdXNwZW5kZWQgcHJldmlvdXNseQorICAgICAtIG9yIGZhbGwgdGhyb3VnaCBmcm9tIHRoZSBTdGVwIDIgcHJvY2Vzc2luZyBjYXJyaWVkIG91dCBoZXJlYWJvdmUgKi8KICAgaWYgKGhoYXNoLT5QaGFzZSA9PSBIQUxfSEFTSF9QSEFTRV9ITUFDX1NURVBfMykKICAgewogICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKiBTVEVQIDMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMjM3Miw3ICsyNDAzLDcgQEAKICAgICBfX0hBTF9IQVNIX1NUQVJUX0RJR0VTVCgpOwogCiAgICAgLyogV2FpdCBmb3IgRENJUyBmbGFnIHRvIGJlIHNldCAqLwotICAgICBpZiAoSEFTSF9XYWl0T25GbGFnVW50aWxUaW1lb3V0KGhoYXNoLCBIQVNIX0ZMQUdfRENJUywgUkVTRVQsIFRpbWVvdXQpICE9IEhBTF9PSykKKyAgICBpZiAoSEFTSF9XYWl0T25GbGFnVW50aWxUaW1lb3V0KGhoYXNoLCBIQVNIX0ZMQUdfRENJUywgUkVTRVQsIFRpbWVvdXQpICE9IEhBTF9PSykKICAgICB7CiAgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CiAgICAgfQpAQCAtMjM4NCwxNCArMjQxNSwxNCBAQAogICAgIGhoYXNoLT5QaGFzZSA9IEhBTF9IQVNIX1BIQVNFX1JFQURZOwogICB9CiAKLSAgIC8qIENoYW5nZSB0aGUgSEFTSCBzdGF0ZSAqLwotICAgaGhhc2gtPlN0YXRlID0gSEFMX0hBU0hfU1RBVEVfUkVBRFk7CisgIC8qIENoYW5nZSB0aGUgSEFTSCBzdGF0ZSAqLworICBoaGFzaC0+U3RhdGUgPSBIQUxfSEFTSF9TVEFURV9SRUFEWTsKIAotICAgLyogUHJvY2VzcyBVbmxvY2sgKi8KLSAgIF9fSEFMX1VOTE9DSyhoaGFzaCk7CisgIC8qIFByb2Nlc3MgVW5sb2NrICovCisgIF9fSEFMX1VOTE9DSyhoaGFzaCk7CiAKLSAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KLSAgIHJldHVybiBIQUxfT0s7CisgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogCkBAIC0yNDA3LDcgKzI0MzgsOCBAQAogICAqIEBwYXJhbSAgQWxnb3JpdGhtIEhBU0ggYWxnb3JpdGhtLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFTSF9TdGFydChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQsIHVpbnQzMl90IEFsZ29yaXRobSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBU0hfU3RhcnQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90ICpwT3V0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0LCB1aW50MzJfdCBBbGdvcml0aG0pCiB7CiAgIHVpbnQ4X3QgKnBJbkJ1ZmZlcl90bXA7ICAvKiBpbnB1dCBkYXRhIGFkZHJlc3MsIGlucHV0IHBhcmFtZXRlciBvZiBIQVNIX1dyaXRlRGF0YSgpICAgICAgICAgKi8KICAgdWludDMyX3QgU2l6ZV90bXA7IC8qIGlucHV0IGRhdGEgc2l6ZSAoaW4gYnl0ZXMpLCBpbnB1dCBwYXJhbWV0ZXIgb2YgSEFTSF9Xcml0ZURhdGEoKSAqLwpAQCAtMjQxNSw3ICsyNDQ3LDcgQEAKIAogCiAgIC8qIEluaXRpYXRlIEhBU0ggcHJvY2Vzc2luZyBpbiBjYXNlIG9mIHN0YXJ0IG9yIHJlc3VtcHRpb24gKi8KLWlmKChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfUkVBRFkpIHx8IChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfU1VTUEVOREVEKSkKKyAgaWYgKChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfUkVBRFkpIHx8IChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfU1VTUEVOREVEKSkKICAgewogICAgIC8qIENoZWNrIGlucHV0IHBhcmFtZXRlcnMgKi8KICAgICBpZiAoKHBJbkJ1ZmZlciA9PSBOVUxMKSB8fCAocE91dEJ1ZmZlciA9PSBOVUxMKSkKQEAgLTI0MjgsMTMgKzI0NjAsMTMgQEAKICAgICBfX0hBTF9MT0NLKGhoYXNoKTsKIAogICAgIC8qIENoZWNrIGlmIGluaXRpYWxpemF0aW9uIHBoYXNlIGhhcyBub3QgYmVlbiBhbHJlYWR5IHBlcmZvcm1lZCAqLwotICAgIGlmKGhoYXNoLT5QaGFzZSA9PSBIQUxfSEFTSF9QSEFTRV9SRUFEWSkKKyAgICBpZiAoaGhhc2gtPlBoYXNlID09IEhBTF9IQVNIX1BIQVNFX1JFQURZKQogICAgIHsKICAgICAgIC8qIENoYW5nZSB0aGUgSEFTSCBzdGF0ZSAqLwogICAgICAgaGhhc2gtPlN0YXRlID0gSEFMX0hBU0hfU1RBVEVfQlVTWTsKIAogICAgICAgLyogU2VsZWN0IHRoZSBIQVNIIGFsZ29yaXRobSwgY2xlYXIgSE1BQyBtb2RlIGFuZCBsb25nIGtleSBzZWxlY3Rpb24gYml0LCByZXNldCB0aGUgSEFTSCBwcm9jZXNzb3IgY29yZSAqLwotICAgICAgTU9ESUZZX1JFRyhIQVNILT5DUiwgSEFTSF9DUl9MS0VZfEhBU0hfQ1JfQUxHT3xIQVNIX0NSX01PREV8SEFTSF9DUl9JTklULCBBbGdvcml0aG0gfCBIQVNIX0NSX0lOSVQpOworICAgICAgTU9ESUZZX1JFRyhIQVNILT5DUiwgSEFTSF9DUl9MS0VZIHwgSEFTSF9DUl9BTEdPIHwgSEFTSF9DUl9NT0RFIHwgSEFTSF9DUl9JTklULCBBbGdvcml0aG0gfCBIQVNIX0NSX0lOSVQpOwogCiAgICAgICAvKiBDb25maWd1cmUgdGhlIG51bWJlciBvZiB2YWxpZCBiaXRzIGluIGxhc3Qgd29yZCBvZiB0aGUgbWVzc2FnZSAqLwogICAgICAgX19IQUxfSEFTSF9TRVRfTkJWQUxJREJJVFMoU2l6ZSk7CkBAIC0yNTU2LDcgKzI1ODgsNyBAQAogICB9CiAKICAgLyogSW5pdGlhdGUgSEFTSCBwcm9jZXNzaW5nIGluIGNhc2Ugb2Ygc3RhcnQgb3IgcmVzdW1wdGlvbiAqLwotaWYoKFN0YXRlX3RtcCA9PSBIQUxfSEFTSF9TVEFURV9SRUFEWSkgfHwgKFN0YXRlX3RtcCA9PSBIQUxfSEFTSF9TVEFURV9TVVNQRU5ERUQpKQorICBpZiAoKFN0YXRlX3RtcCA9PSBIQUxfSEFTSF9TVEFURV9SRUFEWSkgfHwgKFN0YXRlX3RtcCA9PSBIQUxfSEFTSF9TVEFURV9TVVNQRU5ERUQpKQogICB7CiAgICAgLyogQ2hlY2sgaW5wdXQgcGFyYW1ldGVycyAqLwogICAgIGlmICgocEluQnVmZmVyID09IE5VTEwpIHx8IChTaXplID09IDBVKSkKQEAgLTI1NjUsNyArMjU5Nyw3IEBACiAgICAgICByZXR1cm4gIEhBTF9FUlJPUjsKICAgICB9CiAKLSAgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KKyAgICAvKiBQcm9jZXNzIExvY2tlZCAqLwogICAgIF9fSEFMX0xPQ0soaGhhc2gpOwogCiAgICAgLyogSWYgcmVzdW1pbmcgdGhlIEhBU0ggcHJvY2Vzc2luZyAqLwpAQCAtMjU5MiwxMCArMjYyNCwxMCBAQAogICAgICAgU2l6ZV90bXAgPSBTaXplOyAgICAgICAgICAgICAgLyogU2l6ZV90bXAgY29udGFpbnMgdGhlIGlucHV0IGRhdGEgc2l6ZSBpbiBieXRlcyAqLwogCiAgICAgICAvKiBDaGVjayBpZiBpbml0aWFsaXphdGlvbiBwaGFzZSBoYXMgYWxyZWFkeSBiZSBwZXJmb3JtZWQgKi8KLSAgICAgIGlmKGhoYXNoLT5QaGFzZSA9PSBIQUxfSEFTSF9QSEFTRV9SRUFEWSkKKyAgICAgIGlmIChoaGFzaC0+UGhhc2UgPT0gSEFMX0hBU0hfUEhBU0VfUkVBRFkpCiAgICAgICB7CiAgICAgICAgIC8qIFNlbGVjdCB0aGUgSEFTSCBhbGdvcml0aG0sIGNsZWFyIEhNQUMgbW9kZSBhbmQgbG9uZyBrZXkgc2VsZWN0aW9uIGJpdCwgcmVzZXQgdGhlIEhBU0ggcHJvY2Vzc29yIGNvcmUgKi8KLSAgICAgICAgTU9ESUZZX1JFRyhIQVNILT5DUiwgSEFTSF9DUl9MS0VZfEhBU0hfQ1JfQUxHT3xIQVNIX0NSX01PREV8SEFTSF9DUl9JTklULCBBbGdvcml0aG0gfCBIQVNIX0NSX0lOSVQpOworICAgICAgICBNT0RJRllfUkVHKEhBU0gtPkNSLCBIQVNIX0NSX0xLRVkgfCBIQVNIX0NSX0FMR08gfCBIQVNIX0NSX01PREUgfCBIQVNIX0NSX0lOSVQsIEFsZ29yaXRobSB8IEhBU0hfQ1JfSU5JVCk7CiAgICAgICB9CiAKICAgICAgIC8qIFNldCB0aGUgcGhhc2UgKi8KQEAgLTI2NTksNyArMjY5MSw3IEBACiAgIH0KIAogICAvKiBJbml0aWF0ZSBIQVNIIHByb2Nlc3NpbmcgaW4gY2FzZSBvZiBzdGFydCBvciByZXN1bXB0aW9uICovCi0gIGlmKChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfUkVBRFkpIHx8IChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfU1VTUEVOREVEKSkKKyAgaWYgKChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfUkVBRFkpIHx8IChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfU1VTUEVOREVEKSkKICAgewogICAgIC8qIENoZWNrIGlucHV0IHBhcmFtZXRlcnMgKi8KICAgICBpZiAoKHBJbkJ1ZmZlciA9PSBOVUxMKSB8fCAoU2l6ZSA9PSAwVSkpCkBAIC0yNjY4LDcgKzI3MDAsNyBAQAogICAgICAgcmV0dXJuICBIQUxfRVJST1I7CiAgICAgfQogCi0gICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCisgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KICAgICBfX0hBTF9MT0NLKGhoYXNoKTsKIAogICAgIC8qIElmIHJlc3VtaW5nIHRoZSBIQVNIIHByb2Nlc3NpbmcgKi8KQEAgLTI2ODMsMTUgKzI3MTUsMTUgQEAKICAgICAgIGhoYXNoLT5TdGF0ZSA9IEhBTF9IQVNIX1NUQVRFX0JVU1k7CiAKICAgICAgIC8qIENoZWNrIGlmIGluaXRpYWxpemF0aW9uIHBoYXNlIGhhcyBhbHJlYWR5IGJlIHBlcmZvcm1lZCAqLwotICAgICAgaWYoaGhhc2gtPlBoYXNlID09IEhBTF9IQVNIX1BIQVNFX1JFQURZKQorICAgICAgaWYgKGhoYXNoLT5QaGFzZSA9PSBIQUxfSEFTSF9QSEFTRV9SRUFEWSkKICAgICAgIHsKICAgICAgICAgLyogU2VsZWN0IHRoZSBIQVNIIGFsZ29yaXRobSwgY2xlYXIgSE1BQyBtb2RlIGFuZCBsb25nIGtleSBzZWxlY3Rpb24gYml0LCByZXNldCB0aGUgSEFTSCBwcm9jZXNzb3IgY29yZSAqLwotICAgICAgICBNT0RJRllfUkVHKEhBU0gtPkNSLCBIQVNIX0NSX0xLRVl8SEFTSF9DUl9BTEdPfEhBU0hfQ1JfTU9ERXxIQVNIX0NSX0lOSVQsIEFsZ29yaXRobSB8IEhBU0hfQ1JfSU5JVCk7CisgICAgICAgIE1PRElGWV9SRUcoSEFTSC0+Q1IsIEhBU0hfQ1JfTEtFWSB8IEhBU0hfQ1JfQUxHTyB8IEhBU0hfQ1JfTU9ERSB8IEhBU0hfQ1JfSU5JVCwgQWxnb3JpdGhtIHwgSEFTSF9DUl9JTklUKTsKICAgICAgICAgaGhhc2gtPkhhc2hJVENvdW50ZXIgPSAxOwogICAgICAgfQogICAgICAgZWxzZQogICAgICAgewotICAgICAgICAgaGhhc2gtPkhhc2hJVENvdW50ZXIgPSAzOyAvKiAnY3J1aXNlLXNwZWVkJyByZWFjaGVkIGR1cmluZyBhIHByZXZpb3VzIGJ1ZmZlciBwcm9jZXNzaW5nICovCisgICAgICAgIGhoYXNoLT5IYXNoSVRDb3VudGVyID0gMzsgLyogJ2NydWlzZS1zcGVlZCcgcmVhY2hlZCBkdXJpbmcgYSBwcmV2aW91cyBidWZmZXIgcHJvY2Vzc2luZyAqLwogICAgICAgfQogCiAgICAgICAvKiBTZXQgdGhlIHBoYXNlICovCkBAIC0yNzAxLDEzICsyNzMzLDEzIEBACiAgICAgICAgZmVkIHRvIHRoZSBQZXJpcGhlcmFsKSwgdGhlIERJTklFIGludGVycnVwdGlvbiB3b24ndCBiZSB0cmlnZ2VyZWQgd2hlbiBESU5JRSBpcyBzZXQuCiAgICAgICAgVGhlcmVmb3JlLCBmaXJzdCB3b3JkcyBhcmUgbWFudWFsbHkgZW50ZXJlZCB1bnRpbCBESU5JUyByYWlzZXMsIG9yIHVudGlsIHRoZXJlCiAgICAgICAgaXMgbm90IG1vcmUgZGF0YSB0byBlbnRlci4gKi8KLSAgICAgIHdoaWxlKCghKF9fSEFMX0hBU0hfR0VUX0ZMQUcoSEFTSF9GTEFHX0RJTklTKSkpICYmIChTaXplVmFyID4gMFUpKQorICAgICAgd2hpbGUgKCghKF9fSEFMX0hBU0hfR0VUX0ZMQUcoSEFTSF9GTEFHX0RJTklTKSkpICYmIChTaXplVmFyID4gMFUpKQogICAgICAgewogCiAgICAgICAgIC8qIFdyaXRlIGlucHV0IGRhdGEgNCBieXRlcyBhdCBhIHRpbWUgKi8KLSAgICAgICAgSEFTSC0+RElOID0gKih1aW50MzJfdCopaW5wdXRhZGRyOwotICAgICAgICBpbnB1dGFkZHIrPTRVOwotICAgICAgICBTaXplVmFyLT00VTsKKyAgICAgICAgSEFTSC0+RElOID0gKih1aW50MzJfdCAqKWlucHV0YWRkcjsKKyAgICAgICAgaW5wdXRhZGRyICs9IDRVOworICAgICAgICBTaXplVmFyIC09IDRVOwogICAgICAgfQogCiAgICAgICAvKiBJZiBESU5JUyBpcyBzdGlsbCBub3Qgc2V0IG9yIGlmIGFsbCB0aGUgZGF0YSBoYXZlIGJlZW4gZmVkLCBzdG9wIGhlcmUgKi8KQEAgLTI3MjgsMTAgKzI3NjAsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgZmVkIHRvIHRoZSBQZXJpcGhlcmFsICovCiAgICAgICBoaGFzaC0+cEhhc2hJbkJ1ZmZQdHIgPSAodWludDhfdCAqKWlucHV0YWRkcjsgICAgICAgLyogUG9pbnRzIGF0IGRhdGEgd2hpY2ggd2lsbCBiZSBmZWQgdG8gdGhlIFBlcmlwaGVyYWwgYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG5leHQgaW50ZXJydXB0aW9uICovCi0gICAgIC8qIEluIGNhc2Ugb2Ygc3VzcGVuc2lvbiwgaGhhc2gtPkhhc2hJbkNvdW50IGFuZCBoaGFzaC0+cEhhc2hJbkJ1ZmZQdHIgY29udGFpbgotICAgICAgICB0aGUgaW5mb3JtYXRpb24gZGVzY3JpYmluZyB3aGVyZSB0aGUgSEFTSCBwcm9jZXNzIGlzIHN0b3BwZWQuCi0gICAgICAgIFRoZXNlIHZhcmlhYmxlcyBhcmUgdXNlZCBsYXRlciBvbiB0byByZXN1bWUgdGhlIEhBU0ggcHJvY2Vzc2luZyBhdCB0aGUKLSAgICAgICAgY29ycmVjdCBsb2NhdGlvbi4gKi8KKyAgICAgIC8qIEluIGNhc2Ugb2Ygc3VzcGVuc2lvbiwgaGhhc2gtPkhhc2hJbkNvdW50IGFuZCBoaGFzaC0+cEhhc2hJbkJ1ZmZQdHIgY29udGFpbgorICAgICAgICAgdGhlIGluZm9ybWF0aW9uIGRlc2NyaWJpbmcgd2hlcmUgdGhlIEhBU0ggcHJvY2VzcyBpcyBzdG9wcGVkLgorICAgICAgICAgVGhlc2UgdmFyaWFibGVzIGFyZSB1c2VkIGxhdGVyIG9uIHRvIHJlc3VtZSB0aGUgSEFTSCBwcm9jZXNzaW5nIGF0IHRoZQorICAgICAgICAgY29ycmVjdCBsb2NhdGlvbi4gKi8KIAogICAgIH0KIApAQCAtMjc2OCwxNiArMjgwMCwxNyBAQAogICAqIEBwYXJhbSAgQWxnb3JpdGhtIEhBU0ggYWxnb3JpdGhtLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFTSF9TdGFydF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IEFsZ29yaXRobSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBU0hfU3RhcnRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90ICpwT3V0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBBbGdvcml0aG0pCiB7Ci0gICBIQUxfSEFTSF9TdGF0ZVR5cGVEZWYgU3RhdGVfdG1wID0gaGhhc2gtPlN0YXRlOworICBIQUxfSEFTSF9TdGF0ZVR5cGVEZWYgU3RhdGVfdG1wID0gaGhhc2gtPlN0YXRlOwogICBfX0lPIHVpbnQzMl90IGlucHV0YWRkciA9ICh1aW50MzJfdCkgcEluQnVmZmVyOwogICB1aW50MzJfdCBwb2xsaW5nX3N0ZXAgPSAwVTsKICAgdWludDMyX3QgaW5pdGlhbGl6YXRpb25fc2tpcHBlZCA9IDBVOwogICB1aW50MzJfdCBTaXplVmFyID0gU2l6ZTsKIAogICAvKiBJZiBTdGF0ZSBpcyByZWFkeSBvciBzdXNwZW5kZWQsIHN0YXJ0IG9yIHJlc3VtZSBJVC1iYXNlZCBIQVNIIHByb2Nlc3NpbmcgKi8KLWlmKChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfUkVBRFkpIHx8IChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfU1VTUEVOREVEKSkKKyAgaWYgKChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfUkVBRFkpIHx8IChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfU1VTUEVOREVEKSkKICAgewogICAgIC8qIENoZWNrIGlucHV0IHBhcmFtZXRlcnMgKi8KICAgICBpZiAoKHBJbkJ1ZmZlciA9PSBOVUxMKSB8fCAoU2l6ZSA9PSAwVSkgfHwgKHBPdXRCdWZmZXIgPT0gTlVMTCkpCkBAIC0yNzk2LDIzICsyODI5LDIzIEBACiAgICAgaGhhc2gtPkhhc2hJVENvdW50ZXIgPSAxOwogCiAgICAgLyogQ2hlY2sgaWYgaW5pdGlhbGl6YXRpb24gcGhhc2UgaGFzIGFscmVhZHkgYmUgcGVyZm9ybWVkICovCi0gICAgaWYoaGhhc2gtPlBoYXNlID09IEhBTF9IQVNIX1BIQVNFX1JFQURZKQorICAgIGlmIChoaGFzaC0+UGhhc2UgPT0gSEFMX0hBU0hfUEhBU0VfUkVBRFkpCiAgICAgewogICAgICAgLyogU2VsZWN0IHRoZSBIQVNIIGFsZ29yaXRobSwgY2xlYXIgSE1BQyBtb2RlIGFuZCBsb25nIGtleSBzZWxlY3Rpb24gYml0LCByZXNldCB0aGUgSEFTSCBwcm9jZXNzb3IgY29yZSAqLwotICAgICAgTU9ESUZZX1JFRyhIQVNILT5DUiwgSEFTSF9DUl9MS0VZfEhBU0hfQ1JfQUxHT3xIQVNIX0NSX01PREV8SEFTSF9DUl9JTklULCBBbGdvcml0aG0gfCBIQVNIX0NSX0lOSVQpOworICAgICAgTU9ESUZZX1JFRyhIQVNILT5DUiwgSEFTSF9DUl9MS0VZIHwgSEFTSF9DUl9BTEdPIHwgSEFTSF9DUl9NT0RFIHwgSEFTSF9DUl9JTklULCBBbGdvcml0aG0gfCBIQVNIX0NSX0lOSVQpOwogCiAgICAgICAvKiBDb25maWd1cmUgdGhlIG51bWJlciBvZiB2YWxpZCBiaXRzIGluIGxhc3Qgd29yZCBvZiB0aGUgbWVzc2FnZSAqLwotICAgICBfX0hBTF9IQVNIX1NFVF9OQlZBTElEQklUUyhTaXplVmFyKTsKKyAgICAgIF9fSEFMX0hBU0hfU0VUX05CVkFMSURCSVRTKFNpemVWYXIpOwogCiAKICAgICAgIGhoYXNoLT5IYXNoSW5Db3VudCA9IFNpemVWYXI7ICAgICAgICAgICAgLyogQ291bnRlciB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgbnVtYmVyIG9mIGRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYmUgZmVkIHRvIHRoZSBQZXJpcGhlcmFsICovCiAgICAgICBoaGFzaC0+cEhhc2hJbkJ1ZmZQdHIgPSBwSW5CdWZmZXI7ICAgICAgIC8qIFBvaW50cyBhdCBkYXRhIHdoaWNoIHdpbGwgYmUgZmVkIHRvIHRoZSBQZXJpcGhlcmFsIGF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBuZXh0IGludGVycnVwdGlvbiAqLwotICAgICAvKiBJbiBjYXNlIG9mIHN1c3BlbnNpb24sIGhoYXNoLT5IYXNoSW5Db3VudCBhbmQgaGhhc2gtPnBIYXNoSW5CdWZmUHRyIGNvbnRhaW4KLSAgICAgICAgdGhlIGluZm9ybWF0aW9uIGRlc2NyaWJpbmcgd2hlcmUgdGhlIEhBU0ggcHJvY2VzcyBpcyBzdG9wcGVkLgotICAgICAgICBUaGVzZSB2YXJpYWJsZXMgYXJlIHVzZWQgbGF0ZXIgb24gdG8gcmVzdW1lIHRoZSBIQVNIIHByb2Nlc3NpbmcgYXQgdGhlCi0gICAgICAgIGNvcnJlY3QgbG9jYXRpb24uICovCisgICAgICAvKiBJbiBjYXNlIG9mIHN1c3BlbnNpb24sIGhoYXNoLT5IYXNoSW5Db3VudCBhbmQgaGhhc2gtPnBIYXNoSW5CdWZmUHRyIGNvbnRhaW4KKyAgICAgICAgIHRoZSBpbmZvcm1hdGlvbiBkZXNjcmliaW5nIHdoZXJlIHRoZSBIQVNIIHByb2Nlc3MgaXMgc3RvcHBlZC4KKyAgICAgICAgIFRoZXNlIHZhcmlhYmxlcyBhcmUgdXNlZCBsYXRlciBvbiB0byByZXN1bWUgdGhlIEhBU0ggcHJvY2Vzc2luZyBhdCB0aGUKKyAgICAgICAgIGNvcnJlY3QgbG9jYXRpb24uICovCiAKICAgICAgIGhoYXNoLT5wSGFzaE91dEJ1ZmZQdHIgPSBwT3V0QnVmZmVyOyAgICAgLyogUG9pbnRzIGF0IHRoZSBjb21wdXRlZCBkaWdlc3QgKi8KICAgICB9CkBAIC0yODI0LDE3ICsyODU3LDE3IEBACiAgICAgLyogU2V0IHRoZSBwaGFzZSAqLwogICAgIGhoYXNoLT5QaGFzZSA9IEhBTF9IQVNIX1BIQVNFX1BST0NFU1M7CiAKLSAgIC8qIElmIERJTklTIGlzIGVxdWFsIHRvIDAgKGZvciBleGFtcGxlIGlmIGFuIGluY29tcGxldGUgYmxvY2sgaGFzIGJlZW4gcHJldmlvdXNseQotICAgICBmZWQgdG8gdGhlIFBlcmlwaGVyYWwpLCB0aGUgRElOSUUgaW50ZXJydXB0aW9uIHdvbid0IGJlIHRyaWdnZXJlZCB3aGVuIERJTklFIGlzIHNldC4KLSAgICAgVGhlcmVmb3JlLCBmaXJzdCB3b3JkcyBhcmUgbWFudWFsbHkgZW50ZXJlZCB1bnRpbCBESU5JUyByYWlzZXMuICovCi0gICAgd2hpbGUoKCEoX19IQUxfSEFTSF9HRVRfRkxBRyhIQVNIX0ZMQUdfRElOSVMpKSkgJiYgKFNpemVWYXIgPiAzVSkpCisgICAgLyogSWYgRElOSVMgaXMgZXF1YWwgdG8gMCAoZm9yIGV4YW1wbGUgaWYgYW4gaW5jb21wbGV0ZSBibG9jayBoYXMgYmVlbiBwcmV2aW91c2x5CisgICAgICBmZWQgdG8gdGhlIFBlcmlwaGVyYWwpLCB0aGUgRElOSUUgaW50ZXJydXB0aW9uIHdvbid0IGJlIHRyaWdnZXJlZCB3aGVuIERJTklFIGlzIHNldC4KKyAgICAgIFRoZXJlZm9yZSwgZmlyc3Qgd29yZHMgYXJlIG1hbnVhbGx5IGVudGVyZWQgdW50aWwgRElOSVMgcmFpc2VzLiAqLworICAgIHdoaWxlICgoIShfX0hBTF9IQVNIX0dFVF9GTEFHKEhBU0hfRkxBR19ESU5JUykpKSAmJiAoU2l6ZVZhciA+IDNVKSkKICAgICB7CiAgICAgICBwb2xsaW5nX3N0ZXAgPSAxVTsgLyogbm90ZSB0aGF0IHNvbWUgd29yZHMgYXJlIGVudGVyZWQgYmVmb3JlIGVuYWJsaW5nIHRoZSBpbnRlcnJ1cHQgKi8KIAogICAgICAgLyogV3JpdGUgaW5wdXQgZGF0YSA0IGJ5dGVzIGF0IGEgdGltZSAqLwotICAgICAgSEFTSC0+RElOID0gKih1aW50MzJfdCopaW5wdXRhZGRyOwotICAgICAgaW5wdXRhZGRyKz00VTsKLSAgICAgIFNpemVWYXItPTRVOworICAgICAgSEFTSC0+RElOID0gKih1aW50MzJfdCAqKWlucHV0YWRkcjsKKyAgICAgIGlucHV0YWRkciArPSA0VTsKKyAgICAgIFNpemVWYXIgLT0gNFU7CiAgICAgfQogCiAgICAgaWYgKHBvbGxpbmdfc3RlcCA9PSAxVSkKQEAgLTI4NDYsNyArMjg3OSw3IEBACiAgICAgICAgIGhoYXNoLT5wSGFzaE91dEJ1ZmZQdHIgPSBwT3V0QnVmZmVyOyAgICAgLyogUG9pbnRzIGF0IHRoZSBjb21wdXRlZCBkaWdlc3QgKi8KIAogICAgICAgICAvKiBTdGFydCB0aGUgRGlnZXN0IGNhbGN1bGF0aW9uICovCi0gICAgICAgICBfX0hBTF9IQVNIX1NUQVJUX0RJR0VTVCgpOworICAgICAgICBfX0hBTF9IQVNIX1NUQVJUX0RJR0VTVCgpOwogICAgICAgICAvKiBQcm9jZXNzIFVubG9jayAqLwogICAgICAgICBfX0hBTF9VTkxPQ0soaGhhc2gpOwogCkBAIC0yODYzLDcgKzI4OTYsOCBAQAogICAgICAgICAgICBVcGRhdGUgSGFzaEluQ291bnQgYW5kIHBIYXNoSW5CdWZmUHRyIGFjY29yZGluZ2x5LiAqLwogICAgICAgICBoaGFzaC0+SGFzaEluQ291bnQgPSBTaXplVmFyOwogICAgICAgICBoaGFzaC0+cEhhc2hJbkJ1ZmZQdHIgPSAodWludDhfdCAqKWlucHV0YWRkcjsKLSAgICAgICAgX19IQUxfSEFTSF9TRVRfTkJWQUxJREJJVFMoU2l6ZVZhcik7ICAvKiBVcGRhdGUgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIG51bWJlciBvZiB2YWxpZCBiaXRzIGluIGxhc3Qgd29yZCBvZiB0aGUgbWVzc2FnZSAqLworICAgICAgICBfX0hBTF9IQVNIX1NFVF9OQlZBTElEQklUUygKKyAgICAgICAgICBTaXplVmFyKTsgIC8qIFVwZGF0ZSB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgbnVtYmVyIG9mIHZhbGlkIGJpdHMgaW4gbGFzdCB3b3JkIG9mIHRoZSBtZXNzYWdlICovCiAgICAgICAgIGhoYXNoLT5wSGFzaE91dEJ1ZmZQdHIgPSBwT3V0QnVmZmVyOyAgLyogUG9pbnRzIGF0IHRoZSBjb21wdXRlZCBkaWdlc3QgKi8KICAgICAgICAgaWYgKGluaXRpYWxpemF0aW9uX3NraXBwZWQgPT0gMVUpCiAgICAgICAgIHsKQEAgLTI4NzUsMTEgKzI5MDksMTEgQEAKICAgICAgICAgLyogRElOSVMgaXMgbm90IHNldCBidXQgaXQgcmVtYWlucyBhIGZldyBkYXRhIHRvIGVudGVyIChub3QgZW5vdWdoIGZvciBhIGZ1bGwgd29yZCkuCiAgICAgICAgICAgIE1hbnVhbGx5IGVudGVyIHRoZSBsYXN0IGJ5dGVzIGJlZm9yZSBlbmFibGluZyBEQ0lFLiAqLwogICAgICAgICBfX0hBTF9IQVNIX1NFVF9OQlZBTElEQklUUyhTaXplVmFyKTsKLSAgICAgICAgSEFTSC0+RElOID0gKih1aW50MzJfdCopaW5wdXRhZGRyOworICAgICAgICBIQVNILT5ESU4gPSAqKHVpbnQzMl90ICopaW5wdXRhZGRyOwogCi0gICAgICAgICAvKiBTdGFydCB0aGUgRGlnZXN0IGNhbGN1bGF0aW9uICovCisgICAgICAgIC8qIFN0YXJ0IHRoZSBEaWdlc3QgY2FsY3VsYXRpb24gKi8KICAgICAgICAgaGhhc2gtPnBIYXNoT3V0QnVmZlB0ciA9IHBPdXRCdWZmZXI7ICAgICAvKiBQb2ludHMgYXQgdGhlIGNvbXB1dGVkIGRpZ2VzdCAqLwotICAgICAgICAgX19IQUxfSEFTSF9TVEFSVF9ESUdFU1QoKTsKKyAgICAgICAgX19IQUxfSEFTSF9TVEFSVF9ESUdFU1QoKTsKICAgICAgICAgLyogUHJvY2VzcyBVbmxvY2sgKi8KICAgICAgICAgX19IQUxfVU5MT0NLKGhoYXNoKTsKIApAQCAtMjg5Niw3ICsyOTMwLDcgQEAKICAgICBfX0hBTF9VTkxPQ0soaGhhc2gpOwogCiAgICAgLyogRW5hYmxlIEludGVycnVwdHMgKi8KLSAgICBfX0hBTF9IQVNIX0VOQUJMRV9JVChIQVNIX0lUX0RJTkl8SEFTSF9JVF9EQ0kpOworICAgIF9fSEFMX0hBU0hfRU5BQkxFX0lUKEhBU0hfSVRfRElOSSB8IEhBU0hfSVRfRENJKTsKIAogICAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KICAgICByZXR1cm4gSEFMX09LOwpAQCAtMjkzMSwyMCArMjk2NSwyMCBAQAogICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgOwogICBIQUxfSEFTSF9TdGF0ZVR5cGVEZWYgU3RhdGVfdG1wID0gaGhhc2gtPlN0YXRlOwogCi0KKyAgCiAgIC8qIE1ha2Ugc3VyZSB0aGUgaW5wdXQgYnVmZmVyIHNpemUgKGluIGJ5dGVzKSBpcyBhIG11bHRpcGxlIG9mIDQgd2hlbiBNRE1BVCBiaXQgaXMgc2V0CiAgICAgIChjYXNlIG9mIG11bHRpLWJ1ZmZlciBIQVNIIHByb2Nlc3NpbmcpICovCiAgIGFzc2VydF9wYXJhbShJU19IQVNIX0RNQV9NVUxUSUJVRkZFUl9TSVpFKFNpemUpKTsKLQotICAgLyogSWYgU3RhdGUgaXMgcmVhZHkgb3Igc3VzcGVuZGVkLCBzdGFydCBvciByZXN1bWUgcG9sbGluZy1iYXNlZCBIQVNIIHByb2Nlc3NpbmcgKi8KLWlmKChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfUkVBRFkpIHx8IChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfU1VTUEVOREVEKSkKKyAgCisgIC8qIElmIFN0YXRlIGlzIHJlYWR5IG9yIHN1c3BlbmRlZCwgc3RhcnQgb3IgcmVzdW1lIHBvbGxpbmctYmFzZWQgSEFTSCBwcm9jZXNzaW5nICovCisgIGlmICgoU3RhdGVfdG1wID09IEhBTF9IQVNIX1NUQVRFX1JFQURZKSB8fCAoU3RhdGVfdG1wID09IEhBTF9IQVNIX1NUQVRFX1NVU1BFTkRFRCkpCiAgIHsKICAgICAvKiBDaGVjayBpbnB1dCBwYXJhbWV0ZXJzICovCi0gICAgaWYgKCAocEluQnVmZmVyID09IE5VTEwgKSB8fCAoU2l6ZSA9PSAwVSkgfHwKLSAgICAvKiBDaGVjayBwaGFzZSBjb2hlcmVuY3kuIFBoYXNlIG11c3QgYmUKLSAgICAgICBlaXRoZXIgUkVBRFkgKGZyZXNoIHN0YXJ0KQotICAgICAgIG9yIFBST0NFU1MgKG11bHRpLWJ1ZmZlciBIQVNIIG1hbmFnZW1lbnQpICovCi0gICAgICAgKChoaGFzaC0+UGhhc2UgIT0gSEFMX0hBU0hfUEhBU0VfUkVBRFkpICYmICghKElTX0hBU0hfUFJPQ0VTU0lORyhoaGFzaCkpKSkpCisgICAgaWYgKChwSW5CdWZmZXIgPT0gTlVMTCkgfHwgKFNpemUgPT0gMFUpIHx8CisgICAgICAgIC8qIENoZWNrIHBoYXNlIGNvaGVyZW5jeS4gUGhhc2UgbXVzdCBiZQorICAgICAgICAgICBlaXRoZXIgUkVBRFkgKGZyZXNoIHN0YXJ0KQorICAgICAgICAgICBvciBQUk9DRVNTIChtdWx0aS1idWZmZXIgSEFTSCBtYW5hZ2VtZW50KSAqLworICAgICAgICAoKGhoYXNoLT5QaGFzZSAhPSBIQUxfSEFTSF9QSEFTRV9SRUFEWSkgJiYgKCEoSVNfSEFTSF9QUk9DRVNTSU5HKGhoYXNoKSkpKSkKICAgICB7CiAgICAgICBoaGFzaC0+U3RhdGUgPSBIQUxfSEFTSF9TVEFURV9SRUFEWTsKICAgICAgIHJldHVybiAgSEFMX0VSUk9SOwpAQCAtMjk2NCwxMCArMjk5OCwxMCBAQAogICAgICAgICAgSWYgUGhhc2UgaXMgYWxyZWFkeSBzZXQgdG8gSEFMX0hBU0hfUEhBU0VfUFJPQ0VTUywgdGhpcyBtZWFucyB0aGUKICAgICAgICAgIEFQSSBpcyBwcm9jZXNzaW5nIGEgbmV3IGlucHV0IGRhdGEgbWVzc2FnZSBpbiBjYXNlIG9mIG11bHRpLWJ1ZmZlciBIQVNICiAgICAgICAgICBjb21wdXRhdGlvbi4gKi8KLSAgICAgIGlmKGhoYXNoLT5QaGFzZSA9PSBIQUxfSEFTSF9QSEFTRV9SRUFEWSkKKyAgICAgIGlmIChoaGFzaC0+UGhhc2UgPT0gSEFMX0hBU0hfUEhBU0VfUkVBRFkpCiAgICAgICB7CiAgICAgICAgIC8qIFNlbGVjdCB0aGUgSEFTSCBhbGdvcml0aG0sIGNsZWFyIEhNQUMgbW9kZSBhbmQgbG9uZyBrZXkgc2VsZWN0aW9uIGJpdCwgcmVzZXQgdGhlIEhBU0ggcHJvY2Vzc29yIGNvcmUgKi8KLSAgICAgICAgTU9ESUZZX1JFRyhIQVNILT5DUiwgSEFTSF9DUl9MS0VZfEhBU0hfQ1JfQUxHT3xIQVNIX0NSX01PREV8SEFTSF9DUl9JTklULCBBbGdvcml0aG0gfCBIQVNIX0NSX0lOSVQpOworICAgICAgICBNT0RJRllfUkVHKEhBU0gtPkNSLCBIQVNIX0NSX0xLRVkgfCBIQVNIX0NSX0FMR08gfCBIQVNIX0NSX01PREUgfCBIQVNIX0NSX0lOSVQsIEFsZ29yaXRobSB8IEhBU0hfQ1JfSU5JVCk7CiAKICAgICAgICAgLyogU2V0IHRoZSBwaGFzZSAqLwogICAgICAgICBoaGFzaC0+UGhhc2UgPSBIQUxfSEFTSF9QSEFTRV9QUk9DRVNTOwpAQCAtMjk5OCw3ICszMDMyLDcgQEAKIAogICAgIH0KIAotICAgIC8qIFNldCB0aGUgSEFTSCBETUEgdHJhbnNmZXJ0IGNvbXBsZXRlIGNhbGxiYWNrICovCisgICAgLyogU2V0IHRoZSBIQVNIIERNQSB0cmFuc2ZlciBjb21wbGV0ZSBjYWxsYmFjayAqLwogICAgIGhoYXNoLT5oZG1haW4tPlhmZXJDcGx0Q2FsbGJhY2sgPSBIQVNIX0RNQVhmZXJDcGx0OwogICAgIC8qIFNldCB0aGUgRE1BIGVycm9yIGNhbGxiYWNrICovCiAgICAgaGhhc2gtPmhkbWFpbi0+WGZlckVycm9yQ2FsbGJhY2sgPSBIQVNIX0RNQUVycm9yOwpAQCAtMzAwNiw4ICszMDQwLDEwIEBACiAgICAgLyogU3RvcmUgbnVtYmVyIG9mIHdvcmRzIGFscmVhZHkgcHVzaGVkIHRvIG1hbmFnZSBwcm9wZXIgRE1BIHByb2Nlc3Npbmcgc3VzcGVuc2lvbiAqLwogICAgIGhoYXNoLT5OYldvcmRzQWxyZWFkeVB1c2hlZCA9IEhBU0hfTkJXX1BVU0hFRCgpOwogCi0gICAgLyogRW5hYmxlIHRoZSBETUEgSW4gRE1BIFN0cmVhbSAqLwotICAgIHN0YXR1cyA9IEhBTF9ETUFfU3RhcnRfSVQoaGhhc2gtPmhkbWFpbiwgaW5wdXRhZGRyLCAodWludDMyX3QpJkhBU0gtPkRJTiwgKCgoaW5wdXRTaXplICU0VSkhPTBVKSA/ICgoaW5wdXRTaXplKyg0VS0oaW5wdXRTaXplICU0VSkpKS80VSk6KGlucHV0U2l6ZS80VSkpKTsKKyAgICAvKiBFbmFibGUgdGhlIERNQSBJbiBETUEgc3RyZWFtICovCisgICAgc3RhdHVzID0gSEFMX0RNQV9TdGFydF9JVChoaGFzaC0+aGRtYWluLCBpbnB1dGFkZHIsICh1aW50MzJfdCkmSEFTSC0+RElOLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKChpbnB1dFNpemUgJSA0VSkgIT0gMFUpID8gKChpbnB1dFNpemUgKyAoNFUgLSAoaW5wdXRTaXplICUgNFUpKSkgLyA0VSkgOiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0U2l6ZSAvIDRVKSkpOwogCiAgICAgLyogRW5hYmxlIERNQSByZXF1ZXN0cyAqLwogICAgIFNFVF9CSVQoSEFTSC0+Q1IsIEhBU0hfQ1JfRE1BRSk7CkBAIC0zMDM4LDEwICszMDc0LDEwIEBACiAgICogQHBhcmFtICBUaW1lb3V0IFRpbWVvdXQgdmFsdWUuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQVNIX0ZpbmlzaChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90KiBwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KQorSEFMX1N0YXR1c1R5cGVEZWYgSEFTSF9GaW5pc2goSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCkKIHsKIAotICBpZihoaGFzaC0+U3RhdGUgPT0gSEFMX0hBU0hfU1RBVEVfUkVBRFkpCisgIGlmIChoaGFzaC0+U3RhdGUgPT0gSEFMX0hBU0hfU1RBVEVfUkVBRFkpCiAgIHsKICAgICAvKiBDaGVjayBwYXJhbWV0ZXIgKi8KICAgICBpZiAocE91dEJ1ZmZlciA9PSBOVUxMKQpAQCAtMzA5OSwxNSArMzEzNSwxNyBAQAogICAqIEBwYXJhbSAgQWxnb3JpdGhtIEhBU0ggYWxnb3JpdGhtLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSE1BQ19TdGFydChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQsIHVpbnQzMl90IEFsZ29yaXRobSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhNQUNfU3RhcnQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90ICpwT3V0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0LCB1aW50MzJfdCBBbGdvcml0aG0pCiB7Ci0gICAgSEFMX0hBU0hfU3RhdGVUeXBlRGVmIFN0YXRlX3RtcCA9IGhoYXNoLT5TdGF0ZTsKKyAgSEFMX0hBU0hfU3RhdGVUeXBlRGVmIFN0YXRlX3RtcCA9IGhoYXNoLT5TdGF0ZTsKIAotICAgLyogSWYgU3RhdGUgaXMgcmVhZHkgb3Igc3VzcGVuZGVkLCBzdGFydCBvciByZXN1bWUgcG9sbGluZy1iYXNlZCBIQVNIIHByb2Nlc3NpbmcgKi8KLWlmKChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfUkVBRFkpIHx8IChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfU1VTUEVOREVEKSkKKyAgLyogSWYgU3RhdGUgaXMgcmVhZHkgb3Igc3VzcGVuZGVkLCBzdGFydCBvciByZXN1bWUgcG9sbGluZy1iYXNlZCBIQVNIIHByb2Nlc3NpbmcgKi8KKyAgaWYgKChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfUkVBRFkpIHx8IChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfU1VTUEVOREVEKSkKICAgewogICAgIC8qIENoZWNrIGlucHV0IHBhcmFtZXRlcnMgKi8KLSAgICBpZiAoKHBJbkJ1ZmZlciA9PSBOVUxMKSB8fCAoU2l6ZSA9PSAwVSkgfHwgKGhoYXNoLT5Jbml0LnBLZXkgPT0gTlVMTCkgfHwgKGhoYXNoLT5Jbml0LktleVNpemUgPT0gMFUpIHx8IChwT3V0QnVmZmVyID09IE5VTEwpKQorICAgIGlmICgocEluQnVmZmVyID09IE5VTEwpIHx8IChTaXplID09IDBVKSB8fCAoaGhhc2gtPkluaXQucEtleSA9PSBOVUxMKSB8fCAoaGhhc2gtPkluaXQuS2V5U2l6ZSA9PSAwVSkKKyAgICAgICAgfHwgKHBPdXRCdWZmZXIgPT0gTlVMTCkpCiAgICAgewogICAgICAgaGhhc2gtPlN0YXRlID0gSEFMX0hBU0hfU1RBVEVfUkVBRFk7CiAgICAgICByZXR1cm4gIEhBTF9FUlJPUjsKQEAgLTMxMjAsMjggKzMxNTgsMzQgQEAKICAgICBoaGFzaC0+U3RhdGUgPSBIQUxfSEFTSF9TVEFURV9CVVNZOwogCiAgICAgLyogQ2hlY2sgaWYgaW5pdGlhbGl6YXRpb24gcGhhc2UgaGFzIGFscmVhZHkgYmUgcGVyZm9ybWVkICovCi0gICAgaWYoaGhhc2gtPlBoYXNlID09IEhBTF9IQVNIX1BIQVNFX1JFQURZKQorICAgIGlmIChoaGFzaC0+UGhhc2UgPT0gSEFMX0hBU0hfUEhBU0VfUkVBRFkpCiAgICAgewogICAgICAgLyogQ2hlY2sgaWYga2V5IHNpemUgaXMgbGFyZ2VyIHRoYW4gNjQgYnl0ZXMsIGFjY29yZGluZ2x5IHNldCBMS0VZIGFuZCB0aGUgb3RoZXIgc2V0dGluZyBiaXRzICovCi0gICAgICBpZihoaGFzaC0+SW5pdC5LZXlTaXplID4gNjRVKQorICAgICAgaWYgKGhoYXNoLT5Jbml0LktleVNpemUgPiA2NFUpCiAgICAgICB7Ci0gICAgICAgIE1PRElGWV9SRUcoSEFTSC0+Q1IsIEhBU0hfQ1JfTEtFWXxIQVNIX0NSX0FMR098SEFTSF9DUl9NT0RFfEhBU0hfQ1JfSU5JVCwgQWxnb3JpdGhtIHwgSEFTSF9BTEdPTU9ERV9ITUFDIHwgSEFTSF9ITUFDX0tFWVRZUEVfTE9OR0tFWSB8IEhBU0hfQ1JfSU5JVCk7CisgICAgICAgIE1PRElGWV9SRUcoSEFTSC0+Q1IsIEhBU0hfQ1JfTEtFWSB8IEhBU0hfQ1JfQUxHTyB8IEhBU0hfQ1JfTU9ERSB8IEhBU0hfQ1JfSU5JVCwKKyAgICAgICAgICAgICAgICAgICBBbGdvcml0aG0gfCBIQVNIX0FMR09NT0RFX0hNQUMgfCBIQVNIX0hNQUNfS0VZVFlQRV9MT05HS0VZIHwgSEFTSF9DUl9JTklUKTsKICAgICAgIH0KICAgICAgIGVsc2UKICAgICAgIHsKLSAgICAgICAgTU9ESUZZX1JFRyhIQVNILT5DUiwgSEFTSF9DUl9MS0VZfEhBU0hfQ1JfQUxHT3xIQVNIX0NSX01PREV8SEFTSF9DUl9JTklULCBBbGdvcml0aG0gfCBIQVNIX0FMR09NT0RFX0hNQUMgfCBIQVNIX0NSX0lOSVQpOworICAgICAgICBNT0RJRllfUkVHKEhBU0gtPkNSLCBIQVNIX0NSX0xLRVkgfCBIQVNIX0NSX0FMR08gfCBIQVNIX0NSX01PREUgfCBIQVNIX0NSX0lOSVQsCisgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtIHwgSEFTSF9BTEdPTU9ERV9ITUFDIHwgSEFTSF9DUl9JTklUKTsKICAgICAgIH0KICAgICAgIC8qIFNldCB0aGUgcGhhc2UgdG8gU3RlcCAxICovCiAgICAgICBoaGFzaC0+UGhhc2UgPSBIQUxfSEFTSF9QSEFTRV9ITUFDX1NURVBfMTsKICAgICAgIC8qIFJlc29ydCB0byBoaGFzaCBpbnRlcm5hbCBmaWVsZHMgdG8gZmVlZCB0aGUgUGVyaXBoZXJhbC4KICAgICAgICAgIFBhcmFtZXRlcnMgd2lsbCBiZSB1cGRhdGVkIGluIGNhc2Ugb2Ygc3VzcGVuc2lvbiB0byBjb250YWluIHRoZSBwcm9wZXIKICAgICAgICAgIGluZm9ybWF0aW9uIGF0IHJlc3VtcHRpb24gdGltZS4gKi8KLSAgICAgIGhoYXNoLT5wSGFzaE91dEJ1ZmZQdHIgID0gcE91dEJ1ZmZlcjsgICAgICAgICAgICAvKiBPdXRwdXQgZGlnZXN0IGFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgIGhoYXNoLT5wSGFzaEluQnVmZlB0ciAgID0gcEluQnVmZmVyOyAgICAgICAgICAgICAvKiBJbnB1dCBkYXRhIGFkZHJlc3MsIEhNQUNfUHJvY2Vzc2luZyBpbnB1dCBwYXJhbWV0ZXIgZm9yIFN0ZXAgMiAgICAgKi8KLSAgICAgIGhoYXNoLT5IYXNoSW5Db3VudCAgICAgID0gU2l6ZTsgICAgICAgICAgICAgICAgICAvKiBJbnB1dCBkYXRhIHNpemUsIEhNQUNfUHJvY2Vzc2luZyBpbnB1dCBwYXJhbWV0ZXIgZm9yIFN0ZXAgMiAgICAgICAgKi8KLSAgICAgIGhoYXNoLT5IYXNoQnVmZlNpemUgICAgID0gU2l6ZTsgICAgICAgICAgICAgICAgICAvKiBTdG9yZSB0aGUgaW5wdXQgYnVmZmVyIHNpemUgZm9yIHRoZSB3aG9sZSBITUFDIHByb2Nlc3MgICAgICAgICAgICAgKi8KLSAgICAgIGhoYXNoLT5wSGFzaEtleUJ1ZmZQdHIgID0gaGhhc2gtPkluaXQucEtleTsgICAgICAvKiBLZXkgYWRkcmVzcywgSE1BQ19Qcm9jZXNzaW5nIGlucHV0IHBhcmFtZXRlciBmb3IgU3RlcCAxIGFuZCBTdGVwIDMgKi8KLSAgICAgIGhoYXNoLT5IYXNoS2V5Q291bnQgICAgID0gaGhhc2gtPkluaXQuS2V5U2l6ZTsgICAvKiBLZXkgc2l6ZSwgSE1BQ19Qcm9jZXNzaW5nIGlucHV0IHBhcmFtZXRlciBmb3IgU3RlcCAxIGFuZCBTdGVwIDMgICAgKi8KKyAgICAgIGhoYXNoLT5wSGFzaE91dEJ1ZmZQdHIgID0gcE91dEJ1ZmZlcjsgICAgICAgICAgICAvKiBPdXRwdXQgZGlnZXN0IGFkZHJlc3MgICAgKi8KKyAgICAgIGhoYXNoLT5wSGFzaEluQnVmZlB0ciAgID0gcEluQnVmZmVyOyAgICAgICAgICAgICAvKiBJbnB1dCBkYXRhIGFkZHJlc3MsIEhNQUNfUHJvY2Vzc2luZyBpbnB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciBmb3IgU3RlcCAyICAgICAqLworICAgICAgaGhhc2gtPkhhc2hJbkNvdW50ICAgICAgPSBTaXplOyAgICAgICAgICAgICAgICAgIC8qIElucHV0IGRhdGEgc2l6ZSwgSE1BQ19Qcm9jZXNzaW5nIGlucHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIGZvciBTdGVwIDIgICAgICAgICovCisgICAgICBoaGFzaC0+SGFzaEJ1ZmZTaXplICAgICA9IFNpemU7ICAgICAgICAgICAgICAgICAgLyogU3RvcmUgdGhlIGlucHV0IGJ1ZmZlciBzaXplIGZvciB0aGUgd2hvbGUgSE1BQyBwcm9jZXNzKi8KKyAgICAgIGhoYXNoLT5wSGFzaEtleUJ1ZmZQdHIgID0gaGhhc2gtPkluaXQucEtleTsgICAgICAvKiBLZXkgYWRkcmVzcywgSE1BQ19Qcm9jZXNzaW5nIGlucHV0IHBhcmFtZXRlciBmb3IgU3RlcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgYW5kIFN0ZXAgMyAqLworICAgICAgaGhhc2gtPkhhc2hLZXlDb3VudCAgICAgPSBoaGFzaC0+SW5pdC5LZXlTaXplOyAgIC8qIEtleSBzaXplLCBITUFDX1Byb2Nlc3NpbmcgaW5wdXQgcGFyYW1ldGVyIGZvciBTdGVwIDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgU3RlcCAzICAgICovCiAgICAgfQogCiAgICAgLyogQ2Fycnkgb3V0IEhNQUMgcHJvY2Vzc2luZyAqLwpAQCAtMzE2OSwxNSArMzIxMywxNyBAQAogICAqIEBwYXJhbSAgQWxnb3JpdGhtIEhBU0ggYWxnb3JpdGhtLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSE1BQ19TdGFydF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IEFsZ29yaXRobSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhNQUNfU3RhcnRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90ICpwT3V0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBBbGdvcml0aG0pCiB7Ci0gICAgSEFMX0hBU0hfU3RhdGVUeXBlRGVmIFN0YXRlX3RtcCA9IGhoYXNoLT5TdGF0ZTsKKyAgSEFMX0hBU0hfU3RhdGVUeXBlRGVmIFN0YXRlX3RtcCA9IGhoYXNoLT5TdGF0ZTsKIAogICAvKiBJZiBTdGF0ZSBpcyByZWFkeSBvciBzdXNwZW5kZWQsIHN0YXJ0IG9yIHJlc3VtZSBJVC1iYXNlZCBIQVNIIHByb2Nlc3NpbmcgKi8KLWlmKChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfUkVBRFkpIHx8IChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfU1VTUEVOREVEKSkKKyAgaWYgKChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfUkVBRFkpIHx8IChTdGF0ZV90bXAgPT0gSEFMX0hBU0hfU1RBVEVfU1VTUEVOREVEKSkKICAgewogICAgIC8qIENoZWNrIGlucHV0IHBhcmFtZXRlcnMgKi8KLSAgICBpZiAoKHBJbkJ1ZmZlciA9PSBOVUxMKSB8fCAoU2l6ZSA9PSAwVSkgfHwgKGhoYXNoLT5Jbml0LnBLZXkgPT0gTlVMTCkgfHwgKGhoYXNoLT5Jbml0LktleVNpemUgPT0gMFUpIHx8IChwT3V0QnVmZmVyID09IE5VTEwpKQorICAgIGlmICgocEluQnVmZmVyID09IE5VTEwpIHx8IChTaXplID09IDBVKSB8fCAoaGhhc2gtPkluaXQucEtleSA9PSBOVUxMKSB8fCAoaGhhc2gtPkluaXQuS2V5U2l6ZSA9PSAwVSkKKyAgICAgICAgfHwgKHBPdXRCdWZmZXIgPT0gTlVMTCkpCiAgICAgewogICAgICAgaGhhc2gtPlN0YXRlID0gSEFMX0hBU0hfU1RBVEVfUkVBRFk7CiAgICAgICByZXR1cm4gIEhBTF9FUlJPUjsKQEAgLTMxOTYsMTMgKzMyNDIsMTUgQEAKICAgICBpZiAoaGhhc2gtPlBoYXNlID09IEhBTF9IQVNIX1BIQVNFX1JFQURZKQogICAgIHsKICAgICAgIC8qIENoZWNrIGlmIGtleSBzaXplIGlzIGxhcmdlciB0aGFuIDY0IGJ5dGVzLCBhY2NvcmRpbmdseSBzZXQgTEtFWSBhbmQgdGhlIG90aGVyIHNldHRpbmcgYml0cyAqLwotICAgICAgaWYoaGhhc2gtPkluaXQuS2V5U2l6ZSA+IDY0VSkKKyAgICAgIGlmIChoaGFzaC0+SW5pdC5LZXlTaXplID4gNjRVKQogICAgICAgewotICAgICAgICBNT0RJRllfUkVHKEhBU0gtPkNSLCBIQVNIX0NSX0xLRVl8SEFTSF9DUl9BTEdPfEhBU0hfQ1JfTU9ERXxIQVNIX0NSX0lOSVQsIEFsZ29yaXRobSB8IEhBU0hfQUxHT01PREVfSE1BQyB8IEhBU0hfSE1BQ19LRVlUWVBFX0xPTkdLRVkgfCBIQVNIX0NSX0lOSVQpOworICAgICAgICBNT0RJRllfUkVHKEhBU0gtPkNSLCBIQVNIX0NSX0xLRVkgfCBIQVNIX0NSX0FMR08gfCBIQVNIX0NSX01PREUgfCBIQVNIX0NSX0lOSVQsCisgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtIHwgSEFTSF9BTEdPTU9ERV9ITUFDIHwgSEFTSF9ITUFDX0tFWVRZUEVfTE9OR0tFWSB8IEhBU0hfQ1JfSU5JVCk7CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7Ci0gICAgICAgIE1PRElGWV9SRUcoSEFTSC0+Q1IsIEhBU0hfQ1JfTEtFWXxIQVNIX0NSX0FMR098SEFTSF9DUl9NT0RFfEhBU0hfQ1JfSU5JVCwgQWxnb3JpdGhtIHwgSEFTSF9BTEdPTU9ERV9ITUFDIHwgSEFTSF9DUl9JTklUKTsKKyAgICAgICAgTU9ESUZZX1JFRyhIQVNILT5DUiwgSEFTSF9DUl9MS0VZIHwgSEFTSF9DUl9BTEdPIHwgSEFTSF9DUl9NT0RFIHwgSEFTSF9DUl9JTklULAorICAgICAgICAgICAgICAgICAgIEFsZ29yaXRobSB8IEhBU0hfQUxHT01PREVfSE1BQyB8IEhBU0hfQ1JfSU5JVCk7CiAgICAgICB9CiAKICAgICAgIC8qIFJlc29ydCB0byBoaGFzaCBpbnRlcm5hbCBmaWVsZHMgaGhhc2gtPnBIYXNoSW5CdWZmUHRyIGFuZCBoaGFzaC0+SGFzaEluQ291bnQKQEAgLTMyNDcsNyArMzI5NSw3IEBACiAgICAgX19IQUxfVU5MT0NLKGhoYXNoKTsKIAogICAgIC8qIEVuYWJsZSBJbnRlcnJ1cHRzICovCi0gICAgX19IQUxfSEFTSF9FTkFCTEVfSVQoSEFTSF9JVF9ESU5JfEhBU0hfSVRfRENJKTsKKyAgICBfX0hBTF9IQVNIX0VOQUJMRV9JVChIQVNIX0lUX0RJTkkgfCBIQVNIX0lUX0RDSSk7CiAKICAgICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgICAgcmV0dXJuIEhBTF9PSzsKQEAgLTMyODIsMTggKzMzMzAsMTggQEAKICAgdWludDMyX3QgaW5wdXRTaXplOwogICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgOwogICBIQUxfSEFTSF9TdGF0ZVR5cGVEZWYgU3RhdGVfdG1wID0gaGhhc2gtPlN0YXRlOwotICAgLyogTWFrZSBzdXJlIHRoZSBpbnB1dCBidWZmZXIgc2l6ZSAoaW4gYnl0ZXMpIGlzIGEgbXVsdGlwbGUgb2YgNCB3aGVuIGRpZ2VzdCBjYWxjdWxhdGlvbgotICAgICAgaXMgZGlzYWJsZWQgKG11bHRpLWJ1ZmZlciBITUFDIHByb2Nlc3NpbmcsIE1ETUFUIGJpdCB0byBiZSBzZXQpICovCi0gICBhc3NlcnRfcGFyYW0oSVNfSE1BQ19ETUFfTVVMVElCVUZGRVJfU0laRShoaGFzaCwgU2l6ZSkpOworICAvKiBNYWtlIHN1cmUgdGhlIGlucHV0IGJ1ZmZlciBzaXplIChpbiBieXRlcykgaXMgYSBtdWx0aXBsZSBvZiA0IHdoZW4gZGlnZXN0IGNhbGN1bGF0aW9uCisgICAgIGlzIGRpc2FibGVkIChtdWx0aS1idWZmZXIgSE1BQyBwcm9jZXNzaW5nLCBNRE1BVCBiaXQgdG8gYmUgc2V0KSAqLworICBhc3NlcnRfcGFyYW0oSVNfSE1BQ19ETUFfTVVMVElCVUZGRVJfU0laRShoaGFzaCwgU2l6ZSkpOwogICAvKiBJZiBTdGF0ZSBpcyByZWFkeSBvciBzdXNwZW5kZWQsIHN0YXJ0IG9yIHJlc3VtZSBETUEtYmFzZWQgSEFTSCBwcm9jZXNzaW5nICovCi1pZigoU3RhdGVfdG1wID09IEhBTF9IQVNIX1NUQVRFX1JFQURZKSB8fCAoU3RhdGVfdG1wID09IEhBTF9IQVNIX1NUQVRFX1NVU1BFTkRFRCkpCisgIGlmICgoU3RhdGVfdG1wID09IEhBTF9IQVNIX1NUQVRFX1JFQURZKSB8fCAoU3RhdGVfdG1wID09IEhBTF9IQVNIX1NUQVRFX1NVU1BFTkRFRCkpCiAgIHsKICAgICAvKiBDaGVjayBpbnB1dCBwYXJhbWV0ZXJzICovCi0gICAgaWYgKChwSW5CdWZmZXIgPT0gTlVMTCApIHx8IChTaXplID09IDBVKSB8fCAoaGhhc2gtPkluaXQucEtleSA9PSBOVUxMICkgfHwgKGhoYXNoLT5Jbml0LktleVNpemUgPT0gMFUpIHx8Ci0gICAvKiBDaGVjayBwaGFzZSBjb2hlcmVuY3kuIFBoYXNlIG11c3QgYmUKLSAgICAgICBlaXRoZXIgUkVBRFkgKGZyZXNoIHN0YXJ0KQotICAgICAgIG9yIG9uZSBvZiBITUFDIFBST0NFU1Mgc3RlcHMgKG11bHRpLWJ1ZmZlciBIQVNIIG1hbmFnZW1lbnQpICovCi0gICAgICAgKChoaGFzaC0+UGhhc2UgIT0gSEFMX0hBU0hfUEhBU0VfUkVBRFkpICYmICghKElTX0hNQUNfUFJPQ0VTU0lORyhoaGFzaCkpKSkpCisgICAgaWYgKChwSW5CdWZmZXIgPT0gTlVMTCkgfHwgKFNpemUgPT0gMFUpIHx8IChoaGFzaC0+SW5pdC5wS2V5ID09IE5VTEwpIHx8IChoaGFzaC0+SW5pdC5LZXlTaXplID09IDBVKSB8fAorICAgICAgICAvKiBDaGVjayBwaGFzZSBjb2hlcmVuY3kuIFBoYXNlIG11c3QgYmUKKyAgICAgICAgICAgIGVpdGhlciBSRUFEWSAoZnJlc2ggc3RhcnQpCisgICAgICAgICAgICBvciBvbmUgb2YgSE1BQyBQUk9DRVNTIHN0ZXBzIChtdWx0aS1idWZmZXIgSEFTSCBtYW5hZ2VtZW50KSAqLworICAgICAgICAoKGhoYXNoLT5QaGFzZSAhPSBIQUxfSEFTSF9QSEFTRV9SRUFEWSkgJiYgKCEoSVNfSE1BQ19QUk9DRVNTSU5HKGhoYXNoKSkpKSkKICAgICB7CiAgICAgICBoaGFzaC0+U3RhdGUgPSBIQUxfSEFTSF9TVEFURV9SRUFEWTsKICAgICAgIHJldHVybiAgSEFMX0VSUk9SOwpAQCAtMzMwNiw2MyArMzM1NCw2NSBAQAogICAgIC8qIElmIG5vdCBhIGNhc2Ugb2YgcmVzdW1wdGlvbiBhZnRlciBzdXNwZW5zaW9uICovCiAgICAgaWYgKGhoYXNoLT5TdGF0ZSA9PSBIQUxfSEFTSF9TVEFURV9SRUFEWSkKICAgICB7Ci0gICAgLyogQ2hlY2sgd2hldGhlciBvciBub3QgaW5pdGlhbGl6YXRpb24gcGhhc2UgaGFzIGFscmVhZHkgYmUgcGVyZm9ybWVkICovCi0gICAgaWYoaGhhc2gtPlBoYXNlID09IEhBTF9IQVNIX1BIQVNFX1JFQURZKQotICAgIHsKLSAgICAgIC8qIENoYW5nZSB0aGUgSEFTSCBzdGF0ZSAqLwotICAgICAgaGhhc2gtPlN0YXRlID0gSEFMX0hBU0hfU1RBVEVfQlVTWTsKLSAgICAgIC8qIENoZWNrIGlmIGtleSBzaXplIGlzIGxhcmdlciB0aGFuIDY0IGJ5dGVzLCBhY2NvcmRpbmdseSBzZXQgTEtFWSBhbmQgdGhlIG90aGVyIHNldHRpbmcgYml0cy4KLSAgICAgICAgIEF0IHRoZSBzYW1lIHRpbWUsIGVuc3VyZSBNRE1BVCBiaXQgaXMgY2xlYXJlZC4gKi8KLSAgICAgIGlmKGhoYXNoLT5Jbml0LktleVNpemUgPiA2NFUpCisgICAgICAvKiBDaGVjayB3aGV0aGVyIG9yIG5vdCBpbml0aWFsaXphdGlvbiBwaGFzZSBoYXMgYWxyZWFkeSBiZSBwZXJmb3JtZWQgKi8KKyAgICAgIGlmIChoaGFzaC0+UGhhc2UgPT0gSEFMX0hBU0hfUEhBU0VfUkVBRFkpCiAgICAgICB7Ci0gICAgICAgIE1PRElGWV9SRUcoSEFTSC0+Q1IsIEhBU0hfQ1JfTURNQVR8SEFTSF9DUl9MS0VZfEhBU0hfQ1JfQUxHT3xIQVNIX0NSX01PREV8SEFTSF9DUl9JTklULCBBbGdvcml0aG0gfCBIQVNIX0FMR09NT0RFX0hNQUMgfCBIQVNIX0hNQUNfS0VZVFlQRV9MT05HS0VZIHwgSEFTSF9DUl9JTklUKTsKKyAgICAgICAgLyogQ2hhbmdlIHRoZSBIQVNIIHN0YXRlICovCisgICAgICAgIGhoYXNoLT5TdGF0ZSA9IEhBTF9IQVNIX1NUQVRFX0JVU1k7CisgICAgICAgIC8qIENoZWNrIGlmIGtleSBzaXplIGlzIGxhcmdlciB0aGFuIDY0IGJ5dGVzLCBhY2NvcmRpbmdseSBzZXQgTEtFWSBhbmQgdGhlIG90aGVyIHNldHRpbmcgYml0cy4KKyAgICAgICAgICAgQXQgdGhlIHNhbWUgdGltZSwgZW5zdXJlIE1ETUFUIGJpdCBpcyBjbGVhcmVkLiAqLworICAgICAgICBpZiAoaGhhc2gtPkluaXQuS2V5U2l6ZSA+IDY0VSkKKyAgICAgICAgeworICAgICAgICAgIE1PRElGWV9SRUcoSEFTSC0+Q1IsIEhBU0hfQ1JfTURNQVQgfCBIQVNIX0NSX0xLRVkgfCBIQVNIX0NSX0FMR08gfCBIQVNIX0NSX01PREUgfCBIQVNIX0NSX0lOSVQsCisgICAgICAgICAgICAgICAgICAgICBBbGdvcml0aG0gfCBIQVNIX0FMR09NT0RFX0hNQUMgfCBIQVNIX0hNQUNfS0VZVFlQRV9MT05HS0VZIHwgSEFTSF9DUl9JTklUKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBNT0RJRllfUkVHKEhBU0gtPkNSLCBIQVNIX0NSX01ETUFUIHwgSEFTSF9DUl9MS0VZIHwgSEFTSF9DUl9BTEdPIHwgSEFTSF9DUl9NT0RFIHwgSEFTSF9DUl9JTklULAorICAgICAgICAgICAgICAgICAgICAgQWxnb3JpdGhtIHwgSEFTSF9BTEdPTU9ERV9ITUFDIHwgSEFTSF9DUl9JTklUKTsKKyAgICAgICAgfQorICAgICAgICAvKiBTdG9yZSBpbnB1dCBhcGFyYW1ldGVycyBpbiBoYW5kbGUgZmllbGRzIHRvIG1hbmFnZSBzdGVwcyB0cmFuc2l0aW9uCisgICAgICAgICAgIG9yIHBvc3NpYmxlIEhNQUMgc3VzcGVuc2lvbi9yZXN1bXB0aW9uICovCisgICAgICAgIGhoYXNoLT5IYXNoSW5Db3VudCA9IGhoYXNoLT5Jbml0LktleVNpemU7ICAgLyogSW5pdGlhbCBzaXplIGZvciBmaXJzdCBETUEgdHJhbnNmZXIgKGtleSBzaXplKSAgICAgICovCisgICAgICAgIGhoYXNoLT5wSGFzaEtleUJ1ZmZQdHIgPSBoaGFzaC0+SW5pdC5wS2V5OyAgLyogS2V5IGFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIGhoYXNoLT5wSGFzaEluQnVmZlB0ciAgPSBoaGFzaC0+SW5pdC5wS2V5IDsgLyogRmlyc3QgYWRkcmVzcyBwYXNzZWQgdG8gRE1BIChrZXkgYWRkcmVzcyBhdCBTdGVwIDEpICovCisgICAgICAgIGhoYXNoLT5wSGFzaE1zZ0J1ZmZQdHIgPSBwSW5CdWZmZXI7ICAgICAgICAgLyogSW5wdXQgZGF0YSBhZGRyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIGhoYXNoLT5IYXNoQnVmZlNpemUgPSBTaXplOyAgICAgICAgICAgICAgICAgLyogaW5wdXQgZGF0YSBzaXplIChpbiBieXRlcykgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKyAgICAgICAgLyogU2V0IERNQSBpbnB1dCBwYXJhbWV0ZXJzICovCisgICAgICAgIGlucHV0YWRkciA9ICh1aW50MzJfdCkoaGhhc2gtPkluaXQucEtleSk7ICAgLyogQWRkcmVzcyBwYXNzZWQgdG8gRE1BIChzdGFydCBieSBlbnRlcmluZyBLZXkgbWVzc2FnZSkgKi8KKyAgICAgICAgaW5wdXRTaXplID0gaGhhc2gtPkluaXQuS2V5U2l6ZTsgICAgICAgICAgICAvKiBTaXplIGZvciBmaXJzdCBETUEgdHJhbnNmZXIgKGluIGJ5dGVzKSAqLworCisgICAgICAgIC8qIENvbmZpZ3VyZSB0aGUgbnVtYmVyIG9mIHZhbGlkIGJpdHMgaW4gbGFzdCB3b3JkIG9mIHRoZSBrZXkgKi8KKyAgICAgICAgX19IQUxfSEFTSF9TRVRfTkJWQUxJREJJVFMoaGhhc2gtPkluaXQuS2V5U2l6ZSk7CisKKyAgICAgICAgLyogU2V0IHRoZSBwaGFzZSB0byBTdGVwIDEgKi8KKyAgICAgICAgaGhhc2gtPlBoYXNlID0gSEFMX0hBU0hfUEhBU0VfSE1BQ19TVEVQXzE7CisKICAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgTU9ESUZZX1JFRyhIQVNILT5DUiwgSEFTSF9DUl9NRE1BVHxIQVNIX0NSX0xLRVl8SEFTSF9DUl9BTEdPfEhBU0hfQ1JfTU9ERXxIQVNIX0NSX0lOSVQsIEFsZ29yaXRobSB8IEhBU0hfQUxHT01PREVfSE1BQyB8IEhBU0hfQ1JfSU5JVCk7Ci0gICAgICB9Ci0gICAgICAvKiBTdG9yZSBpbnB1dCBhcGFyYW1ldGVycyBpbiBoYW5kbGUgZmllbGRzIHRvIG1hbmFnZSBzdGVwcyB0cmFuc2l0aW9uCi0gICAgICAgICBvciBwb3NzaWJsZSBITUFDIHN1c3BlbnNpb24vcmVzdW1wdGlvbiAqLwotICAgICAgaGhhc2gtPkhhc2hJbkNvdW50ID0gaGhhc2gtPkluaXQuS2V5U2l6ZTsgICAvKiBJbml0aWFsIHNpemUgZm9yIGZpcnN0IERNQSB0cmFuc2ZlciAoa2V5IHNpemUpICAgICAgKi8KLSAgICAgIGhoYXNoLT5wSGFzaEtleUJ1ZmZQdHIgPSBoaGFzaC0+SW5pdC5wS2V5OyAgLyogS2V5IGFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICBoaGFzaC0+cEhhc2hJbkJ1ZmZQdHIgID0gaGhhc2gtPkluaXQucEtleSA7IC8qIEZpcnN0IGFkZHJlc3MgcGFzc2VkIHRvIERNQSAoa2V5IGFkZHJlc3MgYXQgU3RlcCAxKSAqLwotICAgICAgaGhhc2gtPnBIYXNoTXNnQnVmZlB0ciA9IHBJbkJ1ZmZlcjsgICAgICAgICAvKiBJbnB1dCBkYXRhIGFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgIGhoYXNoLT5IYXNoQnVmZlNpemUgPSBTaXplOyAgICAgICAgICAgICAgICAgLyogaW5wdXQgZGF0YSBzaXplIChpbiBieXRlcykgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0KLSAgICAgIC8qIFNldCBETUEgaW5wdXQgcGFyYW1ldGVycyAqLwotICAgICAgaW5wdXRhZGRyID0gKHVpbnQzMl90KShoaGFzaC0+SW5pdC5wS2V5KTsgICAvKiBBZGRyZXNzIHBhc3NlZCB0byBETUEgKHN0YXJ0IGJ5IGVudGVyaW5nIEtleSBtZXNzYWdlKSAqLwotICAgICAgaW5wdXRTaXplID0gaGhhc2gtPkluaXQuS2V5U2l6ZTsgICAgICAgICAgICAvKiBTaXplIGZvciBmaXJzdCBETUEgdHJhbnNmZXIgKGluIGJ5dGVzKSAqLwotCi0gICAgICAvKiBDb25maWd1cmUgdGhlIG51bWJlciBvZiB2YWxpZCBiaXRzIGluIGxhc3Qgd29yZCBvZiB0aGUga2V5ICovCi0gICAgICBfX0hBTF9IQVNIX1NFVF9OQlZBTElEQklUUyhoaGFzaC0+SW5pdC5LZXlTaXplKTsKLQotICAgICAgLyogU2V0IHRoZSBwaGFzZSB0byBTdGVwIDEgKi8KLSAgICAgIGhoYXNoLT5QaGFzZSA9IEhBTF9IQVNIX1BIQVNFX0hNQUNfU1RFUF8xOwotCi0gICAgfQogICAgICAgZWxzZSBpZiAoaGhhc2gtPlBoYXNlID09IEhBTF9IQVNIX1BIQVNFX0hNQUNfU1RFUF8yKQotICAgIHsKLSAgICAgIC8qIFByb2Nlc3MgYSBuZXcgaW5wdXQgZGF0YSBtZXNzYWdlIGluIGNhc2Ugb2YgbXVsdGktYnVmZmVyIEhNQUMgcHJvY2Vzc2luZwotICAgICAgICAodGhpcyBpcyBub3QgYSByZXN1bXB0aW9uIGNhc2UpICovCisgICAgICB7CisgICAgICAgIC8qIFByb2Nlc3MgYSBuZXcgaW5wdXQgZGF0YSBtZXNzYWdlIGluIGNhc2Ugb2YgbXVsdGktYnVmZmVyIEhNQUMgcHJvY2Vzc2luZworICAgICAgICAgICh0aGlzIGlzIG5vdCBhIHJlc3VtcHRpb24gY2FzZSkgKi8KIAotICAgICAgLyogQ2hhbmdlIHRoZSBIQVNIIHN0YXRlICovCi0gICAgICBoaGFzaC0+U3RhdGUgPSBIQUxfSEFTSF9TVEFURV9CVVNZOworICAgICAgICAvKiBDaGFuZ2UgdGhlIEhBU0ggc3RhdGUgKi8KKyAgICAgICAgaGhhc2gtPlN0YXRlID0gSEFMX0hBU0hfU1RBVEVfQlVTWTsKIAotICAgICAgLyogU2F2ZSBpbnB1dCBwYXJhbWV0ZXJzIHRvIGJlIGFibGUgdG8gbWFuYWdlIHBvc3NpYmxlIHN1c3BlbnNpb24vcmVzdW1wdGlvbiAqLworICAgICAgICAvKiBTYXZlIGlucHV0IHBhcmFtZXRlcnMgdG8gYmUgYWJsZSB0byBtYW5hZ2UgcG9zc2libGUgc3VzcGVuc2lvbi9yZXN1bXB0aW9uICovCiAgICAgICAgIGhoYXNoLT5IYXNoSW5Db3VudCA9IFNpemU7ICAgICAgICAgICAgICAgIC8qIElucHV0IG1lc3NhZ2UgYWRkcmVzcyAgICAgICAqLwogICAgICAgICBoaGFzaC0+cEhhc2hJbkJ1ZmZQdHIgPSBwSW5CdWZmZXI7ICAgICAgICAvKiBJbnB1dCBtZXNzYWdlIHNpemUgaW4gYnl0ZXMgKi8KIAotICAgICAgLyogU2V0IERNQSBpbnB1dCBwYXJhbWV0ZXJzICovCisgICAgICAgIC8qIFNldCBETUEgaW5wdXQgcGFyYW1ldGVycyAqLwogICAgICAgICBpbnB1dGFkZHIgPSAodWludDMyX3QpcEluQnVmZmVyOyAgICAgICAgICAgLyogSW5wdXQgbWVzc2FnZSBhZGRyZXNzICAgICAgICovCiAgICAgICAgIGlucHV0U2l6ZSA9IFNpemU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnB1dCBtZXNzYWdlIHNpemUgaW4gYnl0ZXMgKi8KIAotICAgICAgaWYgKGhoYXNoLT5EaWdlc3RDYWxjdWxhdGlvbkRpc2FibGUgPT0gUkVTRVQpCi0gICAgICB7Ci0gICAgICAgIC8qIFRoaXMgbWVhbnMgdGhpcyBpcyB0aGUgbGFzdCBidWZmZXIgb2YgdGhlIG11bHRpLWJ1ZmZlciBzZXF1ZW5jZTogRENBTCBuZWVkcyB0byBiZSBzZXQuICovCi0gICAgICAgX19IQUxfSEFTSF9SRVNFVF9NRE1BVCgpOwotICAgICAgICBfX0hBTF9IQVNIX1NFVF9OQlZBTElEQklUUyhpbnB1dFNpemUpOworICAgICAgICBpZiAoaGhhc2gtPkRpZ2VzdENhbGN1bGF0aW9uRGlzYWJsZSA9PSBSRVNFVCkKKyAgICAgICAgeworICAgICAgICAgIC8qIFRoaXMgbWVhbnMgdGhpcyBpcyB0aGUgbGFzdCBidWZmZXIgb2YgdGhlIG11bHRpLWJ1ZmZlciBzZXF1ZW5jZTogRENBTCBuZWVkcyB0byBiZSBzZXQuICovCisgICAgICAgICAgX19IQUxfSEFTSF9SRVNFVF9NRE1BVCgpOworICAgICAgICAgIF9fSEFMX0hBU0hfU0VUX05CVkFMSURCSVRTKGlucHV0U2l6ZSk7CisgICAgICAgIH0KICAgICAgIH0KLSAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CiAgICAgICAgIC8qIFBoYXNlIG5vdCBhbGlnbmVkIHdpdGggaGFuZGxlIFJFQURZIHN0YXRlICovCkBAIC0zMzczLDcgKzM0MjMsNyBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgIC8qIFJlc3VtcHRpb24gY2FzZSAocGhhc2UgbWF5IGJlIFN0ZXAgMSwgMiBvciAzKSAqLworICAgICAgLyogUmVzdW1wdGlvbiBjYXNlIChwaGFzZSBtYXkgYmUgU3RlcCAxLCAyIG9yIDMpICovCiAKICAgICAgIC8qIENoYW5nZSB0aGUgSEFTSCBzdGF0ZSAqLwogICAgICAgaGhhc2gtPlN0YXRlID0gSEFMX0hBU0hfU1RBVEVfQlVTWTsKQEAgLTMzODcsNyArMzQzNyw3IEBACiAgICAgfQogCiAKLSAgICAvKiBTZXQgdGhlIEhBU0ggRE1BIHRyYW5zZmVydCBjb21wbGV0ZSBjYWxsYmFjayAqLworICAgIC8qIFNldCB0aGUgSEFTSCBETUEgdHJhbnNmZXIgY29tcGxldGUgY2FsbGJhY2sgKi8KICAgICBoaGFzaC0+aGRtYWluLT5YZmVyQ3BsdENhbGxiYWNrID0gSEFTSF9ETUFYZmVyQ3BsdDsKICAgICAvKiBTZXQgdGhlIERNQSBlcnJvciBjYWxsYmFjayAqLwogICAgIGhoYXNoLT5oZG1haW4tPlhmZXJFcnJvckNhbGxiYWNrID0gSEFTSF9ETUFFcnJvcjsKQEAgLTMzOTUsOCArMzQ0NSwxMCBAQAogICAgIC8qIFN0b3JlIG51bWJlciBvZiB3b3JkcyBhbHJlYWR5IHB1c2hlZCB0byBtYW5hZ2UgcHJvcGVyIERNQSBwcm9jZXNzaW5nIHN1c3BlbnNpb24gKi8KICAgICBoaGFzaC0+TmJXb3Jkc0FscmVhZHlQdXNoZWQgPSBIQVNIX05CV19QVVNIRUQoKTsKIAotICAgIC8qIEVuYWJsZSB0aGUgRE1BIEluIERNQSBTdHJlYW0gKi8KLSAgICBzdGF0dXMgPSBIQUxfRE1BX1N0YXJ0X0lUKGhoYXNoLT5oZG1haW4sIGlucHV0YWRkciwgKHVpbnQzMl90KSZIQVNILT5ESU4sICgoKGlucHV0U2l6ZSAlNFUpIT0wVSkgPyAoKGlucHV0U2l6ZSsoNFUtKGlucHV0U2l6ZSAlNFUpKSkvNFUpOihpbnB1dFNpemUvNFUpKSk7CisgICAgLyogRW5hYmxlIHRoZSBETUEgSW4gRE1BIHN0cmVhbSAqLworICAgIHN0YXR1cyA9IEhBTF9ETUFfU3RhcnRfSVQoaGhhc2gtPmhkbWFpbiwgaW5wdXRhZGRyLCAodWludDMyX3QpJkhBU0gtPkRJTiwgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKGlucHV0U2l6ZSAlIDRVKSAhPSAwVSkgPyAoKGlucHV0U2l6ZSArICg0VSAtIChpbnB1dFNpemUgJSA0VSkpKSAvIDRVKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChpbnB1dFNpemUgLyA0VSkpKTsKICAgICAvKiBFbmFibGUgRE1BIHJlcXVlc3RzICovCiAgICAgU0VUX0JJVChIQVNILT5DUiwgSEFTSF9DUl9ETUFFKTsKIApkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfaGFzaF9leC5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfaGFzaF9leC5jCmluZGV4IGZkNjE4MTQuLjc4ZjFmNGUgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX2hhc2hfZXguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9oYXNoX2V4LmMKQEAgLTUsNyArNSw3IEBACiAgICogQGJyaWVmICAgRXh0ZW5kZWQgSEFTSCBIQUwgbW9kdWxlIGRyaXZlci4KICAgKiAgICAgICAgICBUaGlzIGZpbGUgcHJvdmlkZXMgZmlybXdhcmUgZnVuY3Rpb25zIHRvIG1hbmFnZSB0aGUgZm9sbG93aW5nCiAgICogICAgICAgICAgZnVuY3Rpb25hbGl0aWVzIG9mIHRoZSBIQVNIIHBlcmlwaGVyYWwgZm9yIFNIQS0yMjQgYW5kIFNIQS0yNTYKLSAgKiAgICAgICAgICBhbG9ncml0aG1zOgorICAqICAgICAgICAgIGFsZ29yaXRobXM6CiAgICogICAgICAgICAgICsgSEFTSCBvciBITUFDIHByb2Nlc3NpbmcgaW4gcG9sbGluZyBtb2RlCiAgICogICAgICAgICAgICsgSEFTSCBvciBITUFDIHByb2Nlc3NpbmcgaW4gaW50ZXJydXB0IG1vZGUKICAgKiAgICAgICAgICAgKyBIQVNIIG9yIEhNQUMgcHJvY2Vzc2luZyBpbiBETUEgbW9kZQpAQCAtMzksMTcgKzM5LDE4IEBACiAgICAgICAgICAgICAgVXNlciBtdXN0IHJlc29ydCB0byBIQUxfSEFTSEV4X3h4eF9BY2N1bXVsYXRlX0VuZCgpIHRvIGVudGVyIHRoZSBsYXN0IG9uZSBhbmQgcmV0cmlldmUgYXMKICAgICAgICAgICAgICB3ZWxsIHRoZSBjb21wdXRlZCBkaWdlc3QuCiAKLSAgICAgICAgKCMjKSBJbiBpbnRlcnJ1cHQgbW9kZSwgQVBJIEhBTF9IQVNIRXhfeHh4X0FjY3VtdWxhdGVfSVQoKSBtdXN0IGJlIGNhbGxlZCBmb3IgZWFjaCBpbnB1dCBidWZmZXIsIAorICAgICAgICAoIyMpIEluIGludGVycnVwdCBtb2RlLCBBUEkgSEFMX0hBU0hFeF94eHhfQWNjdW11bGF0ZV9JVCgpIG11c3QgYmUgY2FsbGVkIGZvciBlYWNoIGlucHV0IGJ1ZmZlciwKICAgICAgICAgICAgICBleGNlcHQgZm9yIHRoZSBsYXN0IG9uZS4KICAgICAgICAgICAgICBVc2VyIG11c3QgcmVzb3J0IHRvIEhBTF9IQVNIRXhfeHh4X0FjY3VtdWxhdGVfRW5kX0lUKCkgdG8gZW50ZXIgdGhlIGxhc3Qgb25lIGFuZCByZXRyaWV2ZSBhcwogICAgICAgICAgICAgIHdlbGwgdGhlIGNvbXB1dGVkIGRpZ2VzdC4KIAogICAgICAgICAoIyMpIEluIERNQSBtb2RlLCBtdWx0aS1idWZmZXIgSEFTSCBhbmQgSE1BQyBwcm9jZXNzaW5nIGFyZSBwb3NzaWJsZS4KIAotICAgICAgICAgICAgICAoKysrKSBIQVNIIHByb2Nlc3Npbmc6IG9uY2UgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSwgTURNQVQgYml0IG11c3QgYmUgc2V0IHRocnUgX19IQUxfSEFTSF9TRVRfTURNQVQoKSBtYWNyby4KLSAgICAgICAgICAgICBGcm9tIHRoYXQgcG9pbnQsIGVhY2ggYnVmZmVyIGNhbiBiZSBmZWQgdG8gdGhlIFBlcmlwaGVyYWwgdGhydSBIQUxfSEFTSEV4X3h4eF9TdGFydF9ETUEoKSBBUEkuCisgICAgICAgICAgICAgICgrKyspIEhBU0ggcHJvY2Vzc2luZzogb25jZSBpbml0aWFsaXphdGlvbiBpcyBkb25lLCBNRE1BVCBiaXQgbXVzdCBiZSBzZXQgdGhyb3VnaAorICAgICAgICAgICAgICAgX19IQUxfSEFTSF9TRVRfTURNQVQoKSBtYWNyby4KKyAgICAgICAgICAgICBGcm9tIHRoYXQgcG9pbnQsIGVhY2ggYnVmZmVyIGNhbiBiZSBmZWQgdG8gdGhlIFBlcmlwaGVyYWwgdGhyb3VnaCBIQUxfSEFTSEV4X3h4eF9TdGFydF9ETUEoKSBBUEkuCiAgICAgICAgICAgICAgQmVmb3JlIGVudGVyaW5nIHRoZSBsYXN0IGJ1ZmZlciwgcmVzZXQgdGhlIE1ETUFUIGJpdCB3aXRoIF9fSEFMX0hBU0hfUkVTRVRfTURNQVQoKQotICAgICAgICAgICAgIG1hY3JvIHRoZW4gd3JhcC11cCB0aGUgSEFTSCBwcm9jZXNzaW5nIGluIGZlZWRpbmcgdGhlIGxhc3QgaW5wdXQgYnVmZmVyIHRocnUgdGhlCisgICAgICAgICAgICAgbWFjcm8gdGhlbiB3cmFwLXVwIHRoZSBIQVNIIHByb2Nlc3NpbmcgaW4gZmVlZGluZyB0aGUgbGFzdCBpbnB1dCBidWZmZXIgdGhyb3VnaCB0aGUKICAgICAgICAgICAgICBzYW1lIEFQSSBIQUxfSEFTSEV4X3h4eF9TdGFydF9ETUEoKS4gVGhlIGRpZ2VzdCBjYW4gdGhlbiBiZSByZXRyaWV2ZWQgd2l0aCBhIGNhbGwgdG8KICAgICAgICAgICAgICBBUEkgSEFMX0hBU0hFeF94eHhfRmluaXNoKCkuCiAKQEAgLTEwNyw4ICsxMDgsOCBAQAogICAqLwogCiAvKiogQGRlZmdyb3VwIEhBU0hFeF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAxIEhBU0ggZXh0ZW5kZWQgcHJvY2Vzc2luZyBmdW5jdGlvbnMgaW4gcG9sbGluZyBtb2RlCi0gKiAgQGJyaWVmICAgSEFTSCBleHRlbmRlZCBwcm9jZXNzaW5nIGZ1bmN0aW9ucyB1c2luZyBwb2xsaW5nIG1vZGUuCi0gKgorICAqICBAYnJpZWYgICBIQVNIIGV4dGVuZGVkIHByb2Nlc3NpbmcgZnVuY3Rpb25zIHVzaW5nIHBvbGxpbmcgbW9kZS4KKyAgKgogQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgIyMjIyMgUG9sbGluZyBtb2RlIEhBU0ggZXh0ZW5kZWQgcHJvY2Vzc2luZyBmdW5jdGlvbnMgIyMjIyMKQEAgLTE0Nyw3ICsxNDgsOCBAQAogICAqIEBwYXJhbSAgVGltZW91dCBUaW1lb3V0IHZhbHVlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTIyNF9TdGFydChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTIyNF9TdGFydChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KQogewogICByZXR1cm4gSEFTSF9TdGFydChoaGFzaCwgcEluQnVmZmVyLCBTaXplLCBwT3V0QnVmZmVyLCBUaW1lb3V0LCBIQVNIX0FMR09TRUxFQ1RJT05fU0hBMjI0KTsKIH0KQEAgLTE3NCw3ICsxNzYsNyBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hFeF9TSEEyMjRfQWNjbWx0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSkKIHsKLSAgcmV0dXJuICBIQVNIX0FjY3VtdWxhdGUoaGhhc2gsIHBJbkJ1ZmZlciwgU2l6ZSxIQVNIX0FMR09TRUxFQ1RJT05fU0hBMjI0KTsKKyAgcmV0dXJuICBIQVNIX0FjY3VtdWxhdGUoaGhhc2gsIHBJbkJ1ZmZlciwgU2l6ZSwgSEFTSF9BTEdPU0VMRUNUSU9OX1NIQTIyNCk7CiB9CiAKIC8qKgpAQCAtMTg3LDcgKzE4OSw4IEBACiAgICogQHBhcmFtICBUaW1lb3V0IFRpbWVvdXQgdmFsdWUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIRXhfU0hBMjI0X0FjY21sdF9FbmQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90KiBwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hFeF9TSEEyMjRfQWNjbWx0X0VuZChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpCiB7CiAgIHJldHVybiBIQVNIX1N0YXJ0KGhoYXNoLCBwSW5CdWZmZXIsIFNpemUsIHBPdXRCdWZmZXIsIFRpbWVvdXQsIEhBU0hfQUxHT1NFTEVDVElPTl9TSEEyMjQpOwogfQpAQCAtMjAzLDcgKzIwNiw4IEBACiAgICogQHBhcmFtICBUaW1lb3V0IFRpbWVvdXQgdmFsdWUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIRXhfU0hBMjU2X1N0YXJ0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIRXhfU0hBMjU2X1N0YXJ0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpCiB7CiAgIHJldHVybiBIQVNIX1N0YXJ0KGhoYXNoLCBwSW5CdWZmZXIsIFNpemUsIHBPdXRCdWZmZXIsIFRpbWVvdXQsIEhBU0hfQUxHT1NFTEVDVElPTl9TSEEyNTYpOwogfQpAQCAtMjMwLDcgKzIzNCw3IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTI1Nl9BY2NtbHQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplKQogewotICByZXR1cm4gIEhBU0hfQWNjdW11bGF0ZShoaGFzaCwgcEluQnVmZmVyLCBTaXplLEhBU0hfQUxHT1NFTEVDVElPTl9TSEEyNTYpOworICByZXR1cm4gIEhBU0hfQWNjdW11bGF0ZShoaGFzaCwgcEluQnVmZmVyLCBTaXplLCBIQVNIX0FMR09TRUxFQ1RJT05fU0hBMjU2KTsKIH0KIAogLyoqCkBAIC0yNDMsNyArMjQ3LDggQEAKICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCB2YWx1ZQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hFeF9TSEEyNTZfQWNjbWx0X0VuZChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTI1Nl9BY2NtbHRfRW5kKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCkKIHsKICAgcmV0dXJuIEhBU0hfU3RhcnQoaGhhc2gsIHBJbkJ1ZmZlciwgU2l6ZSwgcE91dEJ1ZmZlciwgVGltZW91dCwgSEFTSF9BTEdPU0VMRUNUSU9OX1NIQTI1Nik7CiB9CkBAIC0yNTMsOCArMjU4LDggQEAKICAgKi8KIAogLyoqIEBkZWZncm91cCBIQVNIRXhfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMiBIQVNIIGV4dGVuZGVkIHByb2Nlc3NpbmcgZnVuY3Rpb25zIGluIGludGVycnVwdCBtb2RlCi0gKiAgQGJyaWVmICAgSEFTSCBleHRlbmRlZCBwcm9jZXNzaW5nIGZ1bmN0aW9ucyB1c2luZyBpbnRlcnJ1cHQgbW9kZS4KLSAqCisgICogIEBicmllZiAgIEhBU0ggZXh0ZW5kZWQgcHJvY2Vzc2luZyBmdW5jdGlvbnMgdXNpbmcgaW50ZXJydXB0IG1vZGUuCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAjIyMjIyBJbnRlcnJ1cHRpb24gbW9kZSBIQVNIIGV4dGVuZGVkIHByb2Nlc3NpbmcgZnVuY3Rpb25zICMjIyMjCkBAIC0yODUsOSArMjkwLDEwIEBACiAgICogQHBhcmFtICBwT3V0QnVmZmVyIHBvaW50ZXIgdG8gdGhlIGNvbXB1dGVkIGRpZ2VzdC4gRGlnZXN0IHNpemUgaXMgMjggYnl0ZXMuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTIyNF9TdGFydF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTIyNF9TdGFydF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpwT3V0QnVmZmVyKQogewotICByZXR1cm4gSEFTSF9TdGFydF9JVChoaGFzaCwgcEluQnVmZmVyLCBTaXplLCBwT3V0QnVmZmVyLEhBU0hfQUxHT1NFTEVDVElPTl9TSEEyMjQpOworICByZXR1cm4gSEFTSF9TdGFydF9JVChoaGFzaCwgcEluQnVmZmVyLCBTaXplLCBwT3V0QnVmZmVyLCBIQVNIX0FMR09TRUxFQ1RJT05fU0hBMjI0KTsKIH0KIAogLyoqCkBAIC0zMTAsNyArMzE2LDcgQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIRXhfU0hBMjI0X0FjY21sdF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUpCiB7Ci0gIHJldHVybiAgSEFTSF9BY2N1bXVsYXRlX0lUKGhoYXNoLCBwSW5CdWZmZXIsIFNpemUsSEFTSF9BTEdPU0VMRUNUSU9OX1NIQTIyNCk7CisgIHJldHVybiAgSEFTSF9BY2N1bXVsYXRlX0lUKGhoYXNoLCBwSW5CdWZmZXIsIFNpemUsIEhBU0hfQUxHT1NFTEVDVElPTl9TSEEyMjQpOwogfQogCiAvKioKQEAgLTMyMiw5ICszMjgsMTAgQEAKICAgKiBAcGFyYW0gIHBPdXRCdWZmZXIgcG9pbnRlciB0byB0aGUgY29tcHV0ZWQgZGlnZXN0LiBEaWdlc3Qgc2l6ZSBpcyAyOCBieXRlcy4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIRXhfU0hBMjI0X0FjY21sdF9FbmRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90KiBwT3V0QnVmZmVyKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hFeF9TSEEyMjRfQWNjbWx0X0VuZF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBPdXRCdWZmZXIpCiB7Ci0gIHJldHVybiBIQVNIX1N0YXJ0X0lUKGhoYXNoLCBwSW5CdWZmZXIsIFNpemUsIHBPdXRCdWZmZXIsSEFTSF9BTEdPU0VMRUNUSU9OX1NIQTIyNCk7CisgIHJldHVybiBIQVNIX1N0YXJ0X0lUKGhoYXNoLCBwSW5CdWZmZXIsIFNpemUsIHBPdXRCdWZmZXIsIEhBU0hfQUxHT1NFTEVDVElPTl9TSEEyMjQpOwogfQogCiAvKioKQEAgLTMzNyw5ICszNDQsMTAgQEAKICAgKiBAcGFyYW0gIHBPdXRCdWZmZXIgcG9pbnRlciB0byB0aGUgY29tcHV0ZWQgZGlnZXN0LiBEaWdlc3Qgc2l6ZSBpcyAzMiBieXRlcy4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIRXhfU0hBMjU2X1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlcikKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIRXhfU0hBMjU2X1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBPdXRCdWZmZXIpCiB7Ci0gIHJldHVybiBIQVNIX1N0YXJ0X0lUKGhoYXNoLCBwSW5CdWZmZXIsIFNpemUsIHBPdXRCdWZmZXIsSEFTSF9BTEdPU0VMRUNUSU9OX1NIQTI1Nik7CisgIHJldHVybiBIQVNIX1N0YXJ0X0lUKGhoYXNoLCBwSW5CdWZmZXIsIFNpemUsIHBPdXRCdWZmZXIsIEhBU0hfQUxHT1NFTEVDVElPTl9TSEEyNTYpOwogfQogCiAvKioKQEAgLTM2Miw3ICszNzAsNyBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hFeF9TSEEyNTZfQWNjbWx0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSkKIHsKLSAgcmV0dXJuICBIQVNIX0FjY3VtdWxhdGVfSVQoaGhhc2gsIHBJbkJ1ZmZlciwgU2l6ZSxIQVNIX0FMR09TRUxFQ1RJT05fU0hBMjU2KTsKKyAgcmV0dXJuICBIQVNIX0FjY3VtdWxhdGVfSVQoaGhhc2gsIHBJbkJ1ZmZlciwgU2l6ZSwgSEFTSF9BTEdPU0VMRUNUSU9OX1NIQTI1Nik7CiB9CiAKIC8qKgpAQCAtMzc0LDkgKzM4MiwxMCBAQAogICAqIEBwYXJhbSAgcE91dEJ1ZmZlciBwb2ludGVyIHRvIHRoZSBjb21wdXRlZCBkaWdlc3QuIERpZ2VzdCBzaXplIGlzIDMyIGJ5dGVzLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hFeF9TSEEyNTZfQWNjbWx0X0VuZF9JVChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90ICpwSW5CdWZmZXIsIHVpbnQzMl90IFNpemUsIHVpbnQ4X3QqIHBPdXRCdWZmZXIpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTI1Nl9BY2NtbHRfRW5kX0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcE91dEJ1ZmZlcikKIHsKLSAgcmV0dXJuIEhBU0hfU3RhcnRfSVQoaGhhc2gsIHBJbkJ1ZmZlciwgU2l6ZSwgcE91dEJ1ZmZlcixIQVNIX0FMR09TRUxFQ1RJT05fU0hBMjU2KTsKKyAgcmV0dXJuIEhBU0hfU3RhcnRfSVQoaGhhc2gsIHBJbkJ1ZmZlciwgU2l6ZSwgcE91dEJ1ZmZlciwgSEFTSF9BTEdPU0VMRUNUSU9OX1NIQTI1Nik7CiB9CiAKIC8qKgpAQCAtMzg0LDExICszOTMsMTEgQEAKICAgKi8KIAogLyoqIEBkZWZncm91cCBIQVNIRXhfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMyBIQVNIIGV4dGVuZGVkIHByb2Nlc3NpbmcgZnVuY3Rpb25zIGluIERNQSBtb2RlCi0gKiAgQGJyaWVmICAgSEFTSCBleHRlbmRlZCBwcm9jZXNzaW5nIGZ1bmN0aW9ucyB1c2luZyBETUEgbW9kZS4KLSAqCisgICogIEBicmllZiAgIEhBU0ggZXh0ZW5kZWQgcHJvY2Vzc2luZyBmdW5jdGlvbnMgdXNpbmcgRE1BIG1vZGUuCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICAgICAgICAgICAgICAjIyMjIyBETUEgbW9kZSBIQVNIIGV4dGVuZGVkICBwcm9jZXNzaW5nIGZ1bmN0aW9uc3MgIyMjIyMKKyAgICAgICAgICAgICAgICAjIyMjIyBETUEgbW9kZSBIQVNIIGV4dGVuZGVkICBwcm9jZXNzaW5nIGZ1bmN0aW9ucyAjIyMjIwogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBbLi5dICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgZnVuY3Rpb25zIGFsbG93aW5nIHRvIGNhbGN1bGF0ZSBpbiBETUEgbW9kZQogICAgICAgICAgIHRoZSBoYXNoIHZhbHVlIHVzaW5nIG9uZSBvZiB0aGUgZm9sbG93aW5nIGFsZ29yaXRobXM6CkBAIC00NDAsOSArNDQ5LDkgQEAKICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCB2YWx1ZS4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQVNIRXhfU0hBMjI0X0ZpbmlzaChIQVNIX0hhbmRsZVR5cGVEZWYgKmhoYXNoLCB1aW50OF90KiBwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hFeF9TSEEyMjRfRmluaXNoKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpCiB7Ci0gICByZXR1cm4gSEFTSF9GaW5pc2goaGhhc2gsIHBPdXRCdWZmZXIsIFRpbWVvdXQpOworICByZXR1cm4gSEFTSF9GaW5pc2goaGhhc2gsIHBPdXRCdWZmZXIsIFRpbWVvdXQpOwogfQogCiAvKioKQEAgLTQ3MCw5ICs0NzksOSBAQAogICAqIEBwYXJhbSAgVGltZW91dCBUaW1lb3V0IHZhbHVlLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hBU0hFeF9TSEEyNTZfRmluaXNoKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QqIHBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSEFTSEV4X1NIQTI1Nl9GaW5pc2goSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCkKIHsKLSAgIHJldHVybiBIQVNIX0ZpbmlzaChoaGFzaCwgcE91dEJ1ZmZlciwgVGltZW91dCk7CisgIHJldHVybiBIQVNIX0ZpbmlzaChoaGFzaCwgcE91dEJ1ZmZlciwgVGltZW91dCk7CiB9CiAKIC8qKgpAQCAtNDgwLDggKzQ4OSw4IEBACiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgSEFTSEV4X0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDQgSE1BQyBleHRlbmRlZCBwcm9jZXNzaW5nIGZ1bmN0aW9ucyBpbiBwb2xsaW5nIG1vZGUKLSAqICBAYnJpZWYgICBITUFDIGV4dGVuZGVkIHByb2Nlc3NpbmcgZnVuY3Rpb25zIHVzaW5nIHBvbGxpbmcgbW9kZS4KLSAqCisgICogIEBicmllZiAgIEhNQUMgZXh0ZW5kZWQgcHJvY2Vzc2luZyBmdW5jdGlvbnMgdXNpbmcgcG9sbGluZyBtb2RlLgorICAqCiBAdmVyYmF0aW0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgIyMjIyMgUG9sbGluZyBtb2RlIEhNQUMgZXh0ZW5kZWQgcHJvY2Vzc2luZyBmdW5jdGlvbnMgIyMjIyMKQEAgLTUxMiw3ICs1MjEsOCBAQAogICAqIEBwYXJhbSAgVGltZW91dCBUaW1lb3V0IHZhbHVlLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hNQUNFeF9TSEEyMjRfU3RhcnQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90KiBwT3V0QnVmZmVyLCB1aW50MzJfdCBUaW1lb3V0KQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hNQUNFeF9TSEEyMjRfU3RhcnQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCkKIHsKICAgcmV0dXJuIEhNQUNfU3RhcnQoaGhhc2gsIHBJbkJ1ZmZlciwgU2l6ZSwgcE91dEJ1ZmZlciwgVGltZW91dCwgSEFTSF9BTEdPU0VMRUNUSU9OX1NIQTIyNCk7CiB9CkBAIC01MzAsNyArNTQwLDggQEAKICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCB2YWx1ZS4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9ITUFDRXhfU0hBMjU2X1N0YXJ0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlciwgdWludDMyX3QgVGltZW91dCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9ITUFDRXhfU0hBMjU2X1N0YXJ0KEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBPdXRCdWZmZXIsIHVpbnQzMl90IFRpbWVvdXQpCiB7CiAgIHJldHVybiBITUFDX1N0YXJ0KGhoYXNoLCBwSW5CdWZmZXIsIFNpemUsIHBPdXRCdWZmZXIsIFRpbWVvdXQsIEhBU0hfQUxHT1NFTEVDVElPTl9TSEEyNTYpOwogfQpAQCAtNTQxLDggKzU1Miw4IEBACiAKIAogLyoqIEBkZWZncm91cCBIQVNIRXhfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwNSBITUFDIGV4dGVuZGVkIHByb2Nlc3NpbmcgZnVuY3Rpb25zIGluIGludGVycnVwdCBtb2RlCi0gKiAgQGJyaWVmICAgSE1BQyBleHRlbmRlZCBwcm9jZXNzaW5nIGZ1bmN0aW9ucyB1c2luZyBpbnRlcnJ1cHRpb24gbW9kZS4KLSAqCisgICogIEBicmllZiAgIEhNQUMgZXh0ZW5kZWQgcHJvY2Vzc2luZyBmdW5jdGlvbnMgdXNpbmcgaW50ZXJydXB0aW9uIG1vZGUuCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAjIyMjIyBJbnRlcnJ1cHQgbW9kZSBITUFDIGV4dGVuZGVkIHByb2Nlc3NpbmcgZnVuY3Rpb25zICMjIyMjCkBAIC01NzIsNyArNTgzLDggQEAKICAgKiBAcGFyYW0gIHBPdXRCdWZmZXIgcG9pbnRlciB0byB0aGUgY29tcHV0ZWQgZGlnZXN0LiBEaWdlc3Qgc2l6ZSBpcyAyOCBieXRlcy4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9ITUFDRXhfU0hBMjI0X1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwgdWludDhfdCogcE91dEJ1ZmZlcikKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9ITUFDRXhfU0hBMjI0X1N0YXJ0X0lUKEhBU0hfSGFuZGxlVHlwZURlZiAqaGhhc2gsIHVpbnQ4X3QgKnBJbkJ1ZmZlciwgdWludDMyX3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnBPdXRCdWZmZXIpCiB7CiAgIHJldHVybiAgSE1BQ19TdGFydF9JVChoaGFzaCwgcEluQnVmZmVyLCBTaXplLCBwT3V0QnVmZmVyLCBIQVNIX0FMR09TRUxFQ1RJT05fU0hBMjI0KTsKIH0KQEAgLTU4OSw3ICs2MDEsOCBAQAogICAqIEBwYXJhbSAgcE91dEJ1ZmZlciBwb2ludGVyIHRvIHRoZSBjb21wdXRlZCBkaWdlc3QuIERpZ2VzdCBzaXplIGlzIDMyIGJ5dGVzLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hNQUNFeF9TSEEyNTZfU3RhcnRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLCB1aW50OF90KiBwT3V0QnVmZmVyKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hNQUNFeF9TSEEyNTZfU3RhcnRfSVQoSEFTSF9IYW5kbGVUeXBlRGVmICpoaGFzaCwgdWludDhfdCAqcEluQnVmZmVyLCB1aW50MzJfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcE91dEJ1ZmZlcikKIHsKICAgcmV0dXJuICBITUFDX1N0YXJ0X0lUKGhoYXNoLCBwSW5CdWZmZXIsIFNpemUsIHBPdXRCdWZmZXIsIEhBU0hfQUxHT1NFTEVDVElPTl9TSEEyNTYpOwogfQpAQCAtNjAzLDggKzYxNiw4IEBACiAKIAogLyoqIEBkZWZncm91cCBIQVNIRXhfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwNiBITUFDIGV4dGVuZGVkIHByb2Nlc3NpbmcgZnVuY3Rpb25zIGluIERNQSBtb2RlCi0gKiAgQGJyaWVmICAgSE1BQyBleHRlbmRlZCBwcm9jZXNzaW5nIGZ1bmN0aW9ucyB1c2luZyBETUEgbW9kZS4KLSAqCisgICogIEBicmllZiAgIEhNQUMgZXh0ZW5kZWQgcHJvY2Vzc2luZyBmdW5jdGlvbnMgdXNpbmcgRE1BIG1vZGUuCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgIyMjIyMgRE1BIG1vZGUgSE1BQyBleHRlbmRlZCBwcm9jZXNzaW5nIGZ1bmN0aW9ucyAjIyMjIwpAQCAtNjgxLDggKzY5NCw4IEBACiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgSEFTSEV4X0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDcgTXVsdGktYnVmZmVyIEhNQUMgZXh0ZW5kZWQgcHJvY2Vzc2luZyBmdW5jdGlvbnMgaW4gRE1BIG1vZGUKLSAqICBAYnJpZWYgICBITUFDIGV4dGVuZGVkIHByb2Nlc3NpbmcgZnVuY3Rpb25zIGluIG11bHRpLWJ1ZmZlciBETUEgbW9kZS4KLSAqCisgICogIEBicmllZiAgIEhNQUMgZXh0ZW5kZWQgcHJvY2Vzc2luZyBmdW5jdGlvbnMgaW4gbXVsdGktYnVmZmVyIERNQSBtb2RlLgorICAqCiBAdmVyYmF0aW0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAjIyMjIyBNdWx0aS1idWZmZXIgRE1BIG1vZGUgSE1BQyBleHRlbmRlZCBwcm9jZXNzaW5nIGZ1bmN0aW9ucyAjIyMjIwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfaGNkLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9oY2QuYwppbmRleCA3MzVkN2QxLi43ZGQ1ODE2IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9oY2QuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9oY2QuYwpAQCAtOTEsOCArOTEsOCBAQAogICAqLwogCiAvKiogQGRlZmdyb3VwIEhDRF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAxIEluaXRpYWxpemF0aW9uIGFuZCBkZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMKLSAqICBAYnJpZWYgICAgSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24gZnVuY3Rpb25zCi0gKgorICAqICBAYnJpZWYgICAgSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24gZnVuY3Rpb25zCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAjIyMjIyBJbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zICMjIyMjCkBAIC0xODUsOSArMTg1LDkgQEAKICAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBmcm9tIDAgdG8gMjU1CiAgICogQHBhcmFtICBzcGVlZCBDdXJyZW50IGRldmljZSBzcGVlZC4KICAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZXNlIHZhbHVlczoKLSAgKiAgICAgICAgICAgIEhDRF9TUEVFRF9ISUdIOiBIaWdoIHNwZWVkIG1vZGUsCi0gICogICAgICAgICAgICBIQ0RfU1BFRURfRlVMTDogRnVsbCBzcGVlZCBtb2RlLAotICAqICAgICAgICAgICAgSENEX1NQRUVEX0xPVzogTG93IHNwZWVkIG1vZGUKKyAgKiAgICAgICAgICAgIEhDRF9ERVZJQ0VfU1BFRURfSElHSDogSGlnaCBzcGVlZCBtb2RlLAorICAqICAgICAgICAgICAgSENEX0RFVklDRV9TUEVFRF9GVUxMOiBGdWxsIHNwZWVkIG1vZGUsCisgICogICAgICAgICAgICBIQ0RfREVWSUNFX1NQRUVEX0xPVzogTG93IHNwZWVkIG1vZGUKICAgKiBAcGFyYW0gIGVwX3R5cGUgRW5kcG9pbnQgVHlwZS4KICAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZXNlIHZhbHVlczoKICAgKiAgICAgICAgICAgIEVQX1RZUEVfQ1RSTDogQ29udHJvbCB0eXBlLApAQCAtNTY2LDYgKzU2NiwxNiBAQAogICAgICAgX19IQUxfSENEX0NMRUFSX0ZMQUcoaGhjZCwgVVNCX09UR19HSU5UU1RTX1NPRik7CiAgICAgfQogCisgICAgLyogSGFuZGxlIFJ4IFF1ZXVlIExldmVsIEludGVycnVwdHMgKi8KKyAgICBpZiAoKF9fSEFMX0hDRF9HRVRfRkxBRyhoaGNkLCBVU0JfT1RHX0dJTlRTVFNfUlhGTFZMKSkgIT0gMFUpCisgICAgeworICAgICAgVVNCX01BU0tfSU5URVJSVVBUKGhoY2QtPkluc3RhbmNlLCBVU0JfT1RHX0dJTlRTVFNfUlhGTFZMKTsKKworICAgICAgSENEX1JYUUxWTF9JUlFIYW5kbGVyKGhoY2QpOworCisgICAgICBVU0JfVU5NQVNLX0lOVEVSUlVQVChoaGNkLT5JbnN0YW5jZSwgVVNCX09UR19HSU5UU1RTX1JYRkxWTCk7CisgICAgfQorCiAgICAgLyogSGFuZGxlIEhvc3QgY2hhbm5lbCBJbnRlcnJ1cHQgKi8KICAgICBpZiAoX19IQUxfSENEX0dFVF9GTEFHKGhoY2QsIFVTQl9PVEdfR0lOVFNUU19IQ0lOVCkpCiAgICAgewpAQCAtNTg2LDE5ICs1OTYsMjEgQEAKICAgICAgIH0KICAgICAgIF9fSEFMX0hDRF9DTEVBUl9GTEFHKGhoY2QsIFVTQl9PVEdfR0lOVFNUU19IQ0lOVCk7CiAgICAgfQotCi0gICAgLyogSGFuZGxlIFJ4IFF1ZXVlIExldmVsIEludGVycnVwdHMgKi8KLSAgICBpZiAoKF9fSEFMX0hDRF9HRVRfRkxBRyhoaGNkLCBVU0JfT1RHX0dJTlRTVFNfUlhGTFZMKSkgIT0gMFUpCi0gICAgewotICAgICAgVVNCX01BU0tfSU5URVJSVVBUKGhoY2QtPkluc3RhbmNlLCBVU0JfT1RHX0dJTlRTVFNfUlhGTFZMKTsKLQotICAgICAgSENEX1JYUUxWTF9JUlFIYW5kbGVyKGhoY2QpOwotCi0gICAgICBVU0JfVU5NQVNLX0lOVEVSUlVQVChoaGNkLT5JbnN0YW5jZSwgVVNCX09UR19HSU5UU1RTX1JYRkxWTCk7Ci0gICAgfQogICB9CiB9CiAKKworLyoqCisgICogQGJyaWVmICBIYW5kbGVzIEhDRCBXYWtldXAgaW50ZXJydXB0IHJlcXVlc3QuCisgICogQHBhcmFtICBoaGNkIEhDRCBoYW5kbGUKKyAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKKyAgKi8KK3ZvaWQgSEFMX0hDRF9XS1VQX0lSUUhhbmRsZXIoSENEX0hhbmRsZVR5cGVEZWYgKmhoY2QpCit7CisgIFVOVVNFRChoaGNkKTsKK30KKworCiAvKioKICAgKiBAYnJpZWYgIFNPRiBjYWxsYmFjay4KICAgKiBAcGFyYW0gIGhoY2QgSENEIGhhbmRsZQpAQCAtNzE4LDcgKzczMCw5IEBACiAgICogQHBhcmFtICBwQ2FsbGJhY2sgcG9pbnRlciB0byB0aGUgQ2FsbGJhY2sgZnVuY3Rpb24KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQ0RfUmVnaXN0ZXJDYWxsYmFjayhIQ0RfSGFuZGxlVHlwZURlZiAqaGhjZCwgSEFMX0hDRF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELCBwSENEX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSENEX1JlZ2lzdGVyQ2FsbGJhY2soSENEX0hhbmRsZVR5cGVEZWYgKmhoY2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFMX0hDRF9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBIQ0RfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogCkBAIC04MDYsNyArODIwLDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBVbnJlZ2lzdGVyIGFuIFVTQiBIQ0QgQ2FsbGJhY2sKLSAgKiAgICAgICAgIFVTQiBIQ0QgY2FsbGFiY2sgaXMgcmVkaXJlY3RlZCB0byB0aGUgd2VhayBwcmVkZWZpbmVkIGNhbGxiYWNrCisgICogICAgICAgICBVU0IgSENEIGNhbGxiYWNrIGlzIHJlZGlyZWN0ZWQgdG8gdGhlIHdlYWsgcHJlZGVmaW5lZCBjYWxsYmFjawogICAqIEBwYXJhbSAgaGhjZCBVU0IgSENEIGhhbmRsZQogICAqIEBwYXJhbSAgQ2FsbGJhY2tJRCBJRCBvZiB0aGUgY2FsbGJhY2sgdG8gYmUgdW5yZWdpc3RlcmVkCiAgICogICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgpAQCAtOTEwLDcgKzkyNCw4IEBACiAgICogQHBhcmFtICBwQ2FsbGJhY2sgcG9pbnRlciB0byB0aGUgVVNCIEhDRCBIb3N0IENoYW5uZWwgTm90aWZ5IFVSQiBDaGFuZ2UgQ2FsbGJhY2sgZnVuY3Rpb24KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9IQ0RfUmVnaXN0ZXJIQ19Ob3RpZnlVUkJDaGFuZ2VDYWxsYmFjayhIQ0RfSGFuZGxlVHlwZURlZiAqaGhjZCwgcEhDRF9IQ19Ob3RpZnlVUkJDaGFuZ2VDYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0hDRF9SZWdpc3RlckhDX05vdGlmeVVSQkNoYW5nZUNhbGxiYWNrKEhDRF9IYW5kbGVUeXBlRGVmICpoaGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBIQ0RfSENfTm90aWZ5VVJCQ2hhbmdlQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogCkBAIC05NDUsNyArOTYwLDcgQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBVblJlZ2lzdGVyIHRoZSBVU0IgSENEIEhvc3QgQ2hhbm5lbCBOb3RpZnkgVVJCIENoYW5nZSBDYWxsYmFjaworICAqIEBicmllZiAgVW5yZWdpc3RlciB0aGUgVVNCIEhDRCBIb3N0IENoYW5uZWwgTm90aWZ5IFVSQiBDaGFuZ2UgQ2FsbGJhY2sKICAgKiAgICAgICAgIFVTQiBIQ0QgSG9zdCBDaGFubmVsIE5vdGlmeSBVUkIgQ2hhbmdlIENhbGxiYWNrIGlzIHJlZGlyZWN0ZWQgdG8gdGhlIHdlYWsgSEFMX0hDRF9IQ19Ob3RpZnlVUkJDaGFuZ2VfQ2FsbGJhY2soKSBwcmVkZWZpbmVkIGNhbGxiYWNrCiAgICogQHBhcmFtICBoaGNkIEhDRCBoYW5kbGUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKQEAgLTk4Miw4ICs5OTcsOCBAQAogICAqLwogCiAvKiogQGRlZmdyb3VwIEhDRF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAzIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMKLSAqICBAYnJpZWYgICBNYW5hZ2VtZW50IGZ1bmN0aW9ucwotICoKKyAgKiAgQGJyaWVmICAgTWFuYWdlbWVudCBmdW5jdGlvbnMKKyAgKgogQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICMjIyMjIFBlcmlwaGVyYWwgQ29udHJvbCBmdW5jdGlvbnMgIyMjIyMKQEAgLTEwNDEsOCArMTA1Niw4IEBACiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgSENEX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDQgUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMKLSAqICBAYnJpZWYgICBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucwotICoKKyAgKiAgQGJyaWVmICAgUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMKKyAgKgogQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICMjIyMjIFBlcmlwaGVyYWwgU3RhdGUgZnVuY3Rpb25zICMjIyMjCkBAIC0xMTkyLDEwICsxMjA3LDE3IEBACiAgIGVsc2UgaWYgKChVU0J4X0hDKGNoX251bSktPkhDSU5UICYgVVNCX09UR19IQ0lOVF9EVEVSUikgPT0gVVNCX09UR19IQ0lOVF9EVEVSUikKICAgewogICAgIF9fSEFMX0hDRF9VTk1BU0tfSEFMVF9IQ19JTlQoY2hfbnVtKTsKLSAgICAodm9pZClVU0JfSENfSGFsdChoaGNkLT5JbnN0YW5jZSwgKHVpbnQ4X3QpY2hfbnVtKTsKLSAgICBfX0hBTF9IQ0RfQ0xFQVJfSENfSU5UKGNoX251bSwgVVNCX09UR19IQ0lOVF9OQUspOwogICAgIGhoY2QtPmhjW2NoX251bV0uc3RhdGUgPSBIQ19EQVRBVEdMRVJSOworICAgIF9fSEFMX0hDRF9DTEVBUl9IQ19JTlQoY2hfbnVtLCBVU0JfT1RHX0hDSU5UX05BSyk7CiAgICAgX19IQUxfSENEX0NMRUFSX0hDX0lOVChjaF9udW0sIFVTQl9PVEdfSENJTlRfRFRFUlIpOworICAgICh2b2lkKVVTQl9IQ19IYWx0KGhoY2QtPkluc3RhbmNlLCAodWludDhfdCljaF9udW0pOworICB9CisgIGVsc2UgaWYgKChVU0J4X0hDKGNoX251bSktPkhDSU5UICYgVVNCX09UR19IQ0lOVF9UWEVSUikgPT0gVVNCX09UR19IQ0lOVF9UWEVSUikKKyAgeworICAgIF9fSEFMX0hDRF9VTk1BU0tfSEFMVF9IQ19JTlQoY2hfbnVtKTsKKyAgICBoaGNkLT5oY1tjaF9udW1dLnN0YXRlID0gSENfWEFDVEVSUjsKKyAgICAodm9pZClVU0JfSENfSGFsdChoaGNkLT5JbnN0YW5jZSwgKHVpbnQ4X3QpY2hfbnVtKTsKKyAgICBfX0hBTF9IQ0RfQ0xFQVJfSENfSU5UKGNoX251bSwgVVNCX09UR19IQ0lOVF9UWEVSUik7CiAgIH0KICAgZWxzZQogICB7CkBAIC0xMjEyLDcgKzEyMzQsNyBAQAogICB7CiAgICAgaWYgKGhoY2QtPkluaXQuZG1hX2VuYWJsZSAhPSAwVSkKICAgICB7Ci0gICAgICBoaGNkLT5oY1tjaF9udW1dLnhmZXJfY291bnQgPSBoaGNkLT5oY1tjaF9udW1dLnhmZXJfbGVuIC0gXAorICAgICAgaGhjZC0+aGNbY2hfbnVtXS54ZmVyX2NvdW50ID0gaGhjZC0+aGNbY2hfbnVtXS5YZmVyU2l6ZSAtIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVU0J4X0hDKGNoX251bSktPkhDVFNJWiAmIFVTQl9PVEdfSENUU0laX1hGUlNJWik7CiAgICAgfQogCkBAIC0xMjUzLDggKzEyNzUsMTggQEAKICAgICB7CiAgICAgICAvKiAuLi4gKi8KICAgICB9Ci0gICAgaGhjZC0+aGNbY2hfbnVtXS50b2dnbGVfaW4gXj0gMVU7CiAKKyAgICBpZiAoaGhjZC0+SW5pdC5kbWFfZW5hYmxlID09IDFVKQorICAgIHsKKyAgICAgIGlmICgoKGhoY2QtPmhjW2NoX251bV0uWGZlclNpemUgLyBoaGNkLT5oY1tjaF9udW1dLm1heF9wYWNrZXQpICYgMVUpICE9IDBVKQorICAgICAgeworICAgICAgICBoaGNkLT5oY1tjaF9udW1dLnRvZ2dsZV9pbiBePSAxVTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIGhoY2QtPmhjW2NoX251bV0udG9nZ2xlX2luIF49IDFVOworICAgIH0KICAgfQogICBlbHNlIGlmICgoVVNCeF9IQyhjaF9udW0pLT5IQ0lOVCAmIFVTQl9PVEdfSENJTlRfQ0hIKSA9PSBVU0JfT1RHX0hDSU5UX0NISCkKICAgewpAQCAtMTI2MiwxNyArMTI5NCwxNyBAQAogCiAgICAgaWYgKGhoY2QtPmhjW2NoX251bV0uc3RhdGUgPT0gSENfWEZSQykKICAgICB7Ci0gICAgICBoaGNkLT5oY1tjaF9udW1dLnVyYl9zdGF0ZSAgPSBVUkJfRE9ORTsKKyAgICAgIGhoY2QtPmhjW2NoX251bV0udXJiX3N0YXRlID0gVVJCX0RPTkU7CiAgICAgfQogICAgIGVsc2UgaWYgKGhoY2QtPmhjW2NoX251bV0uc3RhdGUgPT0gSENfU1RBTEwpCiAgICAgewotICAgICAgaGhjZC0+aGNbY2hfbnVtXS51cmJfc3RhdGUgID0gVVJCX1NUQUxMOworICAgICAgaGhjZC0+aGNbY2hfbnVtXS51cmJfc3RhdGUgPSBVUkJfU1RBTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKChoaGNkLT5oY1tjaF9udW1dLnN0YXRlID09IEhDX1hBQ1RFUlIpIHx8CiAgICAgICAgICAgICAgKGhoY2QtPmhjW2NoX251bV0uc3RhdGUgPT0gSENfREFUQVRHTEVSUikpCiAgICAgewogICAgICAgaGhjZC0+aGNbY2hfbnVtXS5FcnJDbnQrKzsKLSAgICAgIGlmIChoaGNkLT5oY1tjaF9udW1dLkVyckNudCA+IDNVKQorICAgICAgaWYgKGhoY2QtPmhjW2NoX251bV0uRXJyQ250ID4gMlUpCiAgICAgICB7CiAgICAgICAgIGhoY2QtPmhjW2NoX251bV0uRXJyQ250ID0gMFU7CiAgICAgICAgIGhoY2QtPmhjW2NoX251bV0udXJiX3N0YXRlID0gVVJCX0VSUk9SOwpAQCAtMTI4MCwxOCArMTMxMiwxOSBAQAogICAgICAgZWxzZQogICAgICAgewogICAgICAgICBoaGNkLT5oY1tjaF9udW1dLnVyYl9zdGF0ZSA9IFVSQl9OT1RSRUFEWTsKLSAgICAgIH0KIAotICAgICAgLyogcmUtYWN0aXZhdGUgdGhlIGNoYW5uZWwgICovCi0gICAgICB0bXByZWcgPSBVU0J4X0hDKGNoX251bSktPkhDQ0hBUjsKLSAgICAgIHRtcHJlZyAmPSB+VVNCX09UR19IQ0NIQVJfQ0hESVM7Ci0gICAgICB0bXByZWcgfD0gVVNCX09UR19IQ0NIQVJfQ0hFTkE7Ci0gICAgICBVU0J4X0hDKGNoX251bSktPkhDQ0hBUiA9IHRtcHJlZzsKKyAgICAgICAgLyogcmUtYWN0aXZhdGUgdGhlIGNoYW5uZWwgKi8KKyAgICAgICAgdG1wcmVnID0gVVNCeF9IQyhjaF9udW0pLT5IQ0NIQVI7CisgICAgICAgIHRtcHJlZyAmPSB+VVNCX09UR19IQ0NIQVJfQ0hESVM7CisgICAgICAgIHRtcHJlZyB8PSBVU0JfT1RHX0hDQ0hBUl9DSEVOQTsKKyAgICAgICAgVVNCeF9IQyhjaF9udW0pLT5IQ0NIQVIgPSB0bXByZWc7CisgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYgKGhoY2QtPmhjW2NoX251bV0uc3RhdGUgPT0gSENfTkFLKQogICAgIHsKICAgICAgIGhoY2QtPmhjW2NoX251bV0udXJiX3N0YXRlICA9IFVSQl9OT1RSRUFEWTsKLSAgICAgIC8qIHJlLWFjdGl2YXRlIHRoZSBjaGFubmVsICAqLworCisgICAgICAvKiByZS1hY3RpdmF0ZSB0aGUgY2hhbm5lbCAqLwogICAgICAgdG1wcmVnID0gVVNCeF9IQyhjaF9udW0pLT5IQ0NIQVI7CiAgICAgICB0bXByZWcgJj0gflVTQl9PVEdfSENDSEFSX0NIRElTOwogICAgICAgdG1wcmVnIHw9IFVTQl9PVEdfSENDSEFSX0NIRU5BOwpAQCAtMTMwOSwxNCArMTM0Miw2IEBACiAgICAgX19IQUxfSENEX0NMRUFSX0hDX0lOVChjaF9udW0sIFVTQl9PVEdfSENJTlRfQ0hIKTsKICAgICBIQUxfSENEX0hDX05vdGlmeVVSQkNoYW5nZV9DYWxsYmFjayhoaGNkLCAodWludDhfdCljaF9udW0sIGhoY2QtPmhjW2NoX251bV0udXJiX3N0YXRlKTsKICAgfQotICBlbHNlIGlmICgoVVNCeF9IQyhjaF9udW0pLT5IQ0lOVCAmIFVTQl9PVEdfSENJTlRfVFhFUlIpID09IFVTQl9PVEdfSENJTlRfVFhFUlIpCi0gIHsKLSAgICBfX0hBTF9IQ0RfVU5NQVNLX0hBTFRfSENfSU5UKGNoX251bSk7Ci0gICAgaGhjZC0+aGNbY2hfbnVtXS5FcnJDbnQrKzsKLSAgICBoaGNkLT5oY1tjaF9udW1dLnN0YXRlID0gSENfWEFDVEVSUjsKLSAgICAodm9pZClVU0JfSENfSGFsdChoaGNkLT5JbnN0YW5jZSwgKHVpbnQ4X3QpY2hfbnVtKTsKLSAgICBfX0hBTF9IQ0RfQ0xFQVJfSENfSU5UKGNoX251bSwgVVNCX09UR19IQ0lOVF9UWEVSUik7Ci0gIH0KICAgZWxzZSBpZiAoKFVTQnhfSEMoY2hfbnVtKS0+SENJTlQgJiBVU0JfT1RHX0hDSU5UX05BSykgPT0gVVNCX09UR19IQ0lOVF9OQUspCiAgIHsKICAgICBpZiAoaGhjZC0+aGNbY2hfbnVtXS5lcF90eXBlID09IEVQX1RZUEVfSU5UUikKQEAgLTEzNjIsNiArMTM4Nyw3IEBACiAgIHVpbnQzMl90IFVTQnhfQkFTRSA9ICh1aW50MzJfdClVU0J4OwogICB1aW50MzJfdCBjaF9udW0gPSAodWludDMyX3QpY2hudW07CiAgIHVpbnQzMl90IHRtcHJlZzsKKyAgdWludDMyX3QgbnVtX3BhY2tldHM7CiAKICAgaWYgKChVU0J4X0hDKGNoX251bSktPkhDSU5UICYgVVNCX09UR19IQ0lOVF9BSEJFUlIpID09IFVTQl9PVEdfSENJTlRfQUhCRVJSKQogICB7CkBAIC0xMzgwLDE1ICsxNDA2LDYgQEAKICAgICAgICh2b2lkKVVTQl9IQ19IYWx0KGhoY2QtPkluc3RhbmNlLCAodWludDhfdCljaF9udW0pOwogICAgIH0KICAgfQotICBlbHNlIGlmICgoVVNCeF9IQyhjaF9udW0pLT5IQ0lOVCAmIFVTQl9PVEdfSENJTlRfTllFVCkgPT0gVVNCX09UR19IQ0lOVF9OWUVUKQotICB7Ci0gICAgaGhjZC0+aGNbY2hfbnVtXS5zdGF0ZSA9IEhDX05ZRVQ7Ci0gICAgaGhjZC0+aGNbY2hfbnVtXS5kb19waW5nID0gMVU7Ci0gICAgaGhjZC0+aGNbY2hfbnVtXS5FcnJDbnQgPSAwVTsKLSAgICBfX0hBTF9IQ0RfVU5NQVNLX0hBTFRfSENfSU5UKGNoX251bSk7Ci0gICAgKHZvaWQpVVNCX0hDX0hhbHQoaGhjZC0+SW5zdGFuY2UsICh1aW50OF90KWNoX251bSk7Ci0gICAgX19IQUxfSENEX0NMRUFSX0hDX0lOVChjaF9udW0sIFVTQl9PVEdfSENJTlRfTllFVCk7Ci0gIH0KICAgZWxzZSBpZiAoKFVTQnhfSEMoY2hfbnVtKS0+SENJTlQgJiBVU0JfT1RHX0hDSU5UX0ZSTU9SKSA9PSBVU0JfT1RHX0hDSU5UX0ZSTU9SKQogICB7CiAgICAgX19IQUxfSENEX1VOTUFTS19IQUxUX0hDX0lOVChjaF9udW0pOwpAQCAtMTM5OCwxMSArMTQxNSwyNyBAQAogICBlbHNlIGlmICgoVVNCeF9IQyhjaF9udW0pLT5IQ0lOVCAmIFVTQl9PVEdfSENJTlRfWEZSQykgPT0gVVNCX09UR19IQ0lOVF9YRlJDKQogICB7CiAgICAgaGhjZC0+aGNbY2hfbnVtXS5FcnJDbnQgPSAwVTsKKworICAgIC8qIHRyYW5zYWN0aW9uIGNvbXBsZXRlZCB3aXRoIE5ZRVQgc3RhdGUsIHVwZGF0ZSBkbyBwaW5nIHN0YXRlICovCisgICAgaWYgKChVU0J4X0hDKGNoX251bSktPkhDSU5UICYgVVNCX09UR19IQ0lOVF9OWUVUKSA9PSBVU0JfT1RHX0hDSU5UX05ZRVQpCisgICAgeworICAgICAgaGhjZC0+aGNbY2hfbnVtXS5kb19waW5nID0gMVU7CisgICAgICBfX0hBTF9IQ0RfQ0xFQVJfSENfSU5UKGNoX251bSwgVVNCX09UR19IQ0lOVF9OWUVUKTsKKyAgICB9CiAgICAgX19IQUxfSENEX1VOTUFTS19IQUxUX0hDX0lOVChjaF9udW0pOwogICAgICh2b2lkKVVTQl9IQ19IYWx0KGhoY2QtPkluc3RhbmNlLCAodWludDhfdCljaF9udW0pOwogICAgIF9fSEFMX0hDRF9DTEVBUl9IQ19JTlQoY2hfbnVtLCBVU0JfT1RHX0hDSU5UX1hGUkMpOwogICAgIGhoY2QtPmhjW2NoX251bV0uc3RhdGUgPSBIQ19YRlJDOwogICB9CisgIGVsc2UgaWYgKChVU0J4X0hDKGNoX251bSktPkhDSU5UICYgVVNCX09UR19IQ0lOVF9OWUVUKSA9PSBVU0JfT1RHX0hDSU5UX05ZRVQpCisgIHsKKyAgICBoaGNkLT5oY1tjaF9udW1dLnN0YXRlID0gSENfTllFVDsKKyAgICBoaGNkLT5oY1tjaF9udW1dLmRvX3BpbmcgPSAxVTsKKyAgICBoaGNkLT5oY1tjaF9udW1dLkVyckNudCA9IDBVOworICAgIF9fSEFMX0hDRF9VTk1BU0tfSEFMVF9IQ19JTlQoY2hfbnVtKTsKKyAgICAodm9pZClVU0JfSENfSGFsdChoaGNkLT5JbnN0YW5jZSwgKHVpbnQ4X3QpY2hfbnVtKTsKKyAgICBfX0hBTF9IQ0RfQ0xFQVJfSENfSU5UKGNoX251bSwgVVNCX09UR19IQ0lOVF9OWUVUKTsKKyAgfQogICBlbHNlIGlmICgoVVNCeF9IQyhjaF9udW0pLT5IQ0lOVCAmIFVTQl9PVEdfSENJTlRfU1RBTEwpID09IFVTQl9PVEdfSENJTlRfU1RBTEwpCiAgIHsKICAgICBfX0hBTF9IQ0RfQ0xFQVJfSENfSU5UKGNoX251bSwgVVNCX09UR19IQ0lOVF9TVEFMTCk7CkBAIC0xNDE3LDcgKzE0NTAsNyBAQAogCiAgICAgaWYgKGhoY2QtPmhjW2NoX251bV0uZG9fcGluZyA9PSAwVSkKICAgICB7Ci0gICAgICBpZiAoaGhjZC0+aGNbY2hfbnVtXS5zcGVlZCA9PSBIQ0RfU1BFRURfSElHSCkKKyAgICAgIGlmIChoaGNkLT5oY1tjaF9udW1dLnNwZWVkID09IEhDRF9ERVZJQ0VfU1BFRURfSElHSCkKICAgICAgIHsKICAgICAgICAgaGhjZC0+aGNbY2hfbnVtXS5kb19waW5nID0gMVU7CiAgICAgICB9CkBAIC0xNDI5LDkgKzE0NjIsMjYgQEAKICAgfQogICBlbHNlIGlmICgoVVNCeF9IQyhjaF9udW0pLT5IQ0lOVCAmIFVTQl9PVEdfSENJTlRfVFhFUlIpID09IFVTQl9PVEdfSENJTlRfVFhFUlIpCiAgIHsKLSAgICBfX0hBTF9IQ0RfVU5NQVNLX0hBTFRfSENfSU5UKGNoX251bSk7Ci0gICAgKHZvaWQpVVNCX0hDX0hhbHQoaGhjZC0+SW5zdGFuY2UsICh1aW50OF90KWNoX251bSk7Ci0gICAgaGhjZC0+aGNbY2hfbnVtXS5zdGF0ZSA9IEhDX1hBQ1RFUlI7CisgICAgaWYgKGhoY2QtPkluaXQuZG1hX2VuYWJsZSA9PSAwVSkKKyAgICB7CisgICAgICBoaGNkLT5oY1tjaF9udW1dLnN0YXRlID0gSENfWEFDVEVSUjsKKyAgICAgIF9fSEFMX0hDRF9VTk1BU0tfSEFMVF9IQ19JTlQoY2hfbnVtKTsKKyAgICAgICh2b2lkKVVTQl9IQ19IYWx0KGhoY2QtPkluc3RhbmNlLCAodWludDhfdCljaF9udW0pOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgaGhjZC0+aGNbY2hfbnVtXS5FcnJDbnQrKzsKKyAgICAgIGlmIChoaGNkLT5oY1tjaF9udW1dLkVyckNudCA+IDJVKQorICAgICAgeworICAgICAgICBoaGNkLT5oY1tjaF9udW1dLkVyckNudCA9IDBVOworICAgICAgICBoaGNkLT5oY1tjaF9udW1dLnVyYl9zdGF0ZSA9IFVSQl9FUlJPUjsKKyAgICAgICAgSEFMX0hDRF9IQ19Ob3RpZnlVUkJDaGFuZ2VfQ2FsbGJhY2soaGhjZCwgKHVpbnQ4X3QpY2hfbnVtLCBoaGNkLT5oY1tjaF9udW1dLnVyYl9zdGF0ZSk7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIGhoY2QtPmhjW2NoX251bV0udXJiX3N0YXRlID0gVVJCX05PVFJFQURZOworICAgICAgfQorICAgIH0KICAgICBfX0hBTF9IQ0RfQ0xFQVJfSENfSU5UKGNoX251bSwgVVNCX09UR19IQ0lOVF9UWEVSUik7CiAgIH0KICAgZWxzZSBpZiAoKFVTQnhfSEMoY2hfbnVtKS0+SENJTlQgJiBVU0JfT1RHX0hDSU5UX0RURVJSKSA9PSBVU0JfT1RHX0hDSU5UX0RURVJSKQpAQCAtMTQ1Miw3ICsxNTAyLDIyIEBACiAgICAgICBpZiAoKGhoY2QtPmhjW2NoX251bV0uZXBfdHlwZSA9PSBFUF9UWVBFX0JVTEspIHx8CiAgICAgICAgICAgKGhoY2QtPmhjW2NoX251bV0uZXBfdHlwZSA9PSBFUF9UWVBFX0lOVFIpKQogICAgICAgewotICAgICAgICBoaGNkLT5oY1tjaF9udW1dLnRvZ2dsZV9vdXQgXj0gMVU7CisgICAgICAgIGlmIChoaGNkLT5Jbml0LmRtYV9lbmFibGUgPT0gMVUpCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoaGhjZC0+aGNbY2hfbnVtXS54ZmVyX2xlbiA+IDBVKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIG51bV9wYWNrZXRzID0gKGhoY2QtPmhjW2NoX251bV0ueGZlcl9sZW4gKyBoaGNkLT5oY1tjaF9udW1dLm1heF9wYWNrZXQgLSAxVSkgLyBoaGNkLT5oY1tjaF9udW1dLm1heF9wYWNrZXQ7CisKKyAgICAgICAgICAgIGlmICgobnVtX3BhY2tldHMgJiAxVSkgIT0gMFUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGhoY2QtPmhjW2NoX251bV0udG9nZ2xlX291dCBePSAxVTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgaGhjZC0+aGNbY2hfbnVtXS50b2dnbGVfb3V0IF49IDFVOworICAgICAgICB9CiAgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYgKGhoY2QtPmhjW2NoX251bV0uc3RhdGUgPT0gSENfTkFLKQpAQCAtMTQ3MSw3ICsxNTM2LDcgQEAKICAgICAgICAgICAgICAoaGhjZC0+aGNbY2hfbnVtXS5zdGF0ZSA9PSBIQ19EQVRBVEdMRVJSKSkKICAgICB7CiAgICAgICBoaGNkLT5oY1tjaF9udW1dLkVyckNudCsrOwotICAgICAgaWYgKGhoY2QtPmhjW2NoX251bV0uRXJyQ250ID4gM1UpCisgICAgICBpZiAoaGhjZC0+aGNbY2hfbnVtXS5FcnJDbnQgPiAyVSkKICAgICAgIHsKICAgICAgICAgaGhjZC0+aGNbY2hfbnVtXS5FcnJDbnQgPSAwVTsKICAgICAgICAgaGhjZC0+aGNbY2hfbnVtXS51cmJfc3RhdGUgPSBVUkJfRVJST1I7CkBAIC0xNDc5LDEzICsxNTQ0LDEzIEBACiAgICAgICBlbHNlCiAgICAgICB7CiAgICAgICAgIGhoY2QtPmhjW2NoX251bV0udXJiX3N0YXRlID0gVVJCX05PVFJFQURZOwotICAgICAgfQogCi0gICAgICAvKiByZS1hY3RpdmF0ZSB0aGUgY2hhbm5lbCAgKi8KLSAgICAgIHRtcHJlZyA9IFVTQnhfSEMoY2hfbnVtKS0+SENDSEFSOwotICAgICAgdG1wcmVnICY9IH5VU0JfT1RHX0hDQ0hBUl9DSERJUzsKLSAgICAgIHRtcHJlZyB8PSBVU0JfT1RHX0hDQ0hBUl9DSEVOQTsKLSAgICAgIFVTQnhfSEMoY2hfbnVtKS0+SENDSEFSID0gdG1wcmVnOworICAgICAgICAvKiByZS1hY3RpdmF0ZSB0aGUgY2hhbm5lbCAgKi8KKyAgICAgICAgdG1wcmVnID0gVVNCeF9IQyhjaF9udW0pLT5IQ0NIQVI7CisgICAgICAgIHRtcHJlZyAmPSB+VVNCX09UR19IQ0NIQVJfQ0hESVM7CisgICAgICAgIHRtcHJlZyB8PSBVU0JfT1RHX0hDQ0hBUl9DSEVOQTsKKyAgICAgICAgVVNCeF9IQyhjaF9udW0pLT5IQ0NIQVIgPSB0bXByZWc7CisgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0xNTEyLDE0ICsxNTc3LDE1IEBACiAgIHVpbnQzMl90IFVTQnhfQkFTRSA9ICh1aW50MzJfdClVU0J4OwogICB1aW50MzJfdCBwa3RzdHM7CiAgIHVpbnQzMl90IHBrdGNudDsKLSAgdWludDMyX3QgdGVtcDsKKyAgdWludDMyX3QgR3J4c3RzcFJlZzsKKyAgdWludDMyX3QgeGZlclNpemVQa3RDbnQ7CiAgIHVpbnQzMl90IHRtcHJlZzsKICAgdWludDMyX3QgY2hfbnVtOwogCi0gIHRlbXAgPSBoaGNkLT5JbnN0YW5jZS0+R1JYU1RTUDsKLSAgY2hfbnVtID0gdGVtcCAmIFVTQl9PVEdfR1JYU1RTUF9FUE5VTTsKLSAgcGt0c3RzID0gKHRlbXAgJiBVU0JfT1RHX0dSWFNUU1BfUEtUU1RTKSA+PiAxNzsKLSAgcGt0Y250ID0gKHRlbXAgJiBVU0JfT1RHX0dSWFNUU1BfQkNOVCkgPj4gNDsKKyAgR3J4c3RzcFJlZyA9IGhoY2QtPkluc3RhbmNlLT5HUlhTVFNQOworICBjaF9udW0gPSBHcnhzdHNwUmVnICYgVVNCX09UR19HUlhTVFNQX0VQTlVNOworICBwa3RzdHMgPSAoR3J4c3RzcFJlZyAmIFVTQl9PVEdfR1JYU1RTUF9QS1RTVFMpID4+IDE3OworICBwa3RjbnQgPSAoR3J4c3RzcFJlZyAmIFVTQl9PVEdfR1JYU1RTUF9CQ05UKSA+PiA0OwogCiAgIHN3aXRjaCAocGt0c3RzKQogICB7CkBAIC0xNTI3LDIwICsxNTkzLDMxIEBACiAgICAgICAvKiBSZWFkIHRoZSBkYXRhIGludG8gdGhlIGhvc3QgYnVmZmVyLiAqLwogICAgICAgaWYgKChwa3RjbnQgPiAwVSkgJiYgKGhoY2QtPmhjW2NoX251bV0ueGZlcl9idWZmICE9ICh2b2lkICopMCkpCiAgICAgICB7Ci0gICAgICAgICh2b2lkKVVTQl9SZWFkUGFja2V0KGhoY2QtPkluc3RhbmNlLCBoaGNkLT5oY1tjaF9udW1dLnhmZXJfYnVmZiwgKHVpbnQxNl90KXBrdGNudCk7Ci0KLSAgICAgICAgLyptYW5hZ2UgbXVsdGlwbGUgWGZlciAqLwotICAgICAgICBoaGNkLT5oY1tjaF9udW1dLnhmZXJfYnVmZiArPSBwa3RjbnQ7Ci0gICAgICAgIGhoY2QtPmhjW2NoX251bV0ueGZlcl9jb3VudCAgKz0gcGt0Y250OwotCi0gICAgICAgIGlmICgoVVNCeF9IQyhjaF9udW0pLT5IQ1RTSVogJiBVU0JfT1RHX0hDVFNJWl9QS1RDTlQpID4gMFUpCisgICAgICAgIGlmICgoaGhjZC0+aGNbY2hfbnVtXS54ZmVyX2NvdW50ICsgcGt0Y250KSA8PSBoaGNkLT5oY1tjaF9udW1dLnhmZXJfbGVuKQogICAgICAgICB7Ci0gICAgICAgICAgLyogcmUtYWN0aXZhdGUgdGhlIGNoYW5uZWwgd2hlbiBtb3JlIHBhY2tldHMgYXJlIGV4cGVjdGVkICovCi0gICAgICAgICAgdG1wcmVnID0gVVNCeF9IQyhjaF9udW0pLT5IQ0NIQVI7Ci0gICAgICAgICAgdG1wcmVnICY9IH5VU0JfT1RHX0hDQ0hBUl9DSERJUzsKLSAgICAgICAgICB0bXByZWcgfD0gVVNCX09UR19IQ0NIQVJfQ0hFTkE7Ci0gICAgICAgICAgVVNCeF9IQyhjaF9udW0pLT5IQ0NIQVIgPSB0bXByZWc7Ci0gICAgICAgICAgaGhjZC0+aGNbY2hfbnVtXS50b2dnbGVfaW4gXj0gMVU7CisgICAgICAgICAgKHZvaWQpVVNCX1JlYWRQYWNrZXQoaGhjZC0+SW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGhjZC0+aGNbY2hfbnVtXS54ZmVyX2J1ZmYsICh1aW50MTZfdClwa3RjbnQpOworCisgICAgICAgICAgLyogbWFuYWdlIG11bHRpcGxlIFhmZXIgKi8KKyAgICAgICAgICBoaGNkLT5oY1tjaF9udW1dLnhmZXJfYnVmZiArPSBwa3RjbnQ7CisgICAgICAgICAgaGhjZC0+aGNbY2hfbnVtXS54ZmVyX2NvdW50ICs9IHBrdGNudDsKKworICAgICAgICAgIC8qIGdldCB0cmFuc2ZlciBzaXplIHBhY2tldCBjb3VudCAqLworICAgICAgICAgIHhmZXJTaXplUGt0Q250ID0gKFVTQnhfSEMoY2hfbnVtKS0+SENUU0laICYgVVNCX09UR19IQ1RTSVpfUEtUQ05UKSA+PiAxOTsKKworICAgICAgICAgIGlmICgoaGhjZC0+aGNbY2hfbnVtXS5tYXhfcGFja2V0ID09IHBrdGNudCkgJiYgKHhmZXJTaXplUGt0Q250ID4gMFUpKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIHJlLWFjdGl2YXRlIHRoZSBjaGFubmVsIHdoZW4gbW9yZSBwYWNrZXRzIGFyZSBleHBlY3RlZCAqLworICAgICAgICAgICAgdG1wcmVnID0gVVNCeF9IQyhjaF9udW0pLT5IQ0NIQVI7CisgICAgICAgICAgICB0bXByZWcgJj0gflVTQl9PVEdfSENDSEFSX0NIRElTOworICAgICAgICAgICAgdG1wcmVnIHw9IFVTQl9PVEdfSENDSEFSX0NIRU5BOworICAgICAgICAgICAgVVNCeF9IQyhjaF9udW0pLT5IQ0NIQVIgPSB0bXByZWc7CisgICAgICAgICAgICBoaGNkLT5oY1tjaF9udW1dLnRvZ2dsZV9pbiBePSAxVTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgaGhjZC0+aGNbY2hfbnVtXS51cmJfc3RhdGUgPSBVUkJfRVJST1I7CiAgICAgICAgIH0KICAgICAgIH0KICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfaTJjLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9pMmMuYwppbmRleCA0YjNjZWU0Li42NGU5YmE5IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9pMmMuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9pMmMuYwpAQCAtOTMsNyArOTMsNyBAQAogICAgIFsuLl0KICAgICAgICgrKSBBIHNwZWNpZmljIG9wdGlvbiBmaWVsZCBtYW5hZ2UgdGhlIGRpZmZlcmVudCBzdGVwcyBvZiBhIHNlcXVlbnRpYWwgdHJhbnNmZXIKICAgICAgICgrKSBPcHRpb24gZmllbGQgdmFsdWVzIGFyZSBkZWZpbmVkIHRocm91Z2ggQHJlZiBJMkNfWEZFUk9QVElPTlMgYW5kIGFyZSBsaXN0ZWQgYmVsb3c6Ci0gICAgICAoKyspIEkyQ19GSVJTVF9BTkRfTEFTVF9GUkFNRTogTm8gc2VxdWVudGlhbCB1c2FnZSwgZnVuY3Rpb25uYWwgaXMgc2FtZSBhcyBhc3NvY2lhdGVkIGludGVyZmFjZXMgaW4gbm8gc2VxdWVudGlhbCBtb2RlCisgICAgICAoKyspIEkyQ19GSVJTVF9BTkRfTEFTVF9GUkFNRTogTm8gc2VxdWVudGlhbCB1c2FnZSwgZnVuY3Rpb25hbCBpcyBzYW1lIGFzIGFzc29jaWF0ZWQgaW50ZXJmYWNlcyBpbiBubyBzZXF1ZW50aWFsIG1vZGUKICAgICAgICgrKykgSTJDX0ZJUlNUX0ZSQU1FOiBTZXF1ZW50aWFsIHVzYWdlLCB0aGlzIG9wdGlvbiBhbGxvdyB0byBtYW5hZ2UgYSBzZXF1ZW5jZSB3aXRoIHN0YXJ0IGNvbmRpdGlvbiwgYWRkcmVzcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBkYXRhIHRvIHRyYW5zZmVyIHdpdGhvdXQgYSBmaW5hbCBzdG9wIGNvbmRpdGlvbgogICAgICAgKCsrKSBJMkNfRklSU1RfQU5EX05FWFRfRlJBTUU6IFNlcXVlbnRpYWwgdXNhZ2UgKE1hc3RlciBvbmx5KSwgdGhpcyBvcHRpb24gYWxsb3cgdG8gbWFuYWdlIGEgc2VxdWVuY2Ugd2l0aCBzdGFydCBjb25kaXRpb24sIGFkZHJlc3MKQEAgLTExMiw3ICsxMTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgSEFMX0kyQ19NYXN0ZXJfU2VxX1JlY2VpdmVfSVQob3B0aW9uIEkyQ19GSVJTVF9BTkRfTkVYVF9GUkFNRSB0aGVuIEkyQ19ORVhUX0ZSQU1FKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgSEFMX0kyQ19NYXN0ZXJfU2VxX1RyYW5zbWl0X0RNQShvcHRpb24gSTJDX0ZJUlNUX0FORF9ORVhUX0ZSQU1FIHRoZW4gSTJDX05FWFRfRlJBTUUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBIQUxfSTJDX01hc3Rlcl9TZXFfUmVjZWl2ZV9ETUEob3B0aW9uIEkyQ19GSVJTVF9BTkRfTkVYVF9GUkFNRSB0aGVuIEkyQ19ORVhUX0ZSQU1FKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGVuIHVzYWdlIG9mIHRoaXMgb3B0aW9uIEkyQ19MQVNUX0ZSQU1FX05PX1NUT1AgYXQgdGhlIGxhc3QgVHJhbnNtaXQgb3IgUmVjZWl2ZSBzZXF1ZW5jZSBwZXJtaXQgdG8gY2FsbCB0aGUgb3Bvc2l0ZSBpbnRlcmZhY2UgUmVjZWl2ZSBvciBUcmFuc21pdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZW4gdXNhZ2Ugb2YgdGhpcyBvcHRpb24gSTJDX0xBU1RfRlJBTUVfTk9fU1RPUCBhdCB0aGUgbGFzdCBUcmFuc21pdCBvciBSZWNlaXZlIHNlcXVlbmNlIHBlcm1pdCB0byBjYWxsIHRoZSBvcHBvc2l0ZSBpbnRlcmZhY2UgUmVjZWl2ZSBvciBUcmFuc21pdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBzdG9wcGluZyB0aGUgY29tbXVuaWNhdGlvbiBhbmQgc28gZ2VuZXJhdGUgYSByZXN0YXJ0IGNvbmRpdGlvbi4KICAgICAgICgrKykgSTJDX09USEVSX0ZSQU1FOiBTZXF1ZW50aWFsIHVzYWdlIChNYXN0ZXIgb25seSksIHRoaXMgb3B0aW9uIGFsbG93IHRvIG1hbmFnZSBhIHJlc3RhcnQgY29uZGl0aW9uIGFmdGVyIGVhY2ggY2FsbCBvZiB0aGUgc2FtZSBtYXN0ZXIgc2VxdWVudGlhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS4KQEAgLTEyMiw3ICsxMjIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgSEFMX0kyQ19NYXN0ZXJfU2VxX1JlY2VpdmVfRE1BKG9wdGlvbiBJMkNfRklSU1RfRlJBTUUgdGhlbiBJMkNfT1RIRVJfRlJBTUUpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZW4gdXNhZ2Ugb2YgdGhpcyBvcHRpb24gSTJDX09USEVSX0FORF9MQVNUX0ZSQU1FIGF0IHRoZSBsYXN0IGZyYW1lIHRvIGhlbHAgYXV0b21hdGljIGdlbmVyYXRpb24gb2YgU1RPUCBjb25kaXRpb24uCiAKLSAgICAgICgrKSBEaWZmZXJlbnRzIHNlcXVlbnRpYWwgSTJDIGludGVyZmFjZXMgYXJlIGxpc3RlZCBiZWxvdzoKKyAgICAgICgrKSBEaWZmZXJlbnQgc2VxdWVudGlhbCBJMkMgaW50ZXJmYWNlcyBhcmUgbGlzdGVkIGJlbG93OgogICAgICAgKCsrKSBTZXF1ZW50aWFsIHRyYW5zbWl0IGluIG1hc3RlciBJMkMgbW9kZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBub24tYmxvY2tpbmcgbW9kZSB1c2luZyBAcmVmIEhBTF9JMkNfTWFzdGVyX1NlcV9UcmFuc21pdF9JVCgpCiAgICAgICAgICAgICBvciB1c2luZyBAcmVmIEhBTF9JMkNfTWFzdGVyX1NlcV9UcmFuc21pdF9ETUEoKQogICAgICAgKCsrKykgQXQgdHJhbnNtaXNzaW9uIGVuZCBvZiBjdXJyZW50IGZyYW1lIHRyYW5zZmVyLCBAcmVmIEhBTF9JMkNfTWFzdGVyVHhDcGx0Q2FsbGJhY2soKSBpcyBleGVjdXRlZCBhbmQgdXNlciBjYW4KQEAgLTM1MSwxMyArMzUxLDEzIEBACiAKIAogLyogUHJpdmF0ZSBkZWZpbmUgdG8gY2VudHJhbGl6ZSB0aGUgZW5hYmxlL2Rpc2FibGUgb2YgSW50ZXJydXB0cyAqLwotI2RlZmluZSBJMkNfWEZFUl9UWF9JVCAgICAgICAgICAoMHgwMDAwMDAwMVUpCi0jZGVmaW5lIEkyQ19YRkVSX1JYX0lUICAgICAgICAgICgweDAwMDAwMDAyVSkKLSNkZWZpbmUgSTJDX1hGRVJfTElTVEVOX0lUICAgICAgKDB4MDAwMDAwMDRVKQorI2RlZmluZSBJMkNfWEZFUl9UWF9JVCAgICAgICAgICAodWludDE2X3QpKDB4MDAwMVUpICAgLyogQml0IGZpZWxkIGNhbiBiZSBjb21iaW5hdGVkIHdpdGggQHJlZiBJMkNfWEZFUl9MSVNURU5fSVQgKi8KKyNkZWZpbmUgSTJDX1hGRVJfUlhfSVQgICAgICAgICAgKHVpbnQxNl90KSgweDAwMDJVKSAgIC8qIEJpdCBmaWVsZCBjYW4gYmUgY29tYmluYXRlZCB3aXRoIEByZWYgSTJDX1hGRVJfTElTVEVOX0lUICovCisjZGVmaW5lIEkyQ19YRkVSX0xJU1RFTl9JVCAgICAgICh1aW50MTZfdCkoMHg4MDAwVSkgICAvKiBCaXQgZmllbGQgY2FuIGJlIGNvbWJpbmF0ZWQgd2l0aCBAcmVmIEkyQ19YRkVSX1RYX0lUIGFuZCBAcmVmIEkyQ19YRkVSX1JYX0lUICovCiAKLSNkZWZpbmUgSTJDX1hGRVJfRVJST1JfSVQgICAgICAgKDB4MDAwMDAwMTFVKQotI2RlZmluZSBJMkNfWEZFUl9DUExUX0lUICAgICAgICAoMHgwMDAwMDAxMlUpCi0jZGVmaW5lIEkyQ19YRkVSX1JFTE9BRF9JVCAgICAgICgweDAwMDAwMDEyVSkKKyNkZWZpbmUgSTJDX1hGRVJfRVJST1JfSVQgICAgICAgKHVpbnQxNl90KSgweDAwMTBVKSAgIC8qIEJpdCBkZWZpbml0aW9uIHRvIG1hbmFnZSBhZGRpdGlvbiBvZiBnbG9iYWwgRXJyb3IgYW5kIE5BQ0sgdHJlYXRtZW50ICovCisjZGVmaW5lIEkyQ19YRkVSX0NQTFRfSVQgICAgICAgICh1aW50MTZfdCkoMHgwMDIwVSkgICAvKiBCaXQgZGVmaW5pdGlvbiB0byBtYW5hZ2Ugb25seSBTVE9QIGV2ZW5lbWVudCAqLworI2RlZmluZSBJMkNfWEZFUl9SRUxPQURfSVQgICAgICAodWludDE2X3QpKDB4MDA0MFUpICAgLyogQml0IGRlZmluaXRpb24gdG8gbWFuYWdlIG9ubHkgUmVsb2FkIG9mIE5CWVRFICovCiAKIC8qIFByaXZhdGUgZGVmaW5lIFNlcXVlbnRpYWwgVHJhbnNmZXIgT3B0aW9ucyBkZWZhdWx0L3Jlc2V0IHZhbHVlICovCiAjZGVmaW5lIEkyQ19OT19PUFRJT05fRlJBTUUgICAgICgweEZGRkYwMDAwVSkKQEAgLTM5MCw4ICszOTAsMTAgQEAKIHN0YXRpYyB2b2lkIEkyQ19JVEVycm9yKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBFcnJvckNvZGUpOwogCiAvKiBQcml2YXRlIGZ1bmN0aW9ucyB0byBoYW5kbGUgSVQgdHJhbnNmZXIgKi8KLXN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfUmVxdWVzdE1lbW9yeVdyaXRlKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50MzJfdCBUaW1lb3V0LCB1aW50MzJfdCBUaWNrc3RhcnQpOwotc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19SZXF1ZXN0TWVtb3J5UmVhZChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDE2X3QgTWVtQWRkcmVzcywgdWludDE2X3QgTWVtQWRkU2l6ZSwgdWludDMyX3QgVGltZW91dCwgdWludDMyX3QgVGlja3N0YXJ0KTsKK3N0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfUmVxdWVzdE1lbW9yeVdyaXRlKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgTWVtQWRkU2l6ZSwgdWludDMyX3QgVGltZW91dCwgdWludDMyX3QgVGlja3N0YXJ0KTsKK3N0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfUmVxdWVzdE1lbW9yeVJlYWQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQxNl90IE1lbUFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IE1lbUFkZFNpemUsIHVpbnQzMl90IFRpbWVvdXQsIHVpbnQzMl90IFRpY2tzdGFydCk7CiAKIC8qIFByaXZhdGUgZnVuY3Rpb25zIGZvciBJMkMgdHJhbnNmZXIgSVJRIGhhbmRsZXIgKi8KIHN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfTWFzdGVyX0lTUl9JVChzdHJ1Y3QgX19JMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDMyX3QgSVRGbGFncywgdWludDMyX3QgSVRTb3VyY2VzKTsKQEAgLTQwMCw3ICs0MDIsOCBAQAogc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19TbGF2ZV9JU1JfRE1BKHN0cnVjdCBfX0kyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBJVEZsYWdzLCB1aW50MzJfdCBJVFNvdXJjZXMpOwogCiAvKiBQcml2YXRlIGZ1bmN0aW9ucyB0byBoYW5kbGUgZmxhZ3MgZHVyaW5nIHBvbGxpbmcgdHJhbnNmZXIgKi8KLXN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfV2FpdE9uRmxhZ1VudGlsVGltZW91dChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDMyX3QgRmxhZywgRmxhZ1N0YXR1cyBTdGF0dXMsIHVpbnQzMl90IFRpbWVvdXQsIHVpbnQzMl90IFRpY2tzdGFydCk7CitzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1dhaXRPbkZsYWdVbnRpbFRpbWVvdXQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IEZsYWcsIEZsYWdTdGF0dXMgU3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpbWVvdXQsIHVpbnQzMl90IFRpY2tzdGFydCk7CiBzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1dhaXRPblRYSVNGbGFnVW50aWxUaW1lb3V0KEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBUaW1lb3V0LCB1aW50MzJfdCBUaWNrc3RhcnQpOwogc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19XYWl0T25SWE5FRmxhZ1VudGlsVGltZW91dChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDMyX3QgVGltZW91dCwgdWludDMyX3QgVGlja3N0YXJ0KTsKIHN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBJMkNfV2FpdE9uU1RPUEZsYWdVbnRpbFRpbWVvdXQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IFRpbWVvdXQsIHVpbnQzMl90IFRpY2tzdGFydCk7CkBAIC00MTAsMTEgKzQxMywxNSBAQAogc3RhdGljIHZvaWQgSTJDX0VuYWJsZV9JUlEoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IEludGVycnVwdFJlcXVlc3QpOwogc3RhdGljIHZvaWQgSTJDX0Rpc2FibGVfSVJRKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBJbnRlcnJ1cHRSZXF1ZXN0KTsKIAorLyogUHJpdmF0ZSBmdW5jdGlvbiB0byB0cmVhdCBkaWZmZXJlbnQgZXJyb3IgY2FsbGJhY2sgKi8KK3N0YXRpYyB2b2lkIEkyQ19UcmVhdEVycm9yQ2FsbGJhY2soSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMpOworCiAvKiBQcml2YXRlIGZ1bmN0aW9uIHRvIGZsdXNoIFRYRFIgcmVnaXN0ZXIgKi8KIHN0YXRpYyB2b2lkIEkyQ19GbHVzaF9UWERSKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjKTsKIAogLyogUHJpdmF0ZSBmdW5jdGlvbiB0byBoYW5kbGUgIHN0YXJ0LCByZXN0YXJ0IG9yIHN0b3AgYSB0cmFuc2ZlciAqLwotc3RhdGljIHZvaWQgSTJDX1RyYW5zZmVyQ29uZmlnKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90IFNpemUsIHVpbnQzMl90IE1vZGUsIHVpbnQzMl90IFJlcXVlc3QpOworc3RhdGljIHZvaWQgSTJDX1RyYW5zZmVyQ29uZmlnKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90IFNpemUsIHVpbnQzMl90IE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgUmVxdWVzdCk7CiAKIC8qIFByaXZhdGUgZnVuY3Rpb24gdG8gQ29udmVydCBTcGVjaWZpYyBvcHRpb25zICovCiBzdGF0aWMgdm9pZCBJMkNfQ29udmVydE90aGVyWGZlck9wdGlvbnMoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMpOwpAQCAtNDI5LDggKzQzNiw4IEBACiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgSTJDX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucwotICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMKLSAqCisgICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMKKyAgKgogQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAjIyMjIyBJbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zICMjIyMjCkBAIC02NjksNyArNjc2LDggQEAKICAgKiBAcGFyYW0gIHBDYWxsYmFjayBwb2ludGVyIHRvIHRoZSBDYWxsYmFjayBmdW5jdGlvbgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19SZWdpc3RlckNhbGxiYWNrKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCBIQUxfSTJDX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsIHBJMkNfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfUmVnaXN0ZXJDYWxsYmFjayhJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgSEFMX0kyQ19DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBJMkNfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogCkBAIC05NzQsOCArOTgyLDggQEAKICAgKi8KIAogLyoqIEBkZWZncm91cCBJMkNfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMiBJbnB1dCBhbmQgT3V0cHV0IG9wZXJhdGlvbiBmdW5jdGlvbnMKLSAqICBAYnJpZWYgICBEYXRhIHRyYW5zZmVycyBmdW5jdGlvbnMKLSAqCisgICogIEBicmllZiAgIERhdGEgdHJhbnNmZXJzIGZ1bmN0aW9ucworICAqCiBAdmVyYmF0aW0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgSU8gb3BlcmF0aW9uIGZ1bmN0aW9ucyAjIyMjIwpAQCAtMTA1Nyw3ICsxMDY1LDggQEAKICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCBkdXJhdGlvbgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfVHJhbnNtaXQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBUaW1lb3V0KQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfVHJhbnNtaXQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgVGltZW91dCkKIHsKICAgdWludDMyX3QgdGlja3N0YXJ0OwogCkBAIC0xMTcxLDcgKzExODAsOCBAQAogICAqIEBwYXJhbSAgVGltZW91dCBUaW1lb3V0IGR1cmF0aW9uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9SZWNlaXZlKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgVGltZW91dCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWFzdGVyX1JlY2VpdmUoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KQogewogICB1aW50MzJfdCB0aWNrc3RhcnQ7CiAKQEAgLTE1NDcsNyArMTU1Nyw4IEBACiAgICogQHBhcmFtICBTaXplIEFtb3VudCBvZiBkYXRhIHRvIGJlIHNlbnQKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWFzdGVyX1RyYW5zbWl0X0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWFzdGVyX1RyYW5zbWl0X0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFNpemUpCiB7CiAgIHVpbnQzMl90IHhmZXJtb2RlOwogCkBAIC0xNzgzLDcgKzE3OTQsOCBAQAogICAqIEBwYXJhbSAgU2l6ZSBBbW91bnQgb2YgZGF0YSB0byBiZSBzZW50CiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9UcmFuc21pdF9ETUEoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfVHJhbnNtaXRfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBTaXplKQogewogICB1aW50MzJfdCB4ZmVybW9kZTsKICAgSEFMX1N0YXR1c1R5cGVEZWYgZG1heGZlcnN0YXR1czsKQEAgLTE5MjYsNyArMTkzOCw4IEBACiAgICogQHBhcmFtICBTaXplIEFtb3VudCBvZiBkYXRhIHRvIGJlIHNlbnQKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWFzdGVyX1JlY2VpdmVfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWFzdGVyX1JlY2VpdmVfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFNpemUpCiB7CiAgIHVpbnQzMl90IHhmZXJtb2RlOwogICBIQUxfU3RhdHVzVHlwZURlZiBkbWF4ZmVyc3RhdHVzOwpAQCAtMjI3Nyw3ICsyMjkwLDggQEAKICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCBkdXJhdGlvbgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NZW1fV3JpdGUoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQxNl90IE1lbUFkZHJlc3MsIHVpbnQxNl90IE1lbUFkZFNpemUsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBUaW1lb3V0KQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NZW1fV3JpdGUoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQxNl90IE1lbUFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgVGltZW91dCkKIHsKICAgdWludDMyX3QgdGlja3N0YXJ0OwogCkBAIC0yMzY5LDggKzIzODMsNyBAQAogICAgICAgICB9CiAgICAgICB9CiAKLSAgICB9Ci0gICAgd2hpbGUgKGhpMmMtPlhmZXJDb3VudCA+IDBVKTsKKyAgICB9IHdoaWxlIChoaTJjLT5YZmVyQ291bnQgPiAwVSk7CiAKICAgICAvKiBObyBuZWVkIHRvIENoZWNrIFRDIGZsYWcsIHdpdGggQVVUT0VORCBtb2RlIHRoZSBzdG9wIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkICovCiAgICAgLyogV2FpdCB1bnRpbCBTVE9QRiBmbGFnIGlzIHJlc2V0ICovCkBAIC0yNDEyLDcgKzI0MjUsOCBAQAogICAqIEBwYXJhbSAgVGltZW91dCBUaW1lb3V0IGR1cmF0aW9uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01lbV9SZWFkKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgVGltZW91dCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWVtX1JlYWQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQxNl90IE1lbUFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IE1lbUFkZFNpemUsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBUaW1lb3V0KQogewogICB1aW50MzJfdCB0aWNrc3RhcnQ7CiAKQEAgLTI1MDQsOCArMjUxOCw3IEBACiAgICAgICAgICAgSTJDX1RyYW5zZmVyQ29uZmlnKGhpMmMsIERldkFkZHJlc3MsICh1aW50OF90KWhpMmMtPlhmZXJTaXplLCBJMkNfQVVUT0VORF9NT0RFLCBJMkNfTk9fU1RBUlRTVE9QKTsKICAgICAgICAgfQogICAgICAgfQotICAgIH0KLSAgICB3aGlsZSAoaGkyYy0+WGZlckNvdW50ID4gMFUpOworICAgIH0gd2hpbGUgKGhpMmMtPlhmZXJDb3VudCA+IDBVKTsKIAogICAgIC8qIE5vIG5lZWQgdG8gQ2hlY2sgVEMgZmxhZywgd2l0aCBBVVRPRU5EIG1vZGUgdGhlIHN0b3AgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgKi8KICAgICAvKiBXYWl0IHVudGlsIFNUT1BGIGZsYWcgaXMgcmVzZXQgKi8KQEAgLTI1NDUsNyArMjU1OCw4IEBACiAgICogQHBhcmFtICBTaXplIEFtb3VudCBvZiBkYXRhIHRvIGJlIHNlbnQKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWVtX1dyaXRlX0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWVtX1dyaXRlX0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgTWVtQWRkU2l6ZSwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpCiB7CiAgIHVpbnQzMl90IHRpY2tzdGFydDsKICAgdWludDMyX3QgeGZlcm1vZGU7CkBAIC0yNjM2LDcgKzI2NTAsOCBAQAogICAqIEBwYXJhbSAgU2l6ZSBBbW91bnQgb2YgZGF0YSB0byBiZSBzZW50CiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01lbV9SZWFkX0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWVtX1JlYWRfSVQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQxNl90IE1lbUFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IE1lbUFkZFNpemUsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKQogewogICB1aW50MzJfdCB0aWNrc3RhcnQ7CiAgIHVpbnQzMl90IHhmZXJtb2RlOwpAQCAtMjcyNiw3ICsyNzQxLDggQEAKICAgKiBAcGFyYW0gIFNpemUgQW1vdW50IG9mIGRhdGEgdG8gYmUgc2VudAogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NZW1fV3JpdGVfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWVtX1dyaXRlX0RNQShJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDE2X3QgTWVtQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSkKIHsKICAgdWludDMyX3QgdGlja3N0YXJ0OwogICB1aW50MzJfdCB4ZmVybW9kZTsKQEAgLTI4NzAsNyArMjg4Niw4IEBACiAgICogQHBhcmFtICBTaXplIEFtb3VudCBvZiBkYXRhIHRvIGJlIHJlYWQKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWVtX1JlYWRfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWVtX1JlYWRfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MTZfdCBNZW1BZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgTWVtQWRkU2l6ZSwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpCiB7CiAgIHVpbnQzMl90IHRpY2tzdGFydDsKICAgdWludDMyX3QgeGZlcm1vZGU7CkBAIC0zMTIxLDggKzMxMzgsNyBAQAogCiAgICAgICAvKiBJbmNyZW1lbnQgVHJpYWxzICovCiAgICAgICBJMkNfVHJpYWxzKys7Ci0gICAgfQotICAgIHdoaWxlIChJMkNfVHJpYWxzIDwgVHJpYWxzKTsKKyAgICB9IHdoaWxlIChJMkNfVHJpYWxzIDwgVHJpYWxzKTsKIAogICAgIC8qIFVwZGF0ZSBJMkMgc3RhdGUgKi8KICAgICBoaTJjLT5TdGF0ZSA9IEhBTF9JMkNfU1RBVEVfUkVBRFk7CkBAIC0zMTUzLDcgKzMxNjksOCBAQAogICAqIEBwYXJhbSAgWGZlck9wdGlvbnMgT3B0aW9ucyBvZiBUcmFuc2ZlciwgdmFsdWUgb2YgQHJlZiBJMkNfWEZFUk9QVElPTlMKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWFzdGVyX1NlcV9UcmFuc21pdF9JVChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFhmZXJPcHRpb25zKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfU2VxX1RyYW5zbWl0X0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBYZmVyT3B0aW9ucykKIHsKICAgdWludDMyX3QgeGZlcm1vZGU7CiAgIHVpbnQzMl90IHhmZXJyZXF1ZXN0ID0gSTJDX0dFTkVSQVRFX1NUQVJUX1dSSVRFOwpAQCAtMzIwMCw3ICszMjE3LDcgQEAKICAgICAgIEkyQ19Db252ZXJ0T3RoZXJYZmVyT3B0aW9ucyhoaTJjKTsKIAogICAgICAgLyogVXBkYXRlIHhmZXJtb2RlIGFjY29yZGluZ2x5IGlmIG5vIHJlbG9hZCBpcyBuZWNlc3NhcnkgKi8KLSAgICAgIGlmIChoaTJjLT5YZmVyQ291bnQgPCBNQVhfTkJZVEVfU0laRSkKKyAgICAgIGlmIChoaTJjLT5YZmVyQ291bnQgPD0gTUFYX05CWVRFX1NJWkUpCiAgICAgICB7CiAgICAgICAgIHhmZXJtb2RlID0gaGkyYy0+WGZlck9wdGlvbnM7CiAgICAgICB9CkBAIC0zMjM3LDcgKzMyNTQsOCBAQAogICAqIEBwYXJhbSAgWGZlck9wdGlvbnMgT3B0aW9ucyBvZiBUcmFuc2ZlciwgdmFsdWUgb2YgQHJlZiBJMkNfWEZFUk9QVElPTlMKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWFzdGVyX1NlcV9UcmFuc21pdF9ETUEoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBYZmVyT3B0aW9ucykKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWFzdGVyX1NlcV9UcmFuc21pdF9ETUEoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgKnBEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBYZmVyT3B0aW9ucykKIHsKICAgdWludDMyX3QgeGZlcm1vZGU7CiAgIHVpbnQzMl90IHhmZXJyZXF1ZXN0ID0gSTJDX0dFTkVSQVRFX1NUQVJUX1dSSVRFOwpAQCAtMzI4NSw3ICszMzAzLDcgQEAKICAgICAgIEkyQ19Db252ZXJ0T3RoZXJYZmVyT3B0aW9ucyhoaTJjKTsKIAogICAgICAgLyogVXBkYXRlIHhmZXJtb2RlIGFjY29yZGluZ2x5IGlmIG5vIHJlbG9hZCBpcyBuZWNlc3NhcnkgKi8KLSAgICAgIGlmIChoaTJjLT5YZmVyQ291bnQgPCBNQVhfTkJZVEVfU0laRSkKKyAgICAgIGlmIChoaTJjLT5YZmVyQ291bnQgPD0gTUFYX05CWVRFX1NJWkUpCiAgICAgICB7CiAgICAgICAgIHhmZXJtb2RlID0gaGkyYy0+WGZlck9wdGlvbnM7CiAgICAgICB9CkBAIC0zMzk5LDcgKzM0MTcsOCBAQAogICAqIEBwYXJhbSAgWGZlck9wdGlvbnMgT3B0aW9ucyBvZiBUcmFuc2ZlciwgdmFsdWUgb2YgQHJlZiBJMkNfWEZFUk9QVElPTlMKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfTWFzdGVyX1NlcV9SZWNlaXZlX0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9TZXFfUmVjZWl2ZV9JVChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCAqcERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBYZmVyT3B0aW9ucykKIHsKICAgdWludDMyX3QgeGZlcm1vZGU7CiAgIHVpbnQzMl90IHhmZXJyZXF1ZXN0ID0gSTJDX0dFTkVSQVRFX1NUQVJUX1JFQUQ7CkBAIC0zNDQ2LDcgKzM0NjUsNyBAQAogICAgICAgSTJDX0NvbnZlcnRPdGhlclhmZXJPcHRpb25zKGhpMmMpOwogCiAgICAgICAvKiBVcGRhdGUgeGZlcm1vZGUgYWNjb3JkaW5nbHkgaWYgbm8gcmVsb2FkIGlzIG5lY2Vzc2FyeSAqLwotICAgICAgaWYgKGhpMmMtPlhmZXJDb3VudCA8IE1BWF9OQllURV9TSVpFKQorICAgICAgaWYgKGhpMmMtPlhmZXJDb3VudCA8PSBNQVhfTkJZVEVfU0laRSkKICAgICAgIHsKICAgICAgICAgeGZlcm1vZGUgPSBoaTJjLT5YZmVyT3B0aW9uczsKICAgICAgIH0KQEAgLTM0ODMsNyArMzUwMiw4IEBACiAgICogQHBhcmFtICBYZmVyT3B0aW9ucyBPcHRpb25zIG9mIFRyYW5zZmVyLCB2YWx1ZSBvZiBAcmVmIEkyQ19YRkVST1BUSU9OUwogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19NYXN0ZXJfU2VxX1JlY2VpdmVfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX01hc3Rlcl9TZXFfUmVjZWl2ZV9ETUEoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgKnBEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFhmZXJPcHRpb25zKQogewogICB1aW50MzJfdCB4ZmVybW9kZTsKICAgdWludDMyX3QgeGZlcnJlcXVlc3QgPSBJMkNfR0VORVJBVEVfU1RBUlRfUkVBRDsKQEAgLTM1MzEsNyArMzU1MSw3IEBACiAgICAgICBJMkNfQ29udmVydE90aGVyWGZlck9wdGlvbnMoaGkyYyk7CiAKICAgICAgIC8qIFVwZGF0ZSB4ZmVybW9kZSBhY2NvcmRpbmdseSBpZiBubyByZWxvYWQgaXMgbmVjZXNzYXJ5ICovCi0gICAgICBpZiAoaGkyYy0+WGZlckNvdW50IDwgTUFYX05CWVRFX1NJWkUpCisgICAgICBpZiAoaGkyYy0+WGZlckNvdW50IDw9IE1BWF9OQllURV9TSVpFKQogICAgICAgewogICAgICAgICB4ZmVybW9kZSA9IGhpMmMtPlhmZXJPcHRpb25zOwogICAgICAgfQpAQCAtMzY0Myw3ICszNjYzLDggQEAKICAgKiBAcGFyYW0gIFhmZXJPcHRpb25zIE9wdGlvbnMgb2YgVHJhbnNmZXIsIHZhbHVlIG9mIEByZWYgSTJDX1hGRVJPUFRJT05TCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX1NsYXZlX1NlcV9UcmFuc21pdF9JVChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFhmZXJPcHRpb25zKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19TbGF2ZV9TZXFfVHJhbnNtaXRfSVQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgWGZlck9wdGlvbnMpCiB7CiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19JMkNfVFJBTlNGRVJfT1BUSU9OU19SRVFVRVNUKFhmZXJPcHRpb25zKSk7CkBAIC0zNzM4LDcgKzM3NTksOCBAQAogICAqIEBwYXJhbSAgWGZlck9wdGlvbnMgT3B0aW9ucyBvZiBUcmFuc2ZlciwgdmFsdWUgb2YgQHJlZiBJMkNfWEZFUk9QVElPTlMKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfU2xhdmVfU2VxX1RyYW5zbWl0X0RNQShJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFhmZXJPcHRpb25zKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyQ19TbGF2ZV9TZXFfVHJhbnNtaXRfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBYZmVyT3B0aW9ucykKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgZG1heGZlcnN0YXR1czsKIApAQCAtMzkxNyw3ICszOTM5LDggQEAKICAgKiBAcGFyYW0gIFhmZXJPcHRpb25zIE9wdGlvbnMgb2YgVHJhbnNmZXIsIHZhbHVlIG9mIEByZWYgSTJDX1hGRVJPUFRJT05TCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX1NsYXZlX1NlcV9SZWNlaXZlX0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX1NsYXZlX1NlcV9SZWNlaXZlX0lUKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgWGZlck9wdGlvbnMpCiB7CiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19JMkNfVFJBTlNGRVJfT1BUSU9OU19SRVFVRVNUKFhmZXJPcHRpb25zKSk7CkBAIC00MDEyLDcgKzQwMzUsOCBAQAogICAqIEBwYXJhbSAgWGZlck9wdGlvbnMgT3B0aW9ucyBvZiBUcmFuc2ZlciwgdmFsdWUgb2YgQHJlZiBJMkNfWEZFUk9QVElPTlMKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMkNfU2xhdmVfU2VxX1JlY2VpdmVfRE1BKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSTJDX1NsYXZlX1NlcV9SZWNlaXZlX0RNQShJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBYZmVyT3B0aW9ucykKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgZG1heGZlcnN0YXR1czsKIApAQCAtNDI1MSw5ICs0Mjc1LDIxIEBACiAgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KICAgICBfX0hBTF9MT0NLKGhpMmMpOwogCi0gICAgLyogRGlzYWJsZSBJbnRlcnJ1cHRzICovCi0gICAgSTJDX0Rpc2FibGVfSVJRKGhpMmMsIEkyQ19YRkVSX1JYX0lUKTsKLSAgICBJMkNfRGlzYWJsZV9JUlEoaGkyYywgSTJDX1hGRVJfVFhfSVQpOworICAgIC8qIERpc2FibGUgSW50ZXJydXB0cyBhbmQgU3RvcmUgUHJldmlvdXMgc3RhdGUgKi8KKyAgICBpZiAoaGkyYy0+U3RhdGUgPT0gSEFMX0kyQ19TVEFURV9CVVNZX1RYKQorICAgIHsKKyAgICAgIEkyQ19EaXNhYmxlX0lSUShoaTJjLCBJMkNfWEZFUl9UWF9JVCk7CisgICAgICBoaTJjLT5QcmV2aW91c1N0YXRlID0gSTJDX1NUQVRFX01BU1RFUl9CVVNZX1RYOworICAgIH0KKyAgICBlbHNlIGlmIChoaTJjLT5TdGF0ZSA9PSBIQUxfSTJDX1NUQVRFX0JVU1lfUlgpCisgICAgeworICAgICAgSTJDX0Rpc2FibGVfSVJRKGhpMmMsIEkyQ19YRkVSX1JYX0lUKTsKKyAgICAgIGhpMmMtPlByZXZpb3VzU3RhdGUgPSBJMkNfU1RBVEVfTUFTVEVSX0JVU1lfUlg7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBEbyBub3RoaW5nICovCisgICAgfQogCiAgICAgLyogU2V0IFN0YXRlIGF0IEhBTF9JMkNfU1RBVEVfQUJPUlQgKi8KICAgICBoaTJjLT5TdGF0ZSA9IEhBTF9JMkNfU1RBVEVfQUJPUlQ7CkBAIC00Mjg1LDggKzQzMjEsOCBAQAogICAqLwogCiAvKiogQGRlZmdyb3VwIEkyQ19JUlFfSGFuZGxlcl9hbmRfQ2FsbGJhY2tzIElSUSBIYW5kbGVyIGFuZCBDYWxsYmFja3MKLSAqIEB7Ci0gKi8KKyAgKiBAeworICAqLwogCiAvKioKICAgKiBAYnJpZWYgIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBJMkMgZXZlbnQgaW50ZXJydXB0IHJlcXVlc3QuCkBAIC00NTI0LDggKzQ1NjAsOCBAQAogICAqLwogCiAvKiogQGRlZmdyb3VwIEkyQ19FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAzIFBlcmlwaGVyYWwgU3RhdGUsIE1vZGUgYW5kIEVycm9yIGZ1bmN0aW9ucwotICogIEBicmllZiAgIFBlcmlwaGVyYWwgU3RhdGUsIE1vZGUgYW5kIEVycm9yIGZ1bmN0aW9ucwotICoKKyAgKiAgQGJyaWVmICAgUGVyaXBoZXJhbCBTdGF0ZSwgTW9kZSBhbmQgRXJyb3IgZnVuY3Rpb25zCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICMjIyMjIFBlcmlwaGVyYWwgU3RhdGUsIE1vZGUgYW5kIEVycm9yIGZ1bmN0aW9ucyAjIyMjIwpAQCAtNDU2MiwxMSArNDU5OCwxMSBAQAogfQogCiAvKioKLSogQGJyaWVmICBSZXR1cm4gdGhlIEkyQyBlcnJvciBjb2RlLgorICAqIEBicmllZiAgUmV0dXJuIHRoZSBJMkMgZXJyb3IgY29kZS4KICAgKiBAcGFyYW0gIGhpMmMgUG9pbnRlciB0byBhIEkyQ19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIEkyQy4KLSogQHJldHZhbCBJMkMgRXJyb3IgQ29kZQotKi8KKyAgKiBAcmV0dmFsIEkyQyBFcnJvciBDb2RlCisgICovCiB1aW50MzJfdCBIQUxfSTJDX0dldEVycm9yKEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjKQogewogICByZXR1cm4gaGkyYy0+RXJyb3JDb2RlOwpAQCAtNDc1Miw3ICs0Nzg4LDggQEAKICAgICAvKiBTbyBjbGVhciBGbGFnIE5BQ0tGIG9ubHkgKi8KICAgICBpZiAoaGkyYy0+WGZlckNvdW50ID09IDBVKQogICAgIHsKLSAgICAgIGlmICgoaGkyYy0+U3RhdGUgPT0gSEFMX0kyQ19TVEFURV9MSVNURU4pICYmICh0bXBvcHRpb25zID09IEkyQ19GSVJTVF9BTkRfTEFTVF9GUkFNRSkpIC8qIFNhbWUgYWN0aW9uIG11c3QgYmUgZG9uZSBmb3IgKHRtcG9wdGlvbnMgPT0gSTJDX0xBU1RfRlJBTUUpIHdoaWNoIHJlbW92ZWQgZm9yIFdhcm5pbmdbUGExMzRdOiBsZWZ0IGFuZCByaWdodCBvcGVyYW5kcyBhcmUgaWRlbnRpY2FsICovCisgICAgICAvKiBTYW1lIGFjdGlvbiBtdXN0IGJlIGRvbmUgZm9yICh0bXBvcHRpb25zID09IEkyQ19MQVNUX0ZSQU1FKSB3aGljaCByZW1vdmVkIGZvciBXYXJuaW5nW1BhMTM0XTogbGVmdCBhbmQgcmlnaHQgb3BlcmFuZHMgYXJlIGlkZW50aWNhbCAqLworICAgICAgaWYgKChoaTJjLT5TdGF0ZSA9PSBIQUxfSTJDX1NUQVRFX0xJU1RFTikgJiYgKHRtcG9wdGlvbnMgPT0gSTJDX0ZJUlNUX0FORF9MQVNUX0ZSQU1FKSkKICAgICAgIHsKICAgICAgICAgLyogQ2FsbCBJMkMgTGlzdGVuIGNvbXBsZXRlIHByb2Nlc3MgKi8KICAgICAgICAgSTJDX0lUTGlzdGVuQ3BsdChoaTJjLCB0bXBJVEZsYWdzKTsKQEAgLTQ4MTIsNyArNDg0OSw4IEBACiAgICAgICBJMkNfSVRTbGF2ZVNlcUNwbHQoaGkyYyk7CiAgICAgfQogICB9Ci0gIGVsc2UgaWYgKChJMkNfQ0hFQ0tfRkxBRyh0bXBJVEZsYWdzLCBJMkNfRkxBR19BRERSKSAhPSBSRVNFVCkgJiYgKEkyQ19DSEVDS19JVF9TT1VSQ0UoSVRTb3VyY2VzLCBJMkNfSVRfQUREUkkpICE9IFJFU0VUKSkKKyAgZWxzZSBpZiAoKEkyQ19DSEVDS19GTEFHKHRtcElURmxhZ3MsIEkyQ19GTEFHX0FERFIpICE9IFJFU0VUKSAmJiBcCisgICAgICAgICAgIChJMkNfQ0hFQ0tfSVRfU09VUkNFKElUU291cmNlcywgSTJDX0lUX0FERFJJKSAhPSBSRVNFVCkpCiAgIHsKICAgICBJMkNfSVRBZGRyQ3BsdChoaTJjLCB0bXBJVEZsYWdzKTsKICAgfQpAQCAtNDgyMCw3ICs0ODU4LDcgQEAKICAgewogICAgIC8qIFdyaXRlIGRhdGEgdG8gVFhEUiBvbmx5IGlmIFhmZXJDb3VudCBub3QgcmVhY2ggIjAiICovCiAgICAgLyogQSBUWElTIGZsYWcgY2FuIGJlIHNldCwgZHVyaW5nIFNUT1AgdHJlYXRtZW50ICAgICAgKi8KLSAgICAvKiBDaGVjayBpZiBhbGwgRGF0YXMgaGF2ZSBhbHJlYWR5IGJlZW4gc2VudCAqLworICAgIC8qIENoZWNrIGlmIGFsbCBEYXRhIGhhdmUgYWxyZWFkeSBiZWVuIHNlbnQgKi8KICAgICAvKiBJZiBpdCBpcyB0aGUgY2FzZSwgdGhpcyBsYXN0IHdyaXRlIGluIFRYRFIgaXMgbm90IHNlbnQsIGNvcnJlc3BvbmQgdG8gYSBkdW1teSBUWElTIGV2ZW50ICovCiAgICAgaWYgKGhpMmMtPlhmZXJDb3VudCA+IDBVKQogICAgIHsKQEAgLTUwMDEsNiArNTAzOSw3IEBACiB7CiAgIHVpbnQzMl90IHRtcG9wdGlvbnMgPSBoaTJjLT5YZmVyT3B0aW9uczsKICAgdWludDMyX3QgdHJlYXRkbWFuYWNrID0gMFU7CisgIEhBTF9JMkNfU3RhdGVUeXBlRGVmIHRtcHN0YXRlOwogCiAgIC8qIFByb2Nlc3MgbG9ja2VkICovCiAgIF9fSEFMX0xPQ0soaGkyYyk7CkBAIC01MDQ3LDcgKzUwODYsOCBAQAogCiAgICAgICBpZiAodHJlYXRkbWFuYWNrID09IDFVKQogICAgICAgewotICAgICAgICBpZiAoKGhpMmMtPlN0YXRlID09IEhBTF9JMkNfU1RBVEVfTElTVEVOKSAmJiAodG1wb3B0aW9ucyA9PSBJMkNfRklSU1RfQU5EX0xBU1RfRlJBTUUpKSAvKiBTYW1lIGFjdGlvbiBtdXN0IGJlIGRvbmUgZm9yICh0bXBvcHRpb25zID09IEkyQ19MQVNUX0ZSQU1FKSB3aGljaCByZW1vdmVkIGZvciBXYXJuaW5nW1BhMTM0XTogbGVmdCBhbmQgcmlnaHQgb3BlcmFuZHMgYXJlIGlkZW50aWNhbCAqLworICAgICAgICAvKiBTYW1lIGFjdGlvbiBtdXN0IGJlIGRvbmUgZm9yICh0bXBvcHRpb25zID09IEkyQ19MQVNUX0ZSQU1FKSB3aGljaCByZW1vdmVkIGZvciBXYXJuaW5nW1BhMTM0XTogbGVmdCBhbmQgcmlnaHQgb3BlcmFuZHMgYXJlIGlkZW50aWNhbCAqLworICAgICAgICBpZiAoKGhpMmMtPlN0YXRlID09IEhBTF9JMkNfU1RBVEVfTElTVEVOKSAmJiAodG1wb3B0aW9ucyA9PSBJMkNfRklSU1RfQU5EX0xBU1RfRlJBTUUpKQogICAgICAgICB7CiAgICAgICAgICAgLyogQ2FsbCBJMkMgTGlzdGVuIGNvbXBsZXRlIHByb2Nlc3MgKi8KICAgICAgICAgICBJMkNfSVRMaXN0ZW5DcGx0KGhpMmMsIElURmxhZ3MpOwpAQCAtNTA3OSw4ICs1MTE5LDI0IEBACiAgICAgICAgIC8qIFNldCBFcnJvckNvZGUgY29ycmVzcG9uZGluZyB0byBhIE5vbi1BY2tub3dsZWRnZSAqLwogICAgICAgICBoaTJjLT5FcnJvckNvZGUgfD0gSEFMX0kyQ19FUlJPUl9BRjsKIAorICAgICAgICAvKiBTdG9yZSBjdXJyZW50IGhpMmMtPlN0YXRlLCBzb2x2ZSBNSVNSQTIwMTItUnVsZS0xMy41ICovCisgICAgICAgIHRtcHN0YXRlID0gaGkyYy0+U3RhdGU7CisKICAgICAgICAgaWYgKCh0bXBvcHRpb25zID09IEkyQ19GSVJTVF9GUkFNRSkgfHwgKHRtcG9wdGlvbnMgPT0gSTJDX05FWFRfRlJBTUUpKQogICAgICAgICB7CisgICAgICAgICAgaWYgKCh0bXBzdGF0ZSA9PSBIQUxfSTJDX1NUQVRFX0JVU1lfVFgpIHx8ICh0bXBzdGF0ZSA9PSBIQUxfSTJDX1NUQVRFX0JVU1lfVFhfTElTVEVOKSkKKyAgICAgICAgICB7CisgICAgICAgICAgICBoaTJjLT5QcmV2aW91c1N0YXRlID0gSTJDX1NUQVRFX1NMQVZFX0JVU1lfVFg7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKCh0bXBzdGF0ZSA9PSBIQUxfSTJDX1NUQVRFX0JVU1lfUlgpIHx8ICh0bXBzdGF0ZSA9PSBIQUxfSTJDX1NUQVRFX0JVU1lfUlhfTElTVEVOKSkKKyAgICAgICAgICB7CisgICAgICAgICAgICBoaTJjLT5QcmV2aW91c1N0YXRlID0gSTJDX1NUQVRFX1NMQVZFX0JVU1lfUlg7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICAvKiBEbyBub3RoaW5nICovCisgICAgICAgICAgfQorCiAgICAgICAgICAgLyogQ2FsbCB0aGUgY29ycmVzcG9uZGluZyBjYWxsYmFjayB0byBpbmZvcm0gdXBwZXIgbGF5ZXIgb2YgRW5kIG9mIFRyYW5zZmVyICovCiAgICAgICAgICAgSTJDX0lURXJyb3IoaGkyYywgaGkyYy0+RXJyb3JDb2RlKTsKICAgICAgICAgfQpAQCAtNTExOSw3ICs1MTc1LDggQEAKICAgKiBAcGFyYW0gIFRpY2tzdGFydCBUaWNrIHN0YXJ0IHZhbHVlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1zdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJDX1JlcXVlc3RNZW1vcnlXcml0ZShJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDE2X3QgTWVtQWRkcmVzcywgdWludDE2X3QgTWVtQWRkU2l6ZSwgdWludDMyX3QgVGltZW91dCwgdWludDMyX3QgVGlja3N0YXJ0KQorc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19SZXF1ZXN0TWVtb3J5V3JpdGUoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQxNl90IE1lbUFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBNZW1BZGRTaXplLCB1aW50MzJfdCBUaW1lb3V0LCB1aW50MzJfdCBUaWNrc3RhcnQpCiB7CiAgIEkyQ19UcmFuc2ZlckNvbmZpZyhoaTJjLCBEZXZBZGRyZXNzLCAodWludDhfdClNZW1BZGRTaXplLCBJMkNfUkVMT0FEX01PREUsIEkyQ19HRU5FUkFURV9TVEFSVF9XUklURSk7CiAKQEAgLTUxNzIsNyArNTIyOSw4IEBACiAgICogQHBhcmFtICBUaWNrc3RhcnQgVGljayBzdGFydCB2YWx1ZQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19SZXF1ZXN0TWVtb3J5UmVhZChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDE2X3QgTWVtQWRkcmVzcywgdWludDE2X3QgTWVtQWRkU2l6ZSwgdWludDMyX3QgVGltZW91dCwgdWludDMyX3QgVGlja3N0YXJ0KQorc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19SZXF1ZXN0TWVtb3J5UmVhZChJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDE2X3QgTWVtQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgTWVtQWRkU2l6ZSwgdWludDMyX3QgVGltZW91dCwgdWludDMyX3QgVGlja3N0YXJ0KQogewogICBJMkNfVHJhbnNmZXJDb25maWcoaGkyYywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpTWVtQWRkU2l6ZSwgSTJDX1NPRlRFTkRfTU9ERSwgSTJDX0dFTkVSQVRFX1NUQVJUX1dSSVRFKTsKIApAQCAtNTM2OSw5ICs1NDI3LDI3IEBACiAgICovCiBzdGF0aWMgdm9pZCBJMkNfSVRTbGF2ZVNlcUNwbHQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMpCiB7CisgIHVpbnQzMl90IHRtcGNyMXZhbHVlID0gUkVBRF9SRUcoaGkyYy0+SW5zdGFuY2UtPkNSMSk7CisKICAgLyogUmVzZXQgSTJDIGhhbmRsZSBtb2RlICovCiAgIGhpMmMtPk1vZGUgPSBIQUxfSTJDX01PREVfTk9ORTsKIAorICAvKiBJZiBhIERNQSBpcyBvbmdvaW5nLCBVcGRhdGUgaGFuZGxlIHNpemUgY29udGV4dCAqLworICBpZiAoSTJDX0NIRUNLX0lUX1NPVVJDRSh0bXBjcjF2YWx1ZSwgSTJDX0NSMV9UWERNQUVOKSAhPSBSRVNFVCkKKyAgeworICAgIC8qIERpc2FibGUgRE1BIFJlcXVlc3QgKi8KKyAgICBoaTJjLT5JbnN0YW5jZS0+Q1IxICY9IH5JMkNfQ1IxX1RYRE1BRU47CisgIH0KKyAgZWxzZSBpZiAoSTJDX0NIRUNLX0lUX1NPVVJDRSh0bXBjcjF2YWx1ZSwgSTJDX0NSMV9SWERNQUVOKSAhPSBSRVNFVCkKKyAgeworICAgIC8qIERpc2FibGUgRE1BIFJlcXVlc3QgKi8KKyAgICBoaTJjLT5JbnN0YW5jZS0+Q1IxICY9IH5JMkNfQ1IxX1JYRE1BRU47CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogRG8gbm90aGluZyAqLworICB9CisKICAgaWYgKGhpMmMtPlN0YXRlID09IEhBTF9JMkNfU1RBVEVfQlVTWV9UWF9MSVNURU4pCiAgIHsKICAgICAvKiBSZW1vdmUgSEFMX0kyQ19TVEFURV9TTEFWRV9CVVNZX1RYLCBrZWVwIG9ubHkgSEFMX0kyQ19TVEFURV9MSVNURU4gKi8KQEAgLTU0MjYsMTkgKzU1MDIsMzYgQEAKIHN0YXRpYyB2b2lkIEkyQ19JVE1hc3RlckNwbHQoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IElURmxhZ3MpCiB7CiAgIHVpbnQzMl90IHRtcGVycm9yOworICB1aW50MzJfdCB0bXBJVEZsYWdzID0gSVRGbGFnczsKKyAgX19JTyB1aW50MzJfdCB0bXByZWc7CiAKICAgLyogQ2xlYXIgU1RPUCBGbGFnICovCiAgIF9fSEFMX0kyQ19DTEVBUl9GTEFHKGhpMmMsIEkyQ19GTEFHX1NUT1BGKTsKIAorICAvKiBEaXNhYmxlIEludGVycnVwdHMgYW5kIFN0b3JlIFByZXZpb3VzIHN0YXRlICovCisgIGlmIChoaTJjLT5TdGF0ZSA9PSBIQUxfSTJDX1NUQVRFX0JVU1lfVFgpCisgIHsKKyAgICBJMkNfRGlzYWJsZV9JUlEoaGkyYywgSTJDX1hGRVJfVFhfSVQpOworICAgIGhpMmMtPlByZXZpb3VzU3RhdGUgPSBJMkNfU1RBVEVfTUFTVEVSX0JVU1lfVFg7CisgIH0KKyAgZWxzZSBpZiAoaGkyYy0+U3RhdGUgPT0gSEFMX0kyQ19TVEFURV9CVVNZX1JYKQorICB7CisgICAgSTJDX0Rpc2FibGVfSVJRKGhpMmMsIEkyQ19YRkVSX1JYX0lUKTsKKyAgICBoaTJjLT5QcmV2aW91c1N0YXRlID0gSTJDX1NUQVRFX01BU1RFUl9CVVNZX1JYOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIERvIG5vdGhpbmcgKi8KKyAgfQorCiAgIC8qIENsZWFyIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMiAqLwogICBJMkNfUkVTRVRfQ1IyKGhpMmMpOwogCiAgIC8qIFJlc2V0IGhhbmRsZSBwYXJhbWV0ZXJzICovCi0gIGhpMmMtPlByZXZpb3VzU3RhdGUgPSBJMkNfU1RBVEVfTk9ORTsKICAgaGkyYy0+WGZlcklTUiAgICAgICA9IE5VTEw7CiAgIGhpMmMtPlhmZXJPcHRpb25zICAgPSBJMkNfTk9fT1BUSU9OX0ZSQU1FOwogCi0gIGlmIChJMkNfQ0hFQ0tfRkxBRyhJVEZsYWdzLCBJMkNfRkxBR19BRikgIT0gUkVTRVQpCisgIGlmIChJMkNfQ0hFQ0tfRkxBRyh0bXBJVEZsYWdzLCBJMkNfRkxBR19BRikgIT0gUkVTRVQpCiAgIHsKICAgICAvKiBDbGVhciBOQUNLIEZsYWcgKi8KICAgICBfX0hBTF9JMkNfQ0xFQVJfRkxBRyhoaTJjLCBJMkNfRkxBR19BRik7CkBAIC01NDQ3LDEyICs1NTQwLDE3IEBACiAgICAgaGkyYy0+RXJyb3JDb2RlIHw9IEhBTF9JMkNfRVJST1JfQUY7CiAgIH0KIAorICAvKiBGZXRjaCBMYXN0IHJlY2VpdmUgZGF0YSBpZiBhbnkgKi8KKyAgaWYgKChoaTJjLT5TdGF0ZSA9PSBIQUxfSTJDX1NUQVRFX0FCT1JUKSAmJiAoSTJDX0NIRUNLX0ZMQUcodG1wSVRGbGFncywgSTJDX0ZMQUdfUlhORSkgIT0gUkVTRVQpKQorICB7CisgICAgLyogUmVhZCBkYXRhIGZyb20gUlhEUiAqLworICAgIHRtcHJlZyA9ICh1aW50OF90KWhpMmMtPkluc3RhbmNlLT5SWERSOworICAgIFVOVVNFRCh0bXByZWcpOworICB9CisKICAgLyogRmx1c2ggVFggcmVnaXN0ZXIgKi8KICAgSTJDX0ZsdXNoX1RYRFIoaGkyYyk7CiAKLSAgLyogRGlzYWJsZSBJbnRlcnJ1cHRzICovCi0gIEkyQ19EaXNhYmxlX0lSUShoaTJjLCBJMkNfWEZFUl9UWF9JVCB8IEkyQ19YRkVSX1JYX0lUKTsKLQogICAvKiBTdG9yZSBjdXJyZW50IHZvbGF0aWxlIGhpMmMtPkVycm9yQ29kZSwgbWlzcmEgcnVsZSAqLwogICB0bXBlcnJvciA9IGhpMmMtPkVycm9yQ29kZTsKIApAQCAtNTQ2Niw2ICs1NTY0LDcgQEAKICAgZWxzZSBpZiAoaGkyYy0+U3RhdGUgPT0gSEFMX0kyQ19TVEFURV9CVVNZX1RYKQogICB7CiAgICAgaGkyYy0+U3RhdGUgPSBIQUxfSTJDX1NUQVRFX1JFQURZOworICAgIGhpMmMtPlByZXZpb3VzU3RhdGUgPSBJMkNfU1RBVEVfTk9ORTsKIAogICAgIGlmIChoaTJjLT5Nb2RlID09IEhBTF9JMkNfTU9ERV9NRU0pCiAgICAgewpAQCAtNTUwMCw2ICs1NTk5LDcgQEAKICAgZWxzZSBpZiAoaGkyYy0+U3RhdGUgPT0gSEFMX0kyQ19TVEFURV9CVVNZX1JYKQogICB7CiAgICAgaGkyYy0+U3RhdGUgPSBIQUxfSTJDX1NUQVRFX1JFQURZOworICAgIGhpMmMtPlByZXZpb3VzU3RhdGUgPSBJMkNfU1RBVEVfTk9ORTsKIAogICAgIGlmIChoaTJjLT5Nb2RlID09IEhBTF9JMkNfTU9ERV9NRU0pCiAgICAgewpAQCAtNTU0NiwxMiArNTY0NiwyNiBAQAogewogICB1aW50MzJfdCB0bXBjcjF2YWx1ZSA9IFJFQURfUkVHKGhpMmMtPkluc3RhbmNlLT5DUjEpOwogICB1aW50MzJfdCB0bXBJVEZsYWdzID0gSVRGbGFnczsKKyAgSEFMX0kyQ19TdGF0ZVR5cGVEZWYgdG1wc3RhdGUgPSBoaTJjLT5TdGF0ZTsKIAogICAvKiBDbGVhciBTVE9QIEZsYWcgKi8KICAgX19IQUxfSTJDX0NMRUFSX0ZMQUcoaGkyYywgSTJDX0ZMQUdfU1RPUEYpOwogCi0gIC8qIERpc2FibGUgYWxsIGludGVycnVwdHMgKi8KLSAgSTJDX0Rpc2FibGVfSVJRKGhpMmMsIEkyQ19YRkVSX0xJU1RFTl9JVCB8IEkyQ19YRkVSX1RYX0lUIHwgSTJDX1hGRVJfUlhfSVQpOworICAvKiBEaXNhYmxlIEludGVycnVwdHMgYW5kIFN0b3JlIFByZXZpb3VzIHN0YXRlICovCisgIGlmICgodG1wc3RhdGUgPT0gSEFMX0kyQ19TVEFURV9CVVNZX1RYKSB8fCAodG1wc3RhdGUgPT0gSEFMX0kyQ19TVEFURV9CVVNZX1RYX0xJU1RFTikpCisgIHsKKyAgICBJMkNfRGlzYWJsZV9JUlEoaGkyYywgSTJDX1hGRVJfTElTVEVOX0lUIHwgSTJDX1hGRVJfVFhfSVQpOworICAgIGhpMmMtPlByZXZpb3VzU3RhdGUgPSBJMkNfU1RBVEVfU0xBVkVfQlVTWV9UWDsKKyAgfQorICBlbHNlIGlmICgodG1wc3RhdGUgPT0gSEFMX0kyQ19TVEFURV9CVVNZX1JYKSB8fCAodG1wc3RhdGUgPT0gSEFMX0kyQ19TVEFURV9CVVNZX1JYX0xJU1RFTikpCisgIHsKKyAgICBJMkNfRGlzYWJsZV9JUlEoaGkyYywgSTJDX1hGRVJfTElTVEVOX0lUIHwgSTJDX1hGRVJfUlhfSVQpOworICAgIGhpMmMtPlByZXZpb3VzU3RhdGUgPSBJMkNfU1RBVEVfU0xBVkVfQlVTWV9SWDsKKyAgfQorICBlbHNlCisgIHsKKyAgICAvKiBEbyBub3RoaW5nICovCisgIH0KIAogICAvKiBEaXNhYmxlIEFkZHJlc3MgQWNrbm93bGVkZ2UgKi8KICAgaGkyYy0+SW5zdGFuY2UtPkNSMiB8PSBJMkNfQ1IyX05BQ0s7CkBAIC01NTY1LDYgKzU2NzksOSBAQAogICAvKiBJZiBhIERNQSBpcyBvbmdvaW5nLCBVcGRhdGUgaGFuZGxlIHNpemUgY29udGV4dCAqLwogICBpZiAoSTJDX0NIRUNLX0lUX1NPVVJDRSh0bXBjcjF2YWx1ZSwgSTJDX0NSMV9UWERNQUVOKSAhPSBSRVNFVCkKICAgeworICAgIC8qIERpc2FibGUgRE1BIFJlcXVlc3QgKi8KKyAgICBoaTJjLT5JbnN0YW5jZS0+Q1IxICY9IH5JMkNfQ1IxX1RYRE1BRU47CisKICAgICBpZiAoaGkyYy0+aGRtYXR4ICE9IE5VTEwpCiAgICAgewogICAgICAgaGkyYy0+WGZlckNvdW50ID0gKHVpbnQxNl90KV9fSEFMX0RNQV9HRVRfQ09VTlRFUihoaTJjLT5oZG1hdHgpOwpAQCAtNTU3Miw2ICs1Njg5LDkgQEAKICAgfQogICBlbHNlIGlmIChJMkNfQ0hFQ0tfSVRfU09VUkNFKHRtcGNyMXZhbHVlLCBJMkNfQ1IxX1JYRE1BRU4pICE9IFJFU0VUKQogICB7CisgICAgLyogRGlzYWJsZSBETUEgUmVxdWVzdCAqLworICAgIGhpMmMtPkluc3RhbmNlLT5DUjEgJj0gfkkyQ19DUjFfUlhETUFFTjsKKwogICAgIGlmIChoaTJjLT5oZG1hcnggIT0gTlVMTCkKICAgICB7CiAgICAgICBoaTJjLT5YZmVyQ291bnQgPSAodWludDE2X3QpX19IQUxfRE1BX0dFVF9DT1VOVEVSKGhpMmMtPmhkbWFyeCk7CkBAIC01NjA4LDcgKzU3MjgsNiBAQAogICAgIGhpMmMtPkVycm9yQ29kZSB8PSBIQUxfSTJDX0VSUk9SX0FGOwogICB9CiAKLSAgaGkyYy0+UHJldmlvdXNTdGF0ZSA9IEkyQ19TVEFURV9OT05FOwogICBoaTJjLT5Nb2RlID0gSEFMX0kyQ19NT0RFX05PTkU7CiAgIGhpMmMtPlhmZXJJU1IgPSBOVUxMOwogCkBAIC01NjI2LDExICs1NzQ1LDEyIEBACiAgIH0KICAgZWxzZSBpZiAoaGkyYy0+WGZlck9wdGlvbnMgIT0gSTJDX05PX09QVElPTl9GUkFNRSkKICAgewotICAgIC8qIENhbGwgdGhlIFNlcXVlbnRpYWwgQ29tcGxldGUgY2FsbGJhY2ssIHRvIGluZm9ybSB1cHBlciBsYXllciBvZiB0aGUgZW5kIG9mIFRyYW5mZXIgKi8KKyAgICAvKiBDYWxsIHRoZSBTZXF1ZW50aWFsIENvbXBsZXRlIGNhbGxiYWNrLCB0byBpbmZvcm0gdXBwZXIgbGF5ZXIgb2YgdGhlIGVuZCBvZiBUcmFuc2ZlciAqLwogICAgIEkyQ19JVFNsYXZlU2VxQ3BsdChoaTJjKTsKIAogICAgIGhpMmMtPlhmZXJPcHRpb25zID0gSTJDX05PX09QVElPTl9GUkFNRTsKICAgICBoaTJjLT5TdGF0ZSA9IEhBTF9JMkNfU1RBVEVfUkVBRFk7CisgICAgaGkyYy0+UHJldmlvdXNTdGF0ZSA9IEkyQ19TVEFURV9OT05FOwogCiAgICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwogICAgIF9fSEFMX1VOTE9DSyhoaTJjKTsKQEAgLTU2NDYsNiArNTc2Niw3IEBACiAgIGVsc2UgaWYgKGhpMmMtPlN0YXRlID09IEhBTF9JMkNfU1RBVEVfQlVTWV9SWCkKICAgewogICAgIGhpMmMtPlN0YXRlID0gSEFMX0kyQ19TVEFURV9SRUFEWTsKKyAgICBoaTJjLT5QcmV2aW91c1N0YXRlID0gSTJDX1NUQVRFX05PTkU7CiAKICAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCiAgICAgX19IQUxfVU5MT0NLKGhpMmMpOwpAQCAtNTY2MCw2ICs1NzgxLDcgQEAKICAgZWxzZQogICB7CiAgICAgaGkyYy0+U3RhdGUgPSBIQUxfSTJDX1NUQVRFX1JFQURZOworICAgIGhpMmMtPlByZXZpb3VzU3RhdGUgPSBJMkNfU1RBVEVfTk9ORTsKIAogICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KICAgICBfX0hBTF9VTkxPQ0soaGkyYyk7CkBAIC01NzMzLDYgKzU4NTUsNyBAQAogc3RhdGljIHZvaWQgSTJDX0lURXJyb3IoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQzMl90IEVycm9yQ29kZSkKIHsKICAgSEFMX0kyQ19TdGF0ZVR5cGVEZWYgdG1wc3RhdGUgPSBoaTJjLT5TdGF0ZTsKKyAgdWludDMyX3QgdG1wcHJldmlvdXNzdGF0ZTsKIAogICAvKiBSZXNldCBoYW5kbGUgcGFyYW1ldGVycyAqLwogICBoaTJjLT5Nb2RlICAgICAgICAgID0gSEFMX0kyQ19NT0RFX05PTkU7CkBAIC01NzUyLDcgKzU4NzUsNiBAQAogCiAgICAgLyoga2VlcCBIQUxfSTJDX1NUQVRFX0xJU1RFTiBpZiBzZXQgKi8KICAgICBoaTJjLT5TdGF0ZSAgICAgICAgID0gSEFMX0kyQ19TVEFURV9MSVNURU47Ci0gICAgaGkyYy0+UHJldmlvdXNTdGF0ZSA9IEkyQ19TVEFURV9OT05FOwogICAgIGhpMmMtPlhmZXJJU1IgICAgICAgPSBJMkNfU2xhdmVfSVNSX0lUOwogICB9CiAgIGVsc2UKQEAgLTU3NjAsMjMgKzU4ODIsMjcgQEAKICAgICAvKiBEaXNhYmxlIGFsbCBpbnRlcnJ1cHRzICovCiAgICAgSTJDX0Rpc2FibGVfSVJRKGhpMmMsIEkyQ19YRkVSX0xJU1RFTl9JVCB8IEkyQ19YRkVSX1JYX0lUIHwgSTJDX1hGRVJfVFhfSVQpOwogCi0gICAgLyogSWYgc3RhdGUgaXMgYW4gYWJvcnQgdHJlYXRtZW50IG9uIGdvaW5kLCBkb24ndCBjaGFuZ2Ugc3RhdGUgKi8KKyAgICAvKiBJZiBzdGF0ZSBpcyBhbiBhYm9ydCB0cmVhdG1lbnQgb24gZ29pbmcsIGRvbid0IGNoYW5nZSBzdGF0ZSAqLwogICAgIC8qIFRoaXMgY2hhbmdlIHdpbGwgYmUgZG8gbGF0ZXIgKi8KICAgICBpZiAoaGkyYy0+U3RhdGUgIT0gSEFMX0kyQ19TVEFURV9BQk9SVCkKICAgICB7CiAgICAgICAvKiBTZXQgSEFMX0kyQ19TVEFURV9SRUFEWSAqLwogICAgICAgaGkyYy0+U3RhdGUgICAgICAgICA9IEhBTF9JMkNfU1RBVEVfUkVBRFk7CiAgICAgfQotICAgIGhpMmMtPlByZXZpb3VzU3RhdGUgPSBJMkNfU1RBVEVfTk9ORTsKICAgICBoaTJjLT5YZmVySVNSICAgICAgID0gTlVMTDsKICAgfQogCiAgIC8qIEFib3J0IERNQSBUWCB0cmFuc2ZlciBpZiBhbnkgKi8KLSAgaWYgKChoaTJjLT5JbnN0YW5jZS0+Q1IxICYgSTJDX0NSMV9UWERNQUVOKSA9PSBJMkNfQ1IxX1RYRE1BRU4pCisgIHRtcHByZXZpb3Vzc3RhdGUgPSBoaTJjLT5QcmV2aW91c1N0YXRlOworICBpZiAoKGhpMmMtPmhkbWF0eCAhPSBOVUxMKSAmJiAoKHRtcHByZXZpb3Vzc3RhdGUgPT0gSTJDX1NUQVRFX01BU1RFUl9CVVNZX1RYKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodG1wcHJldmlvdXNzdGF0ZSA9PSBJMkNfU1RBVEVfU0xBVkVfQlVTWV9UWCkpKQogICB7Ci0gICAgaGkyYy0+SW5zdGFuY2UtPkNSMSAmPSB+STJDX0NSMV9UWERNQUVOOworICAgIGlmICgoaGkyYy0+SW5zdGFuY2UtPkNSMSAmIEkyQ19DUjFfVFhETUFFTikgPT0gSTJDX0NSMV9UWERNQUVOKQorICAgIHsKKyAgICAgIGhpMmMtPkluc3RhbmNlLT5DUjEgJj0gfkkyQ19DUjFfVFhETUFFTjsKKyAgICB9CiAKLSAgICBpZiAoaGkyYy0+aGRtYXR4ICE9IE5VTEwpCisgICAgaWYgKEhBTF9ETUFfR2V0U3RhdGUoaGkyYy0+aGRtYXR4KSAhPSBIQUxfRE1BX1NUQVRFX1JFQURZKQogICAgIHsKICAgICAgIC8qIFNldCB0aGUgSTJDIERNQSBBYm9ydCBjYWxsYmFjayA6CiAgICAgICAgd2lsbCBsZWFkIHRvIGNhbGwgSEFMX0kyQ19FcnJvckNhbGxiYWNrKCkgYXQgZW5kIG9mIERNQSBhYm9ydCBwcm9jZWR1cmUgKi8KQEAgLTU3OTIsMTMgKzU5MTgsMjEgQEAKICAgICAgICAgaGkyYy0+aGRtYXR4LT5YZmVyQWJvcnRDYWxsYmFjayhoaTJjLT5oZG1hdHgpOwogICAgICAgfQogICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgSTJDX1RyZWF0RXJyb3JDYWxsYmFjayhoaTJjKTsKKyAgICB9CiAgIH0KICAgLyogQWJvcnQgRE1BIFJYIHRyYW5zZmVyIGlmIGFueSAqLwotICBlbHNlIGlmICgoaGkyYy0+SW5zdGFuY2UtPkNSMSAmIEkyQ19DUjFfUlhETUFFTikgPT0gSTJDX0NSMV9SWERNQUVOKQorICBlbHNlIGlmICgoaGkyYy0+aGRtYXJ4ICE9IE5VTEwpICYmICgodG1wcHJldmlvdXNzdGF0ZSA9PSBJMkNfU1RBVEVfTUFTVEVSX0JVU1lfUlgpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRtcHByZXZpb3Vzc3RhdGUgPT0gSTJDX1NUQVRFX1NMQVZFX0JVU1lfUlgpKSkKICAgewotICAgIGhpMmMtPkluc3RhbmNlLT5DUjEgJj0gfkkyQ19DUjFfUlhETUFFTjsKKyAgICBpZiAoKGhpMmMtPkluc3RhbmNlLT5DUjEgJiBJMkNfQ1IxX1JYRE1BRU4pID09IEkyQ19DUjFfUlhETUFFTikKKyAgICB7CisgICAgICBoaTJjLT5JbnN0YW5jZS0+Q1IxICY9IH5JMkNfQ1IxX1JYRE1BRU47CisgICAgfQogCi0gICAgaWYgKGhpMmMtPmhkbWFyeCAhPSBOVUxMKQorICAgIGlmIChIQUxfRE1BX0dldFN0YXRlKGhpMmMtPmhkbWFyeCkgIT0gSEFMX0RNQV9TVEFURV9SRUFEWSkKICAgICB7CiAgICAgICAvKiBTZXQgdGhlIEkyQyBETUEgQWJvcnQgY2FsbGJhY2sgOgogICAgICAgICB3aWxsIGxlYWQgdG8gY2FsbCBIQUxfSTJDX0Vycm9yQ2FsbGJhY2soKSBhdCBlbmQgb2YgRE1BIGFib3J0IHByb2NlZHVyZSAqLwpAQCAtNTgxNCwxMCArNTk0OCwyOCBAQAogICAgICAgICBoaTJjLT5oZG1hcngtPlhmZXJBYm9ydENhbGxiYWNrKGhpMmMtPmhkbWFyeCk7CiAgICAgICB9CiAgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBJMkNfVHJlYXRFcnJvckNhbGxiYWNrKGhpMmMpOworICAgIH0KICAgfQotICBlbHNlIGlmIChoaTJjLT5TdGF0ZSA9PSBIQUxfSTJDX1NUQVRFX0FCT1JUKQorICBlbHNlCisgIHsKKyAgICBJMkNfVHJlYXRFcnJvckNhbGxiYWNrKGhpMmMpOworICB9Cit9CisKKy8qKgorICAqIEBicmllZiAgSTJDIEVycm9yIGNhbGxiYWNrIHRyZWF0bWVudC4KKyAgKiBAcGFyYW0gIGhpMmMgSTJDIGhhbmRsZS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3N0YXRpYyB2b2lkIEkyQ19UcmVhdEVycm9yQ2FsbGJhY2soSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMpCit7CisgIGlmIChoaTJjLT5TdGF0ZSA9PSBIQUxfSTJDX1NUQVRFX0FCT1JUKQogICB7CiAgICAgaGkyYy0+U3RhdGUgPSBIQUxfSTJDX1NUQVRFX1JFQURZOworICAgIGhpMmMtPlByZXZpb3VzU3RhdGUgPSBJMkNfU1RBVEVfTk9ORTsKIAogICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KICAgICBfX0hBTF9VTkxPQ0soaGkyYyk7CkBAIC01ODMxLDYgKzU5ODMsOCBAQAogICB9CiAgIGVsc2UKICAgeworICAgIGhpMmMtPlByZXZpb3VzU3RhdGUgPSBJMkNfU1RBVEVfTk9ORTsKKwogICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KICAgICBfX0hBTF9VTkxPQ0soaGkyYyk7CiAKQEAgLTYwNjIsMzAgKzYyMTYsMTYgQEAKICAgSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMgPSAoSTJDX0hhbmRsZVR5cGVEZWYgKikoKChETUFfSGFuZGxlVHlwZURlZiAqKWhkbWEpLT5QYXJlbnQpOyAvKiBEZXJvZ2F0aW9uIE1JU1JBQzIwMTItUnVsZS0xMS41ICovCiAKICAgLyogUmVzZXQgQWJvcnRDcGx0Q2FsbGJhY2sgKi8KLSAgaGkyYy0+aGRtYXR4LT5YZmVyQWJvcnRDYWxsYmFjayA9IE5VTEw7Ci0gIGhpMmMtPmhkbWFyeC0+WGZlckFib3J0Q2FsbGJhY2sgPSBOVUxMOwotCi0gIC8qIENoZWNrIGlmIGNvbWUgZnJvbSBhYm9ydCBmcm9tIHVzZXIgKi8KLSAgaWYgKGhpMmMtPlN0YXRlID09IEhBTF9JMkNfU1RBVEVfQUJPUlQpCisgIGlmIChoaTJjLT5oZG1hdHggIT0gTlVMTCkKICAgewotICAgIGhpMmMtPlN0YXRlID0gSEFMX0kyQ19TVEFURV9SRUFEWTsKLQotICAgIC8qIENhbGwgdGhlIGNvcnJlc3BvbmRpbmcgY2FsbGJhY2sgdG8gaW5mb3JtIHVwcGVyIGxheWVyIG9mIEVuZCBvZiBUcmFuc2ZlciAqLwotI2lmIChVU0VfSEFMX0kyQ19SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSAgICBoaTJjLT5BYm9ydENwbHRDYWxsYmFjayhoaTJjKTsKLSNlbHNlCi0gICAgSEFMX0kyQ19BYm9ydENwbHRDYWxsYmFjayhoaTJjKTsKLSNlbmRpZiAvKiBVU0VfSEFMX0kyQ19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KKyAgICBoaTJjLT5oZG1hdHgtPlhmZXJBYm9ydENhbGxiYWNrID0gTlVMTDsKICAgfQotICBlbHNlCisgIGlmIChoaTJjLT5oZG1hcnggIT0gTlVMTCkKICAgewotICAgIC8qIENhbGwgdGhlIGNvcnJlc3BvbmRpbmcgY2FsbGJhY2sgdG8gaW5mb3JtIHVwcGVyIGxheWVyIG9mIEVuZCBvZiBUcmFuc2ZlciAqLwotI2lmIChVU0VfSEFMX0kyQ19SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSAgICBoaTJjLT5FcnJvckNhbGxiYWNrKGhpMmMpOwotI2Vsc2UKLSAgICBIQUxfSTJDX0Vycm9yQ2FsbGJhY2soaGkyYyk7Ci0jZW5kaWYgLyogVVNFX0hBTF9JMkNfUkVHSVNURVJfQ0FMTEJBQ0tTICovCisgICAgaGkyYy0+aGRtYXJ4LT5YZmVyQWJvcnRDYWxsYmFjayA9IE5VTEw7CiAgIH0KKworICBJMkNfVHJlYXRFcnJvckNhbGxiYWNrKGhpMmMpOwogfQogCiAvKioKQEAgLTYwOTgsNyArNjIzOCw4IEBACiAgICogQHBhcmFtICBUaWNrc3RhcnQgVGljayBzdGFydCB2YWx1ZQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19XYWl0T25GbGFnVW50aWxUaW1lb3V0KEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBGbGFnLCBGbGFnU3RhdHVzIFN0YXR1cywgdWludDMyX3QgVGltZW91dCwgdWludDMyX3QgVGlja3N0YXJ0KQorc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEkyQ19XYWl0T25GbGFnVW50aWxUaW1lb3V0KEkyQ19IYW5kbGVUeXBlRGVmICpoaTJjLCB1aW50MzJfdCBGbGFnLCBGbGFnU3RhdHVzIFN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0LCB1aW50MzJfdCBUaWNrc3RhcnQpCiB7CiAgIHdoaWxlIChfX0hBTF9JMkNfR0VUX0ZMQUcoaGkyYywgRmxhZykgPT0gU3RhdHVzKQogICB7CkBAIC02MzMwLDcgKzY0NzEsOCBAQAogICAqICAgICBAYXJnIEByZWYgSTJDX0dFTkVSQVRFX1NUQVJUX1dSSVRFIEdlbmVyYXRlIFJlc3RhcnQgZm9yIHdyaXRlIHJlcXVlc3QuCiAgICogQHJldHZhbCBOb25lCiAgICovCi1zdGF0aWMgdm9pZCBJMkNfVHJhbnNmZXJDb25maWcoSTJDX0hhbmRsZVR5cGVEZWYgKmhpMmMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgU2l6ZSwgdWludDMyX3QgTW9kZSwgdWludDMyX3QgUmVxdWVzdCkKK3N0YXRpYyB2b2lkIEkyQ19UcmFuc2ZlckNvbmZpZyhJMkNfSGFuZGxlVHlwZURlZiAqaGkyYywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCBTaXplLCB1aW50MzJfdCBNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFJlcXVlc3QpCiB7CiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19JMkNfQUxMX0lOU1RBTkNFKGhpMmMtPkluc3RhbmNlKSk7CkBAIC02MzM4LDggKzY0ODAsMTEgQEAKICAgYXNzZXJ0X3BhcmFtKElTX1RSQU5TRkVSX1JFUVVFU1QoUmVxdWVzdCkpOwogCiAgIC8qIHVwZGF0ZSBDUjIgcmVnaXN0ZXIgKi8KLSAgTU9ESUZZX1JFRyhoaTJjLT5JbnN0YW5jZS0+Q1IyLCAoKEkyQ19DUjJfU0FERCB8IEkyQ19DUjJfTkJZVEVTIHwgSTJDX0NSMl9SRUxPQUQgfCBJMkNfQ1IyX0FVVE9FTkQgfCAoSTJDX0NSMl9SRF9XUk4gJiAodWludDMyX3QpKFJlcXVlc3QgPj4gKDMxVSAtIEkyQ19DUjJfUkRfV1JOX1BvcykpKSB8IEkyQ19DUjJfU1RBUlQgfCBJMkNfQ1IyX1NUT1ApKSwgXAotICAgICAgICAgICAgICh1aW50MzJfdCkoKCh1aW50MzJfdClEZXZBZGRyZXNzICYgSTJDX0NSMl9TQUREKSB8ICgoKHVpbnQzMl90KVNpemUgPDwgSTJDX0NSMl9OQllURVNfUG9zKSAmIEkyQ19DUjJfTkJZVEVTKSB8ICh1aW50MzJfdClNb2RlIHwgKHVpbnQzMl90KVJlcXVlc3QpKTsKKyAgTU9ESUZZX1JFRyhoaTJjLT5JbnN0YW5jZS0+Q1IyLAorICAgICAgICAgICAgICgoSTJDX0NSMl9TQUREIHwgSTJDX0NSMl9OQllURVMgfCBJMkNfQ1IyX1JFTE9BRCB8IEkyQ19DUjJfQVVUT0VORCB8IFwKKyAgICAgICAgICAgICAgIChJMkNfQ1IyX1JEX1dSTiAmICh1aW50MzJfdCkoUmVxdWVzdCA+PiAoMzFVIC0gSTJDX0NSMl9SRF9XUk5fUG9zKSkpIHwgSTJDX0NSMl9TVEFSVCB8IEkyQ19DUjJfU1RPUCkpLCBcCisgICAgICAgICAgICAgKHVpbnQzMl90KSgoKHVpbnQzMl90KURldkFkZHJlc3MgJiBJMkNfQ1IyX1NBREQpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQzMl90KVNpemUgPDwgSTJDX0NSMl9OQllURVNfUG9zKSAmIEkyQ19DUjJfTkJZVEVTKSB8ICh1aW50MzJfdClNb2RlIHwgKHVpbnQzMl90KVJlcXVlc3QpKTsKIH0KIAogLyoqCkBAIC02MzYyLDE5ICs2NTA3LDE5IEBACiAgICAgICB0bXBpc3IgfD0gSTJDX0lUX0FERFJJIHwgSTJDX0lUX1NUT1BJIHwgSTJDX0lUX05BQ0tJIHwgSTJDX0lUX0VSUkk7CiAgICAgfQogCi0gICAgaWYgKChJbnRlcnJ1cHRSZXF1ZXN0ICYgSTJDX1hGRVJfRVJST1JfSVQpID09IEkyQ19YRkVSX0VSUk9SX0lUKQorICAgIGlmIChJbnRlcnJ1cHRSZXF1ZXN0ID09IEkyQ19YRkVSX0VSUk9SX0lUKQogICAgIHsKICAgICAgIC8qIEVuYWJsZSBFUlIgYW5kIE5BQ0sgaW50ZXJydXB0cyAqLwogICAgICAgdG1waXNyIHw9IEkyQ19JVF9FUlJJIHwgSTJDX0lUX05BQ0tJOwogICAgIH0KIAotICAgIGlmICgoSW50ZXJydXB0UmVxdWVzdCAmIEkyQ19YRkVSX0NQTFRfSVQpID09IEkyQ19YRkVSX0NQTFRfSVQpCisgICAgaWYgKEludGVycnVwdFJlcXVlc3QgPT0gSTJDX1hGRVJfQ1BMVF9JVCkKICAgICB7CiAgICAgICAvKiBFbmFibGUgU1RPUCBpbnRlcnJ1cHRzICovCi0gICAgICB0bXBpc3IgfD0gSTJDX0lUX1NUT1BJOworICAgICAgdG1waXNyIHw9IChJMkNfSVRfU1RPUEkgfCBJMkNfSVRfVENJKTsKICAgICB9CiAKLSAgICBpZiAoKEludGVycnVwdFJlcXVlc3QgJiBJMkNfWEZFUl9SRUxPQURfSVQpID09IEkyQ19YRkVSX1JFTE9BRF9JVCkKKyAgICBpZiAoSW50ZXJydXB0UmVxdWVzdCA9PSBJMkNfWEZFUl9SRUxPQURfSVQpCiAgICAgewogICAgICAgLyogRW5hYmxlIFRDIGludGVycnVwdHMgKi8KICAgICAgIHRtcGlzciB8PSBJMkNfSVRfVENJOwpAQCAtNjQwMCw3ICs2NTQ1LDcgQEAKICAgICAgIHRtcGlzciB8PSBJMkNfSVRfRVJSSSB8IEkyQ19JVF9UQ0kgfCBJMkNfSVRfU1RPUEkgfCBJMkNfSVRfTkFDS0kgfCBJMkNfSVRfUlhJOwogICAgIH0KIAotICAgIGlmICgoSW50ZXJydXB0UmVxdWVzdCAmIEkyQ19YRkVSX0NQTFRfSVQpID09IEkyQ19YRkVSX0NQTFRfSVQpCisgICAgaWYgKEludGVycnVwdFJlcXVlc3QgPT0gSTJDX1hGRVJfQ1BMVF9JVCkKICAgICB7CiAgICAgICAvKiBFbmFibGUgU1RPUCBpbnRlcnJ1cHRzICovCiAgICAgICB0bXBpc3IgfD0gSTJDX0lUX1NUT1BJOwpAQCAtNjQ1NCwxOSArNjU5OSwxOSBAQAogICAgIHRtcGlzciB8PSBJMkNfSVRfQUREUkkgfCBJMkNfSVRfU1RPUEkgfCBJMkNfSVRfTkFDS0kgfCBJMkNfSVRfRVJSSTsKICAgfQogCi0gIGlmICgoSW50ZXJydXB0UmVxdWVzdCAmIEkyQ19YRkVSX0VSUk9SX0lUKSA9PSBJMkNfWEZFUl9FUlJPUl9JVCkKKyAgaWYgKEludGVycnVwdFJlcXVlc3QgPT0gSTJDX1hGRVJfRVJST1JfSVQpCiAgIHsKICAgICAvKiBFbmFibGUgRVJSIGFuZCBOQUNLIGludGVycnVwdHMgKi8KICAgICB0bXBpc3IgfD0gSTJDX0lUX0VSUkkgfCBJMkNfSVRfTkFDS0k7CiAgIH0KIAotICBpZiAoKEludGVycnVwdFJlcXVlc3QgJiBJMkNfWEZFUl9DUExUX0lUKSA9PSBJMkNfWEZFUl9DUExUX0lUKQorICBpZiAoSW50ZXJydXB0UmVxdWVzdCA9PSBJMkNfWEZFUl9DUExUX0lUKQogICB7CiAgICAgLyogRW5hYmxlIFNUT1AgaW50ZXJydXB0cyAqLwogICAgIHRtcGlzciB8PSBJMkNfSVRfU1RPUEk7CiAgIH0KIAotICBpZiAoKEludGVycnVwdFJlcXVlc3QgJiBJMkNfWEZFUl9SRUxPQURfSVQpID09IEkyQ19YRkVSX1JFTE9BRF9JVCkKKyAgaWYgKEludGVycnVwdFJlcXVlc3QgPT0gSTJDX1hGRVJfUkVMT0FEX0lUKQogICB7CiAgICAgLyogRW5hYmxlIFRDIGludGVycnVwdHMgKi8KICAgICB0bXBpc3IgfD0gSTJDX0lUX1RDSTsKQEAgLTY0NzksNyArNjYyNCw3IEBACiB9CiAKIC8qKgotICAqIEBicmllZiAgQ29udmVydCBJMkN4IE9USEVSX3h4eCBYZmVyT3B0aW9ucyB0byBmdW5jdGlvbm5hbCBYZmVyT3B0aW9ucy4KKyAgKiBAYnJpZWYgIENvbnZlcnQgSTJDeCBPVEhFUl94eHggWGZlck9wdGlvbnMgdG8gZnVuY3Rpb25hbCBYZmVyT3B0aW9ucy4KICAgKiBAcGFyYW0gIGhpMmMgSTJDIGhhbmRsZS4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2kyY19leC5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfaTJjX2V4LmMKaW5kZXggMWExNGFhNi4uMDVjNTc3NSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfaTJjX2V4LmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfaTJjX2V4LmMKQEAgLTY5LDcgKzY5LDcgQEAKIAogLyoqIEBkZWZncm91cCBJMkNFeF9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAxIEV4dGVuZGVkIGZlYXR1cmVzIGZ1bmN0aW9ucwogICAqIEBicmllZiAgICBFeHRlbmRlZCBmZWF0dXJlcyBmdW5jdGlvbnMKLSAqCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBFeHRlbmRlZCBmZWF0dXJlcyBmdW5jdGlvbnMgIyMjIyMKZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2kycy5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfaTJzLmMKaW5kZXggYWE5NTVmYy4uYTExNmQ5MiAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfaTJzLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfaTJzLmMKQEAgLTg4LDYgKzg4LDEwIEBACiAgICAgICgrKSBQYXVzZSB0aGUgRE1BIFRyYW5zZmVyIHVzaW5nIEhBTF9JMlNfRE1BUGF1c2UoKQogICAgICAoKykgUmVzdW1lIHRoZSBETUEgVHJhbnNmZXIgdXNpbmcgSEFMX0kyU19ETUFSZXN1bWUoKQogICAgICAoKykgU3RvcCB0aGUgRE1BIFRyYW5zZmVyIHVzaW5nIEhBTF9JMlNfRE1BU3RvcCgpCisgICAgICAgICBJbiBTbGF2ZSBtb2RlLCBpZiBIQUxfSTJTX0RNQVN0b3AgaXMgdXNlZCB0byBzdG9wIHRoZSBjb21tdW5pY2F0aW9uLCBhbiBlcnJvcgorICAgICAgICAgSEFMX0kyU19FUlJPUl9CVVNZX0xJTkVfUlggaXMgcmFpc2VkIGFzIHRoZSBtYXN0ZXIgY29udGludWUgdG8gdHJhbnNtaXQgZGF0YS4KKyAgICAgICAgIEluIHRoaXMgY2FzZSBfX0hBTF9JMlNfRkxVU0hfUlhfRFIgbWFjcm8gbXVzdCBiZSB1c2VkIHRvIGZsdXNoIHRoZSByZW1haW5pbmcgZGF0YQorICAgICAgICAgaW5zaWRlIERSIHJlZ2lzdGVyIGFuZCBhdm9pZCB1c2luZyBEZUluaXQvSW5pdCBwcm9jZXNzIGZvciB0aGUgbmV4dCB0cmFuc2Zlci4KIAogICAgKioqIEkyUyBIQUwgZHJpdmVyIG1hY3JvcyBsaXN0ICoqKgogICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTk5LDYgKzEwMyw3IEBACiAgICAgICAoKykgX19IQUxfSTJTX0VOQUJMRV9JVCA6IEVuYWJsZSB0aGUgc3BlY2lmaWVkIEkyUyBpbnRlcnJ1cHRzCiAgICAgICAoKykgX19IQUxfSTJTX0RJU0FCTEVfSVQgOiBEaXNhYmxlIHRoZSBzcGVjaWZpZWQgSTJTIGludGVycnVwdHMKICAgICAgICgrKSBfX0hBTF9JMlNfR0VUX0ZMQUc6IENoZWNrIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBJMlMgZmxhZyBpcyBzZXQgb3Igbm90CisgICAgICAoKykgX19IQUxfSTJTX0ZMVVNIX1JYX0RSOiBSZWFkIERSIFJlZ2lzdGVyIHRvIEZsdXNoIFJYIERhdGEKIAogICAgIFsuLl0KICAgICAgIChAKSBZb3UgY2FuIHJlZmVyIHRvIHRoZSBJMlMgSEFMIGRyaXZlciBoZWFkZXIgZmlsZSBmb3IgbW9yZSB1c2VmdWwgbWFjcm9zCkBAIC0xMTMsMTMgKzExOCwxMyBAQAogICAgICAgICAgIFVzZSBGdW5jdGlvbnMgSEFMX0kyU19SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVnaXN0ZXIgYW4gaW50ZXJydXB0IGNhbGxiYWNrLgogCiAgICAgICAgICAgRnVuY3Rpb24gSEFMX0kyU19SZWdpc3RlckNhbGxiYWNrKCkgYWxsb3dzIHRvIHJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6Ci0gICAgICAgICAgICAoKykgVHhDcGx0Q2FsbGJhY2sgICAgICAgIDogSTJTIFR4IENvbXBsZXRlZCBjYWxsYmFjawotICAgICAgICAgICAgKCspIFJ4Q3BsdENhbGxiYWNrICAgICAgICA6IEkyUyBSeCBDb21wbGV0ZWQgY2FsbGJhY2sKLSAgICAgICAgICAgICgrKSBUeEhhbGZDcGx0Q2FsbGJhY2sgICAgOiBJMlMgVHggSGFsZiBDb21wbGV0ZWQgY2FsbGJhY2sKLSAgICAgICAgICAgICgrKSBSeEhhbGZDcGx0Q2FsbGJhY2sgICAgOiBJMlMgUnggSGFsZiBDb21wbGV0ZWQgY2FsbGJhY2sKLSAgICAgICAgICAgICgrKSBFcnJvckNhbGxiYWNrICAgICAgICAgOiBJMlMgRXJyb3IgY2FsbGJhY2sKLSAgICAgICAgICAgICgrKSBNc3BJbml0Q2FsbGJhY2sgICAgICAgOiBJMlMgTXNwIEluaXQgY2FsbGJhY2sKLSAgICAgICAgICAgICgrKSBNc3BEZUluaXRDYWxsYmFjayAgICAgOiBJMlMgTXNwIERlSW5pdCBjYWxsYmFjaworICAgICAgICAgICAgKCsrKSBUeENwbHRDYWxsYmFjayAgICAgICAgOiBJMlMgVHggQ29tcGxldGVkIGNhbGxiYWNrCisgICAgICAgICAgICAoKyspIFJ4Q3BsdENhbGxiYWNrICAgICAgICA6IEkyUyBSeCBDb21wbGV0ZWQgY2FsbGJhY2sKKyAgICAgICAgICAgICgrKykgVHhIYWxmQ3BsdENhbGxiYWNrICAgIDogSTJTIFR4IEhhbGYgQ29tcGxldGVkIGNhbGxiYWNrCisgICAgICAgICAgICAoKyspIFJ4SGFsZkNwbHRDYWxsYmFjayAgICA6IEkyUyBSeCBIYWxmIENvbXBsZXRlZCBjYWxsYmFjaworICAgICAgICAgICAgKCsrKSBFcnJvckNhbGxiYWNrICAgICAgICAgOiBJMlMgRXJyb3IgY2FsbGJhY2sKKyAgICAgICAgICAgICgrKykgTXNwSW5pdENhbGxiYWNrICAgICAgIDogSTJTIE1zcCBJbml0IGNhbGxiYWNrCisgICAgICAgICAgICAoKyspIE1zcERlSW5pdENhbGxiYWNrICAgICA6IEkyUyBNc3AgRGVJbml0IGNhbGxiYWNrCiAgICAgICAgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsIHRoZSBDYWxsYmFjayBJRAogICAgICAgICAgIGFuZCBhIHBvaW50ZXIgdG8gdGhlIHVzZXIgY2FsbGJhY2sgZnVuY3Rpb24uCiAKQEAgLTEyOSwxNCArMTM0LDE1IEBACiAgICAgICAgICAgSEFMX0kyU19VblJlZ2lzdGVyQ2FsbGJhY2sgdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLAogICAgICAgICAgIGFuZCB0aGUgQ2FsbGJhY2sgSUQuCiAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBhbGxvd3MgdG8gcmVzZXQgZm9sbG93aW5nIGNhbGxiYWNrczoKLSAgICAgICAgICAgICgrKSBUeENwbHRDYWxsYmFjayAgICAgICAgOiBJMlMgVHggQ29tcGxldGVkIGNhbGxiYWNrCi0gICAgICAgICAgICAoKykgUnhDcGx0Q2FsbGJhY2sgICAgICAgIDogSTJTIFJ4IENvbXBsZXRlZCBjYWxsYmFjawotICAgICAgICAgICAgKCspIFR4SGFsZkNwbHRDYWxsYmFjayAgICA6IEkyUyBUeCBIYWxmIENvbXBsZXRlZCBjYWxsYmFjawotICAgICAgICAgICAgKCspIFJ4SGFsZkNwbHRDYWxsYmFjayAgICA6IEkyUyBSeCBIYWxmIENvbXBsZXRlZCBjYWxsYmFjawotICAgICAgICAgICAgKCspIEVycm9yQ2FsbGJhY2sgICAgICAgICA6IEkyUyBFcnJvciBjYWxsYmFjawotICAgICAgICAgICAgKCspIE1zcEluaXRDYWxsYmFjayAgICAgICA6IEkyUyBNc3AgSW5pdCBjYWxsYmFjawotICAgICAgICAgICAgKCspIE1zcERlSW5pdENhbGxiYWNrICAgICA6IEkyUyBNc3AgRGVJbml0IGNhbGxiYWNrCisgICAgICAgICAgICAoKyspIFR4Q3BsdENhbGxiYWNrICAgICAgICA6IEkyUyBUeCBDb21wbGV0ZWQgY2FsbGJhY2sKKyAgICAgICAgICAgICgrKykgUnhDcGx0Q2FsbGJhY2sgICAgICAgIDogSTJTIFJ4IENvbXBsZXRlZCBjYWxsYmFjaworICAgICAgICAgICAgKCsrKSBUeEhhbGZDcGx0Q2FsbGJhY2sgICAgOiBJMlMgVHggSGFsZiBDb21wbGV0ZWQgY2FsbGJhY2sKKyAgICAgICAgICAgICgrKykgUnhIYWxmQ3BsdENhbGxiYWNrICAgIDogSTJTIFJ4IEhhbGYgQ29tcGxldGVkIGNhbGxiYWNrCisgICAgICAgICAgICAoKyspIEVycm9yQ2FsbGJhY2sgICAgICAgICA6IEkyUyBFcnJvciBjYWxsYmFjaworICAgICAgICAgICAgKCsrKSBNc3BJbml0Q2FsbGJhY2sgICAgICAgOiBJMlMgTXNwIEluaXQgY2FsbGJhY2sKKyAgICAgICAgICAgICgrKykgTXNwRGVJbml0Q2FsbGJhY2sgICAgIDogSTJTIE1zcCBEZUluaXQgY2FsbGJhY2sKIAorICAgICAgIFsuLl0KICAgICAgICBCeSBkZWZhdWx0LCBhZnRlciB0aGUgSEFMX0kyU19Jbml0KCkgYW5kIHdoZW4gdGhlIHN0YXRlIGlzIEhBTF9JMlNfU1RBVEVfUkVTRVQKICAgICAgICBhbGwgY2FsbGJhY2tzIGFyZSBzZXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgd2VhayBmdW5jdGlvbnM6CiAgICAgICAgZXhhbXBsZXMgSEFMX0kyU19NYXN0ZXJUeENwbHRDYWxsYmFjaygpLCBIQUxfSTJTX01hc3RlclJ4Q3BsdENhbGxiYWNrKCkuCkBAIC0xNDYsNiArMTUyLDcgQEAKICAgICAgICBJZiBNc3BJbml0IG9yIE1zcERlSW5pdCBhcmUgbm90IG51bGwsIHRoZSBIQUxfSTJTX0luaXQoKS8gSEFMX0kyU19EZUluaXQoKQogICAgICAgIGtlZXAgYW5kIHVzZSB0aGUgdXNlciBNc3BJbml0L01zcERlSW5pdCBjYWxsYmFja3MgKHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkgd2hhdGV2ZXIgdGhlIHN0YXRlLgogCisgICAgICAgWy4uXQogICAgICAgIENhbGxiYWNrcyBjYW4gYmUgcmVnaXN0ZXJlZC91bnJlZ2lzdGVyZWQgaW4gSEFMX0kyU19TVEFURV9SRUFEWSBzdGF0ZSBvbmx5LgogICAgICAgIEV4Y2VwdGlvbiBkb25lIE1zcEluaXQvTXNwRGVJbml0IGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSByZWdpc3RlcmVkL3VucmVnaXN0ZXJlZAogICAgICAgIGluIEhBTF9JMlNfU1RBVEVfUkVBRFkgb3IgSEFMX0kyU19TVEFURV9SRVNFVCBzdGF0ZSwKQEAgLTE1NCw3ICsxNjEsOCBAQAogICAgICAgIHVzaW5nIEhBTF9JMlNfUmVnaXN0ZXJDYWxsYmFjaygpIGJlZm9yZSBjYWxsaW5nIEhBTF9JMlNfRGVJbml0KCkKICAgICAgICBvciBIQUxfSTJTX0luaXQoKSBmdW5jdGlvbi4KIAotICAgICAgIFdoZW4gVGhlIGNvbXBpbGF0aW9uIGRlZmluZSBVU0VfSEFMX0kyU19SRUdJU1RFUl9DQUxMQkFDS1MgaXMgc2V0IHRvIDAgb3IKKyAgICAgICBbLi5dCisgICAgICAgV2hlbiB0aGUgY29tcGlsYXRpb24gZGVmaW5lIFVTRV9IQUxfSTJTX1JFR0lTVEVSX0NBTExCQUNLUyBpcyBzZXQgdG8gMCBvcgogICAgICAgIG5vdCBkZWZpbmVkLCB0aGUgY2FsbGJhY2sgcmVnaXN0ZXJpbmcgZmVhdHVyZSBpcyBub3QgYXZhaWxhYmxlCiAgICAgICAgYW5kIHdlYWsgKHN1cmNoYXJnZWQpIGNhbGxiYWNrcyBhcmUgdXNlZC4KIApAQCAtMTg5LDYgKzE5Nyw3IEBACiAKIC8qIFByaXZhdGUgdHlwZWRlZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBQcml2YXRlIGRlZmluZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworI2RlZmluZSBJMlNfVElNRU9VVF9GTEFHICAgICAgICAgIDEwMFUgICAgICAgICAvKiE8IFRpbWVvdXQgMTAwIG1zICAgICAgICAgICAgKi8KIC8qIFByaXZhdGUgbWFjcm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBQcml2YXRlIHZhcmlhYmxlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogUHJpdmF0ZSBmdW5jdGlvbiBwcm90b3R5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTMyOCw3ICszMzcsNyBAQAogICAgIC8qIEkyUyBzdGFuZGFyZCAqLwogICAgIGlmIChoaTJzLT5Jbml0LlN0YW5kYXJkIDw9IEkyU19TVEFOREFSRF9MU0IpCiAgICAgewotICAgICAgLyogSW4gSTJTIHN0YW5kYXJkIHBhY2tldCBsZW5naHQgaXMgbXVsdGlwbGllZCBieSAyICovCisgICAgICAvKiBJbiBJMlMgc3RhbmRhcmQgcGFja2V0IGxlbmd0aCBpcyBtdWx0aXBsaWVkIGJ5IDIgKi8KICAgICAgIHBhY2tldGxlbmd0aCA9IHBhY2tldGxlbmd0aCAqIDJVOwogICAgIH0KIApAQCAtNDEyLDcgKzQyMSw3IEBACiAgICAgLyogV3JpdGUgdG8gU1BJeCBJMlNDRkdSICovCiAgICAgU0VUX0JJVChoaTJzLT5JbnN0YW5jZS0+STJTQ0ZHUiwgU1BJX0kyU0NGR1JfQVNUUlRFTik7CiAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIFNQSV9JMlNDRkdSX0FTVFJURU4gKi8KIAogICBoaTJzLT5FcnJvckNvZGUgPSBIQUxfSTJTX0VSUk9SX05PTkU7CiAgIGhpMnMtPlN0YXRlICAgICA9IEhBTF9JMlNfU1RBVEVfUkVBRFk7CkBAIC01MDYsNyArNTE1LDggQEAKICAgKiBAcGFyYW0gIHBDYWxsYmFjayBwb2ludGVyIHRvIHRoZSBDYWxsYmFjayBmdW5jdGlvbgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0kyU19SZWdpc3RlckNhbGxiYWNrKEkyU19IYW5kbGVUeXBlRGVmICpoaTJzLCBIQUxfSTJTX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsIHBJMlNfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9JMlNfUmVnaXN0ZXJDYWxsYmFjayhJMlNfSGFuZGxlVHlwZURlZiAqaGkycywgSEFMX0kyU19DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBJMlNfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogCkBAIC03NDIsNyArNzUyLDcgQEAKICAgKiBAbm90ZSAgIFdoZW4gYSAxNi1iaXQgZGF0YSBmcmFtZSBvciBhIDE2LWJpdCBkYXRhIGZyYW1lIGV4dGVuZGVkIGlzIHNlbGVjdGVkIGR1cmluZyB0aGUgSTJTCiAgICogICAgICAgICBjb25maWd1cmF0aW9uIHBoYXNlLCB0aGUgU2l6ZSBwYXJhbWV0ZXIgbWVhbnMgdGhlIG51bWJlciBvZiAxNi1iaXQgZGF0YSBsZW5ndGgKICAgKiAgICAgICAgIGluIHRoZSB0cmFuc2FjdGlvbiBhbmQgd2hlbiBhIDI0LWJpdCBkYXRhIGZyYW1lIG9yIGEgMzItYml0IGRhdGEgZnJhbWUgaXMgc2VsZWN0ZWQKLSAgKiAgICAgICAgIHRoZSBTaXplIHBhcmFtZXRlciBtZWFucyB0aGUgbnVtYmVyIG9mIDE2LWJpdCBkYXRhIGxlbmd0aC4KKyAgKiAgICAgICAgIHRoZSBTaXplIHBhcmFtZXRlciBtZWFucyB0aGUgbnVtYmVyIG9mIDI0LWJpdCBvciAzMi1iaXQgZGF0YSBsZW5ndGguCiAgICogQHBhcmFtICBUaW1lb3V0IFRpbWVvdXQgZHVyYXRpb24KICAgKiBAbm90ZSAgIFRoZSBJMlMgaXMga2VwdCBlbmFibGVkIGF0IHRoZSBlbmQgb2YgdHJhbnNhY3Rpb24gdG8gYXZvaWQgdGhlIGNsb2NrIGRlLXN5bmNocm9uaXphdGlvbgogICAqICAgICAgICAgYmV0d2VlbiBNYXN0ZXIgYW5kIFNsYXZlKGV4YW1wbGU6IGF1ZGlvIHN0cmVhbWluZykuCkBAIC04MzEsNyArODQxLDggQEAKICAgfQogCiAgIC8qIENoZWNrIGlmIFNsYXZlIG1vZGUgaXMgc2VsZWN0ZWQgKi8KLSAgaWYgKCgodG1wcmVnX2NmZ3IgJiBTUElfSTJTQ0ZHUl9JMlNDRkcpID09IEkyU19NT0RFX1NMQVZFX1RYKSB8fCAoKHRtcHJlZ19jZmdyICYgU1BJX0kyU0NGR1JfSTJTQ0ZHKSA9PSBJMlNfTU9ERV9TTEFWRV9SWCkpCisgIGlmICgoKHRtcHJlZ19jZmdyICYgU1BJX0kyU0NGR1JfSTJTQ0ZHKSA9PSBJMlNfTU9ERV9TTEFWRV9UWCkKKyAgICAgIHx8ICgodG1wcmVnX2NmZ3IgJiBTUElfSTJTQ0ZHUl9JMlNDRkcpID09IEkyU19NT0RFX1NMQVZFX1JYKSkKICAgewogICAgIC8qIFdhaXQgdW50aWwgQnVzeSBmbGFnIGlzIHJlc2V0ICovCiAgICAgaWYgKEkyU19XYWl0RmxhZ1N0YXRlVW50aWxUaW1lb3V0KGhpMnMsIEkyU19GTEFHX0JTWSwgUkVTRVQsIFRpbWVvdXQpICE9IEhBTF9PSykKQEAgLTg1OCw3ICs4NjksNyBAQAogICAqIEBub3RlICAgV2hlbiBhIDE2LWJpdCBkYXRhIGZyYW1lIG9yIGEgMTYtYml0IGRhdGEgZnJhbWUgZXh0ZW5kZWQgaXMgc2VsZWN0ZWQgZHVyaW5nIHRoZSBJMlMKICAgKiAgICAgICAgIGNvbmZpZ3VyYXRpb24gcGhhc2UsIHRoZSBTaXplIHBhcmFtZXRlciBtZWFucyB0aGUgbnVtYmVyIG9mIDE2LWJpdCBkYXRhIGxlbmd0aAogICAqICAgICAgICAgaW4gdGhlIHRyYW5zYWN0aW9uIGFuZCB3aGVuIGEgMjQtYml0IGRhdGEgZnJhbWUgb3IgYSAzMi1iaXQgZGF0YSBmcmFtZSBpcyBzZWxlY3RlZAotICAqICAgICAgICAgdGhlIFNpemUgcGFyYW1ldGVyIG1lYW5zIHRoZSBudW1iZXIgb2YgMTYtYml0IGRhdGEgbGVuZ3RoLgorICAqICAgICAgICAgdGhlIFNpemUgcGFyYW1ldGVyIG1lYW5zIHRoZSBudW1iZXIgb2YgMjQtYml0IG9yIDMyLWJpdCBkYXRhIGxlbmd0aC4KICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCBkdXJhdGlvbgogICAqIEBub3RlICAgVGhlIEkyUyBpcyBrZXB0IGVuYWJsZWQgYXQgdGhlIGVuZCBvZiB0cmFuc2FjdGlvbiB0byBhdm9pZCB0aGUgY2xvY2sgZGUtc3luY2hyb25pemF0aW9uCiAgICogICAgICAgICBiZXR3ZWVuIE1hc3RlciBhbmQgU2xhdmUoZXhhbXBsZTogYXVkaW8gc3RyZWFtaW5nKS4KQEAgLTk1OSw3ICs5NzAsNyBAQAogICAqIEBub3RlICAgV2hlbiBhIDE2LWJpdCBkYXRhIGZyYW1lIG9yIGEgMTYtYml0IGRhdGEgZnJhbWUgZXh0ZW5kZWQgaXMgc2VsZWN0ZWQgZHVyaW5nIHRoZSBJMlMKICAgKiAgICAgICAgIGNvbmZpZ3VyYXRpb24gcGhhc2UsIHRoZSBTaXplIHBhcmFtZXRlciBtZWFucyB0aGUgbnVtYmVyIG9mIDE2LWJpdCBkYXRhIGxlbmd0aAogICAqICAgICAgICAgaW4gdGhlIHRyYW5zYWN0aW9uIGFuZCB3aGVuIGEgMjQtYml0IGRhdGEgZnJhbWUgb3IgYSAzMi1iaXQgZGF0YSBmcmFtZSBpcyBzZWxlY3RlZAotICAqICAgICAgICAgdGhlIFNpemUgcGFyYW1ldGVyIG1lYW5zIHRoZSBudW1iZXIgb2YgMTYtYml0IGRhdGEgbGVuZ3RoLgorICAqICAgICAgICAgdGhlIFNpemUgcGFyYW1ldGVyIG1lYW5zIHRoZSBudW1iZXIgb2YgMjQtYml0IG9yIDMyLWJpdCBkYXRhIGxlbmd0aC4KICAgKiBAbm90ZSAgIFRoZSBJMlMgaXMga2VwdCBlbmFibGVkIGF0IHRoZSBlbmQgb2YgdHJhbnNhY3Rpb24gdG8gYXZvaWQgdGhlIGNsb2NrIGRlLXN5bmNocm9uaXphdGlvbgogICAqICAgICAgICAgYmV0d2VlbiBNYXN0ZXIgYW5kIFNsYXZlKGV4YW1wbGU6IGF1ZGlvIHN0cmVhbWluZykuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCkBAIC0xMDIzLDcgKzEwMzQsNyBAQAogICAqIEBub3RlICAgV2hlbiBhIDE2LWJpdCBkYXRhIGZyYW1lIG9yIGEgMTYtYml0IGRhdGEgZnJhbWUgZXh0ZW5kZWQgaXMgc2VsZWN0ZWQgZHVyaW5nIHRoZSBJMlMKICAgKiAgICAgICAgIGNvbmZpZ3VyYXRpb24gcGhhc2UsIHRoZSBTaXplIHBhcmFtZXRlciBtZWFucyB0aGUgbnVtYmVyIG9mIDE2LWJpdCBkYXRhIGxlbmd0aAogICAqICAgICAgICAgaW4gdGhlIHRyYW5zYWN0aW9uIGFuZCB3aGVuIGEgMjQtYml0IGRhdGEgZnJhbWUgb3IgYSAzMi1iaXQgZGF0YSBmcmFtZSBpcyBzZWxlY3RlZAotICAqICAgICAgICAgdGhlIFNpemUgcGFyYW1ldGVyIG1lYW5zIHRoZSBudW1iZXIgb2YgMTYtYml0IGRhdGEgbGVuZ3RoLgorICAqICAgICAgICAgdGhlIFNpemUgcGFyYW1ldGVyIG1lYW5zIHRoZSBudW1iZXIgb2YgMjQtYml0IG9yIDMyLWJpdCBkYXRhIGxlbmd0aC4KICAgKiBAbm90ZSAgIFRoZSBJMlMgaXMga2VwdCBlbmFibGVkIGF0IHRoZSBlbmQgb2YgdHJhbnNhY3Rpb24gdG8gYXZvaWQgdGhlIGNsb2NrIGRlLXN5bmNocm9uaXphdGlvbgogICAqICAgICAgICAgYmV0d2VlbiBNYXN0ZXIgYW5kIFNsYXZlKGV4YW1wbGU6IGF1ZGlvIHN0cmVhbWluZykuCiAgICogQG5vdGUgICBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgRE1BIGZvciB0aGUgSTJTIHJlY2VpdmVyIHRvIGF2b2lkIGRlLXN5bmNocm9uaXphdGlvbgpAQCAtMTA4OSw3ICsxMTAwLDcgQEAKICAgKiBAbm90ZSAgIFdoZW4gYSAxNi1iaXQgZGF0YSBmcmFtZSBvciBhIDE2LWJpdCBkYXRhIGZyYW1lIGV4dGVuZGVkIGlzIHNlbGVjdGVkIGR1cmluZyB0aGUgSTJTCiAgICogICAgICAgICBjb25maWd1cmF0aW9uIHBoYXNlLCB0aGUgU2l6ZSBwYXJhbWV0ZXIgbWVhbnMgdGhlIG51bWJlciBvZiAxNi1iaXQgZGF0YSBsZW5ndGgKICAgKiAgICAgICAgIGluIHRoZSB0cmFuc2FjdGlvbiBhbmQgd2hlbiBhIDI0LWJpdCBkYXRhIGZyYW1lIG9yIGEgMzItYml0IGRhdGEgZnJhbWUgaXMgc2VsZWN0ZWQKLSAgKiAgICAgICAgIHRoZSBTaXplIHBhcmFtZXRlciBtZWFucyB0aGUgbnVtYmVyIG9mIDE2LWJpdCBkYXRhIGxlbmd0aC4KKyAgKiAgICAgICAgIHRoZSBTaXplIHBhcmFtZXRlciBtZWFucyB0aGUgbnVtYmVyIG9mIDI0LWJpdCBvciAzMi1iaXQgZGF0YSBsZW5ndGguCiAgICogQG5vdGUgICBUaGUgSTJTIGlzIGtlcHQgZW5hYmxlZCBhdCB0aGUgZW5kIG9mIHRyYW5zYWN0aW9uIHRvIGF2b2lkIHRoZSBjbG9jayBkZS1zeW5jaHJvbml6YXRpb24KICAgKiAgICAgICAgIGJldHdlZW4gTWFzdGVyIGFuZCBTbGF2ZShleGFtcGxlOiBhdWRpbyBzdHJlYW1pbmcpLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwpAQCAtMTE0MCw3ICsxMTUxLDEwIEBACiAgIGhpMnMtPmhkbWF0eC0+WGZlckVycm9yQ2FsbGJhY2sgPSBJMlNfRE1BRXJyb3I7CiAKICAgLyogRW5hYmxlIHRoZSBUeCBETUEgU3RyZWFtL0NoYW5uZWwgKi8KLSAgaWYgKEhBTF9PSyAhPSBIQUxfRE1BX1N0YXJ0X0lUKGhpMnMtPmhkbWF0eCwgKHVpbnQzMl90KWhpMnMtPnBUeEJ1ZmZQdHIsICh1aW50MzJfdCkmaGkycy0+SW5zdGFuY2UtPkRSLCBoaTJzLT5UeFhmZXJTaXplKSkKKyAgaWYgKEhBTF9PSyAhPSBIQUxfRE1BX1N0YXJ0X0lUKGhpMnMtPmhkbWF0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCloaTJzLT5wVHhCdWZmUHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSZoaTJzLT5JbnN0YW5jZS0+RFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaTJzLT5UeFhmZXJTaXplKSkKICAgewogICAgIC8qIFVwZGF0ZSBTUEkgZXJyb3IgY29kZSAqLwogICAgIFNFVF9CSVQoaGkycy0+RXJyb3JDb2RlLCBIQUxfSTJTX0VSUk9SX0RNQSk7CkBAIC0xMTc3LDcgKzExOTEsNyBAQAogICAqIEBub3RlICAgV2hlbiBhIDE2LWJpdCBkYXRhIGZyYW1lIG9yIGEgMTYtYml0IGRhdGEgZnJhbWUgZXh0ZW5kZWQgaXMgc2VsZWN0ZWQgZHVyaW5nIHRoZSBJMlMKICAgKiAgICAgICAgIGNvbmZpZ3VyYXRpb24gcGhhc2UsIHRoZSBTaXplIHBhcmFtZXRlciBtZWFucyB0aGUgbnVtYmVyIG9mIDE2LWJpdCBkYXRhIGxlbmd0aAogICAqICAgICAgICAgaW4gdGhlIHRyYW5zYWN0aW9uIGFuZCB3aGVuIGEgMjQtYml0IGRhdGEgZnJhbWUgb3IgYSAzMi1iaXQgZGF0YSBmcmFtZSBpcyBzZWxlY3RlZAotICAqICAgICAgICAgdGhlIFNpemUgcGFyYW1ldGVyIG1lYW5zIHRoZSBudW1iZXIgb2YgMTYtYml0IGRhdGEgbGVuZ3RoLgorICAqICAgICAgICAgdGhlIFNpemUgcGFyYW1ldGVyIG1lYW5zIHRoZSBudW1iZXIgb2YgMjQtYml0IG9yIDMyLWJpdCBkYXRhIGxlbmd0aC4KICAgKiBAbm90ZSAgIFRoZSBJMlMgaXMga2VwdCBlbmFibGVkIGF0IHRoZSBlbmQgb2YgdHJhbnNhY3Rpb24gdG8gYXZvaWQgdGhlIGNsb2NrIGRlLXN5bmNocm9uaXphdGlvbgogICAqICAgICAgICAgYmV0d2VlbiBNYXN0ZXIgYW5kIFNsYXZlKGV4YW1wbGU6IGF1ZGlvIHN0cmVhbWluZykuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCkBAIC0xMjM2LDcgKzEyNTAsOCBAQAogICB9CiAKICAgLyogRW5hYmxlIHRoZSBSeCBETUEgU3RyZWFtL0NoYW5uZWwgKi8KLSAgaWYgKEhBTF9PSyAhPSBIQUxfRE1BX1N0YXJ0X0lUKGhpMnMtPmhkbWFyeCwgKHVpbnQzMl90KSZoaTJzLT5JbnN0YW5jZS0+RFIsICh1aW50MzJfdCloaTJzLT5wUnhCdWZmUHRyLCBoaTJzLT5SeFhmZXJTaXplKSkKKyAgaWYgKEhBTF9PSyAhPSBIQUxfRE1BX1N0YXJ0X0lUKGhpMnMtPmhkbWFyeCwgKHVpbnQzMl90KSZoaTJzLT5JbnN0YW5jZS0+RFIsICh1aW50MzJfdCloaTJzLT5wUnhCdWZmUHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGkycy0+UnhYZmVyU2l6ZSkpCiAgIHsKICAgICAvKiBVcGRhdGUgU1BJIGVycm9yIGNvZGUgKi8KICAgICBTRVRfQklUKGhpMnMtPkVycm9yQ29kZSwgSEFMX0kyU19FUlJPUl9ETUEpOwpAQCAtMTM1MCwzNSArMTM2NSw4NiBAQAogICAgICBhbmQgdGhlIGNvcnJlc3BvbmQgY2FsbCBiYWNrIGlzIGV4ZWN1dGVkIEhBTF9JMlNfVHhDcGx0Q2FsbGJhY2soKSBvciBIQUxfSTJTX1J4Q3BsdENhbGxiYWNrKCkKICAgICAgKi8KIAotICAvKiBEaXNhYmxlIHRoZSBJMlMgVHgvUnggRE1BIHJlcXVlc3RzICovCi0gIENMRUFSX0JJVChoaTJzLT5JbnN0YW5jZS0+Q1IyLCBTUElfQ1IyX1RYRE1BRU4pOwotICBDTEVBUl9CSVQoaGkycy0+SW5zdGFuY2UtPkNSMiwgU1BJX0NSMl9SWERNQUVOKTsKLQotICAvKiBBYm9ydCB0aGUgSTJTIERNQSB0eCBTdHJlYW0vQ2hhbm5lbCAqLwotICBpZiAoaGkycy0+aGRtYXR4ICE9IE5VTEwpCisgIGlmICgoaGkycy0+SW5pdC5Nb2RlID09IEkyU19NT0RFX01BU1RFUl9UWCkgfHwgKGhpMnMtPkluaXQuTW9kZSA9PSBJMlNfTU9ERV9TTEFWRV9UWCkpCiAgIHsKLSAgICAvKiBEaXNhYmxlIHRoZSBJMlMgRE1BIHR4IFN0cmVhbS9DaGFubmVsICovCi0gICAgaWYgKEhBTF9PSyAhPSBIQUxfRE1BX0Fib3J0KGhpMnMtPmhkbWF0eCkpCisgICAgLyogQWJvcnQgdGhlIEkyUyBETUEgdHggU3RyZWFtL0NoYW5uZWwgKi8KKyAgICBpZiAoaGkycy0+aGRtYXR4ICE9IE5VTEwpCiAgICAgewotICAgICAgU0VUX0JJVChoaTJzLT5FcnJvckNvZGUsIEhBTF9JMlNfRVJST1JfRE1BKTsKLSAgICAgIGVycm9yY29kZSA9IEhBTF9FUlJPUjsKKyAgICAgIC8qIERpc2FibGUgdGhlIEkyUyBETUEgdHggU3RyZWFtL0NoYW5uZWwgKi8KKyAgICAgIGlmIChIQUxfT0sgIT0gSEFMX0RNQV9BYm9ydChoaTJzLT5oZG1hdHgpKQorICAgICAgeworICAgICAgICBTRVRfQklUKGhpMnMtPkVycm9yQ29kZSwgSEFMX0kyU19FUlJPUl9ETUEpOworICAgICAgICBlcnJvcmNvZGUgPSBIQUxfRVJST1I7CisgICAgICB9CiAgICAgfQorCisgICAgLyogV2FpdCB1bnRpbCBUWEUgZmxhZyBpcyBzZXQgKi8KKyAgICBpZiAoSTJTX1dhaXRGbGFnU3RhdGVVbnRpbFRpbWVvdXQoaGkycywgSTJTX0ZMQUdfVFhFLCBTRVQsIEkyU19USU1FT1VUX0ZMQUcpICE9IEhBTF9PSykKKyAgICB7CisgICAgICAvKiBTZXQgdGhlIGVycm9yIGNvZGUgKi8KKyAgICAgIFNFVF9CSVQoaGkycy0+RXJyb3JDb2RlLCBIQUxfSTJTX0VSUk9SX1RJTUVPVVQpOworICAgICAgaGkycy0+U3RhdGUgPSBIQUxfSTJTX1NUQVRFX1JFQURZOworICAgICAgZXJyb3Jjb2RlICAgPSBIQUxfRVJST1I7CisgICAgfQorCisgICAgLyogV2FpdCB1bnRpbCBCU1kgZmxhZyBpcyBSZXNldCAqLworICAgIGlmIChJMlNfV2FpdEZsYWdTdGF0ZVVudGlsVGltZW91dChoaTJzLCBJMlNfRkxBR19CU1ksIFJFU0VULCBJMlNfVElNRU9VVF9GTEFHKSAhPSBIQUxfT0spCisgICAgeworICAgICAgLyogU2V0IHRoZSBlcnJvciBjb2RlICovCisgICAgICBTRVRfQklUKGhpMnMtPkVycm9yQ29kZSwgSEFMX0kyU19FUlJPUl9USU1FT1VUKTsKKyAgICAgIGhpMnMtPlN0YXRlID0gSEFMX0kyU19TVEFURV9SRUFEWTsKKyAgICAgIGVycm9yY29kZSAgID0gSEFMX0VSUk9SOworICAgIH0KKworICAgIC8qIERpc2FibGUgSTJTIHBlcmlwaGVyYWwgKi8KKyAgICBfX0hBTF9JMlNfRElTQUJMRShoaTJzKTsKKworICAgIC8qIENsZWFyIFVEUiBmbGFnICovCisgICAgX19IQUxfSTJTX0NMRUFSX1VEUkZMQUcoaGkycyk7CisKKyAgICAvKiBEaXNhYmxlIHRoZSBJMlMgVHggRE1BIHJlcXVlc3RzICovCisgICAgQ0xFQVJfQklUKGhpMnMtPkluc3RhbmNlLT5DUjIsIFNQSV9DUjJfVFhETUFFTik7CisKICAgfQogCi0gIC8qIEFib3J0IHRoZSBJMlMgRE1BIHJ4IFN0cmVhbS9DaGFubmVsICovCi0gIGlmIChoaTJzLT5oZG1hcnggIT0gTlVMTCkKKyAgZWxzZSBpZiAoKGhpMnMtPkluaXQuTW9kZSA9PSBJMlNfTU9ERV9NQVNURVJfUlgpIHx8IChoaTJzLT5Jbml0Lk1vZGUgPT0gSTJTX01PREVfU0xBVkVfUlgpKQogICB7Ci0gICAgLyogRGlzYWJsZSB0aGUgSTJTIERNQSByeCBTdHJlYW0vQ2hhbm5lbCAqLwotICAgIGlmIChIQUxfT0sgIT0gSEFMX0RNQV9BYm9ydChoaTJzLT5oZG1hcngpKQorICAgIC8qIEFib3J0IHRoZSBJMlMgRE1BIHJ4IFN0cmVhbS9DaGFubmVsICovCisgICAgaWYgKGhpMnMtPmhkbWFyeCAhPSBOVUxMKQogICAgIHsKLSAgICAgIFNFVF9CSVQoaGkycy0+RXJyb3JDb2RlLCBIQUxfSTJTX0VSUk9SX0RNQSk7CisgICAgICAvKiBEaXNhYmxlIHRoZSBJMlMgRE1BIHJ4IFN0cmVhbS9DaGFubmVsICovCisgICAgICBpZiAoSEFMX09LICE9IEhBTF9ETUFfQWJvcnQoaGkycy0+aGRtYXJ4KSkKKyAgICAgIHsKKyAgICAgICAgU0VUX0JJVChoaTJzLT5FcnJvckNvZGUsIEhBTF9JMlNfRVJST1JfRE1BKTsKKyAgICAgICAgZXJyb3Jjb2RlID0gSEFMX0VSUk9SOworICAgICAgfQorICAgIH0KKworICAgIC8qIERpc2FibGUgSTJTIHBlcmlwaGVyYWwgKi8KKyAgICBfX0hBTF9JMlNfRElTQUJMRShoaTJzKTsKKworICAgIC8qIENsZWFyIE9WUiBmbGFnICovCisgICAgX19IQUxfSTJTX0NMRUFSX09WUkZMQUcoaGkycyk7CisKKyAgICAvKiBEaXNhYmxlIHRoZSBJMlMgUnggRE1BIHJlcXVlc3QgKi8KKyAgICBDTEVBUl9CSVQoaGkycy0+SW5zdGFuY2UtPkNSMiwgU1BJX0NSMl9SWERNQUVOKTsKKworICAgIGlmIChoaTJzLT5Jbml0Lk1vZGUgPT0gSTJTX01PREVfU0xBVkVfUlgpCisgICAgeworICAgICAgLyogU2V0IHRoZSBlcnJvciBjb2RlICovCisgICAgICBTRVRfQklUKGhpMnMtPkVycm9yQ29kZSwgSEFMX0kyU19FUlJPUl9CVVNZX0xJTkVfUlgpOworCisgICAgICAvKiBTZXQgdGhlIEkyUyBTdGF0ZSByZWFkeSAqLworICAgICAgaGkycy0+U3RhdGUgPSBIQUxfSTJTX1NUQVRFX1JFQURZOwogICAgICAgZXJyb3Jjb2RlID0gSEFMX0VSUk9SOwogICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgLyogUmVhZCBEUiB0byBGbHVzaCBSWCBEYXRhICovCisgICAgICBSRUFEX1JFRygoaGkycy0+SW5zdGFuY2UpLT5EUik7CisgICAgfQogICB9CiAKLSAgLyogRGlzYWJsZSBJMlMgcGVyaXBoZXJhbCAqLwotICBfX0hBTF9JMlNfRElTQUJMRShoaTJzKTsKLQogICBoaTJzLT5TdGF0ZSA9IEhBTF9JMlNfU1RBVEVfUkVBRFk7CiAKICAgcmV0dXJuIGVycm9yY29kZTsKQEAgLTE4MTQsNyArMTg4MCw4IEBACiAgICogQHBhcmFtICBUaW1lb3V0IER1cmF0aW9uIG9mIHRoZSB0aW1lb3V0CiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1zdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJTX1dhaXRGbGFnU3RhdGVVbnRpbFRpbWVvdXQoSTJTX0hhbmRsZVR5cGVEZWYgKmhpMnMsIHVpbnQzMl90IEZsYWcsIEZsYWdTdGF0dXMgU3RhdGUsIHVpbnQzMl90IFRpbWVvdXQpCitzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgSTJTX1dhaXRGbGFnU3RhdGVVbnRpbFRpbWVvdXQoSTJTX0hhbmRsZVR5cGVEZWYgKmhpMnMsIHVpbnQzMl90IEZsYWcsIEZsYWdTdGF0dXMgU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgVGltZW91dCkKIHsKICAgdWludDMyX3QgdGlja3N0YXJ0OwogCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9pcmRhLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9pcmRhLmMKaW5kZXggMDM2NzVjYi4uOGZjYzgwYSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfaXJkYS5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX2lyZGEuYwpAQCAtNDAsNyArNDAsOCBAQAogICAgICAgICAgICAgKCsrKykgQ29uZmlndXJlIHRoZSBkZWNsYXJlZCBETUEgaGFuZGxlIHN0cnVjdHVyZSB3aXRoIHRoZSByZXF1aXJlZCBUeC9SeCBwYXJhbWV0ZXJzLgogICAgICAgICAgICAgKCsrKykgQ29uZmlndXJlIHRoZSBETUEgVHgvUnggY2hhbm5lbC4KICAgICAgICAgICAgICgrKyspIEFzc29jaWF0ZSB0aGUgaW5pdGlhbGl6ZWQgRE1BIGhhbmRsZSB0byB0aGUgSVJEQSBETUEgVHgvUnggaGFuZGxlLgotICAgICAgICAgICAgKCsrKykgQ29uZmlndXJlIHRoZSBwcmlvcml0eSBhbmQgZW5hYmxlIHRoZSBOVklDIGZvciB0aGUgdHJhbnNmZXIgY29tcGxldGUgaW50ZXJydXB0IG9uIHRoZSBETUEgVHgvUnggY2hhbm5lbC4KKyAgICAgICAgICAgICgrKyspIENvbmZpZ3VyZSB0aGUgcHJpb3JpdHkgYW5kIGVuYWJsZSB0aGUgTlZJQyBmb3IgdGhlIHRyYW5zZmVyCisgICAgICAgICAgICAgICAgICBjb21wbGV0ZSBpbnRlcnJ1cHQgb24gdGhlIERNQSBUeC9SeCBjaGFubmVsLgogCiAgICAgKCMpIFByb2dyYW0gdGhlIEJhdWQgUmF0ZSwgV29yZCBMZW5ndGggYW5kIFBhcml0eSBhbmQgTW9kZShSZWNlaXZlci9UcmFuc21pdHRlciksCiAgICAgICAgIHRoZSBub3JtYWwgb3IgbG93IHBvd2VyIG1vZGUgYW5kIHRoZSBjbG9jayBwcmVzY2FsZXIgaW4gdGhlIGhpcmRhIGhhbmRsZSBJbml0IHN0cnVjdHVyZS4KQEAgLTYxMCw0MyArNjExLDQ1IEBACiAgICAgc3dpdGNoIChDYWxsYmFja0lEKQogICAgIHsKICAgICAgIGNhc2UgSEFMX0lSREFfVFhfSEFMRkNPTVBMRVRFX0NCX0lEIDoKLSAgICAgICAgaGlyZGEtPlR4SGFsZkNwbHRDYWxsYmFjayA9IEhBTF9JUkRBX1R4SGFsZkNwbHRDYWxsYmFjazsgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayAgVHhIYWxmQ3BsdENhbGxiYWNrICAgICAgICovCisgICAgICAgIGhpcmRhLT5UeEhhbGZDcGx0Q2FsbGJhY2sgPSBIQUxfSVJEQV9UeEhhbGZDcGx0Q2FsbGJhY2s7ICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgIFR4SGFsZkNwbHRDYWxsYmFjayAgICAqLwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfSVJEQV9UWF9DT01QTEVURV9DQl9JRCA6Ci0gICAgICAgIGhpcmRhLT5UeENwbHRDYWxsYmFjayA9IEhBTF9JUkRBX1R4Q3BsdENhbGxiYWNrOyAgICAgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgVHhDcGx0Q2FsbGJhY2sgICAgICAgICAgICAqLworICAgICAgICBoaXJkYS0+VHhDcGx0Q2FsbGJhY2sgPSBIQUxfSVJEQV9UeENwbHRDYWxsYmFjazsgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIFR4Q3BsdENhbGxiYWNrICAgICAgICAgKi8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX0lSREFfUlhfSEFMRkNPTVBMRVRFX0NCX0lEIDoKLSAgICAgICAgaGlyZGEtPlJ4SGFsZkNwbHRDYWxsYmFjayA9IEhBTF9JUkRBX1J4SGFsZkNwbHRDYWxsYmFjazsgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBSeEhhbGZDcGx0Q2FsbGJhY2sgICAgICAgICovCisgICAgICAgIGhpcmRhLT5SeEhhbGZDcGx0Q2FsbGJhY2sgPSBIQUxfSVJEQV9SeEhhbGZDcGx0Q2FsbGJhY2s7ICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgUnhIYWxmQ3BsdENhbGxiYWNrICAgICAqLwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfSVJEQV9SWF9DT01QTEVURV9DQl9JRCA6Ci0gICAgICAgIGhpcmRhLT5SeENwbHRDYWxsYmFjayA9IEhBTF9JUkRBX1J4Q3BsdENhbGxiYWNrOyAgICAgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgUnhDcGx0Q2FsbGJhY2sgICAgICAgICAgICAqLworICAgICAgICBoaXJkYS0+UnhDcGx0Q2FsbGJhY2sgPSBIQUxfSVJEQV9SeENwbHRDYWxsYmFjazsgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIFJ4Q3BsdENhbGxiYWNrICAgICAgICAgKi8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX0lSREFfRVJST1JfQ0JfSUQgOgotICAgICAgICBoaXJkYS0+RXJyb3JDYWxsYmFjayA9IEhBTF9JUkRBX0Vycm9yQ2FsbGJhY2s7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEVycm9yQ2FsbGJhY2sgICAgICAgICAgICAgKi8KKyAgICAgICAgaGlyZGEtPkVycm9yQ2FsbGJhY2sgPSBIQUxfSVJEQV9FcnJvckNhbGxiYWNrOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBFcnJvckNhbGxiYWNrICAgICAgICAgICovCiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9JUkRBX0FCT1JUX0NPTVBMRVRFX0NCX0lEIDoKLSAgICAgICAgaGlyZGEtPkFib3J0Q3BsdENhbGxiYWNrID0gSEFMX0lSREFfQWJvcnRDcGx0Q2FsbGJhY2s7ICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBBYm9ydENwbHRDYWxsYmFjayAgICAgICAgICovCisgICAgICAgIGhpcmRhLT5BYm9ydENwbHRDYWxsYmFjayA9IEhBTF9JUkRBX0Fib3J0Q3BsdENhbGxiYWNrOyAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgQWJvcnRDcGx0Q2FsbGJhY2sgICAgICAqLwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfSVJEQV9BQk9SVF9UUkFOU01JVF9DT01QTEVURV9DQl9JRCA6Ci0gICAgICAgIGhpcmRhLT5BYm9ydFRyYW5zbWl0Q3BsdENhbGxiYWNrID0gSEFMX0lSREFfQWJvcnRUcmFuc21pdENwbHRDYWxsYmFjazsgLyogTGVnYWN5IHdlYWsgQWJvcnRUcmFuc21pdENwbHRDYWxsYmFjayAqLworICAgICAgICBoaXJkYS0+QWJvcnRUcmFuc21pdENwbHRDYWxsYmFjayA9IEhBTF9JUkRBX0Fib3J0VHJhbnNtaXRDcGx0Q2FsbGJhY2s7IC8qIExlZ2FjeSB3ZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWJvcnRUcmFuc21pdENwbHRDYWxsYmFjayAgICAgICAgICAqLwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfSVJEQV9BQk9SVF9SRUNFSVZFX0NPTVBMRVRFX0NCX0lEIDoKLSAgICAgICAgaGlyZGEtPkFib3J0UmVjZWl2ZUNwbHRDYWxsYmFjayA9IEhBTF9JUkRBX0Fib3J0UmVjZWl2ZUNwbHRDYWxsYmFjazsgICAvKiBMZWdhY3kgd2VhayBBYm9ydFJlY2VpdmVDcGx0Q2FsbGJhY2sgICovCisgICAgICAgIGhpcmRhLT5BYm9ydFJlY2VpdmVDcGx0Q2FsbGJhY2sgPSBIQUxfSVJEQV9BYm9ydFJlY2VpdmVDcGx0Q2FsbGJhY2s7ICAgLyogTGVnYWN5IHdlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBYm9ydFJlY2VpdmVDcGx0Q2FsbGJhY2sgICAgICAgICAgICovCiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9JUkRBX01TUElOSVRfQ0JfSUQgOgotICAgICAgICBoaXJkYS0+TXNwSW5pdENhbGxiYWNrID0gSEFMX0lSREFfTXNwSW5pdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE1zcEluaXRDYWxsYmFjayAgICAgICAgICAgKi8KKyAgICAgICAgaGlyZGEtPk1zcEluaXRDYWxsYmFjayA9IEhBTF9JUkRBX01zcEluaXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBNc3BJbml0Q2FsbGJhY2sgICAgICAgICovCiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9JUkRBX01TUERFSU5JVF9DQl9JRCA6Ci0gICAgICAgIGhpcmRhLT5Nc3BEZUluaXRDYWxsYmFjayA9IEhBTF9JUkRBX01zcERlSW5pdDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgTXNwRGVJbml0Q2FsbGJhY2sgICAgICAgICAqLworICAgICAgICBoaXJkYS0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfSVJEQV9Nc3BEZUluaXQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE1zcERlSW5pdENhbGxiYWNrICAgICAgKi8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGRlZmF1bHQgOgpAQCAtNzY5LDEzICs3NzIsMTYgQEAKICAgICAoIykgSW4gTm9uLUJsb2NraW5nIG1vZGUgdHJhbnNmZXJzLCBwb3NzaWJsZSBlcnJvcnMgYXJlIHNwbGl0IGludG8gMiBjYXRlZ29yaWVzLgogICAgICAgICBFcnJvcnMgYXJlIGhhbmRsZWQgYXMgZm9sbG93cyA6CiAgICAgICAgICgrKykgRXJyb3IgaXMgY29uc2lkZXJlZCBhcyBSZWNvdmVyYWJsZSBhbmQgbm9uIGJsb2NraW5nIDogVHJhbnNmZXIgY291bGQgZ28gdGlsbCBlbmQsIGJ1dCBlcnJvciBzZXZlcml0eSBpcwotICAgICAgICAgICAgIHRvIGJlIGV2YWx1YXRlZCBieSB1c2VyIDogdGhpcyBjb25jZXJucyBGcmFtZSBFcnJvciwgUGFyaXR5IEVycm9yIG9yIE5vaXNlIEVycm9yIGluIEludGVycnVwdCBtb2RlIHJlY2VwdGlvbiAuCi0gICAgICAgICAgICAgUmVjZWl2ZWQgY2hhcmFjdGVyIGlzIHRoZW4gcmV0cmlldmVkIGFuZCBzdG9yZWQgaW4gUnggYnVmZmVyLCBFcnJvciBjb2RlIGlzIHNldCB0byBhbGxvdyB1c2VyIHRvIGlkZW50aWZ5IGVycm9yIHR5cGUsCi0gICAgICAgICAgICAgYW5kIEhBTF9JUkRBX0Vycm9yQ2FsbGJhY2soKSB1c2VyIGNhbGxiYWNrIGlzIGV4ZWN1dGVkLiBUcmFuc2ZlciBpcyBrZXB0IG9uZ29pbmcgb24gSVJEQSBzaWRlLgorICAgICAgICAgICAgIHRvIGJlIGV2YWx1YXRlZCBieSB1c2VyIDogdGhpcyBjb25jZXJucyBGcmFtZSBFcnJvciwgUGFyaXR5IEVycm9yIG9yIE5vaXNlIEVycm9yCisgICAgICAgICAgICAgaW4gSW50ZXJydXB0IG1vZGUgcmVjZXB0aW9uIC4KKyAgICAgICAgICAgICBSZWNlaXZlZCBjaGFyYWN0ZXIgaXMgdGhlbiByZXRyaWV2ZWQgYW5kIHN0b3JlZCBpbiBSeCBidWZmZXIsIEVycm9yIGNvZGUgaXMgc2V0IHRvIGFsbG93IHVzZXIKKyAgICAgICAgICAgICB0byBpZGVudGlmeSBlcnJvciB0eXBlLCBhbmQgSEFMX0lSREFfRXJyb3JDYWxsYmFjaygpIHVzZXIgY2FsbGJhY2sgaXMgZXhlY3V0ZWQuCisgICAgICAgICAgICAgVHJhbnNmZXIgaXMga2VwdCBvbmdvaW5nIG9uIElSREEgc2lkZS4KICAgICAgICAgICAgICBJZiB1c2VyIHdhbnRzIHRvIGFib3J0IGl0LCBBYm9ydCBzZXJ2aWNlcyBzaG91bGQgYmUgY2FsbGVkIGJ5IHVzZXIuCiAgICAgICAgICgrKykgRXJyb3IgaXMgY29uc2lkZXJlZCBhcyBCbG9ja2luZyA6IFRyYW5zZmVyIGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQgcHJvcGVybHkgYW5kIGlzIGFib3J0ZWQuCiAgICAgICAgICAgICAgVGhpcyBjb25jZXJucyBPdmVycnVuIEVycm9yIEluIEludGVycnVwdCBtb2RlIHJlY2VwdGlvbiBhbmQgYWxsIGVycm9ycyBpbiBETUEgbW9kZS4KLSAgICAgICAgICAgICBFcnJvciBjb2RlIGlzIHNldCB0byBhbGxvdyB1c2VyIHRvIGlkZW50aWZ5IGVycm9yIHR5cGUsIGFuZCBIQUxfSVJEQV9FcnJvckNhbGxiYWNrKCkgdXNlciBjYWxsYmFjayBpcyBleGVjdXRlZC4KKyAgICAgICAgICAgICBFcnJvciBjb2RlIGlzIHNldCB0byBhbGxvdyB1c2VyIHRvIGlkZW50aWZ5IGVycm9yIHR5cGUsIGFuZAorICAgICAgICAgICAgIEhBTF9JUkRBX0Vycm9yQ2FsbGJhY2soKSB1c2VyIGNhbGxiYWNrIGlzIGV4ZWN1dGVkLgogCiBAZW5kdmVyYmF0aW0KICAgKiBAewpAQCAtODEzLDcgKzgxOSw3IEBACiAgICAgaGlyZGEtPkVycm9yQ29kZSA9IEhBTF9JUkRBX0VSUk9SX05PTkU7CiAgICAgaGlyZGEtPmdTdGF0ZSA9IEhBTF9JUkRBX1NUQVRFX0JVU1lfVFg7CiAKLSAgICAvKiBJbml0IHRpY2tzdGFydCBmb3IgdGltZW91dCBtYW5hZ21lbnQqLworICAgIC8qIEluaXQgdGlja3N0YXJ0IGZvciB0aW1lb3V0IG1hbmFnZW1lbnQgKi8KICAgICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOwogCiAgICAgaGlyZGEtPlR4WGZlclNpemUgPSBTaXplOwpAQCAtOTAzLDcgKzkwOSw3IEBACiAgICAgaGlyZGEtPkVycm9yQ29kZSA9IEhBTF9JUkRBX0VSUk9SX05PTkU7CiAgICAgaGlyZGEtPlJ4U3RhdGUgPSBIQUxfSVJEQV9TVEFURV9CVVNZX1JYOwogCi0gICAgLyogSW5pdCB0aWNrc3RhcnQgZm9yIHRpbWVvdXQgbWFuYWdtZW50Ki8KKyAgICAvKiBJbml0IHRpY2tzdGFydCBmb3IgdGltZW91dCBtYW5hZ2VtZW50ICovCiAgICAgdGlja3N0YXJ0ID0gSEFMX0dldFRpY2soKTsKIAogICAgIGhpcmRhLT5SeFhmZXJTaXplID0gU2l6ZTsKQEAgLTEyNzgsNyArMTI4NCw3IEBACiAgICAgLyogQ2xlYXIgdGhlIE92ZXJydW4gZmxhZyBiZWZvcmUgcmVzdW1pbmcgdGhlIFJ4IHRyYW5zZmVyKi8KICAgICBfX0hBTF9JUkRBX0NMRUFSX09SRUZMQUcoaGlyZGEpOwogCi0gICAgLyogUmVlbmFibGUgUEUgYW5kIEVSUiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKSBpbnRlcnJ1cHRzICovCisgICAgLyogUmUtZW5hYmxlIFBFIGFuZCBFUlIgKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikgaW50ZXJydXB0cyAqLwogICAgIFNFVF9CSVQoaGlyZGEtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9QRUlFKTsKICAgICBTRVRfQklUKGhpcmRhLT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKIApAQCAtMjMxNCw3ICsyMzIwLDcgQEAKICAgLyogSW5pdGlhbGl6ZSB0aGUgSVJEQSBFcnJvckNvZGUgKi8KICAgaGlyZGEtPkVycm9yQ29kZSA9IEhBTF9JUkRBX0VSUk9SX05PTkU7CiAKLSAgLyogSW5pdCB0aWNrc3RhcnQgZm9yIHRpbWVvdXQgbWFuYWdtZW50Ki8KKyAgLyogSW5pdCB0aWNrc3RhcnQgZm9yIHRpbWVvdXQgbWFuYWdlbWVudCAqLwogICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOwogCiAgIC8qIENoZWNrIGlmIHRoZSBUcmFuc21pdHRlciBpcyBlbmFibGVkICovCkBAIC0yMzU5LDcgKzIzNjUsOCBAQAogICAgIHsKICAgICAgIGlmICgoKEhBTF9HZXRUaWNrKCkgLSBUaWNrc3RhcnQpID4gVGltZW91dCkgfHwgKFRpbWVvdXQgPT0gMFUpKQogICAgICAgewotICAgICAgICAvKiBEaXNhYmxlIFRYRSwgUlhORSwgUEUgYW5kIEVSUiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKSBpbnRlcnJ1cHRzIGZvciB0aGUgaW50ZXJydXB0IHByb2Nlc3MgKi8KKyAgICAgICAgLyogRGlzYWJsZSBUWEUsIFJYTkUsIFBFIGFuZCBFUlIgKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikKKyAgICAgICAgICAgaW50ZXJydXB0cyBmb3IgdGhlIGludGVycnVwdCBwcm9jZXNzICovCiAgICAgICAgIENMRUFSX0JJVChoaXJkYS0+SW5zdGFuY2UtPkNSMSwgKFVTQVJUX0NSMV9SWE5FSUUgfCBVU0FSVF9DUjFfUEVJRSB8IFVTQVJUX0NSMV9UWEVJRSkpOwogICAgICAgICBDTEVBUl9CSVQoaGlyZGEtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOwogCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9pd2RnLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9pd2RnLmMKaW5kZXggNzBmNzI2OC4uNDljNGU1MSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfaXdkZy5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX2l3ZGcuYwpAQCAtMTYsNTIgKzE2LDYyIEBACiAgICAgKCspIFRoZSBJV0RHIGNhbiBiZSBzdGFydGVkIGJ5IGVpdGhlciBzb2Z0d2FyZSBvciBoYXJkd2FyZSAoY29uZmlndXJhYmxlCiAgICAgICAgIHRocm91Z2ggb3B0aW9uIGJ5dGUpLgogCi0gICAgKCspIFRoZSBJV0RHIGlzIGNsb2NrZWQgYnkgTG93LVNwZWVkIGNsb2NrIChMU0kpIGFuZCB0aHVzIHN0YXlzIGFjdGl2ZSBldmVuCi0gICAgICAgIGlmIHRoZSBtYWluIGNsb2NrIGZhaWxzLgorICAgICgrKSBUaGUgSVdERyBpcyBjbG9ja2VkIGJ5IHRoZSBMb3ctU3BlZWQgSW50ZXJuYWwgY2xvY2sgKExTSSkgYW5kIHRodXMgc3RheXMKKyAgICAgICAgYWN0aXZlIGV2ZW4gaWYgdGhlIG1haW4gY2xvY2sgZmFpbHMuCiAKLSAgICAoKykgT25jZSB0aGUgSVdERyBpcyBzdGFydGVkLCB0aGUgTFNJIGlzIGZvcmNlZCBPTiBhbmQgYm90aCBjYW4gbm90IGJlCisgICAgKCspIE9uY2UgdGhlIElXREcgaXMgc3RhcnRlZCwgdGhlIExTSSBpcyBmb3JjZWQgT04gYW5kIGJvdGggY2Fubm90IGJlCiAgICAgICAgIGRpc2FibGVkLiBUaGUgY291bnRlciBzdGFydHMgY291bnRpbmcgZG93biBmcm9tIHRoZSByZXNldCB2YWx1ZSAoMHhGRkYpLgogICAgICAgICBXaGVuIGl0IHJlYWNoZXMgdGhlIGVuZCBvZiBjb3VudCB2YWx1ZSAoMHgwMDApIGEgcmVzZXQgc2lnbmFsIGlzCiAgICAgICAgIGdlbmVyYXRlZCAoSVdERyByZXNldCkuCiAKICAgICAoKykgV2hlbmV2ZXIgdGhlIGtleSB2YWx1ZSAweDAwMDAgQUFBQSBpcyB3cml0dGVuIGluIHRoZSBJV0RHX0tSIHJlZ2lzdGVyLAotICAgICAgICB0aGUgSVdER19STFIgdmFsdWUgaXMgcmVsb2FkZWQgaW4gdGhlIGNvdW50ZXIgYW5kIHRoZSB3YXRjaGRvZyByZXNldCBpcwotICAgICAgICBwcmV2ZW50ZWQuCisgICAgICAgIHRoZSBJV0RHX1JMUiB2YWx1ZSBpcyByZWxvYWRlZCBpbnRvIHRoZSBjb3VudGVyIGFuZCB0aGUgd2F0Y2hkb2cgcmVzZXQKKyAgICAgICAgaXMgcHJldmVudGVkLgogCiAgICAgKCspIFRoZSBJV0RHIGlzIGltcGxlbWVudGVkIGluIHRoZSBWREQgdm9sdGFnZSBkb21haW4gdGhhdCBpcyBzdGlsbCBmdW5jdGlvbmFsCi0gICAgICAgIGluIFNUT1AgYW5kIFNUQU5EQlkgbW9kZSAoSVdERyByZXNldCBjYW4gd2FrZS11cCBmcm9tIFNUQU5EQlkpLgorICAgICAgICBpbiBTVE9QIGFuZCBTVEFOREJZIG1vZGUgKElXREcgcmVzZXQgY2FuIHdha2UgdXAgdGhlIENQVSBmcm9tIFNUQU5EQlkpLgogICAgICAgICBJV0RHUlNUIGZsYWcgaW4gUkNDX0NTUiByZWdpc3RlciBjYW4gYmUgdXNlZCB0byBpbmZvcm0gd2hlbiBhbiBJV0RHCiAgICAgICAgIHJlc2V0IG9jY3Vycy4KIAotICAgICgrKSBEZWJ1ZyBtb2RlIDogV2hlbiB0aGUgbWljcm9jb250cm9sbGVyIGVudGVycyBkZWJ1ZyBtb2RlIChjb3JlIGhhbHRlZCksCisgICAgKCspIERlYnVnIG1vZGU6IFdoZW4gdGhlIG1pY3JvY29udHJvbGxlciBlbnRlcnMgZGVidWcgbW9kZSAoY29yZSBoYWx0ZWQpLAogICAgICAgICB0aGUgSVdERyBjb3VudGVyIGVpdGhlciBjb250aW51ZXMgdG8gd29yayBub3JtYWxseSBvciBzdG9wcywgZGVwZW5kaW5nCiAgICAgICAgIG9uIERCR19JV0RHX1NUT1AgY29uZmlndXJhdGlvbiBiaXQgaW4gREJHIG1vZHVsZSwgYWNjZXNzaWJsZSB0aHJvdWdoCiAgICAgICAgIF9fSEFMX0RCR01DVV9GUkVFWkVfSVdERygpIGFuZCBfX0hBTF9EQkdNQ1VfVU5GUkVFWkVfSVdERygpIG1hY3Jvcy4KIAogICAgIFsuLl0gTWluLW1heCB0aW1lb3V0IHZhbHVlIEAzMktIeiAoTFNJKTogfjEyNXVzIC8gfjMyLjdzCi0gICAgICAgICBUaGUgSVdERyB0aW1lb3V0IG1heSB2YXJ5IGR1ZSB0byBMU0kgZnJlcXVlbmN5IGRpc3BlcnNpb24uIFNUTTMyRjd4eAotICAgICAgICAgZGV2aWNlcyBwcm92aWRlIHRoZSBjYXBhYmlsaXR5IHRvIG1lYXN1cmUgdGhlIExTSSBmcmVxdWVuY3kgKExTSSBjbG9jawotICAgICAgICAgY29ubmVjdGVkIGludGVybmFsbHkgdG8gVElNMTYgQ0gxIGlucHV0IGNhcHR1cmUpLiBUaGUgbWVhc3VyZWQgdmFsdWUKLSAgICAgICAgIGNhbiBiZSB1c2VkIHRvIGhhdmUgYW4gSVdERyB0aW1lb3V0IHdpdGggYW4gYWNjZXB0YWJsZSBhY2N1cmFjeS4KKyAgICAgICAgIFRoZSBJV0RHIHRpbWVvdXQgbWF5IHZhcnkgZHVlIHRvIExTSSBjbG9jayBmcmVxdWVuY3kgZGlzcGVyc2lvbi4KKyAgICAgICAgIFNUTTMyRjd4eCBkZXZpY2VzIHByb3ZpZGUgdGhlIGNhcGFiaWxpdHkgdG8gbWVhc3VyZSB0aGUgTFNJIGNsb2NrCisgICAgICAgICBmcmVxdWVuY3kgKExTSSBjbG9jayBpcyBpbnRlcm5hbGx5IGNvbm5lY3RlZCB0byBUSU0xNiBDSDEgaW5wdXQgY2FwdHVyZSkuCisgICAgICAgICBUaGUgbWVhc3VyZWQgdmFsdWUgY2FuIGJlIHVzZWQgdG8gaGF2ZSBhbiBJV0RHIHRpbWVvdXQgd2l0aCBhbgorICAgICAgICAgYWNjZXB0YWJsZSBhY2N1cmFjeS4KKworICAgIFsuLl0gRGVmYXVsdCB0aW1lb3V0IHZhbHVlIChuZWNlc3NhcnkgZm9yIElXREdfU1Igc3RhdHVzIHJlZ2lzdGVyIHVwZGF0ZSk6CisgICAgICAgICBDb25zdGFudCBMU0lfVkFMVUUgaXMgZGVmaW5lZCBiYXNlZCBvbiB0aGUgbm9taW5hbCBMU0kgY2xvY2sgZnJlcXVlbmN5LgorICAgICAgICAgVGhpcyBmcmVxdWVuY3kgYmVpbmcgc3ViamVjdCB0byB2YXJpYXRpb25zIGFzIG1lbnRpb25lZCBhYm92ZSwgdGhlCisgICAgICAgICBkZWZhdWx0IHRpbWVvdXQgdmFsdWUgKGRlZmluZWQgdGhyb3VnaCBjb25zdGFudCBIQUxfSVdER19ERUZBVUxUX1RJTUVPVVQKKyAgICAgICAgIGJlbG93KSBtYXkgYmVjb21lIHRvbyBzaG9ydCBvciB0b28gbG9uZy4KKyAgICAgICAgIEluIHN1Y2ggY2FzZXMsIHRoaXMgZGVmYXVsdCB0aW1lb3V0IHZhbHVlIGNhbiBiZSB0dW5lZCBieSByZWRlZmluaW5nCisgICAgICAgICB0aGUgY29uc3RhbnQgTFNJX1ZBTFVFIGF0IHVzZXItYXBwbGljYXRpb24gbGV2ZWwgKGJhc2VkLCBmb3IgaW5zdGFuY2UsCisgICAgICAgICBvbiB0aGUgbWVhc3VyZWQgTFNJIGNsb2NrIGZyZXF1ZW5jeSBhcyBleHBsYWluZWQgYWJvdmUpLgogCiAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBIb3cgdG8gdXNlIHRoaXMgZHJpdmVyICMjIyMjCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBbLi5dCiAgICAgKCMpIFVzZSBJV0RHIHVzaW5nIEhBTF9JV0RHX0luaXQoKSBmdW5jdGlvbiB0byA6Ci0gICAgICAoKykgRW5hYmxlIGluc3RhbmNlIGJ5IHdyaXRpbmcgU3RhcnQga2V5d29yZCBpbiBJV0RHX0tFWSByZWdpc3Rlci4gTFNJCisgICAgICAoKyspIEVuYWJsZSBpbnN0YW5jZSBieSB3cml0aW5nIFN0YXJ0IGtleXdvcmQgaW4gSVdER19LRVkgcmVnaXN0ZXIuIExTSQogICAgICAgICAgICBjbG9jayBpcyBmb3JjZWQgT04gYW5kIElXREcgY291bnRlciBzdGFydHMgY291bnRpbmcgZG93bi4KLSAgICAgICgrKSBFbmFibGUgd3JpdGUgYWNjZXNzIHRvIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzOgorICAgICAgKCsrKSBFbmFibGUgd3JpdGUgYWNjZXNzIHRvIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzOgogICAgICAgICAgIElXREdfUFIsIElXREdfUkxSIGFuZCBJV0RHX1dJTlIuCi0gICAgICAoKykgQ29uZmlndXJlIHRoZSBJV0RHIHByZXNjYWxlciBhbmQgY291bnRlciByZWxvYWQgdmFsdWUuIFRoaXMgcmVsb2FkCisgICAgICAoKyspIENvbmZpZ3VyZSB0aGUgSVdERyBwcmVzY2FsZXIgYW5kIGNvdW50ZXIgcmVsb2FkIHZhbHVlLiBUaGlzIHJlbG9hZAogICAgICAgICAgICB2YWx1ZSB3aWxsIGJlIGxvYWRlZCBpbiB0aGUgSVdERyBjb3VudGVyIGVhY2ggdGltZSB0aGUgd2F0Y2hkb2cgaXMKICAgICAgICAgICAgcmVsb2FkZWQsIHRoZW4gdGhlIElXREcgd2lsbCBzdGFydCBjb3VudGluZyBkb3duIGZyb20gdGhpcyB2YWx1ZS4KLSAgICAgICgrKSBXYWl0IGZvciBzdGF0dXMgZmxhZ3MgdG8gYmUgcmVzZXQuCi0gICAgICAoKykgRGVwZW5kaW5nIG9uIHdpbmRvdyBwYXJhbWV0ZXI6Ci0gICAgICAgICgrKykgSWYgV2luZG93IEluaXQgcGFyYW1ldGVyIGlzIHNhbWUgYXMgV2luZG93IHJlZ2lzdGVyIHZhbHVlLAorICAgICAgKCsrKSBEZXBlbmRpbmcgb24gd2luZG93IHBhcmFtZXRlcjoKKyAgICAgICAgKCsrKykgSWYgV2luZG93IEluaXQgcGFyYW1ldGVyIGlzIHNhbWUgYXMgV2luZG93IHJlZ2lzdGVyIHZhbHVlLAogICAgICAgICAgICAgIG5vdGhpbmcgbW9yZSBpcyBkb25lIGJ1dCByZWxvYWQgY291bnRlciB2YWx1ZSBpbiBvcmRlciB0byBleGl0CiAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBleGFjdCB0aW1lIGJhc2UuCi0gICAgICAgICgrKykgRWxzZSBtb2RpZnkgV2luZG93IHJlZ2lzdGVyLiBUaGlzIHdpbGwgYXV0b21hdGljYWxseSByZWxvYWQKKyAgICAgICAgKCsrKykgRWxzZSBtb2RpZnkgV2luZG93IHJlZ2lzdGVyLiBUaGlzIHdpbGwgYXV0b21hdGljYWxseSByZWxvYWQKICAgICAgICAgICAgICB3YXRjaGRvZyBjb3VudGVyLgorICAgICAgKCsrKSBXYWl0IGZvciBzdGF0dXMgZmxhZ3MgdG8gYmUgcmVzZXQuCiAKICAgICAoIykgVGhlbiB0aGUgYXBwbGljYXRpb24gcHJvZ3JhbSBtdXN0IHJlZnJlc2ggdGhlIElXREcgY291bnRlciBhdCByZWd1bGFyCiAgICAgICAgIGludGVydmFscyBkdXJpbmcgbm9ybWFsIG9wZXJhdGlvbiB0byBwcmV2ZW50IGFuIE1DVSByZXNldCwgdXNpbmcKQEAgLTEwOCwxMCArMTE4LDE1IEBACiAvKiogQGRlZmdyb3VwIElXREdfUHJpdmF0ZV9EZWZpbmVzIElXREcgUHJpdmF0ZSBEZWZpbmVzCiAgICogQHsKICAgKi8KLS8qIFN0YXR1cyByZWdpc3RlciBuZWVkIDUgUkMgTFNJIGRpdmlkZWQgYnkgcHJlc2NhbGVyIGNsb2NrIHRvIGJlIHVwZGF0ZWQuIFdpdGgKLSAgIGhpZ2hlciBwcmVzY2FsZXIgKDI1NiksIGFuZCBhY2NvcmRpbmcgdG8gTFNJIHZhcmlhdGlvbiwgd2UgbmVlZCB0byB3YWl0IGF0Ci0gICBsZWFzdCA2IGN5Y2xlcyBzbyA0OCBtcy4gKi8KLSNkZWZpbmUgSEFMX0lXREdfREVGQVVMVF9USU1FT1VUICAgICAgICAgICAgNDh1CisvKiBTdGF0dXMgcmVnaXN0ZXIgbmVlZHMgdXAgdG8gNSBMU0kgY2xvY2sgcGVyaW9kcyBkaXZpZGVkIGJ5IHRoZSBjbG9jaworICAgcHJlc2NhbGVyIHRvIGJlIHVwZGF0ZWQuIFRoZSBudW1iZXIgb2YgTFNJIGNsb2NrIHBlcmlvZHMgaXMgdXBwZXItcm91bmRlZCB0bworICAgNiBmb3IgdGhlIHRpbWVvdXQgdmFsdWUgY2FsY3VsYXRpb24uCisgICBUaGUgdGltZW91dCB2YWx1ZSBpcyBhbHNvIGNhbGN1bGF0ZWQgdXNpbmcgdGhlIGhpZ2hlc3QgcHJlc2NhbGVyICgyNTYpIGFuZAorICAgdGhlIExTSV9WQUxVRSBjb25zdGFudC4gVGhlIHZhbHVlIG9mIHRoaXMgY29uc3RhbnQgY2FuIGJlIGNoYW5nZWQgYnkgdGhlIHVzZXIKKyAgIHRvIHRha2UgaW50byBhY2NvdW50IHBvc3NpYmxlIExTSSBjbG9jayBwZXJpb2QgdmFyaWF0aW9ucy4KKyAgIFRoZSB0aW1lb3V0IHZhbHVlIGlzIG11bHRpcGxpZWQgYnkgMTAwMCB0byBiZSBjb252ZXJ0ZWQgaW4gbWlsbGlzZWNvbmRzLiAqLworI2RlZmluZSBIQUxfSVdER19ERUZBVUxUX1RJTUVPVVQgICAgICAgICgoNlVMICogMjU2VUwgKiAxMDAwVUwpIC8gTFNJX1ZBTFVFKQorI2RlZmluZSBJV0RHX0tFUk5FTF9VUERBVEVfRkxBR1MgICAgICAgIChJV0RHX1NSX1dWVSB8IElXREdfU1JfUlZVIHwgSVdER19TUl9QVlUpCiAvKioKICAgKiBAfQogICAqLwpAQCAtMTI2LDggKzE0MSw4IEBACiAgICovCiAKIC8qKiBAYWRkdG9ncm91cCBJV0RHX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEKLSAqICBAYnJpZWYgICAgSW5pdGlhbGl6YXRpb24gYW5kIFN0YXJ0IGZ1bmN0aW9ucy4KLSAqCisgICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgU3RhcnQgZnVuY3Rpb25zLgorICAqCiBAdmVyYmF0aW0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgIyMjIyMgSW5pdGlhbGl6YXRpb24gYW5kIFN0YXJ0IGZ1bmN0aW9ucyAjIyMjIwpAQCAtMTgyLDExICsxOTcsMTQgQEAKICAgdGlja3N0YXJ0ID0gSEFMX0dldFRpY2soKTsKIAogICAvKiBXYWl0IGZvciByZWdpc3RlciB0byBiZSB1cGRhdGVkICovCi0gIHdoaWxlIChoaXdkZy0+SW5zdGFuY2UtPlNSICE9IDB4MDB1KQorICB3aGlsZSAoKGhpd2RnLT5JbnN0YW5jZS0+U1IgJiBJV0RHX0tFUk5FTF9VUERBVEVfRkxBR1MpICE9IDB4MDB1KQogICB7CiAgICAgaWYgKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0KSA+IEhBTF9JV0RHX0RFRkFVTFRfVElNRU9VVCkKICAgICB7Ci0gICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CisgICAgICBpZiAoKGhpd2RnLT5JbnN0YW5jZS0+U1IgJiBJV0RHX0tFUk5FTF9VUERBVEVfRkxBR1MpICE9IDB4MDB1KQorICAgICAgeworICAgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CisgICAgICB9CiAgICAgfQogICB9CiAKQEAgLTIwOSwxNCArMjI3LDE1IEBACiAgIHJldHVybiBIQUxfT0s7CiB9CiAKKwogLyoqCiAgICogQH0KICAgKi8KIAogCiAvKiogQGFkZHRvZ3JvdXAgSVdER19FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAyCi0gKiAgQGJyaWVmICAgSU8gb3BlcmF0aW9uIGZ1bmN0aW9ucwotICoKKyAgKiAgQGJyaWVmICAgSU8gb3BlcmF0aW9uIGZ1bmN0aW9ucworICAqCiBAdmVyYmF0aW0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgSU8gb3BlcmF0aW9uIGZ1bmN0aW9ucyAjIyMjIwpAQCAtMjI4LDcgKzI0Nyw2IEBACiAgICogQHsKICAgKi8KIAotCiAvKioKICAgKiBAYnJpZWYgIFJlZnJlc2ggdGhlIElXREcuCiAgICogQHBhcmFtICBoaXdkZyAgcG9pbnRlciB0byBhIElXREdfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwpAQCAtMjQ0LDYgKzI2Miw3IEBACiAgIHJldHVybiBIQUxfT0s7CiB9CiAKKwogLyoqCiAgICogQH0KICAgKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX2pwZWcuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX2pwZWcuYwppbmRleCAyODJkOGY3Li5hYjNiNTQyIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9qcGVnLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfanBlZy5jCkBAIC0yMjMsMTUgKzIyMywxNSBAQAogICAqIEB7CiAgICovCiAKKyNpZmRlZiBIQUxfSlBFR19NT0RVTEVfRU5BQkxFRAorCisjaWYgZGVmaW5lZCAoSlBFRykKKwogLyoqIEBkZWZncm91cCBKUEVHIEpQRUcKICAgKiBAYnJpZWYgSlBFRyBIQUwgbW9kdWxlIGRyaXZlci4KICAgKiBAewogICAqLwogCi0jaWZkZWYgSEFMX0pQRUdfTU9EVUxFX0VOQUJMRUQKLQotI2lmIGRlZmluZWQgKEpQRUcpCi0KIC8qIFByaXZhdGUgZGVmaW5lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiogQGFkZHRvZ3JvdXAgSlBFR19Qcml2YXRlX0NvbnN0YW50cwogICAqIEB7CkBAIC0xMTE2LDcgKzExMTYsMTEgQEAKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9KUEVHX0NvbmZpZ0VuY29kaW5nKEpQRUdfSGFuZGxlVHlwZURlZiAqaGpwZWcsIEpQRUdfQ29uZlR5cGVEZWYgKnBDb25mKQogewogICB1aW50MzJfdCBlcnJvcjsKLSAgdWludDMyX3QgbnVtYmVyTUNVLCBoZmFjdG9yLCB2ZmFjdG9yLCBoTUNVLCB2TUNVOworICB1aW50MzJfdCBudW1iZXJNQ1U7CisgIHVpbnQzMl90IGhmYWN0b3I7CisgIHVpbnQzMl90IHZmYWN0b3I7CisgIHVpbnQzMl90IGhNQ1U7CisgIHVpbnQzMl90IHZNQ1U7CiAKICAgLyogQ2hlY2sgdGhlIEpQRUcgaGFuZGxlIGFsbG9jYXRpb24gKi8KICAgaWYgKChoanBlZyA9PSBOVUxMKSB8fCAocENvbmYgPT0gTlVMTCkpCkBAIC0xMjk2LDEyICsxMzAwLDE0IEBACiAgICogQHBhcmFtICBoanBlZyBwb2ludGVyIHRvIGEgSlBFR19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgSlBFRyBtb2R1bGUKICAgKiBAcGFyYW0gIHBJbmZvIHBvaW50ZXIgdG8gYSBKUEVHX0NvbmZUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCi0gICogICAgICAgICBUaGUgSlBFRyBkZWNvZGVkIGhlYWRlciBpbmZvcm1hdGlvbnMKKyAgKiAgICAgICAgIFRoZSBKUEVHIGRlY29kZWQgaGVhZGVyIGluZm9ybWF0aW9uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfSlBFR19HZXRJbmZvKEpQRUdfSGFuZGxlVHlwZURlZiAqaGpwZWcsIEpQRUdfQ29uZlR5cGVEZWYgKnBJbmZvKQogewotICB1aW50MzJfdCB5YmxvY2tOYiwgY0JibG9ja05iLCBjUmJsb2NrTmI7CisgIHVpbnQzMl90IHlibG9ja05iOworICB1aW50MzJfdCBjQmJsb2NrTmI7CisgIHVpbnQzMl90IGNSYmxvY2tOYjsKIAogICAvKiBDaGVjayB0aGUgSlBFRyBoYW5kbGUgYWxsb2NhdGlvbiAqLwogICBpZiAoKGhqcGVnID09IE5VTEwpIHx8IChwSW5mbyA9PSBOVUxMKSkKQEAgLTIxODUsNyArMjE5MSw4IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfSlBFR19BYm9ydChKUEVHX0hhbmRsZVR5cGVEZWYgKmhqcGVnKQogewotICB1aW50MzJfdCB0aWNrc3RhcnQsIHRtcENvbnRleHQ7CisgIHVpbnQzMl90IHRpY2tzdGFydDsKKyAgdWludDMyX3QgdG1wQ29udGV4dDsKICAgdG1wQ29udGV4dCA9IGhqcGVnLT5Db250ZXh0OwogCiAgIC8qUmVzZXQgdGhlIENvbnRleHQgb3BlcmF0aW9uIGFuZCBtZXRob2QqLwpAQCAtMjMwMSw3ICsyMzA4LDcgQEAKICAgKiBAcGFyYW0gIGhqcGVnIHBvaW50ZXIgdG8gYSBKUEVHX0hhbmRsZVR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKICAgKiAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBKUEVHIG1vZHVsZQogICAqIEBwYXJhbSAgcEluZm8gcG9pbnRlciB0byBhIEpQRUdfQ29uZlR5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKLSAgKiAgICAgICAgIFRoZSBKUEVHIGRlY29kZWQgaGVhZGVyIGluZm9ybWF0aW9ucworICAqICAgICAgICAgVGhlIEpQRUcgZGVjb2RlZCBoZWFkZXIgaW5mb3JtYXRpb24KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KIF9fd2VhayB2b2lkIEhBTF9KUEVHX0luZm9SZWFkeUNhbGxiYWNrKEpQRUdfSGFuZGxlVHlwZURlZiAqaGpwZWcsIEpQRUdfQ29uZlR5cGVEZWYgKnBJbmZvKQpAQCAtMjUxMiwxMiArMjUxOSwxNiBAQAogICAqIEBwYXJhbSAgQml0cyBwb2ludGVyIHRvIGJpdHMgdGFibGUKICAgKiBAcGFyYW0gIEh1ZmZzaXplIHBvaW50ZXIgdG8gc2l6ZXMgdGFibGUKICAgKiBAcGFyYW0gIEh1ZmZjb2RlIHBvaW50ZXIgdG8gY29kZXMgdGFibGUKLSAgKiBAcGFyYW0gIExhc3RLIHBvaW50ZXIgdG8gbGFzdCBDb2VmZiAodGFibGUgZGltbWVuc2lvbikKKyAgKiBAcGFyYW0gIExhc3RLIHBvaW50ZXIgdG8gbGFzdCBDb2VmZiAodGFibGUgZGltZW5zaW9uKQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwogc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIEpQRUdfQml0c19Ub19TaXplQ29kZXModWludDhfdCAqQml0cywgdWludDhfdCAqSHVmZnNpemUsIHVpbnQzMl90ICpIdWZmY29kZSwgdWludDMyX3QgKkxhc3RLKQogewotICB1aW50MzJfdCBpLCBwLCBsLCBjb2RlLCBzaTsKKyAgdWludDMyX3QgaTsKKyAgdWludDMyX3QgcDsKKyAgdWludDMyX3QgbDsKKyAgdWludDMyX3QgY29kZTsKKyAgdWludDMyX3Qgc2k7CiAKICAgLyogRmlndXJlIEMuMTogR2VuZXJhdGlvbiBvZiB0YWJsZSBvZiBIdWZmbWFuIGNvZGUgc2l6ZXMgKi8KICAgcCA9IDA7CkBAIC0yNjgzLDcgKzI2OTQsOSBAQAogewogICBIQUxfU3RhdHVzVHlwZURlZiBlcnJvcjsKICAgSlBFR19EQ19IdWZmQ29kZVRhYmxlVHlwZURlZiBkY1NpemVDb2Rlc1RhYmxlOwotICB1aW50MzJfdCBpLCBsc2IsIG1zYjsKKyAgdWludDMyX3QgaTsKKyAgdWludDMyX3QgbHNiOworICB1aW50MzJfdCBtc2I7CiAgIF9fSU8gdWludDMyX3QgKmFkZHJlc3MsICphZGRyZXNzRGVmOwogCiAgIGlmIChEQ1RhYmxlQWRkcmVzcyA9PSAoaGpwZWctPkluc3RhbmNlLT5IVUZGRU5DX0RDMCkpCkBAIC0zMDQ4LDcgKzMwNjEsMTEgQEAKIHN0YXRpYyB1aW50MzJfdCBKUEVHX1NldF9RdWFudGl6YXRpb25fTWVtKEpQRUdfSGFuZGxlVHlwZURlZiAqaGpwZWcsIHVpbnQ4X3QgKlFUYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0lPIHVpbnQzMl90ICpRVGFibGVBZGRyZXNzKQogewotICB1aW50MzJfdCBpLCBqLCBxdWFudFJvdywgcXVhbnRWYWwsIFNjYWxlRmFjdG9yOworICB1aW50MzJfdCBpOworICB1aW50MzJfdCBqOworICB1aW50MzJfdCBxdWFudFJvdzsKKyAgdWludDMyX3QgcXVhbnRWYWw7CisgIHVpbnQzMl90IFNjYWxlRmFjdG9yOwogICBfX0lPIHVpbnQzMl90ICp0YWJsZUFkZHJlc3M7CiAKICAgdGFibGVBZGRyZXNzID0gUVRhYmxlQWRkcmVzczsKQEAgLTMzMDgsMTIgKzMzMjUsMTIgQEAKIHsKICAgdWludDMyX3QgdG1wQ29udGV4dDsKIAotICAvKkVuZCBvZiBoZWFkZXIgcHJvY2Vzc2luZyBmbGFnIHJpc2VkKi8KKyAgLypFbmQgb2YgaGVhZGVyIHByb2Nlc3NpbmcgZmxhZyAqLwogICBpZiAoKGhqcGVnLT5Db250ZXh0ICYgSlBFR19DT05URVhUX09QRVJBVElPTl9NQVNLKSA9PSBKUEVHX0NPTlRFWFRfREVDT0RFKQogICB7CiAgICAgaWYgKF9fSEFMX0pQRUdfR0VUX0ZMQUcoaGpwZWcsIEpQRUdfRkxBR19IUERGKSAhPSAwVUwpCiAgICAgewotICAgICAgLypDYWxsIEhlYWRlciBwYXJzaW5nIGNvbXBsZXQgY2FsbGJhY2sgKi8KKyAgICAgIC8qQ2FsbCBIZWFkZXIgcGFyc2luZyBjb21wbGV0ZSBjYWxsYmFjayAqLwogICAgICAgKHZvaWQpIEhBTF9KUEVHX0dldEluZm8oaGpwZWcsICZoanBlZy0+Q29uZik7CiAgICAgICAvKiBSZXNldCB0aGUgSW1hZ2VRdWFsaXR5ICovCiAgICAgICBoanBlZy0+Q29uZi5JbWFnZVF1YWxpdHkgPSAwOwpAQCAtMzMzOSwxMyArMzM1NiwxMyBAQAogICB7CiAgICAgaWYgKF9fSEFMX0pQRUdfR0VUX0ZMQUcoaGpwZWcsIEpQRUdfRkxBR19JRlRGKSAhPSAwVUwpCiAgICAgewotICAgICAgLypJbnB1dCBGSUZPIHRocmVzaG9sZCBmbGFnIHJpc2VkKi8KKyAgICAgIC8qSW5wdXQgRklGTyB0aHJlc2hvbGQgZmxhZyAqLwogICAgICAgLypKUEVHX0ZJRk9fVEhfU0laRSB3b3JkcyBjYW4gYmUgd3JpdHRlbiBpbiAqLwogICAgICAgSlBFR19SZWFkSW5wdXREYXRhKGhqcGVnLCBKUEVHX0ZJRk9fVEhfU0laRSk7CiAgICAgfQogICAgIGVsc2UgaWYgKF9fSEFMX0pQRUdfR0VUX0ZMQUcoaGpwZWcsIEpQRUdfRkxBR19JRk5GRikgIT0gMFVMKQogICAgIHsKLSAgICAgIC8qSW5wdXQgRklGTyBOb3QgRnVsbCBmbGFnIHJpc2VkKi8KKyAgICAgIC8qSW5wdXQgRklGTyBOb3QgRnVsbCBmbGFnICovCiAgICAgICAvKjMyLWJpdCB2YWx1ZSBjYW4gYmUgd3JpdHRlbiBpbiAqLwogICAgICAgSlBFR19SZWFkSW5wdXREYXRhKGhqcGVnLCAxKTsKICAgICB9CkBAIC0zMzYxLDEzICszMzc4LDEzIEBACiAgIHsKICAgICBpZiAoX19IQUxfSlBFR19HRVRfRkxBRyhoanBlZywgSlBFR19GTEFHX09GVEYpICE9IDBVTCkKICAgICB7Ci0gICAgICAvKk91dHB1dCBGSUZPIHRocmVzaG9sZCBmbGFnIHJpc2VkKi8KKyAgICAgIC8qT3V0cHV0IEZJRk8gdGhyZXNob2xkIGZsYWcgKi8KICAgICAgIC8qSlBFR19GSUZPX1RIX1NJWkUgd29yZHMgY2FuIGJlIHJlYWQgb3V0ICovCiAgICAgICBKUEVHX1N0b3JlT3V0cHV0RGF0YShoanBlZywgSlBFR19GSUZPX1RIX1NJWkUpOwogICAgIH0KICAgICBlbHNlIGlmIChfX0hBTF9KUEVHX0dFVF9GTEFHKGhqcGVnLCBKUEVHX0ZMQUdfT0ZORUYpICE9IDBVTCkKICAgICB7Ci0gICAgICAvKk91dHB1dCBGSUZPIE5vdCBFbXB0eSBmbGFnIHJpc2VkKi8KKyAgICAgIC8qT3V0cHV0IEZJRk8gTm90IEVtcHR5IGZsYWcgKi8KICAgICAgIC8qMzItYml0IHZhbHVlIGNhbiBiZSByZWFkIG91dCAqLwogICAgICAgSlBFR19TdG9yZU91dHB1dERhdGEoaGpwZWcsIDEpOwogICAgIH0KQEAgLTM0NTIsNyArMzQ2OSwxMCBAQAogICAqLwogc3RhdGljIHZvaWQgSlBFR19TdG9yZU91dHB1dERhdGEoSlBFR19IYW5kbGVUeXBlRGVmICpoanBlZywgdWludDMyX3QgbmJPdXRwdXRXb3JkcykKIHsKLSAgdWludDMyX3QgaW5kZXgsIG5Cd29yZHMsIG5iQnl0ZXMsIGRhdGF3b3JkOworICB1aW50MzJfdCBpbmRleDsKKyAgdWludDMyX3QgbmJfd29yZHM7CisgIHVpbnQzMl90IG5iX2J5dGVzOworICB1aW50MzJfdCBkYXRhd29yZDsKIAogICBpZiAoaGpwZWctPk91dERhdGFMZW5ndGggPj0gKGhqcGVnLT5KcGVnT3V0Q291bnQgKyAobmJPdXRwdXRXb3JkcyAqIDRVTCkpKQogICB7CkBAIC0zNDc5LDggKzM0OTksOCBAQAogICB9CiAgIGVsc2UgaWYgKGhqcGVnLT5PdXREYXRhTGVuZ3RoID4gaGpwZWctPkpwZWdPdXRDb3VudCkKICAgewotICAgIG5Cd29yZHMgPSAoaGpwZWctPk91dERhdGFMZW5ndGggLSBoanBlZy0+SnBlZ091dENvdW50KSAvIDRVTDsKLSAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBuQndvcmRzOyBpbmRleCsrKQorICAgIG5iX3dvcmRzID0gKGhqcGVnLT5PdXREYXRhTGVuZ3RoIC0gaGpwZWctPkpwZWdPdXRDb3VudCkgLyA0VUw7CisgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbmJfd29yZHM7IGluZGV4KyspCiAgICAgewogICAgICAgLypUcmFuc2ZlciAzMiBiaXRzIGZyb20gdGhlIEpQRUcgb3V0cHV0IEZJRk8qLwogICAgICAgZGF0YXdvcmQgPSBoanBlZy0+SW5zdGFuY2UtPkRPUjsKQEAgLTM1MDIsOSArMzUyMiw5IEBACiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICBuYkJ5dGVzID0gaGpwZWctPk91dERhdGFMZW5ndGggLSBoanBlZy0+SnBlZ091dENvdW50OworICAgICAgbmJfYnl0ZXMgPSBoanBlZy0+T3V0RGF0YUxlbmd0aCAtIGhqcGVnLT5KcGVnT3V0Q291bnQ7CiAgICAgICBkYXRhd29yZCA9IGhqcGVnLT5JbnN0YW5jZS0+RE9SOwotICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbmJCeXRlczsgaW5kZXgrKykKKyAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG5iX2J5dGVzOyBpbmRleCsrKQogICAgICAgewogICAgICAgICBoanBlZy0+cEpwZWdPdXRCdWZmUHRyW2hqcGVnLT5KcGVnT3V0Q291bnRdID0gKHVpbnQ4X3QpKChkYXRhd29yZCA+PiAoOFVMICogKGluZGV4ICYgMHgzVUwpKSkgJiAweEZGVUwpOwogICAgICAgICBoanBlZy0+SnBlZ091dENvdW50Kys7CkBAIC0zNTE4LDggKzM1MzgsOCBAQAogCiAgICAgICBoanBlZy0+SnBlZ091dENvdW50ID0gMDsKIAotICAgICAgbmJCeXRlcyA9IDRVTCAtIG5iQnl0ZXM7Ci0gICAgICBmb3IgKGluZGV4ID0gbmJCeXRlczsgaW5kZXggPCA0VUw7IGluZGV4KyspCisgICAgICBuYl9ieXRlcyA9IDRVTCAtIG5iX2J5dGVzOworICAgICAgZm9yIChpbmRleCA9IG5iX2J5dGVzOyBpbmRleCA8IDRVTDsgaW5kZXgrKykKICAgICAgIHsKICAgICAgICAgaGpwZWctPnBKcGVnT3V0QnVmZlB0cltoanBlZy0+SnBlZ091dENvdW50XSA9ICh1aW50OF90KSgoZGF0YXdvcmQgPj4gKDhVTCAqIGluZGV4KSkgJiAweEZGVUwpOwogICAgICAgICBoanBlZy0+SnBlZ091dENvdW50Kys7CkBAIC0zNTQzLDcgKzM1NjMsMTEgQEAKICAgKi8KIHN0YXRpYyB2b2lkIEpQRUdfUmVhZElucHV0RGF0YShKUEVHX0hhbmRsZVR5cGVEZWYgKmhqcGVnLCB1aW50MzJfdCBuYlJlcXVlc3RXb3JkcykKIHsKLSAgdWludDMyX3QgbmJCeXRlcyA9IDAsIG5Cd29yZHMsIGluZGV4LCBEYXRhd29yZCwgaW5wdXRDb3VudDsKKyAgdWludDMyX3QgbmJfYnl0ZXMgPSAwOworICB1aW50MzJfdCBuYl93b3JkczsKKyAgdWludDMyX3QgaW5kZXg7CisgIHVpbnQzMl90IGRhdGF3b3JkOworICB1aW50MzJfdCBpbnB1dF9jb3VudDsKIAogICBpZiAoKGhqcGVnLT5JbkRhdGFMZW5ndGggPT0gMFVMKSB8fCAobmJSZXF1ZXN0V29yZHMgPT0gMFVMKSkKICAgewpAQCAtMzU1Miw3ICszNTc2LDcgQEAKICAgfQogICBlbHNlIGlmIChoanBlZy0+SW5EYXRhTGVuZ3RoID4gaGpwZWctPkpwZWdJbkNvdW50KQogICB7Ci0gICAgbmJCeXRlcyA9IGhqcGVnLT5JbkRhdGFMZW5ndGggLSBoanBlZy0+SnBlZ0luQ291bnQ7CisgICAgbmJfYnl0ZXMgPSBoanBlZy0+SW5EYXRhTGVuZ3RoIC0gaGpwZWctPkpwZWdJbkNvdW50OwogICB9CiAgIGVsc2UgaWYgKGhqcGVnLT5JbkRhdGFMZW5ndGggPT0gaGpwZWctPkpwZWdJbkNvdW50KQogICB7CkBAIC0zNTY4LDM5ICszNTkyLDM5IEBACiAgICAgICBoanBlZy0+SW5EYXRhTGVuZ3RoID0gaGpwZWctPkluRGF0YUxlbmd0aCAtIChoanBlZy0+SW5EYXRhTGVuZ3RoICUgNFVMKTsKICAgICB9CiAgICAgaGpwZWctPkpwZWdJbkNvdW50ID0gMDsKLSAgICBuYkJ5dGVzID0gaGpwZWctPkluRGF0YUxlbmd0aDsKKyAgICBuYl9ieXRlcyA9IGhqcGVnLT5JbkRhdGFMZW5ndGg7CiAgIH0KICAgZWxzZQogICB7CiAgICAgLyogTm90aGluZyB0byBkbyAqLwogICB9Ci0gIGlmICgoKGhqcGVnLT5Db250ZXh0ICYgIEpQRUdfQ09OVEVYVF9QQVVTRV9JTlBVVCkgPT0gMFVMKSAmJiAobmJCeXRlcyA+IDBVTCkpCisgIGlmICgoKGhqcGVnLT5Db250ZXh0ICYgIEpQRUdfQ09OVEVYVF9QQVVTRV9JTlBVVCkgPT0gMFVMKSAmJiAobmJfYnl0ZXMgPiAwVUwpKQogICB7Ci0gICAgbkJ3b3JkcyA9IG5iQnl0ZXMgLyA0VUw7Ci0gICAgaWYgKG5Cd29yZHMgPj0gbmJSZXF1ZXN0V29yZHMpCisgICAgbmJfd29yZHMgPSBuYl9ieXRlcyAvIDRVTDsKKyAgICBpZiAobmJfd29yZHMgPj0gbmJSZXF1ZXN0V29yZHMpCiAgICAgewogICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbmJSZXF1ZXN0V29yZHM7IGluZGV4KyspCiAgICAgICB7Ci0gICAgICAgIGlucHV0Q291bnQgPSBoanBlZy0+SnBlZ0luQ291bnQ7Ci0gICAgICAgIGhqcGVnLT5JbnN0YW5jZS0+RElSID0gKCgodWludDMyX3QpKGhqcGVnLT5wSnBlZ0luQnVmZlB0cltpbnB1dENvdW50XSkpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50MzJfdCkoaGpwZWctPnBKcGVnSW5CdWZmUHRyW2lucHV0Q291bnQgKyAxVUxdKSkgPDwgOCkgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQzMl90KShoanBlZy0+cEpwZWdJbkJ1ZmZQdHJbaW5wdXRDb3VudCArIDJVTF0pKSA8PCAxNikgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQzMl90KShoanBlZy0+cEpwZWdJbkJ1ZmZQdHJbaW5wdXRDb3VudCArIDNVTF0pKSA8PCAyNCkpOworICAgICAgICBpbnB1dF9jb3VudCA9IGhqcGVnLT5KcGVnSW5Db3VudDsKKyAgICAgICAgaGpwZWctPkluc3RhbmNlLT5ESVIgPSAoKCh1aW50MzJfdCkoaGpwZWctPnBKcGVnSW5CdWZmUHRyW2lucHV0X2NvdW50XSkpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50MzJfdCkoaGpwZWctPnBKcGVnSW5CdWZmUHRyW2lucHV0X2NvdW50ICsgMVVMXSkpIDw8IDgpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50MzJfdCkoaGpwZWctPnBKcGVnSW5CdWZmUHRyW2lucHV0X2NvdW50ICsgMlVMXSkpIDw8IDE2KSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgodWludDMyX3QpKGhqcGVnLT5wSnBlZ0luQnVmZlB0cltpbnB1dF9jb3VudCArIDNVTF0pKSA8PCAyNCkpOwogCiAgICAgICAgIGhqcGVnLT5KcGVnSW5Db3VudCArPSA0VUw7CiAgICAgICB9CiAgICAgfQotICAgIGVsc2UgLypuQndvcmRzIDwgbmJSZXF1ZXN0V29yZHMqLworICAgIGVsc2UgLypuYl93b3JkcyA8IG5iUmVxdWVzdFdvcmRzKi8KICAgICB7Ci0gICAgICBpZiAobkJ3b3JkcyA+IDBVTCkKKyAgICAgIGlmIChuYl93b3JkcyA+IDBVTCkKICAgICAgIHsKLSAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbkJ3b3JkczsgaW5kZXgrKykKKyAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbmJfd29yZHM7IGluZGV4KyspCiAgICAgICAgIHsKLSAgICAgICAgICBpbnB1dENvdW50ID0gaGpwZWctPkpwZWdJbkNvdW50OwotICAgICAgICAgIGhqcGVnLT5JbnN0YW5jZS0+RElSID0gKCgodWludDMyX3QpKGhqcGVnLT5wSnBlZ0luQnVmZlB0cltpbnB1dENvdW50XSkpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQzMl90KShoanBlZy0+cEpwZWdJbkJ1ZmZQdHJbaW5wdXRDb3VudCArIDFVTF0pKSA8PCA4KSB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50MzJfdCkoaGpwZWctPnBKcGVnSW5CdWZmUHRyW2lucHV0Q291bnQgKyAyVUxdKSkgPDwgMTYpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQzMl90KShoanBlZy0+cEpwZWdJbkJ1ZmZQdHJbaW5wdXRDb3VudCArIDNVTF0pKSA8PCAyNCkpOworICAgICAgICAgIGlucHV0X2NvdW50ID0gaGpwZWctPkpwZWdJbkNvdW50OworICAgICAgICAgIGhqcGVnLT5JbnN0YW5jZS0+RElSID0gKCgodWludDMyX3QpKGhqcGVnLT5wSnBlZ0luQnVmZlB0cltpbnB1dF9jb3VudF0pKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50MzJfdCkoaGpwZWctPnBKcGVnSW5CdWZmUHRyW2lucHV0X2NvdW50ICsgMVVMXSkpIDw8IDgpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQzMl90KShoanBlZy0+cEpwZWdJbkJ1ZmZQdHJbaW5wdXRfY291bnQgKyAyVUxdKSkgPDwgMTYpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQzMl90KShoanBlZy0+cEpwZWdJbkJ1ZmZQdHJbaW5wdXRfY291bnQgKyAzVUxdKSkgPDwgMjQpKTsKIAogICAgICAgICAgIGhqcGVnLT5KcGVnSW5Db3VudCArPSA0VUw7CiAgICAgICAgIH0KQEAgLTM2MDgsMTMgKzM2MzIsMTMgQEAKICAgICAgIGVsc2UKICAgICAgIHsKICAgICAgICAgLyogZW5kIG9mIGZpbGUqLwotICAgICAgICBEYXRhd29yZCA9IDA7Ci0gICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG5iQnl0ZXM7IGluZGV4KyspCisgICAgICAgIGRhdGF3b3JkID0gMDsKKyAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbmJfYnl0ZXM7IGluZGV4KyspCiAgICAgICAgIHsKLSAgICAgICAgICBEYXRhd29yZCB8PSAodWludDMyX3QpaGpwZWctPnBKcGVnSW5CdWZmUHRyW2hqcGVnLT5KcGVnSW5Db3VudF0gPDwgKDhVTCAqIChpbmRleCAmIDB4MDNVTCkpOworICAgICAgICAgIGRhdGF3b3JkIHw9ICh1aW50MzJfdCloanBlZy0+cEpwZWdJbkJ1ZmZQdHJbaGpwZWctPkpwZWdJbkNvdW50XSA8PCAoOFVMICogKGluZGV4ICYgMHgwM1VMKSk7CiAgICAgICAgICAgaGpwZWctPkpwZWdJbkNvdW50Kys7CiAgICAgICAgIH0KLSAgICAgICAgaGpwZWctPkluc3RhbmNlLT5ESVIgPSBEYXRhd29yZDsKKyAgICAgICAgaGpwZWctPkluc3RhbmNlLT5ESVIgPSBkYXRhd29yZDsKICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTM2NTAsMTAgKzM2NzQsMTAgQEAKICAgLyogU2V0IHRoZSBETUEgT3V0IEFib3J0IGNhbGxiYWNrICovCiAgIGhqcGVnLT5oZG1hb3V0LT5YZmVyQWJvcnRDYWxsYmFjayA9IEpQRUdfRE1BT3V0QWJvcnRDYWxsYmFjazsKIAotICAvKkRNQSB0cmFuc2ZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0IGJ5dGVzIGkuZSBtdXRsaXBsZSBvZiAzMmJpdHMgd29yZHMqLworICAvKkRNQSB0cmFuc2ZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0IGJ5dGVzIGkuZSBtdWx0aXBsZSBvZiAzMmJpdHMgd29yZHMqLwogICBoanBlZy0+SW5EYXRhTGVuZ3RoID0gaGpwZWctPkluRGF0YUxlbmd0aCAtIChoanBlZy0+SW5EYXRhTGVuZ3RoICUgNFVMKTsKIAotICAvKkRNQSB0cmFuc2ZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0IGJ5dGVzIGkuZSBtdXRsaXBsZSBvZiAzMmJpdHMgd29yZHMqLworICAvKkRNQSB0cmFuc2ZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0IGJ5dGVzIGkuZSBtdWx0aXBsZSBvZiAzMmJpdHMgd29yZHMqLwogICBoanBlZy0+T3V0RGF0YUxlbmd0aCA9IGhqcGVnLT5PdXREYXRhTGVuZ3RoIC0gKGhqcGVnLT5PdXREYXRhTGVuZ3RoICUgNFVMKTsKIAogICAvKiBTdGFydCBETUEgRklGTyBJbiB0cmFuc2ZlciAqLwpAQCAtMzc5MSw3ICszODE1LDcgQEAKICAgICBoanBlZy0+SW5zdGFuY2UtPkNPTkZSMCAmPSAgfkpQRUdfQ09ORlIwX1NUQVJUOwogCiAgICAgdG1wQ29udGV4dCA9IGhqcGVnLT5Db250ZXh0OwotICAgIC8qQ2xlYXIgYWxsIGNvbnRleHQgZmlsZWRzIGV4ZWNwdCBKUEVHX0NPTlRFWFRfQ09ORl9FTkNPRElORyBhbmQgSlBFR19DT05URVhUX0NVU1RPTV9UQUJMRVMqLworICAgIC8qQ2xlYXIgYWxsIGNvbnRleHQgZmllbGRzIGV4ZWNwdCBKUEVHX0NPTlRFWFRfQ09ORl9FTkNPRElORyBhbmQgSlBFR19DT05URVhUX0NVU1RPTV9UQUJMRVMqLwogICAgIGhqcGVnLT5Db250ZXh0ICY9IChKUEVHX0NPTlRFWFRfQ09ORl9FTkNPRElORyB8IEpQRUdfQ09OVEVYVF9DVVNUT01fVEFCTEVTKTsKIAogICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KQEAgLTM4MzcsNyArMzg2MSw5IEBACiAgICovCiBzdGF0aWMgdm9pZCBKUEVHX0RNQV9Qb2xsUmVzaWR1YWxEYXRhKEpQRUdfSGFuZGxlVHlwZURlZiAqaGpwZWcpCiB7Ci0gIHVpbnQzMl90IHRtcENvbnRleHQsIGNvdW50LCBkYXRhT3V0OworICB1aW50MzJfdCB0bXBDb250ZXh0OworICB1aW50MzJfdCBjb3VudDsKKyAgdWludDMyX3QgZGF0YU91dDsKIAogICBmb3IgKGNvdW50ID0gSlBFR19GSUZPX1NJWkU7IGNvdW50ID4gMFVMOyBjb3VudC0tKQogICB7CkBAIC0zODg4LDcgKzM5MTQsNyBAQAogICAgIH0KIAogICAgIHRtcENvbnRleHQgPSBoanBlZy0+Q29udGV4dDsKLSAgICAvKkNsZWFyIGFsbCBjb250ZXh0IGZpbGVkcyBleGVjcHQgSlBFR19DT05URVhUX0NPTkZfRU5DT0RJTkcgYW5kIEpQRUdfQ09OVEVYVF9DVVNUT01fVEFCTEVTKi8KKyAgICAvKkNsZWFyIGFsbCBjb250ZXh0IGZpZWxkcyBleGVjcHQgSlBFR19DT05URVhUX0NPTkZfRU5DT0RJTkcgYW5kIEpQRUdfQ09OVEVYVF9DVVNUT01fVEFCTEVTKi8KICAgICBoanBlZy0+Q29udGV4dCAmPSAoSlBFR19DT05URVhUX0NPTkZfRU5DT0RJTkcgfCBKUEVHX0NPTlRFWFRfQ1VTVE9NX1RBQkxFUyk7CiAKICAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCkBAIC00MTI3LDExICs0MTUzLDEyIEBACiAgICogQH0KICAgKi8KIAotI2VuZGlmIC8qIEpQRUcgKi8KLSNlbmRpZiAvKiBIQUxfSlBFR19NT0RVTEVfRU5BQkxFRCAqLwogLyoqCiAgICogQH0KICAgKi8KKyNlbmRpZiAvKiBKUEVHICovCisjZW5kaWYgLyogSEFMX0pQRUdfTU9EVUxFX0VOQUJMRUQgKi8KKwogCiAvKioKICAgKiBAfQpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfbHB0aW0uYyBiL1NyYy9zdG0zMmY3eHhfaGFsX2xwdGltLmMKaW5kZXggMDlmZWQ5YS4uYTI5ZTFlYyAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfbHB0aW0uYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9scHRpbS5jCkBAIC0xOTQsOCArMTk0LDggQEAKICAgKi8KIAogLyoqIEBkZWZncm91cCBMUFRJTV9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAxIEluaXRpYWxpemF0aW9uL2RlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucwotICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMuCi0gKgorICAqICBAYnJpZWYgICAgSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24gZnVuY3Rpb25zLgorICAqCiBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICMjIyMjIEluaXRpYWxpemF0aW9uIGFuZCBkZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgIyMjIyMKQEAgLTIzMiwxOSArMjMyLDE3IEBACiAKICAgYXNzZXJ0X3BhcmFtKElTX0xQVElNX0NMT0NLX1NPVVJDRShobHB0aW0tPkluaXQuQ2xvY2suU291cmNlKSk7CiAgIGFzc2VydF9wYXJhbShJU19MUFRJTV9DTE9DS19QUkVTQ0FMRVIoaGxwdGltLT5Jbml0LkNsb2NrLlByZXNjYWxlcikpOwotICBpZiAoaGxwdGltLT5Jbml0LkNsb2NrLlNvdXJjZSA9PSBMUFRJTV9DTE9DS1NPVVJDRV9VTFBUSU0pCisgIGlmICgoaGxwdGltLT5Jbml0LkNsb2NrLlNvdXJjZSA9PSBMUFRJTV9DTE9DS1NPVVJDRV9VTFBUSU0pIAorICAgfHwgKGhscHRpbS0+SW5pdC5Db3VudGVyU291cmNlID09IExQVElNX0NPVU5URVJTT1VSQ0VfRVhURVJOQUwpKQogICB7CiAgICAgYXNzZXJ0X3BhcmFtKElTX0xQVElNX0NMT0NLX1BPTEFSSVRZKGhscHRpbS0+SW5pdC5VbHRyYUxvd1Bvd2VyQ2xvY2suUG9sYXJpdHkpKTsKKyAgICBhc3NlcnRfcGFyYW0oSVNfTFBUSU1fQ0xPQ0tfU0FNUExFX1RJTUUoaGxwdGltLT5Jbml0LlVsdHJhTG93UG93ZXJDbG9jay5TYW1wbGVUaW1lKSk7CiAgIH0KICAgYXNzZXJ0X3BhcmFtKElTX0xQVElNX1RSR19TT1VSQ0UoaGxwdGltLT5Jbml0LlRyaWdnZXIuU291cmNlKSk7CiAgIGlmIChobHB0aW0tPkluaXQuVHJpZ2dlci5Tb3VyY2UgIT0gTFBUSU1fVFJJR1NPVVJDRV9TT0ZUV0FSRSkKICAgewogICAgIGFzc2VydF9wYXJhbShJU19MUFRJTV9FWFRfVFJHX1BPTEFSSVRZKGhscHRpbS0+SW5pdC5UcmlnZ2VyLkFjdGl2ZUVkZ2UpKTsKLSAgfQotICBpZiAoaGxwdGltLT5Jbml0LkNsb2NrLlNvdXJjZSA9PSBMUFRJTV9DTE9DS1NPVVJDRV9BUEJDTE9DS19MUE9TQykKLSAgewogICAgIGFzc2VydF9wYXJhbShJU19MUFRJTV9UUklHX1NBTVBMRV9USU1FKGhscHRpbS0+SW5pdC5UcmlnZ2VyLlNhbXBsZVRpbWUpKTsKLSAgICBhc3NlcnRfcGFyYW0oSVNfTFBUSU1fQ0xPQ0tfU0FNUExFX1RJTUUoaGxwdGltLT5Jbml0LlVsdHJhTG93UG93ZXJDbG9jay5TYW1wbGVUaW1lKSk7CiAgIH0KICAgYXNzZXJ0X3BhcmFtKElTX0xQVElNX09VVFBVVF9QT0xBUklUWShobHB0aW0tPkluaXQuT3V0cHV0UG9sYXJpdHkpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0xQVElNX1VQREFURV9NT0RFKGhscHRpbS0+SW5pdC5VcGRhdGVNb2RlKSk7CkBAIC0yNzgsMjEgKzI3NiwxOCBAQAogICAvKiBHZXQgdGhlIExQVElNeCBDRkdSIHZhbHVlICovCiAgIHRtcGNmZ3IgPSBobHB0aW0tPkluc3RhbmNlLT5DRkdSOwogCi0gIGlmIChobHB0aW0tPkluaXQuQ2xvY2suU291cmNlID09IExQVElNX0NMT0NLU09VUkNFX1VMUFRJTSkKKyAgaWYgKChobHB0aW0tPkluaXQuQ2xvY2suU291cmNlID09IExQVElNX0NMT0NLU09VUkNFX1VMUFRJTSkgCisgICB8fCAoaGxwdGltLT5Jbml0LkNvdW50ZXJTb3VyY2UgPT0gTFBUSU1fQ09VTlRFUlNPVVJDRV9FWFRFUk5BTCkpCiAgIHsKLSAgICB0bXBjZmdyICY9ICh1aW50MzJfdCkofihMUFRJTV9DRkdSX0NLUE9MKSk7CisgICAgdG1wY2ZnciAmPSAodWludDMyX3QpKH4oTFBUSU1fQ0ZHUl9DS1BPTCB8IExQVElNX0NGR1JfQ0tGTFQpKTsKICAgfQogICBpZiAoaGxwdGltLT5Jbml0LlRyaWdnZXIuU291cmNlICE9IExQVElNX1RSSUdTT1VSQ0VfU09GVFdBUkUpCiAgIHsKLSAgICB0bXBjZmdyICY9ICh1aW50MzJfdCkofihMUFRJTV9DRkdSX1RSSUdTRUwpKTsKLSAgfQotICBpZiAoaGxwdGltLT5Jbml0LkNsb2NrLlNvdXJjZSA9PSBMUFRJTV9DTE9DS1NPVVJDRV9BUEJDTE9DS19MUE9TQykKLSAgewotICAgIHRtcGNmZ3IgJj0gKHVpbnQzMl90KSh+KExQVElNX0NGR1JfVFJHRkxUIHwgTFBUSU1fQ0ZHUl9DS0ZMVCkpOworICAgIHRtcGNmZ3IgJj0gKHVpbnQzMl90KSh+KExQVElNX0NGR1JfVFJHRkxUIHwgTFBUSU1fQ0ZHUl9UUklHU0VMKSk7CiAgIH0KIAotICAvKiBDbGVhciBDS1NFTCwgQ0tQT0wsIFBSRVNDLCBUUklHRU4sIFRSR0ZMVCwgV0FWUE9MLCBQUkVMT0FEICYgQ09VTlRNT0RFIGJpdHMgKi8KLSAgdG1wY2ZnciAmPSAodWludDMyX3QpKH4oTFBUSU1fQ0ZHUl9DS1NFTCB8IExQVElNX0NGR1JfQ0tQT0wgfCBMUFRJTV9DRkdSX1RSSUdFTiB8IExQVElNX0NGR1JfUFJFTE9BRCB8CisgIC8qIENsZWFyIENLU0VMLCBQUkVTQywgVFJJR0VOLCBUUkdGTFQsIFdBVlBPTCwgUFJFTE9BRCAmIENPVU5UTU9ERSBiaXRzICovCisgIHRtcGNmZ3IgJj0gKHVpbnQzMl90KSh+KExQVElNX0NGR1JfQ0tTRUwgfCBMUFRJTV9DRkdSX1RSSUdFTiB8IExQVElNX0NGR1JfUFJFTE9BRCB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgIExQVElNX0NGR1JfV0FWUE9MIHwgTFBUSU1fQ0ZHUl9QUkVTQyB8IExQVElNX0NGR1JfQ09VTlRNT0RFKSk7CiAKICAgLyogU2V0IGluaXRpYWxpemF0aW9uIHBhcmFtZXRlcnMgKi8KQEAgLTMxMSwxOSArMzA2LDIxIEBACiAgICAgICAgICAgICAgICAgaGxwdGltLT5Jbml0LlVsdHJhTG93UG93ZXJDbG9jay5TYW1wbGVUaW1lKTsKICAgfQogCi0gIC8qIENvbmZpZ3VyZSB0aGUgYWN0aXZlIGVkZ2Ugb3IgZWRnZXMgdXNlZCBieSB0aGUgY291bnRlciBvbmx5IGlmIExQVElNIGlzCi0gICAqIGNsb2NrZWQgYnkgYW4gZXh0ZXJuYWwgY2xvY2sgc291cmNlCi0gICAqLwotICBpZiAoaGxwdGltLT5Jbml0LkNsb2NrLlNvdXJjZSA9PSBMUFRJTV9DTE9DS1NPVVJDRV9VTFBUSU0pCisgIC8qIENvbmZpZ3VyZSBMUFRJTSBleHRlcm5hbCBjbG9jayBwb2xhcml0eSBhbmQgZGlnaXRhbCBmaWx0ZXIgKi8KKyAgaWYgKChobHB0aW0tPkluaXQuQ2xvY2suU291cmNlID09IExQVElNX0NMT0NLU09VUkNFX1VMUFRJTSkgCisgICB8fCAoaGxwdGltLT5Jbml0LkNvdW50ZXJTb3VyY2UgPT0gTFBUSU1fQ09VTlRFUlNPVVJDRV9FWFRFUk5BTCkpCiAgIHsKLSAgICB0bXBjZmdyIHw9IChobHB0aW0tPkluaXQuVWx0cmFMb3dQb3dlckNsb2NrLlBvbGFyaXR5KTsKKyAgICB0bXBjZmdyIHw9IChobHB0aW0tPkluaXQuVWx0cmFMb3dQb3dlckNsb2NrLlBvbGFyaXR5IHwKKyAgICAgICAgICAgICAgICBobHB0aW0tPkluaXQuVWx0cmFMb3dQb3dlckNsb2NrLlNhbXBsZVRpbWUpOwogICB9CiAKKyAgLyogQ29uZmlndXJlIExQVElNIGV4dGVybmFsIHRyaWdnZXIgKi8KICAgaWYgKGhscHRpbS0+SW5pdC5UcmlnZ2VyLlNvdXJjZSAhPSBMUFRJTV9UUklHU09VUkNFX1NPRlRXQVJFKQogICB7CiAgICAgLyogRW5hYmxlIEV4dGVybmFsIHRyaWdnZXIgYW5kIHNldCB0aGUgdHJpZ2dlciBzb3VyY2UgKi8KLSAgICB0bXBjZmdyIHw9IChobHB0aW0tPkluaXQuVHJpZ2dlci5Tb3VyY2UgfAotICAgICAgICAgICAgICAgIGhscHRpbS0+SW5pdC5UcmlnZ2VyLkFjdGl2ZUVkZ2UpOworICAgIHRtcGNmZ3IgfD0gKGhscHRpbS0+SW5pdC5UcmlnZ2VyLlNvdXJjZSAgICAgfAorICAgICAgICAgICAgICAgIGhscHRpbS0+SW5pdC5UcmlnZ2VyLkFjdGl2ZUVkZ2UgfAorICAgICAgICAgICAgICAgIGhscHRpbS0+SW5pdC5UcmlnZ2VyLlNhbXBsZVRpbWUpOwogICB9CiAKICAgLyogV3JpdGUgdG8gTFBUSU14IENGR1IgKi8KQEAgLTQxOCw4ICs0MTUsOCBAQAogICAqLwogCiAvKiogQGRlZmdyb3VwIExQVElNX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDIgTFBUSU0gU3RhcnQtU3RvcCBvcGVyYXRpb24gZnVuY3Rpb25zCi0gKiAgQGJyaWVmICAgU3RhcnQtU3RvcCBvcGVyYXRpb24gZnVuY3Rpb25zLgotICoKKyAgKiAgQGJyaWVmICAgU3RhcnQtU3RvcCBvcGVyYXRpb24gZnVuY3Rpb25zLgorICAqCiBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgIyMjIyMgTFBUSU0gU3RhcnQgU3RvcCBvcGVyYXRpb24gZnVuY3Rpb25zICMjIyMjCkBAIC0xNTQ4LDcgKzE1NDUsOCBAQAogICBobHB0aW0tPlN0YXRlID0gSEFMX0xQVElNX1NUQVRFX0JVU1k7CiAKICAgLyogSWYgY2xvY2sgc291cmNlIGlzIG5vdCBVTFBUSU0gY2xvY2sgYW5kIGNvdW50ZXIgc291cmNlIGlzIGV4dGVybmFsLCB0aGVuIGl0IG11c3Qgbm90IGJlIHByZXNjYWxlZCAqLwotICBpZiAoKGhscHRpbS0+SW5pdC5DbG9jay5Tb3VyY2UgIT0gTFBUSU1fQ0xPQ0tTT1VSQ0VfVUxQVElNKSAmJiAoaGxwdGltLT5Jbml0LkNvdW50ZXJTb3VyY2UgPT0gTFBUSU1fQ09VTlRFUlNPVVJDRV9FWFRFUk5BTCkpCisgIGlmICgoaGxwdGltLT5Jbml0LkNsb2NrLlNvdXJjZSAhPSBMUFRJTV9DTE9DS1NPVVJDRV9VTFBUSU0pCisgICAgICAmJiAoaGxwdGltLT5Jbml0LkNvdW50ZXJTb3VyY2UgPT0gTFBUSU1fQ09VTlRFUlNPVVJDRV9FWFRFUk5BTCkpCiAgIHsKICAgICAvKiBDaGVjayBpZiBjbG9jayBpcyBwcmVzY2FsZWQgKi8KICAgICBhc3NlcnRfcGFyYW0oSVNfTFBUSU1fQ0xPQ0tfUFJFU0NBTEVSRElWMShobHB0aW0tPkluaXQuQ2xvY2suUHJlc2NhbGVyKSk7CkBAIC0xNjMxLDcgKzE2MjksOCBAQAogICBfX0hBTF9MUFRJTV9XQUtFVVBUSU1FUl9FWFRJX0VOQUJMRV9SSVNJTkdfRURHRSgpOwogCiAgIC8qIElmIGNsb2NrIHNvdXJjZSBpcyBub3QgVUxQVElNIGNsb2NrIGFuZCBjb3VudGVyIHNvdXJjZSBpcyBleHRlcm5hbCwgdGhlbiBpdCBtdXN0IG5vdCBiZSBwcmVzY2FsZWQgKi8KLSAgaWYgKChobHB0aW0tPkluaXQuQ2xvY2suU291cmNlICE9IExQVElNX0NMT0NLU09VUkNFX1VMUFRJTSkgJiYgKGhscHRpbS0+SW5pdC5Db3VudGVyU291cmNlID09IExQVElNX0NPVU5URVJTT1VSQ0VfRVhURVJOQUwpKQorICBpZiAoKGhscHRpbS0+SW5pdC5DbG9jay5Tb3VyY2UgIT0gTFBUSU1fQ0xPQ0tTT1VSQ0VfVUxQVElNKQorICAgICAgJiYgKGhscHRpbS0+SW5pdC5Db3VudGVyU291cmNlID09IExQVElNX0NPVU5URVJTT1VSQ0VfRVhURVJOQUwpKQogICB7CiAgICAgLyogQ2hlY2sgaWYgY2xvY2sgaXMgcHJlc2NhbGVkICovCiAgICAgYXNzZXJ0X3BhcmFtKElTX0xQVElNX0NMT0NLX1BSRVNDQUxFUkRJVjEoaGxwdGltLT5Jbml0LkNsb2NrLlByZXNjYWxlcikpOwpAQCAtMTcyNCw4ICsxNzIzLDggQEAKICAgKi8KIAogLyoqIEBkZWZncm91cCBMUFRJTV9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAzIExQVElNIFJlYWQgb3BlcmF0aW9uIGZ1bmN0aW9ucwotICogIEBicmllZiAgUmVhZCBvcGVyYXRpb24gZnVuY3Rpb25zLgotICoKKyAgKiAgQGJyaWVmICBSZWFkIG9wZXJhdGlvbiBmdW5jdGlvbnMuCisgICoKIEB2ZXJiYXRpbQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICMjIyMjIExQVElNIFJlYWQgb3BlcmF0aW9uIGZ1bmN0aW9ucyAjIyMjIwpAQCAtMTc4Miw4ICsxNzgxLDggQEAKICAgKi8KIAogLyoqIEBkZWZncm91cCBMUFRJTV9FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXA0IExQVElNIElSUSBoYW5kbGVyIGFuZCBjYWxsYmFja3MKLSAqICBAYnJpZWYgIExQVElNICBJUlEgaGFuZGxlci4KLSAqCisgICogIEBicmllZiAgTFBUSU0gIElSUSBoYW5kbGVyLgorICAqCiBAdmVyYmF0aW0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgTFBUSU0gSVJRIGhhbmRsZXIgYW5kIGNhbGxiYWNrcyAgIyMjIyMKQEAgLTIyNTEsOCArMjI1MCw4IEBACiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgTFBUSU1fR3JvdXA1IFBlcmlwaGVyYWwgU3RhdGUgZnVuY3Rpb25zCi0gKiAgQGJyaWVmICAgUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMuCi0gKgorICAqICBAYnJpZWYgICBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucy4KKyAgKgogQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICMjIyMjIFBlcmlwaGVyYWwgU3RhdGUgZnVuY3Rpb25zICMjIyMjCkBAIC0yMzI3LDggKzIzMjYsNyBAQAogICAgIHsKICAgICAgIHJlc3VsdCA9IEhBTF9USU1FT1VUOwogICAgIH0KLSAgfQotICB3aGlsZSAoKCEoX19IQUxfTFBUSU1fR0VUX0ZMQUcoKGhscHRpbSksIChmbGFnKSkpKSAmJiAoY291bnQgIT0gMFVMKSk7CisgIH0gd2hpbGUgKCghKF9fSEFMX0xQVElNX0dFVF9GTEFHKChobHB0aW0pLCAoZmxhZykpKSkgJiYgKGNvdW50ICE9IDBVTCkpOwogCiAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9tZGlvcy5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfbWRpb3MuYwppbmRleCA3YjVlNWE2Li5iMmNhYWIwIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9tZGlvcy5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX21kaW9zLmMKQEAgLTU0LDggKzU0LDggQEAKICAgICAgICAtQEAtIEhBTF9NRElPU19JUlFIYW5kbGVyKCkgbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgTURJT1MgSVJRIEhhbmRsZXIsIHRvIGhhbmRsZSB0aGUgaW50ZXJydXB0CiAgICAgICAgICAgICBhbmQgZXhlY3V0ZSB0aGUgcHJldmlvdXMgY2FsbGJhY2tzCiAgICAKLSAgICAoIykgUmVzZXQgdGhlIE1ESU9TIHBlcmlwaGVyYWwgYW5kIGFsbCByZWxhdGVkIHJlc3NvdXJjZXMgYnkgY2FsbGluZyB0aGUgSEFMX01ESU9TX0RlSW5pdCgpIEFQSS4KLSAgICAgICAgKCMjKSBIQUxfTURJT1NfTXNwRGVJbml0KCkgbXVzdCBiZSBpbXBsZW1lbnRlZCB0byByZXNldCBsb3cgbGV2ZWwgcmVzc291cmNlcyAKKyAgICAoIykgUmVzZXQgdGhlIE1ESU9TIHBlcmlwaGVyYWwgYW5kIGFsbCByZWxhdGVkIHJlc291cmNlcyBieSBjYWxsaW5nIHRoZSBIQUxfTURJT1NfRGVJbml0KCkgQVBJLgorICAgICAgICAoIyMpIEhBTF9NRElPU19Nc3BEZUluaXQoKSBtdXN0IGJlIGltcGxlbWVudGVkIHRvIHJlc2V0IGxvdyBsZXZlbCByZXNvdXJjZXMgCiAgICAgICAgICAgICAoR1BJTywgQ2xvY2tzLCBOVklDIGNvbmZpZ3VyYXRpb24gLi4uKQogCiAgICoqKiBDYWxsYmFjayByZWdpc3RyYXRpb24gKioqCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9tbWMuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX21tYy5jCmluZGV4IDE1NTAwMTkuLjU3MDU4ZjEgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX21tYy5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX21tYy5jCkBAIC0yODcsNiArMjg3LDcgQEAKIHN0YXRpYyB1aW50MzJfdCBNTUNfSW5pdENhcmQoTU1DX0hhbmRsZVR5cGVEZWYgKmhtbWMpOwogc3RhdGljIHVpbnQzMl90IE1NQ19Qb3dlck9OKE1NQ19IYW5kbGVUeXBlRGVmICpobW1jKTsKIHN0YXRpYyB1aW50MzJfdCBNTUNfU2VuZFN0YXR1cyhNTUNfSGFuZGxlVHlwZURlZiAqaG1tYywgdWludDMyX3QgKnBDYXJkU3RhdHVzKTsKK3N0YXRpYyB1aW50MzJfdCBNTUNfUmVhZEV4dENTRChNTUNfSGFuZGxlVHlwZURlZiAqaG1tYywgdWludDMyX3QgKnBGaWVsZERhdGEsIHVpbnQxNl90IEZpZWxkSW5kZXgsIHVpbnQzMl90IFRpbWVvdXQpOwogc3RhdGljIHZvaWQgICAgIE1NQ19Qb3dlck9GRihNTUNfSGFuZGxlVHlwZURlZiAqaG1tYyk7CiBzdGF0aWMgdm9pZCAgICAgTU1DX1dyaXRlX0lUKE1NQ19IYW5kbGVUeXBlRGVmICpobW1jKTsKIHN0YXRpYyB2b2lkICAgICBNTUNfUmVhZF9JVChNTUNfSGFuZGxlVHlwZURlZiAqaG1tYyk7CkBAIC00NDQsNiArNDQ1LDE3IEBACiAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQogCisgIC8qIFNldCBCbG9jayBTaXplIGZvciBDYXJkICovCisgIGVycm9yc3RhdGUgPSBTRE1NQ19DbWRCbG9ja0xlbmd0aChobW1jLT5JbnN0YW5jZSwgTU1DX0JMT0NLU0laRSk7CisgIGlmKGVycm9yc3RhdGUgIT0gSEFMX01NQ19FUlJPUl9OT05FKQorICB7CisgICAgLyogQ2xlYXIgYWxsIHRoZSBzdGF0aWMgZmxhZ3MgKi8KKyAgICBfX0hBTF9NTUNfQ0xFQVJfRkxBRyhobW1jLCBTRE1NQ19TVEFUSUNfRkxBR1MpOworICAgIGhtbWMtPkVycm9yQ29kZSB8PSBlcnJvcnN0YXRlOworICAgIGhtbWMtPlN0YXRlID0gSEFMX01NQ19TVEFURV9SRUFEWTsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKICAgcmV0dXJuIEhBTF9PSzsKIH0KIApAQCAtNTg0LDE3ICs1OTYsNiBAQAogICAgICAgYWRkICo9IDUxMlU7CiAgICAgfQogCi0gICAgLyogU2V0IEJsb2NrIFNpemUgZm9yIENhcmQgKi8KLSAgICBlcnJvcnN0YXRlID0gU0RNTUNfQ21kQmxvY2tMZW5ndGgoaG1tYy0+SW5zdGFuY2UsIE1NQ19CTE9DS1NJWkUpOwotICAgIGlmKGVycm9yc3RhdGUgIT0gSEFMX01NQ19FUlJPUl9OT05FKQotICAgIHsKLSAgICAgIC8qIENsZWFyIGFsbCB0aGUgc3RhdGljIGZsYWdzICovCi0gICAgICBfX0hBTF9NTUNfQ0xFQVJfRkxBRyhobW1jLCBTRE1NQ19TVEFUSUNfRkxBR1MpOwotICAgICAgaG1tYy0+RXJyb3JDb2RlIHw9IGVycm9yc3RhdGU7Ci0gICAgICBobW1jLT5TdGF0ZSA9IEhBTF9NTUNfU1RBVEVfUkVBRFk7Ci0gICAgICByZXR1cm4gSEFMX0VSUk9SOwotICAgIH0KLQogICAgIC8qIENvbmZpZ3VyZSB0aGUgTU1DIERQU00gKERhdGEgUGF0aCBTdGF0ZSBNYWNoaW5lKSAqLwogICAgIGNvbmZpZy5EYXRhVGltZU91dCAgID0gU0RNTUNfREFUQVRJTUVPVVQ7CiAgICAgY29uZmlnLkRhdGFMZW5ndGggICAgPSBOdW1iZXJPZkJsb2NrcyAqIE1NQ19CTE9DS1NJWkU7CkBAIC03OTYsMTcgKzc5Nyw2IEBACiAgICAgICBhZGQgKj0gNTEyVTsKICAgICB9CiAKLSAgICAvKiBTZXQgQmxvY2sgU2l6ZSBmb3IgQ2FyZCAqLwotICAgIGVycm9yc3RhdGUgPSBTRE1NQ19DbWRCbG9ja0xlbmd0aChobW1jLT5JbnN0YW5jZSwgTU1DX0JMT0NLU0laRSk7Ci0gICAgaWYoZXJyb3JzdGF0ZSAhPSBIQUxfTU1DX0VSUk9SX05PTkUpCi0gICAgewotICAgICAgLyogQ2xlYXIgYWxsIHRoZSBzdGF0aWMgZmxhZ3MgKi8KLSAgICAgIF9fSEFMX01NQ19DTEVBUl9GTEFHKGhtbWMsIFNETU1DX1NUQVRJQ19GTEFHUyk7Ci0gICAgICBobW1jLT5FcnJvckNvZGUgfD0gZXJyb3JzdGF0ZTsKLSAgICAgIGhtbWMtPlN0YXRlID0gSEFMX01NQ19TVEFURV9SRUFEWTsKLSAgICAgIHJldHVybiBIQUxfRVJST1I7Ci0gICAgfQotCiAgICAgLyogV3JpdGUgQmxvY2tzIGluIFBvbGxpbmcgbW9kZSAqLwogICAgIGlmKE51bWJlck9mQmxvY2tzID4gMVUpCiAgICAgewpAQCAtOTg0LDE3ICs5NzQsNiBAQAogICAgICAgYWRkICo9IDUxMlU7CiAgICAgfQogCi0gICAgLyogU2V0IEJsb2NrIFNpemUgZm9yIENhcmQgKi8KLSAgICBlcnJvcnN0YXRlID0gU0RNTUNfQ21kQmxvY2tMZW5ndGgoaG1tYy0+SW5zdGFuY2UsIE1NQ19CTE9DS1NJWkUpOwotICAgIGlmKGVycm9yc3RhdGUgIT0gSEFMX01NQ19FUlJPUl9OT05FKQotICAgIHsKLSAgICAgIC8qIENsZWFyIGFsbCB0aGUgc3RhdGljIGZsYWdzICovCi0gICAgICBfX0hBTF9NTUNfQ0xFQVJfRkxBRyhobW1jLCBTRE1NQ19TVEFUSUNfRkxBR1MpOwotICAgICAgaG1tYy0+RXJyb3JDb2RlIHw9IGVycm9yc3RhdGU7Ci0gICAgICBobW1jLT5TdGF0ZSA9IEhBTF9NTUNfU1RBVEVfUkVBRFk7Ci0gICAgICByZXR1cm4gSEFMX0VSUk9SOwotICAgIH0KLQogICAgIC8qIENvbmZpZ3VyZSB0aGUgTU1DIERQU00gKERhdGEgUGF0aCBTdGF0ZSBNYWNoaW5lKSAqLwogICAgIGNvbmZpZy5EYXRhVGltZU91dCAgID0gU0RNTUNfREFUQVRJTUVPVVQ7CiAgICAgY29uZmlnLkRhdGFMZW5ndGggICAgPSBNTUNfQkxPQ0tTSVpFICogTnVtYmVyT2ZCbG9ja3M7CkBAIC0xMDg4LDE3ICsxMDY3LDYgQEAKICAgICAgIGFkZCAqPSA1MTJVOwogICAgIH0KIAotICAgIC8qIFNldCBCbG9jayBTaXplIGZvciBDYXJkICovCi0gICAgZXJyb3JzdGF0ZSA9IFNETU1DX0NtZEJsb2NrTGVuZ3RoKGhtbWMtPkluc3RhbmNlLCBNTUNfQkxPQ0tTSVpFKTsKLSAgICBpZihlcnJvcnN0YXRlICE9IEhBTF9NTUNfRVJST1JfTk9ORSkKLSAgICB7Ci0gICAgICAvKiBDbGVhciBhbGwgdGhlIHN0YXRpYyBmbGFncyAqLwotICAgICAgX19IQUxfTU1DX0NMRUFSX0ZMQUcoaG1tYywgU0RNTUNfU1RBVElDX0ZMQUdTKTsKLSAgICAgIGhtbWMtPkVycm9yQ29kZSB8PSBlcnJvcnN0YXRlOwotICAgICAgaG1tYy0+U3RhdGUgPSBIQUxfTU1DX1NUQVRFX1JFQURZOwotICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKLSAgICB9Ci0KICAgICAvKiBXcml0ZSBCbG9ja3MgaW4gUG9sbGluZyBtb2RlICovCiAgICAgaWYoTnVtYmVyT2ZCbG9ja3MgPiAxVSkKICAgICB7CkBAIC0xMTk2LDE2ICsxMTY0LDkgQEAKICAgICAgIGFkZCAqPSA1MTJVOwogICAgIH0KIAotICAgIC8qIFNldCBCbG9jayBTaXplIGZvciBDYXJkICovIAotICAgIGVycm9yc3RhdGUgPSBTRE1NQ19DbWRCbG9ja0xlbmd0aChobW1jLT5JbnN0YW5jZSwgTU1DX0JMT0NLU0laRSk7Ci0gICAgaWYoZXJyb3JzdGF0ZSAhPSBIQUxfTU1DX0VSUk9SX05PTkUpCi0gICAgewotICAgICAgLyogQ2xlYXIgYWxsIHRoZSBzdGF0aWMgZmxhZ3MgKi8KLSAgICAgIF9fSEFMX01NQ19DTEVBUl9GTEFHKGhtbWMsIFNETU1DX1NUQVRJQ19GTEFHUyk7IAotICAgICAgaG1tYy0+RXJyb3JDb2RlID0gZXJyb3JzdGF0ZTsKLSAgICAgIGhtbWMtPlN0YXRlID0gSEFMX01NQ19TVEFURV9SRUFEWTsKLSAgICAgIHJldHVybiBIQUxfRVJST1I7Ci0gICAgfQorICAgIC8qIEZvcmNlIERNQSBEaXJlY3Rpb24gKi8KKyAgICBobW1jLT5oZG1hcngtPkluaXQuRGlyZWN0aW9uID0gRE1BX1BFUklQSF9UT19NRU1PUlk7CisgICAgTU9ESUZZX1JFRyhobW1jLT5oZG1hcngtPkluc3RhbmNlLT5DUiwgRE1BX1N4Q1JfRElSLCBobW1jLT5oZG1hcngtPkluaXQuRGlyZWN0aW9uKTsKIAogICAgIC8qIEVuYWJsZSB0aGUgRE1BIENoYW5uZWwgKi8KICAgICBpZihIQUxfRE1BX1N0YXJ0X0lUKGhtbWMtPmhkbWFyeCwgKHVpbnQzMl90KSZobW1jLT5JbnN0YW5jZS0+RklGTywgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpKE1NQ19CTE9DS1NJWkUgKiBOdW1iZXJPZkJsb2NrcykvNCkgIT0gSEFMX09LKQpAQCAtMTMyMSwxNiArMTI4Miw2IEBACiAgICAgICBhZGQgKj0gNTEyVTsKICAgICB9CiAKLSAgICAvKiBTZXQgQmxvY2sgU2l6ZSBmb3IgQ2FyZCAqLwotICAgIGVycm9yc3RhdGUgPSBTRE1NQ19DbWRCbG9ja0xlbmd0aChobW1jLT5JbnN0YW5jZSwgTU1DX0JMT0NLU0laRSk7Ci0gICAgaWYoZXJyb3JzdGF0ZSAhPSBIQUxfTU1DX0VSUk9SX05PTkUpCi0gICAgewotICAgICAgLyogQ2xlYXIgYWxsIHRoZSBzdGF0aWMgZmxhZ3MgKi8KLSAgICAgIF9fSEFMX01NQ19DTEVBUl9GTEFHKGhtbWMsIFNETU1DX1NUQVRJQ19GTEFHUyk7Ci0gICAgICBobW1jLT5FcnJvckNvZGUgfD0gZXJyb3JzdGF0ZTsKLSAgICAgIGhtbWMtPlN0YXRlID0gSEFMX01NQ19TVEFURV9SRUFEWTsKLSAgICAgIHJldHVybiBIQUxfRVJST1I7Ci0gICAgfQogCiAgICAgLyogV3JpdGUgQmxvY2tzIGluIFBvbGxpbmcgbW9kZSAqLwogICAgIGlmKE51bWJlck9mQmxvY2tzID4gMVUpCkBAIC0xMzYwLDYgKzEzMTEsMTAgQEAKICAgICAvKiBFbmFibGUgU0RNTUMgRE1BIHRyYW5zZmVyICovCiAgICAgX19IQUxfTU1DX0RNQV9FTkFCTEUoaG1tYyk7CiAKKyAgICAvKiBGb3JjZSBETUEgRGlyZWN0aW9uICovCisgICAgaG1tYy0+aGRtYXR4LT5Jbml0LkRpcmVjdGlvbiA9IERNQV9NRU1PUllfVE9fUEVSSVBIOworICAgIE1PRElGWV9SRUcoaG1tYy0+aGRtYXR4LT5JbnN0YW5jZS0+Q1IsIERNQV9TeENSX0RJUiwgaG1tYy0+aGRtYXR4LT5Jbml0LkRpcmVjdGlvbik7CisKICAgICAvKiBFbmFibGUgdGhlIERNQSBDaGFubmVsICovCiAgICAgaWYoSEFMX0RNQV9TdGFydF9JVChobW1jLT5oZG1hdHgsICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZobW1jLT5JbnN0YW5jZS0+RklGTywgKHVpbnQzMl90KShNTUNfQkxPQ0tTSVpFICogTnVtYmVyT2ZCbG9ja3MpLzQpICE9IEhBTF9PSykKICAgICB7CkBAIC0xOTk3LDYgKzE5NTIsOCBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX01NQ19HZXRDYXJkQ1NEKE1NQ19IYW5kbGVUeXBlRGVmICpobW1jLCBIQUxfTU1DX0NhcmRDU0RUeXBlRGVmICpwQ1NEKQogeworICB1aW50MzJfdCBibG9ja19uYnIgPSAwOworCiAgIHBDU0QtPkNTRFN0cnVjdCA9ICh1aW50OF90KSgoaG1tYy0+Q1NEWzBdICYgMHhDMDAwMDAwMFUpID4+IDMwVSk7CiAKICAgcENTRC0+U3lzU3BlY1ZlcnNpb24gPSAodWludDhfdCkoKGhtbWMtPkNTRFswXSAmIDB4M0MwMDAwMDBVKSA+PiAyNlUpOwpAQCAtMjAzNSwxMyArMTk5MiwzNSBAQAogCiAgIHBDU0QtPkRldmljZVNpemVNdWwgPSAodWludDhfdCkoKGhtbWMtPkNTRFsyXSAmIDB4MDAwMzgwMDBVKSA+PiAxNVUpOwogCi0gIGhtbWMtPk1tY0NhcmQuQmxvY2tOYnIgID0gKHBDU0QtPkRldmljZVNpemUgKyAxVSkgOwotICBobW1jLT5NbWNDYXJkLkJsb2NrTmJyICo9ICgxVUwgPDwgKChwQ1NELT5EZXZpY2VTaXplTXVsICYgMHgwN1UpICsgMlUpKTsKLSAgaG1tYy0+TW1jQ2FyZC5CbG9ja1NpemUgPSAoMVVMIDw8IChwQ1NELT5SZEJsb2NrTGVuICYgMHgwRlUpKTsKKyAgaWYoTU1DX1JlYWRFeHRDU0QoaG1tYywgJmJsb2NrX25iciwgMjEyLCAweDBGRkZGRkZGVSkgIT0gSEFMX09LKSAvKiBGaWVsZCBTRUNfQ09VTlQgWzIxNToyMTJdICovCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CiAKLSAgaG1tYy0+TW1jQ2FyZC5Mb2dCbG9ja05iciA9ICAoaG1tYy0+TW1jQ2FyZC5CbG9ja05icikgKiAoKGhtbWMtPk1tY0NhcmQuQmxvY2tTaXplKSAvIDUxMlUpOwotICBobW1jLT5NbWNDYXJkLkxvZ0Jsb2NrU2l6ZSA9IDUxMlU7Ci0gIAorICBpZihobW1jLT5NbWNDYXJkLkNhcmRUeXBlID09IE1NQ19MT1dfQ0FQQUNJVFlfQ0FSRCkKKyAgeworICAgIGhtbWMtPk1tY0NhcmQuQmxvY2tOYnIgID0gKHBDU0QtPkRldmljZVNpemUgKyAxVSkgOworICAgIGhtbWMtPk1tY0NhcmQuQmxvY2tOYnIgKj0gKDFVTCA8PCAoKHBDU0QtPkRldmljZVNpemVNdWwgJiAweDA3VSkgKyAyVSkpOworICAgIGhtbWMtPk1tY0NhcmQuQmxvY2tTaXplID0gKDFVTCA8PCAocENTRC0+UmRCbG9ja0xlbiAmIDB4MEZVKSk7CisgICAgaG1tYy0+TW1jQ2FyZC5Mb2dCbG9ja05iciA9ICAoaG1tYy0+TW1jQ2FyZC5CbG9ja05icikgKiAoKGhtbWMtPk1tY0NhcmQuQmxvY2tTaXplKSAvIDUxMlUpOworICAgIGhtbWMtPk1tY0NhcmQuTG9nQmxvY2tTaXplID0gNTEyVTsKKyAgfQorICBlbHNlIGlmKGhtbWMtPk1tY0NhcmQuQ2FyZFR5cGUgPT0gTU1DX0hJR0hfQ0FQQUNJVFlfQ0FSRCkKKyAgeworICAgIGhtbWMtPk1tY0NhcmQuQmxvY2tOYnIgPSBibG9ja19uYnI7CisgICAgaG1tYy0+TW1jQ2FyZC5Mb2dCbG9ja05iciA9IGhtbWMtPk1tY0NhcmQuQmxvY2tOYnI7CisgICAgaG1tYy0+TW1jQ2FyZC5CbG9ja1NpemUgPSA1MTJVOworICAgIGhtbWMtPk1tY0NhcmQuTG9nQmxvY2tTaXplID0gaG1tYy0+TW1jQ2FyZC5CbG9ja1NpemU7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogQ2xlYXIgYWxsIHRoZSBzdGF0aWMgZmxhZ3MgKi8KKyAgICBfX0hBTF9NTUNfQ0xFQVJfRkxBRyhobW1jLCBTRE1NQ19TVEFUSUNfRkxBR1MpOworICAgIGhtbWMtPkVycm9yQ29kZSB8PSBIQUxfTU1DX0VSUk9SX1VOU1VQUE9SVEVEX0ZFQVRVUkU7CisgICAgaG1tYy0+U3RhdGUgPSBIQUxfTU1DX1NUQVRFX1JFQURZOworICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KKwogICBwQ1NELT5FcmFzZUdyU2l6ZSA9ICh1aW50OF90KSgoaG1tYy0+Q1NEWzJdICYgMHgwMDAwNDAwMFUpID4+IDE0VSk7CiAKICAgcENTRC0+RXJhc2VHck11bCA9ICh1aW50OF90KSgoaG1tYy0+Q1NEWzJdICYgMHgwMDAwM0Y4MFUpID4+IDdVKTsKQEAgLTIxMjIsNyArMjEwMSw3IEBACiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19TRE1NQ19CVVNfV0lERShXaWRlTW9kZSkpOwogCi0gIC8qIENobmFnZSBTYXR0ZSAqLworICAvKiBDaGFuZ2UgU3RhdGUgKi8KICAgaG1tYy0+U3RhdGUgPSBIQUxfTU1DX1NUQVRFX0JVU1k7CiAKICAgLyogVXBkYXRlIENsb2NrIGZvciBCdXMgbW9kZSB1cGRhdGUgKi8KQEAgLTI3NjMsNiArMjc0Miw5MyBAQAogfQogCiAvKioKKyAgKiBAYnJpZWYgIFJlYWRzIGV4dGVuZGVkIENTRCByZWdpc3RlciB0byBnZXQgdGhlIHNlY3RvcnMgbnVtYmVyIG9mIHRoZSBkZXZpY2UKKyAgKiBAcGFyYW0gIGhtbWM6IFBvaW50ZXIgdG8gTU1DIGhhbmRsZQorICAqIEBwYXJhbSAgcEZpZWxkRGF0YTogUG9pbnRlciB0byB0aGUgcmVhZCBidWZmZXIKKyAgKiBAcGFyYW0gIEZpZWxkSW5kZXg6IEluZGV4IG9mIHRoZSBmaWVsZCB0byBiZSByZWFkCisgICogQHBhcmFtICBUaW1lb3V0OiBTcGVjaWZ5IHRpbWVvdXQgdmFsdWUKKyAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKKyAgKi8KK3N0YXRpYyB1aW50MzJfdCBNTUNfUmVhZEV4dENTRChNTUNfSGFuZGxlVHlwZURlZiAqaG1tYywgdWludDMyX3QgKnBGaWVsZERhdGEsIHVpbnQxNl90IEZpZWxkSW5kZXgsIHVpbnQzMl90IFRpbWVvdXQpCit7CisgIFNETU1DX0RhdGFJbml0VHlwZURlZiBjb25maWc7CisgIHVpbnQzMl90IGVycm9yc3RhdGU7CisgIHVpbnQzMl90IHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CisgIHVpbnQzMl90IGNvdW50OworICB1aW50MzJfdCBpID0gMDsKKyAgdWludDMyX3QgdG1wX2RhdGE7CisKKyAgaG1tYy0+RXJyb3JDb2RlID0gSEFMX01NQ19FUlJPUl9OT05FOworCisgIC8qIEluaXRpYWxpemUgZGF0YSBjb250cm9sIHJlZ2lzdGVyICovCisgIGhtbWMtPkluc3RhbmNlLT5EQ1RSTCA9IDA7CisKKyAgLyogQ29uZmlndXJlIHRoZSBNTUMgRFBTTSAoRGF0YSBQYXRoIFN0YXRlIE1hY2hpbmUpICovCisgIGNvbmZpZy5EYXRhVGltZU91dCAgID0gU0RNTUNfREFUQVRJTUVPVVQ7CisgIGNvbmZpZy5EYXRhTGVuZ3RoICAgID0gNTEyOworICBjb25maWcuRGF0YUJsb2NrU2l6ZSA9IFNETU1DX0RBVEFCTE9DS19TSVpFXzUxMkI7CisgIGNvbmZpZy5UcmFuc2ZlckRpciAgID0gU0RNTUNfVFJBTlNGRVJfRElSX1RPX1NETU1DOworICBjb25maWcuVHJhbnNmZXJNb2RlICA9IFNETU1DX1RSQU5TRkVSX01PREVfQkxPQ0s7CisgIGNvbmZpZy5EUFNNICAgICAgICAgID0gU0RNTUNfRFBTTV9FTkFCTEU7CisgICh2b2lkKVNETU1DX0NvbmZpZ0RhdGEoaG1tYy0+SW5zdGFuY2UsICZjb25maWcpOworCisgIC8qIFNldCBCbG9jayBTaXplIGZvciBDYXJkICovCisgIGVycm9yc3RhdGUgPSBTRE1NQ19DbWRTZW5kRVhUQ1NEKGhtbWMtPkluc3RhbmNlLCAwKTsKKyAgaWYoZXJyb3JzdGF0ZSAhPSBIQUxfTU1DX0VSUk9SX05PTkUpCisgIHsKKyAgICAvKiBDbGVhciBhbGwgdGhlIHN0YXRpYyBmbGFncyAqLworICAgIF9fSEFMX01NQ19DTEVBUl9GTEFHKGhtbWMsIFNETU1DX1NUQVRJQ19GTEFHUyk7CisgICAgaG1tYy0+RXJyb3JDb2RlIHw9IGVycm9yc3RhdGU7CisgICAgaG1tYy0+U3RhdGUgPSBIQUxfTU1DX1NUQVRFX1JFQURZOworICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KKworICAvKiBQb2xsIG9uIFNETU1DIGZsYWdzICovCisgIHdoaWxlKCFfX0hBTF9NTUNfR0VUX0ZMQUcoaG1tYywgU0RNTUNfRkxBR19SWE9WRVJSIHwgU0RNTUNfRkxBR19EQ1JDRkFJTCB8IFNETU1DX0ZMQUdfRFRJTUVPVVQgfCBTRE1NQ19GTEFHX0RBVEFFTkQpKQorICB7CisgICAgaWYoX19IQUxfTU1DX0dFVF9GTEFHKGhtbWMsIFNETU1DX0ZMQUdfUlhGSUZPSEYpKQorICAgIHsKKyAgICAgIC8qIFJlYWQgZGF0YSBmcm9tIFNETU1DIFJ4IEZJRk8gKi8KKyAgICAgIGZvcihjb3VudCA9IDBVOyBjb3VudCA8IDhVOyBjb3VudCsrKQorICAgICAgeworICAgICAgICB0bXBfZGF0YSA9IFNETU1DX1JlYWRGSUZPKGhtbWMtPkluc3RhbmNlKTsKKyAgICAgICAgLyogZWcgOiBTRUNfQ09VTlQgICA6IEZpZWxkSW5kZXggPSAyMTIgPT4gaStjb3VudCA9IDUzICovCisgICAgICAgIC8qICAgICAgREVWSUNFX1RZUEUgOiBGaWVsZEluZGV4ID0gMTk2ID0+IGkrY291bnQgPSA0OSAqLworICAgICAgICBpZiAoKGkgKyBjb3VudCkgPT0gKCh1aW50MzJfdClGaWVsZEluZGV4LzRVKSkKKyAgICAgICAgeworICAgICAgICAgICpwRmllbGREYXRhID0gdG1wX2RhdGE7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGkgKz0gOFU7CisgICAgfQorCisgICAgaWYoKChIQUxfR2V0VGljaygpLXRpY2tzdGFydCkgPj0gIFRpbWVvdXQpIHx8IChUaW1lb3V0ID09IDBVKSkKKyAgICB7CisgICAgICAvKiBDbGVhciBhbGwgdGhlIHN0YXRpYyBmbGFncyAqLworICAgICAgX19IQUxfTU1DX0NMRUFSX0ZMQUcoaG1tYywgU0RNTUNfU1RBVElDX0ZMQUdTKTsKKyAgICAgIGhtbWMtPkVycm9yQ29kZSB8PSBIQUxfTU1DX0VSUk9SX1RJTUVPVVQ7CisgICAgICBobW1jLT5TdGF0ZT0gSEFMX01NQ19TVEFURV9SRUFEWTsKKyAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKKyAgICB9CisgIH0KKworICAvKiBXaGlsZSBjYXJkIGlzIG5vdCByZWFkeSBmb3IgZGF0YSBhbmQgdHJpYWwgbnVtYmVyIGZvciBzZW5kaW5nIENNRDEzIGlzIG5vdCBleGNlZWRlZCAqLworICBlcnJvcnN0YXRlID0gU0RNTUNfQ21kU2VuZFN0YXR1cyhobW1jLT5JbnN0YW5jZSwgKHVpbnQzMl90KSgoKHVpbnQzMl90KWhtbWMtPk1tY0NhcmQuUmVsQ2FyZEFkZCkgPDwgMTYpKTsKKyAgaWYoZXJyb3JzdGF0ZSAhPSBIQUxfTU1DX0VSUk9SX05PTkUpCisgIHsKKyAgICBobW1jLT5FcnJvckNvZGUgfD0gZXJyb3JzdGF0ZTsKKyAgfQorCisgIC8qIENsZWFyIGFsbCB0aGUgc3RhdGljIGZsYWdzICovCisgIF9fSEFMX01NQ19DTEVBUl9GTEFHKGhtbWMsIFNETU1DX1NUQVRJQ19EQVRBX0ZMQUdTKTsKKworICBobW1jLT5TdGF0ZSA9IEhBTF9NTUNfU1RBVEVfUkVBRFk7CisKKyAgcmV0dXJuIEhBTF9PSzsKK30KKworCisvKioKICAgKiBAYnJpZWYgIFdyYXAgdXAgcmVhZGluZyBpbiBub24tYmxvY2tpbmcgbW9kZS4KICAgKiBAcGFyYW0gIGhtbWM6IHBvaW50ZXIgdG8gYSBNTUNfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwogICAqICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX25hbmQuYyBiL1NyYy9zdG0zMmY3eHhfaGFsX25hbmQuYwppbmRleCA3ZWUwMjVkLi44NzA3MGRjIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9uYW5kLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfbmFuZC5jCkBAIC03NTMsNyArNzUzLDE4IEBACiAgICAgICAqKF9fSU8gdWludDhfdCAqKSgodWludDMyX3QpKGRldmljZUFkZHJlc3MgfCBDTURfQVJFQSkpID0gKCh1aW50OF90KTB4MDBVKTsKICAgICAgIF9fRFNCKCk7CiAgICAgfQotICAgIAorCisgICAgLyogQ2FsY3VsYXRlIFBhZ2VTaXplICovCisgICAgaWYgKGhuYW5kLT5Jbml0Lk1lbW9yeURhdGFXaWR0aCA9PSBGTUNfTkFORF9QQ0NfTUVNX0JVU19XSURUSF84KQorICAgIHsKKyAgICAgIHNpemUgPSBzaXplIC8gMlU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBEbyBub3RoaW5nICovCisgICAgICAvKiBLZWVwIHRoZSBzYW1lIFBhZ2VTaXplIGZvciBGTUNfTkFORF9NRU1fQlVTX1dJRFRIXzE2Ki8KKyAgICB9CisKICAgICAvKiBHZXQgRGF0YSBpbnRvIEJ1ZmZlciAqLyAgICAKICAgICBmb3IoOyBpbmRleCA8IHNpemU7IGluZGV4KyspCiAgICAgewpAQCAtMTAxMyw3ICsxMDI0LDE4IEBACiAgICAgICAgIF9fRFNCKCk7CiAgICAgICB9CiAgICAgfQotICAKKworICAgIC8qIENhbGN1bGF0ZSBQYWdlU2l6ZSAqLworICAgIGlmIChobmFuZC0+SW5pdC5NZW1vcnlEYXRhV2lkdGggPT0gRk1DX05BTkRfUENDX01FTV9CVVNfV0lEVEhfOCkKKyAgICB7CisgICAgICBzaXplID0gc2l6ZSAvIDJVOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgLyogRG8gbm90aGluZyAqLworICAgICAgLyogS2VlcCB0aGUgc2FtZSBQYWdlU2l6ZSBmb3IgRk1DX05BTkRfTUVNX0JVU19XSURUSF8xNiovCisgICAgfQorCiAgICAgLyogV3JpdGUgZGF0YSB0byBtZW1vcnkgKi8KICAgICBmb3IoOyBpbmRleCA8IHNpemU7IGluZGV4KyspCiAgICAgewpAQCAtMTIzOCw3ICsxMjYwLDcgQEAKICAgbmFuZEFkZHJlc3MgPSBBUlJBWV9BRERSRVNTKHBBZGRyZXNzLCBobmFuZCk7CiAgIAogICAvKiBDb2x1bW4gaW4gcGFnZSBhZGRyZXNzICovCi0gIGNvbHVtbkFkZHJlc3MgPSAodWludDMyX3QpKENPTFVNTl9BRERSRVNTKGhuYW5kKSAqIDIpOworICBjb2x1bW5BZGRyZXNzID0gKHVpbnQzMl90KShDT0xVTU5fQUREUkVTUyhobmFuZCkpOwogICAKICAgLyogU3BhcmUgYXJlYShzKSByZWFkIGxvb3AgKi8gCiAgIHdoaWxlKChOdW1TcGFyZUFyZWFUb1JlYWQgIT0gMCkgJiYgKG5hbmRBZGRyZXNzIDwgKChobmFuZC0+Q29uZmlnLkJsb2NrU2l6ZSkgKiAoaG5hbmQtPkNvbmZpZy5CbG9ja05icikpKSkKQEAgLTE1MzQsNyArMTU1Niw3IEBACiAgIG5hbmRBZGRyZXNzID0gQVJSQVlfQUREUkVTUyhwQWRkcmVzcywgaG5hbmQpOwogICAKICAgLyogQ29sdW1uIGluIHBhZ2UgYWRkcmVzcyAqLwotICBjb2x1bW5BZGRyZXNzID0gKHVpbnQzMl90KShDT0xVTU5fQUREUkVTUyhobmFuZCkgKiAyKTsKKyAgY29sdW1uQWRkcmVzcyA9ICh1aW50MzJfdCkoQ09MVU1OX0FERFJFU1MoaG5hbmQpKTsKICAgCiAgIC8qIFNwYXJlIGFyZWEocykgd3JpdGUgbG9vcCAqLwogICB3aGlsZSgoTnVtU3BhcmVBcmVhVG93cml0ZSAhPSAwKSAmJiAobmFuZEFkZHJlc3MgPCAoKGhuYW5kLT5Db25maWcuQmxvY2tTaXplKSAqIChobmFuZC0+Q29uZmlnLkJsb2NrTmJyKSkpKQpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfcGNkLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9wY2QuYwppbmRleCA2Y2U0ZWRkLi5jNzFmZDRjIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9wY2QuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9wY2QuYwpAQCAtMTAyLDggKzEwMiw4IEBACiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgUENEX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucwotICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMKLSAqCisgICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMKKyAgKgogQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgIyMjIyMgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyAjIyMjIwpAQCAtMjI4LDcgKzIyOCw3IEBACiAgIHsKICAgICAodm9pZClIQUxfUENERXhfQWN0aXZhdGVMUE0oaHBjZCk7CiAgIH0KLSAgCisKICAgKHZvaWQpVVNCX0RldkRpc2Nvbm5lY3QoaHBjZC0+SW5zdGFuY2UpOwogCiAgIHJldHVybiBIQUxfT0s7CkBAIC0yNTAsNyArMjUwLDEwIEBACiAgIGhwY2QtPlN0YXRlID0gSEFMX1BDRF9TVEFURV9CVVNZOwogCiAgIC8qIFN0b3AgRGV2aWNlICovCi0gICh2b2lkKUhBTF9QQ0RfU3RvcChocGNkKTsKKyAgaWYgKFVTQl9TdG9wRGV2aWNlKGhwY2QtPkluc3RhbmNlKSAhPSBIQUxfT0spCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CiAKICNpZiAoVVNFX0hBTF9QQ0RfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDFVKQogICBpZiAoaHBjZC0+TXNwRGVJbml0Q2FsbGJhY2sgPT0gTlVMTCkKQEAgLTMxOSw3ICszMjIsOSBAQAogICAqIEBwYXJhbSAgcENhbGxiYWNrIHBvaW50ZXIgdG8gdGhlIENhbGxiYWNrIGZ1bmN0aW9uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfUENEX1JlZ2lzdGVyQ2FsbGJhY2soUENEX0hhbmRsZVR5cGVEZWYgKmhwY2QsIEhBTF9QQ0RfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCwgcFBDRF9DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKQorSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9SZWdpc3RlckNhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTF9QQ0RfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUENEX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spCiB7CiAgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKIApAQCAtNTI5LDcgKzUzNCw4IEBACiAgICogQHBhcmFtICBwQ2FsbGJhY2sgcG9pbnRlciB0byB0aGUgVVNCIFBDRCBEYXRhIE9VVCBTdGFnZSBDYWxsYmFjayBmdW5jdGlvbgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9SZWdpc3RlckRhdGFPdXRTdGFnZUNhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLCBwUENEX0RhdGFPdXRTdGFnZUNhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfUENEX1JlZ2lzdGVyRGF0YU91dFN0YWdlQ2FsbGJhY2soUENEX0hhbmRsZVR5cGVEZWYgKmhwY2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFBDRF9EYXRhT3V0U3RhZ2VDYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKQogewogICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAKQEAgLTU2NCw3ICs1NzAsNyBAQAogfQogCiAvKioKLSAgKiBAYnJpZWYgIFVuUmVnaXN0ZXIgdGhlIFVTQiBQQ0QgRGF0YSBPVVQgU3RhZ2UgQ2FsbGJhY2sKKyAgKiBAYnJpZWYgIFVucmVnaXN0ZXIgdGhlIFVTQiBQQ0QgRGF0YSBPVVQgU3RhZ2UgQ2FsbGJhY2sKICAgKiAgICAgICAgIFVTQiBQQ0QgRGF0YSBPVVQgU3RhZ2UgQ2FsbGJhY2sgaXMgcmVkaXJlY3RlZCB0byB0aGUgd2VhayBIQUxfUENEX0RhdGFPdXRTdGFnZUNhbGxiYWNrKCkgcHJlZGVmaW5lZCBjYWxsYmFjawogICAqIEBwYXJhbSAgaHBjZCBQQ0QgaGFuZGxlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCkBAIC02MDIsNyArNjA4LDggQEAKICAgKiBAcGFyYW0gIHBDYWxsYmFjayBwb2ludGVyIHRvIHRoZSBVU0IgUENEIERhdGEgSU4gU3RhZ2UgQ2FsbGJhY2sgZnVuY3Rpb24KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfUmVnaXN0ZXJEYXRhSW5TdGFnZUNhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLCBwUENEX0RhdGFJblN0YWdlQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfUmVnaXN0ZXJEYXRhSW5TdGFnZUNhbGxiYWNrKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFBDRF9EYXRhSW5TdGFnZUNhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spCiB7CiAgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKIApAQCAtNjM3LDcgKzY0NCw3IEBACiB9CiAKIC8qKgotICAqIEBicmllZiAgVW5SZWdpc3RlciB0aGUgVVNCIFBDRCBEYXRhIElOIFN0YWdlIENhbGxiYWNrCisgICogQGJyaWVmICBVbnJlZ2lzdGVyIHRoZSBVU0IgUENEIERhdGEgSU4gU3RhZ2UgQ2FsbGJhY2sKICAgKiAgICAgICAgIFVTQiBQQ0QgRGF0YSBPVVQgU3RhZ2UgQ2FsbGJhY2sgaXMgcmVkaXJlY3RlZCB0byB0aGUgd2VhayBIQUxfUENEX0RhdGFJblN0YWdlQ2FsbGJhY2soKSBwcmVkZWZpbmVkIGNhbGxiYWNrCiAgICogQHBhcmFtICBocGNkIFBDRCBoYW5kbGUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKQEAgLTY3NSw3ICs2ODIsOCBAQAogICAqIEBwYXJhbSAgcENhbGxiYWNrIHBvaW50ZXIgdG8gdGhlIFVTQiBQQ0QgSXNvIE9VVCBpbmNvbXBsZXRlIENhbGxiYWNrIGZ1bmN0aW9uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfUENEX1JlZ2lzdGVySXNvT3V0SW5jcGx0Q2FsbGJhY2soUENEX0hhbmRsZVR5cGVEZWYgKmhwY2QsIHBQQ0RfSXNvT3V0SW5jcGx0Q2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfUmVnaXN0ZXJJc29PdXRJbmNwbHRDYWxsYmFjayhQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUENEX0lzb091dEluY3BsdENhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spCiB7CiAgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKIApAQCAtNzEwLDcgKzcxOCw3IEBACiB9CiAKIC8qKgotICAqIEBicmllZiAgVW5SZWdpc3RlciB0aGUgVVNCIFBDRCBJc28gT1VUIGluY29tcGxldGUgQ2FsbGJhY2sKKyAgKiBAYnJpZWYgIFVucmVnaXN0ZXIgdGhlIFVTQiBQQ0QgSXNvIE9VVCBpbmNvbXBsZXRlIENhbGxiYWNrCiAgICogICAgICAgICBVU0IgUENEIElzbyBPVVQgaW5jb21wbGV0ZSBDYWxsYmFjayBpcyByZWRpcmVjdGVkIHRvIHRoZSB3ZWFrIEhBTF9QQ0RfSVNPT1VUSW5jb21wbGV0ZUNhbGxiYWNrKCkgcHJlZGVmaW5lZCBjYWxsYmFjawogICAqIEBwYXJhbSAgaHBjZCBQQ0QgaGFuZGxlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCkBAIC03NDgsNyArNzU2LDggQEAKICAgKiBAcGFyYW0gIHBDYWxsYmFjayBwb2ludGVyIHRvIHRoZSBVU0IgUENEIElzbyBJTiBpbmNvbXBsZXRlIENhbGxiYWNrIGZ1bmN0aW9uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfUENEX1JlZ2lzdGVySXNvSW5JbmNwbHRDYWxsYmFjayhQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCwgcFBDRF9Jc29JbkluY3BsdENhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfUENEX1JlZ2lzdGVySXNvSW5JbmNwbHRDYWxsYmFjayhQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBQQ0RfSXNvSW5JbmNwbHRDYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKQogewogICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAKQEAgLTc4Myw3ICs3OTIsNyBAQAogfQogCiAvKioKLSAgKiBAYnJpZWYgIFVuUmVnaXN0ZXIgdGhlIFVTQiBQQ0QgSXNvIElOIGluY29tcGxldGUgQ2FsbGJhY2sKKyAgKiBAYnJpZWYgIFVucmVnaXN0ZXIgdGhlIFVTQiBQQ0QgSXNvIElOIGluY29tcGxldGUgQ2FsbGJhY2sKICAgKiAgICAgICAgIFVTQiBQQ0QgSXNvIElOIGluY29tcGxldGUgQ2FsbGJhY2sgaXMgcmVkaXJlY3RlZCB0byB0aGUgd2VhayBIQUxfUENEX0lTT0lOSW5jb21wbGV0ZUNhbGxiYWNrKCkgcHJlZGVmaW5lZCBjYWxsYmFjawogICAqIEBwYXJhbSAgaHBjZCBQQ0QgaGFuZGxlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCkBAIC04NTYsNyArODY1LDcgQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBVblJlZ2lzdGVyIHRoZSBVU0IgUENEIExQTSBDYWxsYmFjaworICAqIEBicmllZiAgVW5yZWdpc3RlciB0aGUgVVNCIFBDRCBMUE0gQ2FsbGJhY2sKICAgKiAgICAgICAgIFVTQiBMUE0gQ2FsbGJhY2sgaXMgcmVkaXJlY3RlZCB0byB0aGUgd2VhayBIQUxfUENERXhfTFBNX0NhbGxiYWNrKCkgcHJlZGVmaW5lZCBjYWxsYmFjawogICAqIEBwYXJhbSAgaHBjZCBQQ0QgaGFuZGxlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCkBAIC04OTMsOCArOTAyLDggQEAKICAgKi8KIAogLyoqIEBkZWZncm91cCBQQ0RfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMiBJbnB1dCBhbmQgT3V0cHV0IG9wZXJhdGlvbiBmdW5jdGlvbnMKLSAqICBAYnJpZWYgICBEYXRhIHRyYW5zZmVycyBmdW5jdGlvbnMKLSAqCisgICogIEBicmllZiAgIERhdGEgdHJhbnNmZXJzIGZ1bmN0aW9ucworICAqCiBAdmVyYmF0aW0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgSU8gb3BlcmF0aW9uIGZ1bmN0aW9ucyAjIyMjIwpAQCAtOTE1LDkgKzkyNCwxMCBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1BDRF9TdGFydChQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCkKIHsKICAgX19IQUxfTE9DSyhocGNkKTsKLSAgKHZvaWQpVVNCX0RldkNvbm5lY3QoaHBjZC0+SW5zdGFuY2UpOwogICBfX0hBTF9QQ0RfRU5BQkxFKGhwY2QpOworICAodm9pZClVU0JfRGV2Q29ubmVjdChocGNkLT5JbnN0YW5jZSk7CiAgIF9fSEFMX1VOTE9DSyhocGNkKTsKKwogICByZXR1cm4gSEFMX09LOwogfQogCkBAIC05MzAsMTggKzk0MCwxNSBAQAogewogICBfX0hBTF9MT0NLKGhwY2QpOwogICBfX0hBTF9QQ0RfRElTQUJMRShocGNkKTsKLQotICBpZiAoVVNCX1N0b3BEZXZpY2UoaHBjZC0+SW5zdGFuY2UpICE9IEhBTF9PSykKLSAgewotICAgIF9fSEFMX1VOTE9DSyhocGNkKTsKLSAgICByZXR1cm4gSEFMX0VSUk9SOwotICB9Ci0KICAgKHZvaWQpVVNCX0RldkRpc2Nvbm5lY3QoaHBjZC0+SW5zdGFuY2UpOworCisgICh2b2lkKVVTQl9GbHVzaFR4RmlmbyhocGNkLT5JbnN0YW5jZSwgMHgxMFUpOworCiAgIF9fSEFMX1VOTE9DSyhocGNkKTsKIAogICByZXR1cm4gSEFMX09LOwogfQorCiAjaWYgZGVmaW5lZCAoVVNCX09UR19GUykgfHwgZGVmaW5lZCAoVVNCX09UR19IUykKIC8qKgogICAqIEBicmllZiAgSGFuZGxlcyBQQ0QgaW50ZXJydXB0IHJlcXVlc3QuCkBAIC05NzEsNyArOTc4LDcgQEAKICAgICAgIF9fSEFMX1BDRF9DTEVBUl9GTEFHKGhwY2QsIFVTQl9PVEdfR0lOVFNUU19NTUlTKTsKICAgICB9CiAKLSAgICAgLyogSGFuZGxlIFJ4UUxldmVsIEludGVycnVwdCAqLworICAgIC8qIEhhbmRsZSBSeFFMZXZlbCBJbnRlcnJ1cHQgKi8KICAgICBpZiAoX19IQUxfUENEX0dFVF9GTEFHKGhwY2QsIFVTQl9PVEdfR0lOVFNUU19SWEZMVkwpKQogICAgIHsKICAgICAgIFVTQl9NQVNLX0lOVEVSUlVQVChocGNkLT5JbnN0YW5jZSwgVVNCX09UR19HSU5UU1RTX1JYRkxWTCk7CkBAIC0xMTU2LDcgKzExNjMsNyBAQAogICAgICAgfQogICAgICAgX19IQUxfUENEX0NMRUFSX0ZMQUcoaHBjZCwgVVNCX09UR19HSU5UU1RTX1VTQlNVU1ApOwogICAgIH0KLSAgICAKKwogICAgIC8qIEhhbmRsZSBMUE0gSW50ZXJydXB0ICovCiAgICAgaWYgKF9fSEFMX1BDRF9HRVRfRkxBRyhocGNkLCBVU0JfT1RHX0dJTlRTVFNfTFBNSU5UKSkKICAgICB7CkBAIC0xMTgyLDcgKzExODksNyBAQAogI2VuZGlmIC8qIFVTRV9IQUxfUENEX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIC8qIEhhbmRsZSBSZXNldCBJbnRlcnJ1cHQgKi8KICAgICBpZiAoX19IQUxfUENEX0dFVF9GTEFHKGhwY2QsIFVTQl9PVEdfR0lOVFNUU19VU0JSU1QpKQogICAgIHsKQEAgLTEzMjYsNiArMTMzMywzMCBAQAogICAgIH0KICAgfQogfQorCisKKy8qKgorICAqIEBicmllZiAgSGFuZGxlcyBQQ0QgV2FrZXVwIGludGVycnVwdCByZXF1ZXN0LgorICAqIEBwYXJhbSAgaHBjZCBQQ0QgaGFuZGxlCisgICogQHJldHZhbCBIQUwgc3RhdHVzCisgICovCit2b2lkIEhBTF9QQ0RfV0tVUF9JUlFIYW5kbGVyKFBDRF9IYW5kbGVUeXBlRGVmICpocGNkKQoreworICBVU0JfT1RHX0dsb2JhbFR5cGVEZWYgKlVTQng7CisKKyAgVVNCeCA9IGhwY2QtPkluc3RhbmNlOworCisgIGlmICgoVVNCeC0+Q0lEICYgKDB4MVUgPDwgOCkpID09IDBVKQorICB7CisgICAgLyogQ2xlYXIgRVhUSSBwZW5kaW5nIEJpdCAqLworICAgIF9fSEFMX1VTQl9PVEdfRlNfV0FLRVVQX0VYVElfQ0xFQVJfRkxBRygpOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIENsZWFyIEVYVEkgcGVuZGluZyBCaXQgKi8KKyAgICBfX0hBTF9VU0JfT1RHX0hTX1dBS0VVUF9FWFRJX0NMRUFSX0ZMQUcoKTsKKyAgfQorfQogI2VuZGlmIC8qIGRlZmluZWQgKFVTQl9PVEdfRlMpIHx8IGRlZmluZWQgKFVTQl9PVEdfSFMpICovCiAKIApAQCAtMTUwNiw4ICsxNTM3LDggQEAKICAgKi8KIAogLyoqIEBkZWZncm91cCBQQ0RfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMyBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zCi0gKiAgQGJyaWVmICAgbWFuYWdlbWVudCBmdW5jdGlvbnMKLSAqCisgICogIEBicmllZiAgIG1hbmFnZW1lbnQgZnVuY3Rpb25zCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zICMjIyMjCkBAIC0xNTMwLDYgKzE1NjEsNyBAQAogICBfX0hBTF9MT0NLKGhwY2QpOwogICAodm9pZClVU0JfRGV2Q29ubmVjdChocGNkLT5JbnN0YW5jZSk7CiAgIF9fSEFMX1VOTE9DSyhocGNkKTsKKwogICByZXR1cm4gSEFMX09LOwogfQogCkBAIC0xNTQzLDYgKzE1NzUsNyBAQAogICBfX0hBTF9MT0NLKGhwY2QpOwogICAodm9pZClVU0JfRGV2RGlzY29ubmVjdChocGNkLT5JbnN0YW5jZSk7CiAgIF9fSEFMX1VOTE9DSyhocGNkKTsKKwogICByZXR1cm4gSEFMX09LOwogfQogCkBAIC0xNTU4LDYgKzE1OTEsNyBAQAogICBocGNkLT5VU0JfQWRkcmVzcyA9IGFkZHJlc3M7CiAgICh2b2lkKVVTQl9TZXREZXZBZGRyZXNzKGhwY2QtPkluc3RhbmNlLCBhZGRyZXNzKTsKICAgX19IQUxfVU5MT0NLKGhwY2QpOworCiAgIHJldHVybiBIQUxfT0s7CiB9CiAvKioKQEAgLTE1NjgsNyArMTYwMiw4IEBACiAgICogQHBhcmFtICBlcF90eXBlIGVuZHBvaW50IHR5cGUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfRVBfT3BlbihQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCwgdWludDhfdCBlcF9hZGRyLCB1aW50MTZfdCBlcF9tcHMsIHVpbnQ4X3QgZXBfdHlwZSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9QQ0RfRVBfT3BlbihQQ0RfSGFuZGxlVHlwZURlZiAqaHBjZCwgdWludDhfdCBlcF9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGVwX21wcywgdWludDhfdCBlcF90eXBlKQogewogICBIQUxfU3RhdHVzVHlwZURlZiAgcmV0ID0gSEFMX09LOwogICBQQ0RfRVBUeXBlRGVmICplcDsKQEAgLTE3NTMsMTAgKzE3ODgsMTIgQEAKICAgX19IQUxfTE9DSyhocGNkKTsKIAogICAodm9pZClVU0JfRVBTZXRTdGFsbChocGNkLT5JbnN0YW5jZSwgZXApOworCiAgIGlmICgoZXBfYWRkciAmIEVQX0FERFJfTVNLKSA9PSAwVSkKICAgewogICAgICh2b2lkKVVTQl9FUDBfT3V0U3RhcnQoaHBjZC0+SW5zdGFuY2UsICh1aW50OF90KWhwY2QtPkluaXQuZG1hX2VuYWJsZSwgKHVpbnQ4X3QgKilocGNkLT5TZXR1cCk7CiAgIH0KKwogICBfX0hBTF9VTkxPQ0soaHBjZCk7CiAKICAgcmV0dXJuIEhBTF9PSzsKQEAgLTE4NDcsOCArMTg4NCw4IEBACiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgUENEX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDQgUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMKLSAqICBAYnJpZWYgICBQZXJpcGhlcmFsIFN0YXRlIGZ1bmN0aW9ucwotICoKKyAgKiAgQGJyaWVmICAgUGVyaXBoZXJhbCBTdGF0ZSBmdW5jdGlvbnMKKyAgKgogQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICMjIyMjIFBlcmlwaGVyYWwgU3RhdGUgZnVuY3Rpb25zICMjIyMjCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9wY2RfZXguYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3BjZF9leC5jCmluZGV4IDE2OGQ5NjMuLmY1ZWQ0NjEgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3BjZF9leC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3BjZF9leC5jCkBAIC00OSw3ICs0OSw3IEBACiAKIC8qKiBAZGVmZ3JvdXAgUENERXhfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMSBQZXJpcGhlcmFsIENvbnRyb2wgZnVuY3Rpb25zCiAgICogQGJyaWVmICAgIFBDREV4IGNvbnRyb2wgZnVuY3Rpb25zCi0gKgorICAqCiBAdmVyYmF0aW0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICMjIyMjIEV4dGVuZGVkIGZlYXR1cmVzIGZ1bmN0aW9ucyAjIyMjIwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfcmNjLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9yY2MuYwppbmRleCBkNzEzMmMwLi5hYjhiYjI5IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9yY2MuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9yY2MuYwpAQCAtMTcsOCArMTcsOCBAQAogICAgICAgKEhTSSAxNk1Ieikgd2l0aCBGbGFzaCAwIHdhaXQgc3RhdGUsIEZsYXNoIHByZWZldGNoIGJ1ZmZlciwgRC1DYWNoZQogICAgICAgYW5kIEktQ2FjaGUgYXJlIGRpc2FibGVkLCBhbmQgYWxsIHBlcmlwaGVyYWxzIGFyZSBvZmYgZXhjZXB0IGludGVybmFsCiAgICAgICBTUkFNLCBGbGFzaCBhbmQgSlRBRy4KLSAgICAgICgrKSBUaGVyZSBpcyBubyBwcmVzY2FsZXIgb24gSGlnaCBzcGVlZCAoQUhCKSBhbmQgTG93IHNwZWVkIChBUEIpIGJ1c3NlczsKLSAgICAgICAgICBhbGwgcGVyaXBoZXJhbHMgbWFwcGVkIG9uIHRoZXNlIGJ1c3NlcyBhcmUgcnVubmluZyBhdCBIU0kgc3BlZWQuCisgICAgICAoKykgVGhlcmUgaXMgbm8gcHJlc2NhbGVyIG9uIEhpZ2ggc3BlZWQgKEFIQikgYW5kIExvdyBzcGVlZCAoQVBCKSBidXNlczsKKyAgICAgICAgICBhbGwgcGVyaXBoZXJhbHMgbWFwcGVkIG9uIHRoZXNlIGJ1c2VzIGFyZSBydW5uaW5nIGF0IEhTSSBzcGVlZC4KICAgICAgICgrKSBUaGUgY2xvY2sgZm9yIGFsbCBwZXJpcGhlcmFscyBpcyBzd2l0Y2hlZCBvZmYsIGV4Y2VwdCB0aGUgU1JBTSBhbmQgRkxBU0guCiAgICAgICAoKykgQWxsIEdQSU9zIGFyZSBpbiBpbnB1dCBmbG9hdGluZyBzdGF0ZSwgZXhjZXB0IHRoZSBKVEFHIHBpbnMgd2hpY2gKICAgICAgICAgICBhcmUgYXNzaWduZWQgdG8gYmUgdXNlZCBmb3IgZGVidWcgcHVycG9zZS4KQEAgLTI4LDcgKzI4LDcgQEAKICAgICAgICgrKSBDb25maWd1cmUgdGhlIGNsb2NrIHNvdXJjZSB0byBiZSB1c2VkIHRvIGRyaXZlIHRoZSBTeXN0ZW0gY2xvY2sKICAgICAgICAgICAoaWYgdGhlIGFwcGxpY2F0aW9uIG5lZWRzIGhpZ2hlciBmcmVxdWVuY3kvcGVyZm9ybWFuY2UpCiAgICAgICAoKykgQ29uZmlndXJlIHRoZSBTeXN0ZW0gY2xvY2sgZnJlcXVlbmN5IGFuZCBGbGFzaCBzZXR0aW5ncwotICAgICAgKCspIENvbmZpZ3VyZSB0aGUgQUhCIGFuZCBBUEIgYnVzc2VzIHByZXNjYWxlcnMKKyAgICAgICgrKSBDb25maWd1cmUgdGhlIEFIQiBhbmQgQVBCIGJ1c2VzIHByZXNjYWxlcnMKICAgICAgICgrKSBFbmFibGUgdGhlIGNsb2NrIGZvciB0aGUgcGVyaXBoZXJhbChzKSB0byBiZSB1c2VkCiAgICAgICAoKykgQ29uZmlndXJlIHRoZSBjbG9jayBzb3VyY2UocykgZm9yIHBlcmlwaGVyYWxzIHdoaWNoIGNsb2NrcyBhcmUgbm90CiAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBTeXN0ZW0gY2xvY2sgKEkyUywgUlRDLCBBREMsIFVTQiBPVEcgRlMvU0RJTy9STkcpCkBAIC0xNTQsMTQgKzE1NCwxNCBAQAogICAgICAgKCMpIE1DTzIgKG1pY3JvY29udHJvbGxlciBjbG9jayBvdXRwdXQpLCB1c2VkIHRvIG91dHB1dCBIU0UsIFBMTCwgU1lTQ0xLIG9yIFBMTEkyUwogICAgICAgICAgIGNsb2NrICh0aHJvdWdoIGEgY29uZmlndXJhYmxlIHByZXNjYWxlcikgb24gUEM5IHBpbi4KIAotICAgIFsuLl0gU3lzdGVtLCBBSEIgYW5kIEFQQiBidXNzZXMgY2xvY2tzIGNvbmZpZ3VyYXRpb24KKyAgICBbLi5dIFN5c3RlbSwgQUhCIGFuZCBBUEIgYnVzZXMgY2xvY2tzIGNvbmZpZ3VyYXRpb24KICAgICAgICgjKSBTZXZlcmFsIGNsb2NrIHNvdXJjZXMgY2FuIGJlIHVzZWQgdG8gZHJpdmUgdGhlIFN5c3RlbSBjbG9jayAoU1lTQ0xLKTogSFNJLAogICAgICAgICAgIEhTRSBhbmQgUExMLgogICAgICAgICAgIFRoZSBBSEIgY2xvY2sgKEhDTEspIGlzIGRlcml2ZWQgZnJvbSBTeXN0ZW0gY2xvY2sgdGhyb3VnaCBjb25maWd1cmFibGUKICAgICAgICAgICBwcmVzY2FsZXIgYW5kIHVzZWQgdG8gY2xvY2sgdGhlIENQVSwgbWVtb3J5IGFuZCBwZXJpcGhlcmFscyBtYXBwZWQKICAgICAgICAgICBvbiBBSEIgYnVzIChETUEsIEdQSU8uLi4pLiBBUEIxIChQQ0xLMSkgYW5kIEFQQjIgKFBDTEsyKSBjbG9ja3MgYXJlIGRlcml2ZWQKICAgICAgICAgICBmcm9tIEFIQiBjbG9jayB0aHJvdWdoIGNvbmZpZ3VyYWJsZSBwcmVzY2FsZXJzIGFuZCB1c2VkIHRvIGNsb2NrCi0gICAgICAgICAgdGhlIHBlcmlwaGVyYWxzIG1hcHBlZCBvbiB0aGVzZSBidXNzZXMuIFlvdSBjYW4gdXNlCisgICAgICAgICAgdGhlIHBlcmlwaGVyYWxzIG1hcHBlZCBvbiB0aGVzZSBidXNlcy4gWW91IGNhbiB1c2UKICAgICAgICAgICAiSEFMX1JDQ19HZXRTeXNDbG9ja0ZyZXEoKSIgZnVuY3Rpb24gdG8gcmV0cmlldmUgdGhlIGZyZXF1ZW5jaWVzIG9mIHRoZXNlIGNsb2Nrcy4KIAogICAgICAgLUAtIEFsbCB0aGUgcGVyaXBoZXJhbCBjbG9ja3MgYXJlIGRlcml2ZWQgZnJvbSB0aGUgU3lzdGVtIGNsb2NrIChTWVNDTEspIGV4Y2VwdDoKQEAgLTY5Niw3ICs2OTYsNyBAQAogfQogCiAvKioKLSAgKiBAYnJpZWYgIEluaXRpYWxpemVzIHRoZSBDUFUsIEFIQiBhbmQgQVBCIGJ1c3NlcyBjbG9ja3MgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQKKyAgKiBAYnJpZWYgIEluaXRpYWxpemVzIHRoZSBDUFUsIEFIQiBhbmQgQVBCIGJ1c2VzIGNsb2NrcyBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZAogICAqICAgICAgICAgcGFyYW1ldGVycyBpbiB0aGUgUkNDX0Nsa0luaXRTdHJ1Y3QuCiAgICogQHBhcmFtICBSQ0NfQ2xrSW5pdFN0cnVjdCBwb2ludGVyIHRvIGFuIFJDQ19Pc2NJbml0VHlwZURlZiBzdHJ1Y3R1cmUgdGhhdAogICAqICAgICAgICAgY29udGFpbnMgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBSQ0MgcGVyaXBoZXJhbC4KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3JjY19leC5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfcmNjX2V4LmMKaW5kZXggZWUwOTAwMy4uODdhZTcwMSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfcmNjX2V4LmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfcmNjX2V4LmMKQEAgLTQ1NCw3ICs0NTQsNyBAQAogCiAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUExMSTJTIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgLyogUExMSTJTIGlzIGNvbmZpZ3VyZWQgd2hlbiBhIHBlcmlwaGVyYWwgd2lsbCB1c2UgaXQgYXMgc291cmNlIGNsb2NrIDogU0FJMSwgU0FJMiwgSTJTIG9yIFNQRElGLVJYICovCi0gIGlmKChwbGxpMnN1c2VkID09IDEpIHx8IChQZXJpcGhDbGtJbml0LT5QZXJpcGhDbG9ja1NlbGVjdGlvbiA9PSBSQ0NfUEVSSVBIQ0xLX1BMTEkyUykpCisgIGlmKChwbGxpMnN1c2VkID09IDEpIHx8ICgoUGVyaXBoQ2xrSW5pdC0+UGVyaXBoQ2xvY2tTZWxlY3Rpb24gJiBSQ0NfUEVSSVBIQ0xLX1BMTEkyUykgPT0gUkNDX1BFUklQSENMS19QTExJMlMpKQogICB7CiAgICAgLyogRGlzYWJsZSB0aGUgUExMSTJTICovCiAgICAgX19IQUxfUkNDX1BMTEkyU19ESVNBQkxFKCk7CkBAIC0xMTA1LDcgKzExMDUsNyBAQAogCiAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUExMSTJTIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgLyogUExMSTJTIGlzIGNvbmZpZ3VyZWQgd2hlbiBhIHBlcmlwaGVyYWwgd2lsbCB1c2UgaXQgYXMgc291cmNlIGNsb2NrIDogU0FJMSwgU0FJMiBvciBJMlMgKi8KLSAgaWYoKHBsbGkyc3VzZWQgPT0gMSkgfHwgKFBlcmlwaENsa0luaXQtPlBlcmlwaENsb2NrU2VsZWN0aW9uID09IFJDQ19QRVJJUEhDTEtfUExMSTJTKSkKKyAgaWYoKHBsbGkyc3VzZWQgPT0gMSkgfHwgKChQZXJpcGhDbGtJbml0LT5QZXJpcGhDbG9ja1NlbGVjdGlvbiAmIFJDQ19QRVJJUEhDTEtfUExMSTJTKSA9PSBSQ0NfUEVSSVBIQ0xLX1BMTEkyUykpCiAgIHsKICAgICAvKiBEaXNhYmxlIHRoZSBQTExJMlMgKi8KICAgICBfX0hBTF9SQ0NfUExMSTJTX0RJU0FCTEUoKTsKZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3J0Yy5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfcnRjLmMKaW5kZXggZGFkODY1NS4uZjRjZTllMCAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfcnRjLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfcnRjLmMKQEAgLTMyMyw3ICszMjMsMTkgQEAKIAogICAgIC8qIEV4aXQgSW5pdGlhbGl6YXRpb24gbW9kZSAqLwogICAgIGhydGMtPkluc3RhbmNlLT5JU1IgJj0gKHVpbnQzMl90KX5SVENfSVNSX0lOSVQ7CisgICAgLyogSWYgIENSX0JZUFNIQUQgYml0ID0gMCwgd2FpdCBmb3Igc3luY2hybyBlbHNlIHRoaXMgY2hlY2sgaXMgbm90IG5lZWRlZCAqLworICAgIGlmKChocnRjLT5JbnN0YW5jZS0+Q1IgJiBSVENfQ1JfQllQU0hBRCkgPT0gUkVTRVQpCisgICAgeworICAgICAgaWYoSEFMX1JUQ19XYWl0Rm9yU3luY2hybyhocnRjKSAhPSBIQUxfT0spCisgICAgICB7CisgICAgICAgIC8qIEVuYWJsZSB0aGUgd3JpdGUgcHJvdGVjdGlvbiBmb3IgUlRDIHJlZ2lzdGVycyAqLworICAgICAgICBfX0hBTF9SVENfV1JJVEVQUk9URUNUSU9OX0VOQUJMRShocnRjKTsKIAorICAgICAgICBocnRjLT5TdGF0ZSA9IEhBTF9SVENfU1RBVEVfRVJST1I7CisKKyAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgICAgIH0KKyAgICB9CiAgICAgaHJ0Yy0+SW5zdGFuY2UtPk9SICY9ICh1aW50MzJfdCl+UlRDX09SX0FMQVJNVFlQRTsKICAgICBocnRjLT5JbnN0YW5jZS0+T1IgfD0gKHVpbnQzMl90KShocnRjLT5Jbml0Lk91dFB1dFR5cGUpOwogCkBAIC03OTksMTAgKzgxMSwxMCBAQAogICAgIC8qIFNldCB0aGUgUlRDX1RSIHJlZ2lzdGVyICovCiAgICAgaHJ0Yy0+SW5zdGFuY2UtPlRSID0gKHVpbnQzMl90KSh0bXByZWcgJiBSVENfVFJfUkVTRVJWRURfTUFTSyk7CiAKLSAgICAvKiBDbGVhciB0aGUgYml0cyB0byBiZSBjb25maWd1cmVkICovCisgICAgLyogVGhpcyBpbnRlcmZhY2UgaXMgZGVwcmVjYXRlZC4gVG8gbWFuYWdlIERheWxpZ2h0IFNhdmluZyBUaW1lLCBwbGVhc2UgdXNlIEhBTF9SVENfRFNUX3h4eCBmdW5jdGlvbnMgKi8KICAgICBocnRjLT5JbnN0YW5jZS0+Q1IgJj0gKHVpbnQzMl90KX5SVENfQ1JfQktQOwogCi0gICAgLyogQ29uZmlndXJlIHRoZSBSVENfQ1IgcmVnaXN0ZXIgKi8KKyAgICAvKiBUaGlzIGludGVyZmFjZSBpcyBkZXByZWNhdGVkLiBUbyBtYW5hZ2UgRGF5bGlnaHQgU2F2aW5nIFRpbWUsIHBsZWFzZSB1c2UgSEFMX1JUQ19EU1RfeHh4IGZ1bmN0aW9ucyAqLwogICAgIGhydGMtPkluc3RhbmNlLT5DUiB8PSAodWludDMyX3QpKHNUaW1lLT5EYXlMaWdodFNhdmluZyB8IHNUaW1lLT5TdG9yZU9wZXJhdGlvbik7CiAKICAgICAvKiBFeGl0IEluaXRpYWxpemF0aW9uIG1vZGUgKi8KQEAgLTE3NjYsNiArMTc3OCw3MiBAQAogfQogCiAvKioKKyAgKiBAYnJpZWYgIERheWxpZ2h0IFNhdmluZyBUaW1lLCBBZGQgb25lIGhvdXIgdG8gdGhlIGNhbGVuZGFyIGluIG9uZSBzaW5nbGUgb3BlcmF0aW9uCisgICogICAgICAgICB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIGluaXRpYWxpemF0aW9uIHByb2NlZHVyZS4KKyAgKiBAcGFyYW0gIGhydGMgUlRDIGhhbmRsZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBIQUxfUlRDX0RTVF9BZGQxSG91cihSVENfSGFuZGxlVHlwZURlZiAqaHJ0YykKK3sKKyAgVU5VU0VEKGhydGMpOworICBfX0hBTF9SVENfV1JJVEVQUk9URUNUSU9OX0RJU0FCTEUoaHJ0Yyk7CisgIFNFVF9CSVQoUlRDLT5DUiwgUlRDX0NSX0FERDFIKTsKKyAgX19IQUxfUlRDX1dSSVRFUFJPVEVDVElPTl9FTkFCTEUoaHJ0Yyk7Cit9CisKKy8qKgorICAqIEBicmllZiAgRGF5bGlnaHQgU2F2aW5nIFRpbWUsIFN1YnRyYWN0IG9uZSBob3VyIGZyb20gdGhlIGNhbGVuZGFyIGluIG9uZQorICAqICAgICAgICAgc2luZ2xlIG9wZXJhdGlvbiB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIGluaXRpYWxpemF0aW9uIHByb2NlZHVyZS4KKyAgKiBAcGFyYW0gIGhydGMgUlRDIGhhbmRsZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBIQUxfUlRDX0RTVF9TdWIxSG91cihSVENfSGFuZGxlVHlwZURlZiAqaHJ0YykKK3sKKyAgVU5VU0VEKGhydGMpOworICBfX0hBTF9SVENfV1JJVEVQUk9URUNUSU9OX0RJU0FCTEUoaHJ0Yyk7CisgIFNFVF9CSVQoUlRDLT5DUiwgUlRDX0NSX1NVQjFIKTsKKyAgX19IQUxfUlRDX1dSSVRFUFJPVEVDVElPTl9FTkFCTEUoaHJ0Yyk7Cit9CisKKy8qKgorICAqIEBicmllZiAgRGF5bGlnaHQgU2F2aW5nIFRpbWUsIFNldCB0aGUgc3RvcmUgb3BlcmF0aW9uIGJpdC4KKyAgKiBAbm90ZSAgIEl0IGNhbiBiZSB1c2VkIGJ5IHRoZSBzb2Z0d2FyZSBpbiBvcmRlciB0byBtZW1vcml6ZSB0aGUgRFNUIHN0YXR1cy4KKyAgKiBAcGFyYW0gIGhydGMgUlRDIGhhbmRsZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBIQUxfUlRDX0RTVF9TZXRTdG9yZU9wZXJhdGlvbihSVENfSGFuZGxlVHlwZURlZiAqaHJ0YykKK3sKKyAgVU5VU0VEKGhydGMpOworICBfX0hBTF9SVENfV1JJVEVQUk9URUNUSU9OX0RJU0FCTEUoaHJ0Yyk7CisgIFNFVF9CSVQoUlRDLT5DUiwgUlRDX0NSX0JLUCk7CisgIF9fSEFMX1JUQ19XUklURVBST1RFQ1RJT05fRU5BQkxFKGhydGMpOworfQorCisvKioKKyAgKiBAYnJpZWYgIERheWxpZ2h0IFNhdmluZyBUaW1lLCBDbGVhciB0aGUgc3RvcmUgb3BlcmF0aW9uIGJpdC4KKyAgKiBAcGFyYW0gIGhydGMgUlRDIGhhbmRsZQorICAqIEByZXR2YWwgTm9uZQorICAqLwordm9pZCBIQUxfUlRDX0RTVF9DbGVhclN0b3JlT3BlcmF0aW9uKFJUQ19IYW5kbGVUeXBlRGVmICpocnRjKQoreworICBVTlVTRUQoaHJ0Yyk7CisgIF9fSEFMX1JUQ19XUklURVBST1RFQ1RJT05fRElTQUJMRShocnRjKTsKKyAgQ0xFQVJfQklUKFJUQy0+Q1IsIFJUQ19DUl9CS1ApOworICBfX0hBTF9SVENfV1JJVEVQUk9URUNUSU9OX0VOQUJMRShocnRjKTsKK30KKworLyoqCisgICogQGJyaWVmICBEYXlsaWdodCBTYXZpbmcgVGltZSwgUmVhZCB0aGUgc3RvcmUgb3BlcmF0aW9uIGJpdC4KKyAgKiBAcGFyYW0gIGhydGMgUlRDIGhhbmRsZQorICAqIEByZXR2YWwgb3BlcmF0aW9uIHNlZSBSVENfU3RvcmVPcGVyYXRpb25fRGVmaW5pdGlvbnMKKyAgKi8KK3VpbnQzMl90IEhBTF9SVENfRFNUX1JlYWRTdG9yZU9wZXJhdGlvbihSVENfSGFuZGxlVHlwZURlZiAqaHJ0YykKK3sKKyAgVU5VU0VEKGhydGMpOworICByZXR1cm4gUkVBRF9CSVQoUlRDLT5DUiwgUlRDX0NSX0JLUCk7Cit9CisKKy8qKgogICAqIEB9CiAgICovCiAKZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3NhaS5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfc2FpLmMKaW5kZXggZTgwMjJmNC4uYTBlYzlhNSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfc2FpLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfc2FpLmMKQEAgLTIyMiwxMCArMjIyLDExIEBACiAvKiogQGRlZmdyb3VwIFNBSV9Qcml2YXRlX1R5cGVkZWZzICBTQUkgUHJpdmF0ZSBUeXBlZGVmcwogICAqIEB7CiAgICovCi10eXBlZGVmIGVudW0gewordHlwZWRlZiBlbnVtCit7CiAgIFNBSV9NT0RFX0RNQSwKICAgU0FJX01PREVfSVQKLX1TQUlfTW9kZVR5cGVkZWY7Cit9IFNBSV9Nb2RlVHlwZWRlZjsKIC8qKgogICAqIEB9CiAgICovCkBAIC0yMzUsNyArMjM2LDggQEAKIC8qKiBAZGVmZ3JvdXAgU0FJX1ByaXZhdGVfQ29uc3RhbnRzICBTQUkgUHJpdmF0ZSBDb25zdGFudHMKICAgKiBAewogICAqLwotI2RlZmluZSBTQUlfREVGQVVMVF9USU1FT1VUICAgNCAvKiA0bXMgKi8KKyNkZWZpbmUgU0FJX0RFRkFVTFRfVElNRU9VVCAgIDRVIC8qIDRtcyAqLworI2RlZmluZSBTQUlfTE9OR19USU1FT1VUICAgICAgMTAwMFUKIC8qKgogICAqIEB9CiAgICovCkBAIC0zMjcsMjMgKzMyOSwyMyBAQAogICBhc3NlcnRfcGFyYW0oSVNfU0FJX1NVUFBPUlRFRF9QUk9UT0NPTChwcm90b2NvbCkpOwogICBhc3NlcnRfcGFyYW0oSVNfU0FJX1BST1RPQ09MX0RBVEFTSVpFKGRhdGFzaXplKSk7CiAKLSAgc3dpdGNoKHByb3RvY29sKQorICBzd2l0Y2ggKHByb3RvY29sKQogICB7Ci0gIGNhc2UgU0FJX0kyU19TVEFOREFSRCA6Ci0gIGNhc2UgU0FJX0kyU19NU0JKVVNUSUZJRUQgOgotICBjYXNlIFNBSV9JMlNfTFNCSlVTVElGSUVEIDoKLSAgICBzdGF0dXMgPSBTQUlfSW5pdEkyUyhoc2FpLCBwcm90b2NvbCwgZGF0YXNpemUsIG5ic2xvdCk7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgU0FJX1BDTV9MT05HIDoKLSAgY2FzZSBTQUlfUENNX1NIT1JUIDoKLSAgICBzdGF0dXMgPSBTQUlfSW5pdFBDTShoc2FpLCBwcm90b2NvbCwgZGF0YXNpemUsIG5ic2xvdCk7Ci0gICAgYnJlYWs7Ci0gIGRlZmF1bHQgOgotICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKLSAgICBicmVhazsKKyAgICBjYXNlIFNBSV9JMlNfU1RBTkRBUkQgOgorICAgIGNhc2UgU0FJX0kyU19NU0JKVVNUSUZJRUQgOgorICAgIGNhc2UgU0FJX0kyU19MU0JKVVNUSUZJRUQgOgorICAgICAgc3RhdHVzID0gU0FJX0luaXRJMlMoaHNhaSwgcHJvdG9jb2wsIGRhdGFzaXplLCBuYnNsb3QpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBTQUlfUENNX0xPTkcgOgorICAgIGNhc2UgU0FJX1BDTV9TSE9SVCA6CisgICAgICBzdGF0dXMgPSBTQUlfSW5pdFBDTShoc2FpLCBwcm90b2NvbCwgZGF0YXNpemUsIG5ic2xvdCk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0IDoKKyAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKKyAgICAgIGJyZWFrOwogICB9CiAKLSAgaWYoc3RhdHVzID09IEhBTF9PSykKKyAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCiAgIHsKICAgICBzdGF0dXMgPSBIQUxfU0FJX0luaXQoaHNhaSk7CiAgIH0KQEAgLTM2NSw3ICszNjcsNyBAQAogICB1aW50MzJfdCBzeW5jZW5fYml0cyA9IDA7CiAKICAgLyogQ2hlY2sgdGhlIFNBSSBoYW5kbGUgYWxsb2NhdGlvbiAqLwotICBpZihoc2FpID09IE5VTEwpCisgIGlmIChoc2FpID09IE5VTEwpCiAgIHsKICAgICByZXR1cm4gSEFMX0VSUk9SOwogICB9CkBAIC00MDIsNyArNDA0LDcgQEAKICAgYXNzZXJ0X3BhcmFtKElTX1NBSV9CTE9DS19TTE9UX05VTUJFUihoc2FpLT5TbG90SW5pdC5TbG90TnVtYmVyKSk7CiAgIGFzc2VydF9wYXJhbShJU19TQUlfU0xPVF9BQ1RJVkUoaHNhaS0+U2xvdEluaXQuU2xvdEFjdGl2ZSkpOwogCi0gIGlmKGhzYWktPlN0YXRlID09IEhBTF9TQUlfU1RBVEVfUkVTRVQpCisgIGlmIChoc2FpLT5TdGF0ZSA9PSBIQUxfU0FJX1NUQVRFX1JFU0VUKQogICB7CiAgICAgLyogQWxsb2NhdGUgbG9jayByZXNvdXJjZSBhbmQgaW5pdGlhbGl6ZSBpdCAqLwogICAgIGhzYWktPkxvY2sgPSBIQUxfVU5MT0NLRUQ7CkBAIC00MzQsNyArNDM2LDcgQEAKIAogICAvKiBTQUkgQmxvY2sgU3luY2hybyBDb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgLyogVGhpcyBzZXR0aW5nIG11c3QgYmUgZG9uZSB3aXRoIGJvdGggYXVkaW8gYmxvY2sgKEEgJiBCKSBkaXNhYmxlZCAgICAgICAgICovCi0gIHN3aXRjaChoc2FpLT5Jbml0LlN5bmNocm9FeHQpCisgIHN3aXRjaCAoaHNhaS0+SW5pdC5TeW5jaHJvRXh0KQogICB7CiAgICAgY2FzZSBTQUlfU1lOQ0VYVF9ESVNBQkxFIDoKICAgICAgIHRtcHJlZ2lzdGVyR0NSID0gMDsKQEAgLTQ0NSwzOCArNDQ3LDM4IEBACiAgICAgY2FzZSBTQUlfU1lOQ0VYVF9PVVRCTE9DS0JfRU5BQkxFIDoKICAgICAgIHRtcHJlZ2lzdGVyR0NSID0gU0FJX0dDUl9TWU5DT1VUXzE7CiAgICAgICBicmVhazsKLSAgZGVmYXVsdDoKLSAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CiAgIH0KIAotICBzd2l0Y2goaHNhaS0+SW5pdC5TeW5jaHJvKQorICBzd2l0Y2ggKGhzYWktPkluaXQuU3luY2hybykKICAgewogICAgIGNhc2UgU0FJX0FTWU5DSFJPTk9VUyA6Ci0gICAgICB7Ci0gICAgICAgIHN5bmNlbl9iaXRzID0gMDsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0FJX1NZTkNIUk9OT1VTIDoKLSAgICAgIHsKLSAgICAgICAgc3luY2VuX2JpdHMgPSBTQUlfeENSMV9TWU5DRU5fMDsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0FJX1NZTkNIUk9OT1VTX0VYVF9TQUkxIDoKLSAgICAgIHsKLSAgICAgICAgc3luY2VuX2JpdHMgPSBTQUlfeENSMV9TWU5DRU5fMTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgU0FJX1NZTkNIUk9OT1VTX0VYVF9TQUkyIDoKLSAgICAgIHsKLSAgICAgICAgc3luY2VuX2JpdHMgPSBTQUlfeENSMV9TWU5DRU5fMTsKLSAgICAgICAgdG1wcmVnaXN0ZXJHQ1IgfD0gU0FJX0dDUl9TWU5DSU5fMDsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICBkZWZhdWx0OgorICAgIHsKKyAgICAgIHN5bmNlbl9iaXRzID0gMDsKKyAgICB9CiAgICAgYnJlYWs7CisgICAgY2FzZSBTQUlfU1lOQ0hST05PVVMgOgorICAgIHsKKyAgICAgIHN5bmNlbl9iaXRzID0gU0FJX3hDUjFfU1lOQ0VOXzA7CisgICAgfQorICAgIGJyZWFrOworICAgIGNhc2UgU0FJX1NZTkNIUk9OT1VTX0VYVF9TQUkxIDoKKyAgICB7CisgICAgICBzeW5jZW5fYml0cyA9IFNBSV94Q1IxX1NZTkNFTl8xOworICAgIH0KKyAgICBicmVhazsKKyAgICBjYXNlIFNBSV9TWU5DSFJPTk9VU19FWFRfU0FJMiA6CisgICAgeworICAgICAgc3luY2VuX2JpdHMgPSBTQUlfeENSMV9TWU5DRU5fMTsKKyAgICAgIHRtcHJlZ2lzdGVyR0NSIHw9IFNBSV9HQ1JfU1lOQ0lOXzA7CisgICAgfQorICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKICAgfQogCi0gIGlmKChoc2FpLT5JbnN0YW5jZSA9PSBTQUkxX0Jsb2NrX0EpIHx8IChoc2FpLT5JbnN0YW5jZSA9PSBTQUkxX0Jsb2NrX0IpKQorICBpZiAoKGhzYWktPkluc3RhbmNlID09IFNBSTFfQmxvY2tfQSkgfHwgKGhzYWktPkluc3RhbmNlID09IFNBSTFfQmxvY2tfQikpCiAgIHsKICAgICBTQUkxLT5HQ1IgPSB0bXByZWdpc3RlckdDUjsKICAgfQpAQCAtNDg1LDE2ICs0ODcsMTYgQEAKICAgICBTQUkyLT5HQ1IgPSB0bXByZWdpc3RlckdDUjsKICAgfQogCi0gIGlmKGhzYWktPkluaXQuQXVkaW9GcmVxdWVuY3kgIT0gU0FJX0FVRElPX0ZSRVFVRU5DWV9NQ0tESVYpCisgIGlmIChoc2FpLT5Jbml0LkF1ZGlvRnJlcXVlbmN5ICE9IFNBSV9BVURJT19GUkVRVUVOQ1lfTUNLRElWKQogICB7CiAgICAgdWludDMyX3QgZnJlcSA9IDA7CiAgICAgdWludDMyX3QgdG1wdmFsOwogCi0gICAgaWYoKGhzYWktPkluc3RhbmNlID09IFNBSTFfQmxvY2tfQSApIHx8IChoc2FpLT5JbnN0YW5jZSA9PSBTQUkxX0Jsb2NrX0IgKSkKKyAgICBpZiAoKGhzYWktPkluc3RhbmNlID09IFNBSTFfQmxvY2tfQSkgfHwgKGhzYWktPkluc3RhbmNlID09IFNBSTFfQmxvY2tfQikpCiAgICAgewogICAgICAgZnJlcSA9IEhBTF9SQ0NFeF9HZXRQZXJpcGhDTEtGcmVxKFJDQ19QRVJJUEhDTEtfU0FJMSk7CiAgICAgfQotICAgIGlmKChoc2FpLT5JbnN0YW5jZSA9PSBTQUkyX0Jsb2NrX0EgKSB8fCAoaHNhaS0+SW5zdGFuY2UgPT0gU0FJMl9CbG9ja19CICkpCisgICAgaWYgKChoc2FpLT5JbnN0YW5jZSA9PSBTQUkyX0Jsb2NrX0EpIHx8IChoc2FpLT5JbnN0YW5jZSA9PSBTQUkyX0Jsb2NrX0IpKQogICAgIHsKICAgICAgIGZyZXEgPSBIQUxfUkNDRXhfR2V0UGVyaXBoQ0xLRnJlcShSQ0NfUEVSSVBIQ0xLX1NBSTIpOwogICAgIH0KQEAgLTUwOCw2MyArNTEwLDcxIEBACiAgICAgaHNhaS0+SW5pdC5NY2tkaXYgPSB0bXB2YWwgLyAxMDsKIAogICAgIC8qIFJvdW5kIHJlc3VsdCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyICovCi0gICAgaWYoKHRtcHZhbCAlIDEwKSA+IDgpCisgICAgaWYgKCh0bXB2YWwgJSAxMCkgPiA4KQogICAgIHsKLSAgICAgIGhzYWktPkluaXQuTWNrZGl2Kz0gMTsKKyAgICAgIGhzYWktPkluaXQuTWNrZGl2ICs9IDE7CisgICAgfQorCisgICAgLyogRm9yIFNQRElGIHByb3RvY29sLCBTQUkgc2hhbGwgcHJvdmlkZSBhIGJpdCBjbG9jayB0d2ljZSBmYXN0ZXIgdGhlIHN5bWJvbC1yYXRlICovCisgICAgaWYgKGhzYWktPkluaXQuUHJvdG9jb2wgPT0gU0FJX1NQRElGX1BST1RPQ09MKQorICAgIHsKKyAgICAgIGhzYWktPkluaXQuTWNrZGl2ID0gaHNhaS0+SW5pdC5NY2tkaXYgPj4gMTsKICAgICB9CiAgIH0KICAgLyogQ2hlY2sgdGhlIFNBSSBCbG9jayBtYXN0ZXIgY2xvY2sgZGl2aWRlciBwYXJhbWV0ZXIgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1NBSV9CTE9DS19NQVNURVJfRElWSURFUihoc2FpLT5Jbml0Lk1ja2RpdikpOwogCiAgIC8qIENvbXB1dGUgQ0tTVFIgYml0cyBvZiBTQUkgQ1IxIGFjY29yZGluZyBDbG9ja1N0cm9iaW5nIGFuZCBBdWRpb01vZGUgKi8KLSAgaWYoKGhzYWktPkluaXQuQXVkaW9Nb2RlID09IFNBSV9NT0RFTUFTVEVSX1RYKSB8fCAoaHNhaS0+SW5pdC5BdWRpb01vZGUgPT0gU0FJX01PREVTTEFWRV9UWCkpCi0gIHsgLyogVHJhbnNtaXQgKi8KKyAgaWYgKChoc2FpLT5Jbml0LkF1ZGlvTW9kZSA9PSBTQUlfTU9ERU1BU1RFUl9UWCkgfHwgKGhzYWktPkluaXQuQXVkaW9Nb2RlID09IFNBSV9NT0RFU0xBVkVfVFgpKQorICB7CisgICAgLyogVHJhbnNtaXQgKi8KICAgICBja3N0cl9iaXRzID0gKGhzYWktPkluaXQuQ2xvY2tTdHJvYmluZyA9PSBTQUlfQ0xPQ0tTVFJPQklOR19SSVNJTkdFREdFKSA/IDAgOiBTQUlfeENSMV9DS1NUUjsKICAgfQogICBlbHNlCi0gIHsgLyogUmVjZWl2ZSAqLworICB7CisgICAgLyogUmVjZWl2ZSAqLwogICAgIGNrc3RyX2JpdHMgPSAoaHNhaS0+SW5pdC5DbG9ja1N0cm9iaW5nID09IFNBSV9DTE9DS1NUUk9CSU5HX1JJU0lOR0VER0UpID8gU0FJX3hDUjFfQ0tTVFIgOiAwOwogICB9CiAKICAgLyogU0FJIEJsb2NrIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgIC8qIFNBSSBDUjEgQ29uZmlndXJhdGlvbiAqLwotICBoc2FpLT5JbnN0YW5jZS0+Q1IxJj1+KFNBSV94Q1IxX01PREUgfCBTQUlfeENSMV9QUlRDRkcgfCAgU0FJX3hDUjFfRFMgfCAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBTQUlfeENSMV9MU0JGSVJTVCB8IFNBSV94Q1IxX0NLU1RSIHwgU0FJX3hDUjFfU1lOQ0VOIHxcCi0gICAgICAgICAgICAgICAgICAgICAgICAgU0FJX3hDUjFfTU9OTyB8IFNBSV94Q1IxX09VVERSSVYgIHwgU0FJX3hDUjFfRE1BRU4gfCAgXAotICAgICAgICAgICAgICAgICAgICAgICAgIFNBSV94Q1IxX05PRElWIHwgU0FJX3hDUjFfTUNLRElWKTsKKyAgaHNhaS0+SW5zdGFuY2UtPkNSMSAmPSB+KFNBSV94Q1IxX01PREUgfCBTQUlfeENSMV9QUlRDRkcgfCAgU0FJX3hDUjFfRFMgfCAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNBSV94Q1IxX0xTQkZJUlNUIHwgU0FJX3hDUjFfQ0tTVFIgfCBTQUlfeENSMV9TWU5DRU4gfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTQUlfeENSMV9NT05PIHwgU0FJX3hDUjFfT1VURFJJViAgfCBTQUlfeENSMV9ETUFFTiB8ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTQUlfeENSMV9OT0RJViB8IFNBSV94Q1IxX01DS0RJVik7CiAKLSAgaHNhaS0+SW5zdGFuY2UtPkNSMXw9KGhzYWktPkluaXQuQXVkaW9Nb2RlIHwgaHNhaS0+SW5pdC5Qcm90b2NvbCB8ICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICBoc2FpLT5Jbml0LkRhdGFTaXplIHwgaHNhaS0+SW5pdC5GaXJzdEJpdCAgfCAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgY2tzdHJfYml0cyB8IHN5bmNlbl9iaXRzIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgaHNhaS0+SW5pdC5Nb25vU3RlcmVvTW9kZSB8IGhzYWktPkluaXQuT3V0cHV0RHJpdmUgfCAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGhzYWktPkluaXQuTm9EaXZpZGVyIHwgKGhzYWktPkluaXQuTWNrZGl2IDw8IDIwKSk7CisgIGhzYWktPkluc3RhbmNlLT5DUjEgfD0gKGhzYWktPkluaXQuQXVkaW9Nb2RlIHwgaHNhaS0+SW5pdC5Qcm90b2NvbCB8ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhzYWktPkluaXQuRGF0YVNpemUgfCBoc2FpLT5Jbml0LkZpcnN0Qml0ICB8ICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNrc3RyX2JpdHMgfCBzeW5jZW5fYml0cyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaHNhaS0+SW5pdC5Nb25vU3RlcmVvTW9kZSB8IGhzYWktPkluaXQuT3V0cHV0RHJpdmUgfCAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaHNhaS0+SW5pdC5Ob0RpdmlkZXIgfCAoaHNhaS0+SW5pdC5NY2tkaXYgPDwgMjApKTsKIAogICAvKiBTQUkgQ1IyIENvbmZpZ3VyYXRpb24gKi8KLSAgaHNhaS0+SW5zdGFuY2UtPkNSMiY9IH4oU0FJX3hDUjJfRlRIIHwgU0FJX3hDUjJfRkZMVVNIIHwgU0FJX3hDUjJfQ09NUCB8IFNBSV94Q1IyX0NQTCk7Ci0gIGhzYWktPkluc3RhbmNlLT5DUjJ8PSAgKGhzYWktPkluaXQuRklGT1RocmVzaG9sZCB8IGhzYWktPkluaXQuQ29tcGFuZGluZ01vZGUgfCBoc2FpLT5Jbml0LlRyaVN0YXRlKTsKKyAgaHNhaS0+SW5zdGFuY2UtPkNSMiAmPSB+KFNBSV94Q1IyX0ZUSCB8IFNBSV94Q1IyX0ZGTFVTSCB8IFNBSV94Q1IyX0NPTVAgfCBTQUlfeENSMl9DUEwpOworICBoc2FpLT5JbnN0YW5jZS0+Q1IyIHw9IChoc2FpLT5Jbml0LkZJRk9UaHJlc2hvbGQgfCBoc2FpLT5Jbml0LkNvbXBhbmRpbmdNb2RlIHwgaHNhaS0+SW5pdC5UcmlTdGF0ZSk7CiAKICAgLyogU0FJIEZyYW1lIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotICBoc2FpLT5JbnN0YW5jZS0+RlJDUiY9KH4oU0FJX3hGUkNSX0ZSTCB8IFNBSV94RlJDUl9GU0FMTCB8IFNBSV94RlJDUl9GU0RFRiB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNBSV94RlJDUl9GU1BPTCB8IFNBSV94RlJDUl9GU09GRikpOwotICBoc2FpLT5JbnN0YW5jZS0+RlJDUnw9KChoc2FpLT5GcmFtZUluaXQuRnJhbWVMZW5ndGggLSAxKSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGhzYWktPkZyYW1lSW5pdC5GU09mZnNldCB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGhzYWktPkZyYW1lSW5pdC5GU0RlZmluaXRpb24gfAotICAgICAgICAgICAgICAgICAgICAgICAgICBoc2FpLT5GcmFtZUluaXQuRlNQb2xhcml0eSAgIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKChoc2FpLT5GcmFtZUluaXQuQWN0aXZlRnJhbWVMZW5ndGggLSAxKSA8PCA4KSk7CisgIGhzYWktPkluc3RhbmNlLT5GUkNSICY9ICh+KFNBSV94RlJDUl9GUkwgfCBTQUlfeEZSQ1JfRlNBTEwgfCBTQUlfeEZSQ1JfRlNERUYgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNBSV94RlJDUl9GU1BPTCB8IFNBSV94RlJDUl9GU09GRikpOworICBoc2FpLT5JbnN0YW5jZS0+RlJDUiB8PSAoKGhzYWktPkZyYW1lSW5pdC5GcmFtZUxlbmd0aCAtIDEpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGhzYWktPkZyYW1lSW5pdC5GU09mZnNldCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICBoc2FpLT5GcmFtZUluaXQuRlNEZWZpbml0aW9uIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGhzYWktPkZyYW1lSW5pdC5GU1BvbGFyaXR5ICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKChoc2FpLT5GcmFtZUluaXQuQWN0aXZlRnJhbWVMZW5ndGggLSAxKSA8PCA4KSk7CiAKICAgLyogU0FJIEJsb2NrX3ggU0xPVCBDb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgIC8qIFRoaXMgcmVnaXN0ZXIgaGFzIG5vIG1lYW5pbmcgaW4gQUMgOTcgYW5kIFNQRElGIGF1ZGlvIHByb3RvY29sICovCi0gIGhzYWktPkluc3RhbmNlLT5TTE9UUiY9ICh+KFNBSV94U0xPVFJfRkJPRkYgfCBTQUlfeFNMT1RSX1NMT1RTWiB8ICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQUlfeFNMT1RSX05CU0xPVCB8IFNBSV94U0xPVFJfU0xPVEVOICkpOworICBoc2FpLT5JbnN0YW5jZS0+U0xPVFIgJj0gKH4oU0FJX3hTTE9UUl9GQk9GRiB8IFNBSV94U0xPVFJfU0xPVFNaIHwgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQUlfeFNMT1RSX05CU0xPVCB8IFNBSV94U0xPVFJfU0xPVEVOKSk7CiAKLSAgaHNhaS0+SW5zdGFuY2UtPlNMT1RSfD0gIGhzYWktPlNsb3RJbml0LkZpcnN0Qml0T2Zmc2V0IHwgIGhzYWktPlNsb3RJbml0LlNsb3RTaXplCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgKGhzYWktPlNsb3RJbml0LlNsb3RBY3RpdmUgPDwgMTYpIHwgKChoc2FpLT5TbG90SW5pdC5TbG90TnVtYmVyIC0gMSkgPDwgIDgpOworICBoc2FpLT5JbnN0YW5jZS0+U0xPVFIgfD0gIGhzYWktPlNsb3RJbml0LkZpcnN0Qml0T2Zmc2V0IHwgIGhzYWktPlNsb3RJbml0LlNsb3RTaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoaHNhaS0+U2xvdEluaXQuU2xvdEFjdGl2ZSA8PCAxNikgfCAoKGhzYWktPlNsb3RJbml0LlNsb3ROdW1iZXIgLSAxKSA8PCAgOCk7CiAKICAgLyogSW5pdGlhbGl6ZSB0aGUgZXJyb3IgY29kZSAqLwogICBoc2FpLT5FcnJvckNvZGUgPSBIQUxfU0FJX0VSUk9SX05PTkU7CiAKICAgLyogSW5pdGlhbGl6ZSB0aGUgU0FJIHN0YXRlICovCi0gIGhzYWktPlN0YXRlPSBIQUxfU0FJX1NUQVRFX1JFQURZOworICBoc2FpLT5TdGF0ZSA9IEhBTF9TQUlfU1RBVEVfUkVBRFk7CiAKICAgLyogUmVsZWFzZSBMb2NrICovCiAgIF9fSEFMX1VOTE9DSyhoc2FpKTsKQEAgLTU4MSw3ICs1OTEsNyBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NBSV9EZUluaXQoU0FJX0hhbmRsZVR5cGVEZWYgKmhzYWkpCiB7CiAgIC8qIENoZWNrIHRoZSBTQUkgaGFuZGxlIGFsbG9jYXRpb24gKi8KLSAgaWYoaHNhaSA9PSBOVUxMKQorICBpZiAoaHNhaSA9PSBOVUxMKQogICB7CiAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQpAQCAtODg0LDE2ICs4OTQsMTYgQEAKICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCBkdXJhdGlvbgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NBSV9UcmFuc21pdChTQUlfSGFuZGxlVHlwZURlZiAqaHNhaSwgdWludDhfdCogcERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFRpbWVvdXQpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU0FJX1RyYW5zbWl0KFNBSV9IYW5kbGVUeXBlRGVmICpoc2FpLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgVGltZW91dCkKIHsKICAgdWludDMyX3QgdGlja3N0YXJ0ID0gSEFMX0dldFRpY2soKTsKIAotICBpZigocERhdGEgPT0gTlVMTCApIHx8IChTaXplID09IDApKQorICBpZiAoKHBEYXRhID09IE5VTEwpIHx8IChTaXplID09IDApKQogICB7CiAgICAgcmV0dXJuICBIQUxfRVJST1I7CiAgIH0KIAotICBpZihoc2FpLT5TdGF0ZSA9PSBIQUxfU0FJX1NUQVRFX1JFQURZKQorICBpZiAoaHNhaS0+U3RhdGUgPT0gSEFMX1NBSV9TVEFURV9SRUFEWSkKICAgewogICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCiAgICAgX19IQUxfTE9DSyhoc2FpKTsKQEAgLTkwNSw3ICs5MTUsNyBAQAogICAgIGhzYWktPkVycm9yQ29kZSA9IEhBTF9TQUlfRVJST1JfTk9ORTsKIAogICAgIC8qIENoZWNrIGlmIHRoZSBTQUkgaXMgYWxyZWFkeSBlbmFibGVkICovCi0gICAgaWYoKGhzYWktPkluc3RhbmNlLT5DUjEgJiBTQUlfeENSMV9TQUlFTikgPT0gUkVTRVQpCisgICAgaWYgKChoc2FpLT5JbnN0YW5jZS0+Q1IxICYgU0FJX3hDUjFfU0FJRU4pID09IFJFU0VUKQogICAgIHsKICAgICAgIC8qIGZpbGwgdGhlIGZpZm8gd2l0aCBkYXRhIGJlZm9yZSB0byBlbmFibGVkIHRoZSBTQUkgKi8KICAgICAgIFNBSV9GaWxsRmlmbyhoc2FpKTsKQEAgLTkxMywzMSArOTIzLDMxIEBACiAgICAgICBfX0hBTF9TQUlfRU5BQkxFKGhzYWkpOwogICAgIH0KIAotICAgIHdoaWxlKGhzYWktPlhmZXJDb3VudCA+IDApCisgICAgd2hpbGUgKGhzYWktPlhmZXJDb3VudCA+IDApCiAgICAgewogICAgICAgLyogV3JpdGUgZGF0YSBpZiB0aGUgRklGTyBpcyBub3QgZnVsbCAqLwotICAgICAgaWYoKGhzYWktPkluc3RhbmNlLT5TUiAmIFNBSV94U1JfRkxWTCkgIT0gU0FJX0ZJRk9TVEFUVVNfRlVMTCkKKyAgICAgIGlmICgoaHNhaS0+SW5zdGFuY2UtPlNSICYgU0FJX3hTUl9GTFZMKSAhPSBTQUlfRklGT1NUQVRVU19GVUxMKQogICAgICAgewotICAgICAgICBpZigoaHNhaS0+SW5pdC5EYXRhU2l6ZSA9PSBTQUlfREFUQVNJWkVfOCkgJiYgKGhzYWktPkluaXQuQ29tcGFuZGluZ01vZGUgPT0gU0FJX05PQ09NUEFORElORykpCisgICAgICAgIGlmICgoaHNhaS0+SW5pdC5EYXRhU2l6ZSA9PSBTQUlfREFUQVNJWkVfOCkgJiYgKGhzYWktPkluaXQuQ29tcGFuZGluZ01vZGUgPT0gU0FJX05PQ09NUEFORElORykpCiAgICAgICAgIHsKICAgICAgICAgICBoc2FpLT5JbnN0YW5jZS0+RFIgPSAoKmhzYWktPnBCdWZmUHRyKyspOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYoaHNhaS0+SW5pdC5EYXRhU2l6ZSA8PSBTQUlfREFUQVNJWkVfMTYpCisgICAgICAgIGVsc2UgaWYgKGhzYWktPkluaXQuRGF0YVNpemUgPD0gU0FJX0RBVEFTSVpFXzE2KQogICAgICAgICB7CiAgICAgICAgICAgaHNhaS0+SW5zdGFuY2UtPkRSID0gKigodWludDE2X3QgKiloc2FpLT5wQnVmZlB0cik7Ci0gICAgICAgICAgaHNhaS0+cEJ1ZmZQdHIrPSAyOworICAgICAgICAgIGhzYWktPnBCdWZmUHRyICs9IDI7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgaHNhaS0+SW5zdGFuY2UtPkRSID0gKigodWludDMyX3QgKiloc2FpLT5wQnVmZlB0cik7Ci0gICAgICAgICAgaHNhaS0+cEJ1ZmZQdHIrPSA0OworICAgICAgICAgIGhzYWktPnBCdWZmUHRyICs9IDQ7CiAgICAgICAgIH0KICAgICAgICAgaHNhaS0+WGZlckNvdW50LS07CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CiAgICAgICAgIC8qIENoZWNrIGZvciB0aGUgVGltZW91dCAqLwotICAgICAgICBpZigoVGltZW91dCAhPSBIQUxfTUFYX0RFTEFZKSAmJiAoKFRpbWVvdXQgPT0gMCl8fCgoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCkgPiBUaW1lb3V0KSkpCisgICAgICAgIGlmICgoVGltZW91dCAhPSBIQUxfTUFYX0RFTEFZKSAmJiAoKFRpbWVvdXQgPT0gMCkgfHwgKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0KSA+IFRpbWVvdXQpKSkKICAgICAgICAgewogICAgICAgICAgIC8qIFVwZGF0ZSBlcnJvciBjb2RlICovCiAgICAgICAgICAgaHNhaS0+RXJyb3JDb2RlIHw9IEhBTF9TQUlfRVJST1JfVElNRU9VVDsKQEAgLTk4OCwxMiArOTk4LDEyIEBACiB7CiAgIHVpbnQzMl90IHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CiAKLSAgaWYoKHBEYXRhID09IE5VTEwgKSB8fCAoU2l6ZSA9PSAwKSkKKyAgaWYgKChwRGF0YSA9PSBOVUxMKSB8fCAoU2l6ZSA9PSAwKSkKICAgewogICAgIHJldHVybiAgSEFMX0VSUk9SOwogICB9CiAKLSAgaWYoaHNhaS0+U3RhdGUgPT0gSEFMX1NBSV9TVEFURV9SRUFEWSkKKyAgaWYgKGhzYWktPlN0YXRlID09IEhBTF9TQUlfU1RBVEVfUkVBRFkpCiAgIHsKICAgICAvKiBQcm9jZXNzIExvY2tlZCAqLwogICAgIF9fSEFMX0xPQ0soaHNhaSk7CkBAIC0xMDA1LDM3ICsxMDE1LDM3IEBACiAgICAgaHNhaS0+RXJyb3JDb2RlID0gSEFMX1NBSV9FUlJPUl9OT05FOwogCiAgICAgLyogQ2hlY2sgaWYgdGhlIFNBSSBpcyBhbHJlYWR5IGVuYWJsZWQgKi8KLSAgICBpZigoaHNhaS0+SW5zdGFuY2UtPkNSMSAmIFNBSV94Q1IxX1NBSUVOKSA9PSBSRVNFVCkKKyAgICBpZiAoKGhzYWktPkluc3RhbmNlLT5DUjEgJiBTQUlfeENSMV9TQUlFTikgPT0gUkVTRVQpCiAgICAgewogICAgICAgLyogRW5hYmxlIFNBSSBwZXJpcGhlcmFsICovCiAgICAgICBfX0hBTF9TQUlfRU5BQkxFKGhzYWkpOwogICAgIH0KIAogICAgIC8qIFJlY2VpdmUgZGF0YSAqLwotICAgIHdoaWxlKGhzYWktPlhmZXJDb3VudCA+IDApCisgICAgd2hpbGUgKGhzYWktPlhmZXJDb3VudCA+IDApCiAgICAgewotICAgICAgaWYoKGhzYWktPkluc3RhbmNlLT5TUiAmIFNBSV94U1JfRkxWTCkgIT0gU0FJX0ZJRk9TVEFUVVNfRU1QVFkpCisgICAgICBpZiAoKGhzYWktPkluc3RhbmNlLT5TUiAmIFNBSV94U1JfRkxWTCkgIT0gU0FJX0ZJRk9TVEFUVVNfRU1QVFkpCiAgICAgICB7Ci0gICAgICAgIGlmKChoc2FpLT5Jbml0LkRhdGFTaXplID09IFNBSV9EQVRBU0laRV84KSAmJiAoaHNhaS0+SW5pdC5Db21wYW5kaW5nTW9kZSA9PSBTQUlfTk9DT01QQU5ESU5HKSkKKyAgICAgICAgaWYgKChoc2FpLT5Jbml0LkRhdGFTaXplID09IFNBSV9EQVRBU0laRV84KSAmJiAoaHNhaS0+SW5pdC5Db21wYW5kaW5nTW9kZSA9PSBTQUlfTk9DT01QQU5ESU5HKSkKICAgICAgICAgewogICAgICAgICAgICgqaHNhaS0+cEJ1ZmZQdHIrKykgPSBoc2FpLT5JbnN0YW5jZS0+RFI7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZihoc2FpLT5Jbml0LkRhdGFTaXplIDw9IFNBSV9EQVRBU0laRV8xNikKKyAgICAgICAgZWxzZSBpZiAoaHNhaS0+SW5pdC5EYXRhU2l6ZSA8PSBTQUlfREFUQVNJWkVfMTYpCiAgICAgICAgIHsKLSAgICAgICAgICAqKCh1aW50MTZfdCopaHNhaS0+cEJ1ZmZQdHIpID0gaHNhaS0+SW5zdGFuY2UtPkRSOwotICAgICAgICAgIGhzYWktPnBCdWZmUHRyKz0gMjsKKyAgICAgICAgICAqKCh1aW50MTZfdCAqKWhzYWktPnBCdWZmUHRyKSA9IGhzYWktPkluc3RhbmNlLT5EUjsKKyAgICAgICAgICBoc2FpLT5wQnVmZlB0ciArPSAyOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICooKHVpbnQzMl90Kiloc2FpLT5wQnVmZlB0cikgPSBoc2FpLT5JbnN0YW5jZS0+RFI7Ci0gICAgICAgICAgaHNhaS0+cEJ1ZmZQdHIrPSA0OworICAgICAgICAgICooKHVpbnQzMl90ICopaHNhaS0+cEJ1ZmZQdHIpID0gaHNhaS0+SW5zdGFuY2UtPkRSOworICAgICAgICAgIGhzYWktPnBCdWZmUHRyICs9IDQ7CiAgICAgICAgIH0KICAgICAgICAgaHNhaS0+WGZlckNvdW50LS07CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CiAgICAgICAgIC8qIENoZWNrIGZvciB0aGUgVGltZW91dCAqLwotICAgICAgICBpZigoVGltZW91dCAhPSBIQUxfTUFYX0RFTEFZKSAmJiAoKFRpbWVvdXQgPT0gMCl8fCgoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCkgPiBUaW1lb3V0KSkpCisgICAgICAgIGlmICgoVGltZW91dCAhPSBIQUxfTUFYX0RFTEFZKSAmJiAoKFRpbWVvdXQgPT0gMCkgfHwgKChIQUxfR2V0VGljaygpIC0gdGlja3N0YXJ0KSA+IFRpbWVvdXQpKSkKICAgICAgICAgewogICAgICAgICAgIC8qIFVwZGF0ZSBlcnJvciBjb2RlICovCiAgICAgICAgICAgaHNhaS0+RXJyb3JDb2RlIHw9IEhBTF9TQUlfRVJST1JfVElNRU9VVDsKQEAgLTEwODMsMTIgKzEwOTMsMTIgQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TQUlfVHJhbnNtaXRfSVQoU0FJX0hhbmRsZVR5cGVEZWYgKmhzYWksIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKQogewotICBpZigocERhdGEgPT0gTlVMTCkgfHwgKFNpemUgPT0gMCkpCisgIGlmICgocERhdGEgPT0gTlVMTCkgfHwgKFNpemUgPT0gMCkpCiAgIHsKICAgICByZXR1cm4gIEhBTF9FUlJPUjsKICAgfQogCi0gIGlmKGhzYWktPlN0YXRlID09IEhBTF9TQUlfU1RBVEVfUkVBRFkpCisgIGlmIChoc2FpLT5TdGF0ZSA9PSBIQUxfU0FJX1NUQVRFX1JFQURZKQogICB7CiAgICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KICAgICBfX0hBTF9MT0NLKGhzYWkpOwpAQCAtMTA5OSwxMSArMTEwOSwxMSBAQAogICAgIGhzYWktPkVycm9yQ29kZSA9IEhBTF9TQUlfRVJST1JfTk9ORTsKICAgICBoc2FpLT5TdGF0ZSA9IEhBTF9TQUlfU1RBVEVfQlVTWV9UWDsKIAotICAgIGlmKChoc2FpLT5Jbml0LkRhdGFTaXplID09IFNBSV9EQVRBU0laRV84KSAmJiAoaHNhaS0+SW5pdC5Db21wYW5kaW5nTW9kZSA9PSBTQUlfTk9DT01QQU5ESU5HKSkKKyAgICBpZiAoKGhzYWktPkluaXQuRGF0YVNpemUgPT0gU0FJX0RBVEFTSVpFXzgpICYmIChoc2FpLT5Jbml0LkNvbXBhbmRpbmdNb2RlID09IFNBSV9OT0NPTVBBTkRJTkcpKQogICAgIHsKICAgICAgIGhzYWktPkludGVycnVwdFNlcnZpY2VSb3V0aW5lID0gU0FJX1RyYW5zbWl0X0lUOEJpdDsKICAgICB9Ci0gICAgZWxzZSBpZihoc2FpLT5Jbml0LkRhdGFTaXplIDw9IFNBSV9EQVRBU0laRV8xNikKKyAgICBlbHNlIGlmIChoc2FpLT5Jbml0LkRhdGFTaXplIDw9IFNBSV9EQVRBU0laRV8xNikKICAgICB7CiAgICAgICBoc2FpLT5JbnRlcnJ1cHRTZXJ2aWNlUm91dGluZSA9IFNBSV9UcmFuc21pdF9JVDE2Qml0OwogICAgIH0KQEAgLTExMTksNyArMTEyOSw3IEBACiAgICAgX19IQUxfU0FJX0VOQUJMRV9JVChoc2FpLCBTQUlfSW50ZXJydXB0RmxhZyhoc2FpLCBTQUlfTU9ERV9JVCkpOwogCiAgICAgLyogQ2hlY2sgaWYgdGhlIFNBSSBpcyBhbHJlYWR5IGVuYWJsZWQgKi8KLSAgICBpZigoaHNhaS0+SW5zdGFuY2UtPkNSMSAmIFNBSV94Q1IxX1NBSUVOKSA9PSBSRVNFVCkKKyAgICBpZiAoKGhzYWktPkluc3RhbmNlLT5DUjEgJiBTQUlfeENSMV9TQUlFTikgPT0gUkVTRVQpCiAgICAgewogICAgICAgLyogRW5hYmxlIFNBSSBwZXJpcGhlcmFsICovCiAgICAgICBfX0hBTF9TQUlfRU5BQkxFKGhzYWkpOwpAQCAtMTE0NSwxMiArMTE1NSwxMiBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NBSV9SZWNlaXZlX0lUKFNBSV9IYW5kbGVUeXBlRGVmICpoc2FpLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSkKIHsKLSAgaWYoKHBEYXRhID09IE5VTEwpIHx8IChTaXplID09IDApKQorICBpZiAoKHBEYXRhID09IE5VTEwpIHx8IChTaXplID09IDApKQogICB7CiAgICAgcmV0dXJuICBIQUxfRVJST1I7CiAgIH0KIAotICBpZihoc2FpLT5TdGF0ZSA9PSBIQUxfU0FJX1NUQVRFX1JFQURZKQorICBpZiAoaHNhaS0+U3RhdGUgPT0gSEFMX1NBSV9TVEFURV9SRUFEWSkKICAgewogICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCiAgICAgX19IQUxfTE9DSyhoc2FpKTsKQEAgLTExNjEsMTEgKzExNzEsMTEgQEAKICAgICBoc2FpLT5FcnJvckNvZGUgPSBIQUxfU0FJX0VSUk9SX05PTkU7CiAgICAgaHNhaS0+U3RhdGUgPSBIQUxfU0FJX1NUQVRFX0JVU1lfUlg7CiAKLSAgICBpZigoaHNhaS0+SW5pdC5EYXRhU2l6ZSA9PSBTQUlfREFUQVNJWkVfOCkgJiYgKGhzYWktPkluaXQuQ29tcGFuZGluZ01vZGUgPT0gU0FJX05PQ09NUEFORElORykpCisgICAgaWYgKChoc2FpLT5Jbml0LkRhdGFTaXplID09IFNBSV9EQVRBU0laRV84KSAmJiAoaHNhaS0+SW5pdC5Db21wYW5kaW5nTW9kZSA9PSBTQUlfTk9DT01QQU5ESU5HKSkKICAgICB7CiAgICAgICBoc2FpLT5JbnRlcnJ1cHRTZXJ2aWNlUm91dGluZSA9IFNBSV9SZWNlaXZlX0lUOEJpdDsKICAgICB9Ci0gICAgZWxzZSBpZihoc2FpLT5Jbml0LkRhdGFTaXplIDw9IFNBSV9EQVRBU0laRV8xNikKKyAgICBlbHNlIGlmIChoc2FpLT5Jbml0LkRhdGFTaXplIDw9IFNBSV9EQVRBU0laRV8xNikKICAgICB7CiAgICAgICBoc2FpLT5JbnRlcnJ1cHRTZXJ2aWNlUm91dGluZSA9IFNBSV9SZWNlaXZlX0lUMTZCaXQ7CiAgICAgfQpAQCAtMTE3OCw3ICsxMTg4LDcgQEAKICAgICBfX0hBTF9TQUlfRU5BQkxFX0lUKGhzYWksIFNBSV9JbnRlcnJ1cHRGbGFnKGhzYWksIFNBSV9NT0RFX0lUKSk7CiAKICAgICAvKiBDaGVjayBpZiB0aGUgU0FJIGlzIGFscmVhZHkgZW5hYmxlZCAqLwotICAgIGlmKChoc2FpLT5JbnN0YW5jZS0+Q1IxICYgU0FJX3hDUjFfU0FJRU4pID09IFJFU0VUKQorICAgIGlmICgoaHNhaS0+SW5zdGFuY2UtPkNSMSAmIFNBSV94Q1IxX1NBSUVOKSA9PSBSRVNFVCkKICAgICB7CiAgICAgICAvKiBFbmFibGUgU0FJIHBlcmlwaGVyYWwgKi8KICAgICAgIF9fSEFMX1NBSV9FTkFCTEUoaHNhaSk7CkBAIC0xMjU5LDEyICsxMjY5LDEyIEBACiAgIGhzYWktPkluc3RhbmNlLT5DUjEgJj0gflNBSV94Q1IxX0RNQUVOOwogCiAgIC8qIEFib3J0IHRoZSBTQUkgVHggRE1BIFN0cmVhbSAqLwotICBpZigoaHNhaS0+aGRtYXR4ICE9IE5VTEwpICYmIChoc2FpLT5TdGF0ZSA9PSBIQUxfU0FJX1NUQVRFX0JVU1lfVFgpKQorICBpZiAoKGhzYWktPmhkbWF0eCAhPSBOVUxMKSAmJiAoaHNhaS0+U3RhdGUgPT0gSEFMX1NBSV9TVEFURV9CVVNZX1RYKSkKICAgewotICAgIGlmKEhBTF9ETUFfQWJvcnQoaHNhaS0+aGRtYXR4KSAhPSBIQUxfT0spCisgICAgaWYgKEhBTF9ETUFfQWJvcnQoaHNhaS0+aGRtYXR4KSAhPSBIQUxfT0spCiAgICAgewogICAgICAgLyogSWYgdGhlIERNQSBUeCBlcnJvckNvZGUgaXMgZGlmZmVyZW50IGZyb20gRE1BIE5vIFRyYW5zZmVyIHRoZW4gcmV0dXJuIEVycm9yICovCi0gICAgICBpZihoc2FpLT5oZG1hdHgtPkVycm9yQ29kZSAhPSBIQUxfRE1BX0VSUk9SX05PX1hGRVIpCisgICAgICBpZiAoaHNhaS0+aGRtYXR4LT5FcnJvckNvZGUgIT0gSEFMX0RNQV9FUlJPUl9OT19YRkVSKQogICAgICAgewogICAgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CiAgICAgICAgIGhzYWktPkVycm9yQ29kZSB8PSBIQUxfU0FJX0VSUk9SX0RNQTsKQEAgLTEyNzMsMTIgKzEyODMsMTIgQEAKICAgfQogCiAgIC8qIEFib3J0IHRoZSBTQUkgUnggRE1BIFN0cmVhbSAqLwotICBpZigoaHNhaS0+aGRtYXJ4ICE9IE5VTEwpICYmIChoc2FpLT5TdGF0ZSA9PSBIQUxfU0FJX1NUQVRFX0JVU1lfUlgpKQorICBpZiAoKGhzYWktPmhkbWFyeCAhPSBOVUxMKSAmJiAoaHNhaS0+U3RhdGUgPT0gSEFMX1NBSV9TVEFURV9CVVNZX1JYKSkKICAgewotICAgIGlmKEhBTF9ETUFfQWJvcnQoaHNhaS0+aGRtYXJ4KSAhPSBIQUxfT0spCisgICAgaWYgKEhBTF9ETUFfQWJvcnQoaHNhaS0+aGRtYXJ4KSAhPSBIQUxfT0spCiAgICAgewogICAgICAgLyogSWYgdGhlIERNQSBSeCBlcnJvckNvZGUgaXMgZGlmZmVyZW50IGZyb20gRE1BIE5vIFRyYW5zZmVyIHRoZW4gcmV0dXJuIEVycm9yICovCi0gICAgICBpZihoc2FpLT5oZG1hcngtPkVycm9yQ29kZSAhPSBIQUxfRE1BX0VSUk9SX05PX1hGRVIpCisgICAgICBpZiAoaHNhaS0+aGRtYXJ4LT5FcnJvckNvZGUgIT0gSEFMX0RNQV9FUlJPUl9OT19YRkVSKQogICAgICAgewogICAgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CiAgICAgICAgIGhzYWktPkVycm9yQ29kZSB8PSBIQUxfU0FJX0VSUk9SX0RNQTsKQEAgLTEzMTUsMTggKzEzMjUsMTggQEAKICAgX19IQUxfTE9DSyhoc2FpKTsKIAogICAvKiBDaGVjayBTQUkgRE1BIGlzIGVuYWJsZWQgb3Igbm90ICovCi0gIGlmKChoc2FpLT5JbnN0YW5jZS0+Q1IxICYgU0FJX3hDUjFfRE1BRU4pID09IFNBSV94Q1IxX0RNQUVOKQorICBpZiAoKGhzYWktPkluc3RhbmNlLT5DUjEgJiBTQUlfeENSMV9ETUFFTikgPT0gU0FJX3hDUjFfRE1BRU4pCiAgIHsKICAgICAvKiBEaXNhYmxlIHRoZSBTQUkgRE1BIHJlcXVlc3QgKi8KICAgICBoc2FpLT5JbnN0YW5jZS0+Q1IxICY9IH5TQUlfeENSMV9ETUFFTjsKIAogICAgIC8qIEFib3J0IHRoZSBTQUkgVHggRE1BIFN0cmVhbSAqLwotICAgIGlmKChoc2FpLT5oZG1hdHggIT0gTlVMTCkgJiYgKGhzYWktPlN0YXRlID09IEhBTF9TQUlfU1RBVEVfQlVTWV9UWCkpCisgICAgaWYgKChoc2FpLT5oZG1hdHggIT0gTlVMTCkgJiYgKGhzYWktPlN0YXRlID09IEhBTF9TQUlfU1RBVEVfQlVTWV9UWCkpCiAgICAgewotICAgICAgaWYoSEFMX0RNQV9BYm9ydChoc2FpLT5oZG1hdHgpICE9IEhBTF9PSykKKyAgICAgIGlmIChIQUxfRE1BX0Fib3J0KGhzYWktPmhkbWF0eCkgIT0gSEFMX09LKQogICAgICAgewogICAgICAgICAvKiBJZiB0aGUgRE1BIFR4IGVycm9yQ29kZSBpcyBkaWZmZXJlbnQgZnJvbSBETUEgTm8gVHJhbnNmZXIgdGhlbiByZXR1cm4gRXJyb3IgKi8KLSAgICAgICAgaWYoaHNhaS0+aGRtYXR4LT5FcnJvckNvZGUgIT0gSEFMX0RNQV9FUlJPUl9OT19YRkVSKQorICAgICAgICBpZiAoaHNhaS0+aGRtYXR4LT5FcnJvckNvZGUgIT0gSEFMX0RNQV9FUlJPUl9OT19YRkVSKQogICAgICAgICB7CiAgICAgICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOwogICAgICAgICAgIGhzYWktPkVycm9yQ29kZSB8PSBIQUxfU0FJX0VSUk9SX0RNQTsKQEAgLTEzMzUsMTIgKzEzNDUsMTIgQEAKICAgICB9CiAKICAgICAvKiBBYm9ydCB0aGUgU0FJIFJ4IERNQSBTdHJlYW0gKi8KLSAgICBpZigoaHNhaS0+aGRtYXJ4ICE9IE5VTEwpICYmIChoc2FpLT5TdGF0ZSA9PSBIQUxfU0FJX1NUQVRFX0JVU1lfUlgpKQorICAgIGlmICgoaHNhaS0+aGRtYXJ4ICE9IE5VTEwpICYmIChoc2FpLT5TdGF0ZSA9PSBIQUxfU0FJX1NUQVRFX0JVU1lfUlgpKQogICAgIHsKLSAgICAgIGlmKEhBTF9ETUFfQWJvcnQoaHNhaS0+aGRtYXJ4KSAhPSBIQUxfT0spCisgICAgICBpZiAoSEFMX0RNQV9BYm9ydChoc2FpLT5oZG1hcngpICE9IEhBTF9PSykKICAgICAgIHsKICAgICAgICAgLyogSWYgdGhlIERNQSBSeCBlcnJvckNvZGUgaXMgZGlmZmVyZW50IGZyb20gRE1BIE5vIFRyYW5zZmVyIHRoZW4gcmV0dXJuIEVycm9yICovCi0gICAgICAgIGlmKGhzYWktPmhkbWFyeC0+RXJyb3JDb2RlICE9IEhBTF9ETUFfRVJST1JfTk9fWEZFUikKKyAgICAgICAgaWYgKGhzYWktPmhkbWFyeC0+RXJyb3JDb2RlICE9IEhBTF9ETUFfRVJST1JfTk9fWEZFUikKICAgICAgICAgewogICAgICAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgICAgICBoc2FpLT5FcnJvckNvZGUgfD0gSEFMX1NBSV9FUlJPUl9ETUE7CkBAIC0xMzc3LDEyICsxMzg3LDE0IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfU0FJX1RyYW5zbWl0X0RNQShTQUlfSGFuZGxlVHlwZURlZiAqaHNhaSwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpCiB7Ci0gIGlmKChwRGF0YSA9PSBOVUxMKSB8fCAoU2l6ZSA9PSAwKSkKKyAgdWludDMyX3QgdGlja3N0YXJ0ID0gSEFMX0dldFRpY2soKTsKKworICBpZiAoKHBEYXRhID09IE5VTEwpIHx8IChTaXplID09IDApKQogICB7CiAgICAgcmV0dXJuICBIQUxfRVJST1I7CiAgIH0KIAotICBpZihoc2FpLT5TdGF0ZSA9PSBIQUxfU0FJX1NUQVRFX1JFQURZKQorICBpZiAoaHNhaS0+U3RhdGUgPT0gSEFMX1NBSV9TVEFURV9SRUFEWSkKICAgewogICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCiAgICAgX19IQUxfTE9DSyhoc2FpKTsKQEAgLTE0MDYsMjUgKzE0MTgsNDEgQEAKICAgICBoc2FpLT5oZG1hdHgtPlhmZXJBYm9ydENhbGxiYWNrID0gTlVMTDsKIAogICAgIC8qIEVuYWJsZSB0aGUgVHggRE1BIFN0cmVhbSAqLwotICAgIGlmKEhBTF9ETUFfU3RhcnRfSVQoaHNhaS0+aGRtYXR4LCAodWludDMyX3QpaHNhaS0+cEJ1ZmZQdHIsICh1aW50MzJfdCkmaHNhaS0+SW5zdGFuY2UtPkRSLCBoc2FpLT5YZmVyU2l6ZSkgIT0gSEFMX09LKQorICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGhzYWktPmhkbWF0eCwgKHVpbnQzMl90KWhzYWktPnBCdWZmUHRyLCAodWludDMyX3QpJmhzYWktPkluc3RhbmNlLT5EUiwgaHNhaS0+WGZlclNpemUpICE9IEhBTF9PSykKICAgICB7CiAgICAgICBfX0hBTF9VTkxPQ0soaHNhaSk7CiAgICAgICByZXR1cm4gIEhBTF9FUlJPUjsKICAgICB9CiAKLSAgICAvKiBDaGVjayBpZiB0aGUgU0FJIGlzIGFscmVhZHkgZW5hYmxlZCAqLwotICAgIGlmKChoc2FpLT5JbnN0YW5jZS0+Q1IxICYgU0FJX3hDUjFfU0FJRU4pID09IFJFU0VUKQotICAgIHsKLSAgICAgIC8qIEVuYWJsZSBTQUkgcGVyaXBoZXJhbCAqLwotICAgICAgX19IQUxfU0FJX0VOQUJMRShoc2FpKTsKLSAgICB9Ci0KICAgICAvKiBFbmFibGUgdGhlIGludGVycnVwdHMgZm9yIGVycm9yIGhhbmRsaW5nICovCiAgICAgX19IQUxfU0FJX0VOQUJMRV9JVChoc2FpLCBTQUlfSW50ZXJydXB0RmxhZyhoc2FpLCBTQUlfTU9ERV9ETUEpKTsKIAogICAgIC8qIEVuYWJsZSBTQUkgVHggRE1BIFJlcXVlc3QgKi8KICAgICBoc2FpLT5JbnN0YW5jZS0+Q1IxIHw9IFNBSV94Q1IxX0RNQUVOOwogCisgICAgLyogV2FpdCB1bnRpbCBGSUZPIGlzIG5vdCBlbXB0eSAqLworICAgIHdoaWxlICgoaHNhaS0+SW5zdGFuY2UtPlNSICYgU0FJX3hTUl9GTFZMKSA9PSBTQUlfRklGT1NUQVRVU19FTVBUWSkKKyAgICB7CisgICAgICAvKiBDaGVjayBmb3IgdGhlIFRpbWVvdXQgKi8KKyAgICAgIGlmICgoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCkgPiBTQUlfTE9OR19USU1FT1VUKQorICAgICAgeworICAgICAgICAvKiBVcGRhdGUgZXJyb3IgY29kZSAqLworICAgICAgICBoc2FpLT5FcnJvckNvZGUgfD0gSEFMX1NBSV9FUlJPUl9USU1FT1VUOworCisgICAgICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KKyAgICAgICAgX19IQUxfVU5MT0NLKGhzYWkpOworCisgICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBDaGVjayBpZiB0aGUgU0FJIGlzIGFscmVhZHkgZW5hYmxlZCAqLworICAgIGlmICgoaHNhaS0+SW5zdGFuY2UtPkNSMSAmIFNBSV94Q1IxX1NBSUVOKSA9PSAwVSkKKyAgICB7CisgICAgICAvKiBFbmFibGUgU0FJIHBlcmlwaGVyYWwgKi8KKyAgICAgIF9fSEFMX1NBSV9FTkFCTEUoaHNhaSk7CisgICAgfQorCiAgICAgLyogUHJvY2VzcyBVbmxvY2tlZCAqLwogICAgIF9fSEFMX1VOTE9DSyhoc2FpKTsKIApAQCAtMTQ0NywxMiArMTQ3NSwxMiBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NBSV9SZWNlaXZlX0RNQShTQUlfSGFuZGxlVHlwZURlZiAqaHNhaSwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpCiB7CiAKLSAgaWYoKHBEYXRhID09IE5VTEwpIHx8IChTaXplID09IDApKQorICBpZiAoKHBEYXRhID09IE5VTEwpIHx8IChTaXplID09IDApKQogICB7CiAgICAgcmV0dXJuICBIQUxfRVJST1I7CiAgIH0KIAotICBpZihoc2FpLT5TdGF0ZSA9PSBIQUxfU0FJX1NUQVRFX1JFQURZKQorICBpZiAoaHNhaS0+U3RhdGUgPT0gSEFMX1NBSV9TVEFURV9SRUFEWSkKICAgewogICAgIC8qIFByb2Nlc3MgTG9ja2VkICovCiAgICAgX19IQUxfTE9DSyhoc2FpKTsKQEAgLTE0NzYsMjUgKzE1MDQsMjUgQEAKICAgICBoc2FpLT5oZG1hcngtPlhmZXJBYm9ydENhbGxiYWNrID0gTlVMTDsKIAogICAgIC8qIEVuYWJsZSB0aGUgUnggRE1BIFN0cmVhbSAqLwotICAgIGlmKEhBTF9ETUFfU3RhcnRfSVQoaHNhaS0+aGRtYXJ4LCAodWludDMyX3QpJmhzYWktPkluc3RhbmNlLT5EUiwgKHVpbnQzMl90KWhzYWktPnBCdWZmUHRyLCBoc2FpLT5YZmVyU2l6ZSkgIT0gSEFMX09LKQorICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGhzYWktPmhkbWFyeCwgKHVpbnQzMl90KSZoc2FpLT5JbnN0YW5jZS0+RFIsICh1aW50MzJfdCloc2FpLT5wQnVmZlB0ciwgaHNhaS0+WGZlclNpemUpICE9IEhBTF9PSykKICAgICB7CiAgICAgICBfX0hBTF9VTkxPQ0soaHNhaSk7CiAgICAgICByZXR1cm4gIEhBTF9FUlJPUjsKICAgICB9CiAKLSAgICAvKiBDaGVjayBpZiB0aGUgU0FJIGlzIGFscmVhZHkgZW5hYmxlZCAqLwotICAgIGlmKChoc2FpLT5JbnN0YW5jZS0+Q1IxICYgU0FJX3hDUjFfU0FJRU4pID09IFJFU0VUKQotICAgIHsKLSAgICAgIC8qIEVuYWJsZSBTQUkgcGVyaXBoZXJhbCAqLwotICAgICAgX19IQUxfU0FJX0VOQUJMRShoc2FpKTsKLSAgICB9Ci0KICAgICAvKiBFbmFibGUgdGhlIGludGVycnVwdHMgZm9yIGVycm9yIGhhbmRsaW5nICovCiAgICAgX19IQUxfU0FJX0VOQUJMRV9JVChoc2FpLCBTQUlfSW50ZXJydXB0RmxhZyhoc2FpLCBTQUlfTU9ERV9ETUEpKTsKIAogICAgIC8qIEVuYWJsZSBTQUkgUnggRE1BIFJlcXVlc3QgKi8KICAgICBoc2FpLT5JbnN0YW5jZS0+Q1IxIHw9IFNBSV94Q1IxX0RNQUVOOwogCisgICAgLyogQ2hlY2sgaWYgdGhlIFNBSSBpcyBhbHJlYWR5IGVuYWJsZWQgKi8KKyAgICBpZiAoKGhzYWktPkluc3RhbmNlLT5DUjEgJiBTQUlfeENSMV9TQUlFTikgPT0gUkVTRVQpCisgICAgeworICAgICAgLyogRW5hYmxlIFNBSSBwZXJpcGhlcmFsICovCisgICAgICBfX0hBTF9TQUlfRU5BQkxFKGhzYWkpOworICAgIH0KKwogICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KICAgICBfX0hBTF9VTkxPQ0soaHNhaSk7CiAKQEAgLTE1MTcsNyArMTU0NSw3IEBACiB7CiAgIGFzc2VydF9wYXJhbShJU19TQUlfQkxPQ0tfTVVURV9WQUxVRSh2YWwpKTsKIAotICBpZihoc2FpLT5TdGF0ZSAhPSBIQUxfU0FJX1NUQVRFX1JFU0VUKQorICBpZiAoaHNhaS0+U3RhdGUgIT0gSEFMX1NBSV9TVEFURV9SRVNFVCkKICAgewogICAgIENMRUFSX0JJVChoc2FpLT5JbnN0YW5jZS0+Q1IyLCBTQUlfeENSMl9NVVRFVkFMIHwgU0FJX3hDUjJfTVVURSk7CiAgICAgU0VUX0JJVChoc2FpLT5JbnN0YW5jZS0+Q1IyLCBTQUlfeENSMl9NVVRFIHwgdmFsKTsKQEAgLTE1MzQsNyArMTU2Miw3IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfU0FJX0Rpc2FibGVUeE11dGVNb2RlKFNBSV9IYW5kbGVUeXBlRGVmICpoc2FpKQogewotICBpZihoc2FpLT5TdGF0ZSAhPSBIQUxfU0FJX1NUQVRFX1JFU0VUKQorICBpZiAoaHNhaS0+U3RhdGUgIT0gSEFMX1NBSV9TVEFURV9SRVNFVCkKICAgewogICAgIENMRUFSX0JJVChoc2FpLT5JbnN0YW5jZS0+Q1IyLCBTQUlfeENSMl9NVVRFVkFMIHwgU0FJX3hDUjJfTVVURSk7CiAgICAgcmV0dXJuIEhBTF9PSzsKQEAgLTE1NTQsNyArMTU4Miw3IEBACiB7CiAgIGFzc2VydF9wYXJhbShJU19TQUlfQkxPQ0tfTVVURV9DT1VOVEVSKGNvdW50ZXIpKTsKIAotICBpZihoc2FpLT5TdGF0ZSAhPSBIQUxfU0FJX1NUQVRFX1JFU0VUKQorICBpZiAoaHNhaS0+U3RhdGUgIT0gSEFMX1NBSV9TVEFURV9SRVNFVCkKICAgewogICAgIC8qIHNldCB0aGUgbXV0ZSBjb3VudGVyICovCiAgICAgQ0xFQVJfQklUKGhzYWktPkluc3RhbmNlLT5DUjIsIFNBSV94Q1IyX01VVEVDTlQpOwpAQCAtMTU3NSw3ICsxNjAzLDcgQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TQUlfRGlzYWJsZVJ4TXV0ZU1vZGUoU0FJX0hhbmRsZVR5cGVEZWYgKmhzYWkpCiB7Ci0gIGlmKGhzYWktPlN0YXRlICE9IEhBTF9TQUlfU1RBVEVfUkVTRVQpCisgIGlmIChoc2FpLT5TdGF0ZSAhPSBIQUxfU0FJX1NUQVRFX1JFU0VUKQogICB7CiAgICAgLyogc2V0IHRoZSBtdXRlY2FsbGJhY2sgdG8gTlVMTCAqLwogICAgIGhzYWktPm11dGVjYWxsYmFjayA9IChTQUljYWxsYmFjaylOVUxMOwpAQCAtMTU5NCw3ICsxNjIyLDcgQEAKICAgKi8KIHZvaWQgSEFMX1NBSV9JUlFIYW5kbGVyKFNBSV9IYW5kbGVUeXBlRGVmICpoc2FpKQogewotICBpZihoc2FpLT5TdGF0ZSAhPSBIQUxfU0FJX1NUQVRFX1JFU0VUKQorICBpZiAoaHNhaS0+U3RhdGUgIT0gSEFMX1NBSV9TVEFURV9SRVNFVCkKICAgewogICAgIHVpbnQzMl90IGl0ZmxhZ3MgPSBoc2FpLT5JbnN0YW5jZS0+U1I7CiAgICAgdWludDMyX3QgaXRzb3VyY2VzID0gaHNhaS0+SW5zdGFuY2UtPklNUjsKQEAgLTE2MDIsMTIgKzE2MzAsMTIgQEAKICAgICB1aW50MzJfdCB0bXBlcnJvcjsKIAogICAgIC8qIFNBSSBGaWZvIHJlcXVlc3QgaW50ZXJydXB0IG9jY3VycmVkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0gICAgaWYoKChpdGZsYWdzICYgU0FJX3hTUl9GUkVRKSA9PSBTQUlfeFNSX0ZSRVEpICYmICgoaXRzb3VyY2VzICYgU0FJX0lUX0ZSRVEpID09IFNBSV9JVF9GUkVRKSkKKyAgICBpZiAoKChpdGZsYWdzICYgU0FJX3hTUl9GUkVRKSA9PSBTQUlfeFNSX0ZSRVEpICYmICgoaXRzb3VyY2VzICYgU0FJX0lUX0ZSRVEpID09IFNBSV9JVF9GUkVRKSkKICAgICB7CiAgICAgICBoc2FpLT5JbnRlcnJ1cHRTZXJ2aWNlUm91dGluZShoc2FpKTsKICAgICB9CiAgICAgLyogU0FJIE92ZXJydW4gZXJyb3IgaW50ZXJydXB0IG9jY3VycmVkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotICAgIGVsc2UgaWYoKChpdGZsYWdzICYgU0FJX0ZMQUdfT1ZSVURSKSA9PSBTQUlfRkxBR19PVlJVRFIpICYmICgoaXRzb3VyY2VzICYgU0FJX0lUX09WUlVEUikgPT0gU0FJX0lUX09WUlVEUikpCisgICAgZWxzZSBpZiAoKChpdGZsYWdzICYgU0FJX0ZMQUdfT1ZSVURSKSA9PSBTQUlfRkxBR19PVlJVRFIpICYmICgoaXRzb3VyY2VzICYgU0FJX0lUX09WUlVEUikgPT0gU0FJX0lUX09WUlVEUikpCiAgICAgewogICAgICAgLyogQ2xlYXIgdGhlIFNBSSBPdmVycnVuIGZsYWcgKi8KICAgICAgIF9fSEFMX1NBSV9DTEVBUl9GTEFHKGhzYWksIFNBSV9GTEFHX09WUlVEUik7CkBAIC0xNjIzLDI3ICsxNjUxLDMwIEBACiAjZW5kaWYgLyogVVNFX0hBTF9TQUlfUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAgICAgfQogICAgIC8qIFNBSSBtdXRlZGV0IGludGVycnVwdCBvY2N1cnJlZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSAgICBlbHNlIGlmKCgoaXRmbGFncyAmIFNBSV9GTEFHX01VVEVERVQpID09IFNBSV9GTEFHX01VVEVERVQpICYmICgoaXRzb3VyY2VzICYgU0FJX0lUX01VVEVERVQpID09IFNBSV9JVF9NVVRFREVUKSkKKyAgICBlbHNlIGlmICgoKGl0ZmxhZ3MgJiBTQUlfRkxBR19NVVRFREVUKSA9PSBTQUlfRkxBR19NVVRFREVUKSAmJiAoKGl0c291cmNlcyAmIFNBSV9JVF9NVVRFREVUKSA9PSBTQUlfSVRfTVVURURFVCkpCiAgICAgewogICAgICAgLyogQ2xlYXIgdGhlIFNBSSBtdXRlZGV0IGZsYWcgKi8KICAgICAgIF9fSEFMX1NBSV9DTEVBUl9GTEFHKGhzYWksIFNBSV9GTEFHX01VVEVERVQpOwogICAgICAgLyogY2FsbCB0aGUgY2FsbCBiYWNrIGZ1bmN0aW9uICovCi0gICAgICBpZihoc2FpLT5tdXRlY2FsbGJhY2sgIT0gKFNBSWNhbGxiYWNrKU5VTEwpCisgICAgICBpZiAoaHNhaS0+bXV0ZWNhbGxiYWNrICE9IChTQUljYWxsYmFjaylOVUxMKQogICAgICAgewogICAgICAgICAvKiBpbmZvcm0gdGhlIHVzZXIgdGhhdCBhbiBSWCBtdXRlIGV2ZW50IGhhcyBiZWVuIGRldGVjdGVkICovCiAgICAgICAgIGhzYWktPm11dGVjYWxsYmFjaygpOwogICAgICAgfQogICAgIH0KICAgICAvKiBTQUkgQUZTREVUIGludGVycnVwdCBvY2N1cnJlZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSAgICBlbHNlIGlmKCgoaXRmbGFncyAmIFNBSV9GTEFHX0FGU0RFVCkgPT0gU0FJX0ZMQUdfQUZTREVUKSAmJiAoKGl0c291cmNlcyAmIFNBSV9JVF9BRlNERVQpID09IFNBSV9JVF9BRlNERVQpKQorICAgIGVsc2UgaWYgKCgoaXRmbGFncyAmIFNBSV9GTEFHX0FGU0RFVCkgPT0gU0FJX0ZMQUdfQUZTREVUKSAmJiAoKGl0c291cmNlcyAmIFNBSV9JVF9BRlNERVQpID09IFNBSV9JVF9BRlNERVQpKQogICAgIHsKKyAgICAgIC8qIENsZWFyIHRoZSBTQUkgQUZTREVUIGZsYWcgKi8KKyAgICAgIF9fSEFMX1NBSV9DTEVBUl9GTEFHKGhzYWksIFNBSV9GTEFHX0FGU0RFVCk7CisKICAgICAgIC8qIENoYW5nZSB0aGUgU0FJIGVycm9yIGNvZGUgKi8KICAgICAgIGhzYWktPkVycm9yQ29kZSB8PSBIQUxfU0FJX0VSUk9SX0FGU0RFVDsKICAgICAgIC8qIENoZWNrIFNBSSBETUEgaXMgZW5hYmxlZCBvciBub3QgKi8KLSAgICAgIGlmKChjcjFjb25maWcgJiBTQUlfeENSMV9ETUFFTikgPT0gU0FJX3hDUjFfRE1BRU4pCisgICAgICBpZiAoKGNyMWNvbmZpZyAmIFNBSV94Q1IxX0RNQUVOKSA9PSBTQUlfeENSMV9ETUFFTikKICAgICAgIHsKICAgICAgICAgLyogQWJvcnQgdGhlIFNBSSBETUEgU3RyZWFtcyAqLwotICAgICAgICBpZihoc2FpLT5oZG1hdHggIT0gTlVMTCkKKyAgICAgICAgaWYgKGhzYWktPmhkbWF0eCAhPSBOVUxMKQogICAgICAgICB7CiAgICAgICAgICAgLyogU2V0IHRoZSBETUEgVHggYWJvcnQgY2FsbGJhY2sgKi8KICAgICAgICAgICBoc2FpLT5oZG1hdHgtPlhmZXJBYm9ydENhbGxiYWNrID0gU0FJX0RNQUFib3J0OwpAQCAtMTY1MSw3ICsxNjgyLDcgQEAKICAgICAgICAgICAvKiBBYm9ydCBETUEgaW4gSVQgbW9kZSAqLwogICAgICAgICAgIEhBTF9ETUFfQWJvcnRfSVQoaHNhaS0+aGRtYXR4KTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmKGhzYWktPmhkbWFyeCAhPSBOVUxMKQorICAgICAgICBlbHNlIGlmIChoc2FpLT5oZG1hcnggIT0gTlVMTCkKICAgICAgICAgewogICAgICAgICAgIC8qIFNldCB0aGUgRE1BIFJ4IGFib3J0IGNhbGxiYWNrICovCiAgICAgICAgICAgaHNhaS0+aGRtYXJ4LT5YZmVyQWJvcnRDYWxsYmFjayA9IFNBSV9ETUFBYm9ydDsKQEAgLTE2NzMsMjMgKzE3MDQsMjYgQEAKICAgICAgIH0KICAgICB9CiAgICAgLyogU0FJIExGU0RFVCBpbnRlcnJ1cHQgb2NjdXJyZWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0gICAgZWxzZSBpZigoKGl0ZmxhZ3MgJiBTQUlfRkxBR19MRlNERVQpID09IFNBSV9GTEFHX0xGU0RFVCkgJiYgKChpdHNvdXJjZXMgJiBTQUlfSVRfTEZTREVUKSA9PSBTQUlfSVRfTEZTREVUKSkKKyAgICBlbHNlIGlmICgoKGl0ZmxhZ3MgJiBTQUlfRkxBR19MRlNERVQpID09IFNBSV9GTEFHX0xGU0RFVCkgJiYgKChpdHNvdXJjZXMgJiBTQUlfSVRfTEZTREVUKSA9PSBTQUlfSVRfTEZTREVUKSkKICAgICB7CisgICAgICAvKiBDbGVhciB0aGUgU0FJIExGU0RFVCBmbGFnICovCisgICAgICBfX0hBTF9TQUlfQ0xFQVJfRkxBRyhoc2FpLCBTQUlfRkxBR19MRlNERVQpOworCiAgICAgICAvKiBDaGFuZ2UgdGhlIFNBSSBlcnJvciBjb2RlICovCiAgICAgICBoc2FpLT5FcnJvckNvZGUgfD0gSEFMX1NBSV9FUlJPUl9MRlNERVQ7CiAKICAgICAgIC8qIENoZWNrIFNBSSBETUEgaXMgZW5hYmxlZCBvciBub3QgKi8KLSAgICAgIGlmKChjcjFjb25maWcgJiBTQUlfeENSMV9ETUFFTikgPT0gU0FJX3hDUjFfRE1BRU4pCisgICAgICBpZiAoKGNyMWNvbmZpZyAmIFNBSV94Q1IxX0RNQUVOKSA9PSBTQUlfeENSMV9ETUFFTikKICAgICAgIHsKICAgICAgICAgLyogQWJvcnQgdGhlIFNBSSBETUEgU3RyZWFtcyAqLwotICAgICAgICBpZihoc2FpLT5oZG1hdHggIT0gTlVMTCkKKyAgICAgICAgaWYgKGhzYWktPmhkbWF0eCAhPSBOVUxMKQogICAgICAgICB7CiAgICAgICAgICAgLyogU2V0IHRoZSBETUEgVHggYWJvcnQgY2FsbGJhY2sgKi8KICAgICAgICAgICBoc2FpLT5oZG1hdHgtPlhmZXJBYm9ydENhbGxiYWNrID0gU0FJX0RNQUFib3J0OwogICAgICAgICAgIC8qIEFib3J0IERNQSBpbiBJVCBtb2RlICovCiAgICAgICAgICAgSEFMX0RNQV9BYm9ydF9JVChoc2FpLT5oZG1hdHgpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYoaHNhaS0+aGRtYXJ4ICE9IE5VTEwpCisgICAgICAgIGVsc2UgaWYgKGhzYWktPmhkbWFyeCAhPSBOVUxMKQogICAgICAgICB7CiAgICAgICAgICAgLyogU2V0IHRoZSBETUEgUnggYWJvcnQgY2FsbGJhY2sgKi8KICAgICAgICAgICBoc2FpLT5oZG1hcngtPlhmZXJBYm9ydENhbGxiYWNrID0gU0FJX0RNQUFib3J0OwpAQCAtMTcxMSwyMCArMTc0NSwyMyBAQAogICAgICAgfQogICAgIH0KICAgICAvKiBTQUkgV0NLQ0ZHIGludGVycnVwdCBvY2N1cnJlZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSAgICBlbHNlIGlmKCgoaXRmbGFncyAmIFNBSV9GTEFHX1dDS0NGRykgPT0gU0FJX0ZMQUdfV0NLQ0ZHKSAmJiAoKGl0c291cmNlcyAmIFNBSV9JVF9XQ0tDRkcpID09IFNBSV9JVF9XQ0tDRkcpKQorICAgIGVsc2UgaWYgKCgoaXRmbGFncyAmIFNBSV9GTEFHX1dDS0NGRykgPT0gU0FJX0ZMQUdfV0NLQ0ZHKSAmJiAoKGl0c291cmNlcyAmIFNBSV9JVF9XQ0tDRkcpID09IFNBSV9JVF9XQ0tDRkcpKQogICAgIHsKKyAgICAgIC8qIENsZWFyIHRoZSBTQUkgV0NLQ0ZHIGZsYWcgKi8KKyAgICAgIF9fSEFMX1NBSV9DTEVBUl9GTEFHKGhzYWksIFNBSV9GTEFHX1dDS0NGRyk7CisKICAgICAgIC8qIENoYW5nZSB0aGUgU0FJIGVycm9yIGNvZGUgKi8KICAgICAgIGhzYWktPkVycm9yQ29kZSB8PSBIQUxfU0FJX0VSUk9SX1dDS0NGRzsKIAogICAgICAgLyogQWJvcnQgdGhlIFNBSSBETUEgU3RyZWFtcyAqLwotICAgICAgaWYoaHNhaS0+aGRtYXR4ICE9IE5VTEwpCisgICAgICBpZiAoaHNhaS0+aGRtYXR4ICE9IE5VTEwpCiAgICAgICB7CiAgICAgICAgIC8qIFNldCB0aGUgRE1BIFR4IGFib3J0IGNhbGxiYWNrICovCiAgICAgICAgIGhzYWktPmhkbWF0eC0+WGZlckFib3J0Q2FsbGJhY2sgPSBTQUlfRE1BQWJvcnQ7CiAgICAgICAgIC8qIEFib3J0IERNQSBpbiBJVCBtb2RlICovCiAgICAgICAgIEhBTF9ETUFfQWJvcnRfSVQoaHNhaS0+aGRtYXR4KTsKICAgICAgIH0KLSAgICAgIGVsc2UgaWYoaHNhaS0+aGRtYXJ4ICE9IE5VTEwpCisgICAgICBlbHNlIGlmIChoc2FpLT5oZG1hcnggIT0gTlVMTCkKICAgICAgIHsKICAgICAgICAgLyogU2V0IHRoZSBETUEgUnggYWJvcnQgY2FsbGJhY2sgKi8KICAgICAgICAgaHNhaS0+aGRtYXJ4LT5YZmVyQWJvcnRDYWxsYmFjayA9IFNBSV9ETUFBYm9ydDsKQEAgLTE3NTIsNyArMTc4OSw3IEBACiAgICAgICB9CiAgICAgfQogICAgIC8qIFNBSSBDTlJEWSBpbnRlcnJ1cHQgb2NjdXJyZWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0gICAgZWxzZSBpZigoKGl0ZmxhZ3MgJiBTQUlfRkxBR19DTlJEWSkgPT0gU0FJX0ZMQUdfQ05SRFkpICYmICgoaXRzb3VyY2VzICYgU0FJX0lUX0NOUkRZKSA9PSBTQUlfSVRfQ05SRFkpKQorICAgIGVsc2UgaWYgKCgoaXRmbGFncyAmIFNBSV9GTEFHX0NOUkRZKSA9PSBTQUlfRkxBR19DTlJEWSkgJiYgKChpdHNvdXJjZXMgJiBTQUlfSVRfQ05SRFkpID09IFNBSV9JVF9DTlJEWSkpCiAgICAgewogICAgICAgLyogQ2xlYXIgdGhlIFNBSSBDTlJEWSBmbGFnICovCiAgICAgICBfX0hBTF9TQUlfQ0xFQVJfRkxBRyhoc2FpLCBTQUlfRkxBR19DTlJEWSk7CkBAIC0xNzk0LDcgKzE4MzEsNyBAQAogICAqICAgICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBTQUkgbW9kdWxlLgogICAqIEByZXR2YWwgTm9uZQogICAqLwotIF9fd2VhayB2b2lkIEhBTF9TQUlfVHhIYWxmQ3BsdENhbGxiYWNrKFNBSV9IYW5kbGVUeXBlRGVmICpoc2FpKQorX193ZWFrIHZvaWQgSEFMX1NBSV9UeEhhbGZDcGx0Q2FsbGJhY2soU0FJX0hhbmRsZVR5cGVEZWYgKmhzYWkpCiB7CiAgIC8qIFByZXZlbnQgdW51c2VkIGFyZ3VtZW50KHMpIGNvbXBpbGF0aW9uIHdhcm5pbmcgKi8KICAgVU5VU0VEKGhzYWkpOwpAQCAtMTkyMywxMiArMTk2MCwxNCBAQAogICBoc2FpLT5Jbml0LlByb3RvY29sICAgICAgICAgICAgPSBTQUlfRlJFRV9QUk9UT0NPTDsKICAgaHNhaS0+SW5pdC5GaXJzdEJpdCAgICAgICAgICAgID0gU0FJX0ZJUlNUQklUX01TQjsKICAgLyogQ29tcHV0ZSBDbG9ja1N0cm9iaW5nIGFjY29yZGluZyBBdWRpb01vZGUgKi8KLSAgaWYoKGhzYWktPkluaXQuQXVkaW9Nb2RlID09IFNBSV9NT0RFTUFTVEVSX1RYKSB8fCAoaHNhaS0+SW5pdC5BdWRpb01vZGUgPT0gU0FJX01PREVTTEFWRV9UWCkpCi0gIHsgLyogVHJhbnNtaXQgKi8KKyAgaWYgKChoc2FpLT5Jbml0LkF1ZGlvTW9kZSA9PSBTQUlfTU9ERU1BU1RFUl9UWCkgfHwgKGhzYWktPkluaXQuQXVkaW9Nb2RlID09IFNBSV9NT0RFU0xBVkVfVFgpKQorICB7CisgICAgLyogVHJhbnNtaXQgKi8KICAgICBoc2FpLT5Jbml0LkNsb2NrU3Ryb2JpbmcgICAgID0gU0FJX0NMT0NLU1RST0JJTkdfRkFMTElOR0VER0U7CiAgIH0KICAgZWxzZQotICB7IC8qIFJlY2VpdmUgKi8KKyAgeworICAgIC8qIFJlY2VpdmUgKi8KICAgICBoc2FpLT5Jbml0LkNsb2NrU3Ryb2JpbmcgICAgID0gU0FJX0NMT0NLU1RST0JJTkdfUklTSU5HRURHRTsKICAgfQogICBoc2FpLT5GcmFtZUluaXQuRlNEZWZpbml0aW9uICAgPSBTQUlfRlNfQ0hBTk5FTF9JREVOVElGSUNBVElPTjsKQEAgLTE5MzcsNTcgKzE5NzYsNTQgQEAKICAgaHNhaS0+U2xvdEluaXQuU2xvdE51bWJlciAgICAgID0gbmJzbG90OwogCiAgIC8qIGluIElTMiB0aGUgbnVtYmVyIG9mIHNsb3QgbXVzdCBiZSBldmVuICovCi0gIGlmKChuYnNsb3QgJiAweDEpICE9IDAgKQorICBpZiAoKG5ic2xvdCAmIDB4MSkgIT0gMCkKICAgewogICAgIHJldHVybiBIQUxfRVJST1I7CiAgIH0KIAotICBzd2l0Y2gocHJvdG9jb2wpCisgIGlmIChwcm90b2NvbCA9PSBTQUlfSTJTX1NUQU5EQVJEKQogICB7Ci0gIGNhc2UgU0FJX0kyU19TVEFOREFSRCA6CiAgICAgaHNhaS0+RnJhbWVJbml0LkZTUG9sYXJpdHkgPSBTQUlfRlNfQUNUSVZFX0xPVzsKICAgICBoc2FpLT5GcmFtZUluaXQuRlNPZmZzZXQgICA9IFNBSV9GU19CRUZPUkVGSVJTVEJJVDsKLSAgICBicmVhazsKLSAgY2FzZSBTQUlfSTJTX01TQkpVU1RJRklFRCA6Ci0gIGNhc2UgU0FJX0kyU19MU0JKVVNUSUZJRUQgOgorICB9CisgIGVsc2UKKyAgeworICAgIC8qIFNBSV9JMlNfTVNCSlVTVElGSUVEIG9yIFNBSV9JMlNfTFNCSlVTVElGSUVEICovCiAgICAgaHNhaS0+RnJhbWVJbml0LkZTUG9sYXJpdHkgPSBTQUlfRlNfQUNUSVZFX0hJR0g7CiAgICAgaHNhaS0+RnJhbWVJbml0LkZTT2Zmc2V0ICAgPSBTQUlfRlNfRklSU1RCSVQ7Ci0gICAgYnJlYWs7Ci0gIGRlZmF1bHQgOgotICAgIHJldHVybiBIQUxfRVJST1I7CiAgIH0KIAogICAvKiBGcmFtZSBkZWZpbml0aW9uICovCi0gIHN3aXRjaChkYXRhc2l6ZSkKKyAgc3dpdGNoIChkYXRhc2l6ZSkKICAgewotICBjYXNlIFNBSV9QUk9UT0NPTF9EQVRBU0laRV8xNkJJVDoKLSAgICBoc2FpLT5Jbml0LkRhdGFTaXplID0gU0FJX0RBVEFTSVpFXzE2OwotICAgIGhzYWktPkZyYW1lSW5pdC5GcmFtZUxlbmd0aCA9IDMyKihuYnNsb3QvMik7Ci0gICAgaHNhaS0+RnJhbWVJbml0LkFjdGl2ZUZyYW1lTGVuZ3RoID0gMTYqKG5ic2xvdC8yKTsKLSAgICBoc2FpLT5TbG90SW5pdC5TbG90U2l6ZSA9IFNBSV9TTE9UU0laRV8xNkI7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgU0FJX1BST1RPQ09MX0RBVEFTSVpFXzE2QklURVhURU5ERUQgOgotICAgIGhzYWktPkluaXQuRGF0YVNpemUgPSBTQUlfREFUQVNJWkVfMTY7Ci0gICAgaHNhaS0+RnJhbWVJbml0LkZyYW1lTGVuZ3RoID0gNjQqKG5ic2xvdC8yKTsKLSAgICBoc2FpLT5GcmFtZUluaXQuQWN0aXZlRnJhbWVMZW5ndGggPSAzMioobmJzbG90LzIpOwotICAgIGhzYWktPlNsb3RJbml0LlNsb3RTaXplID0gU0FJX1NMT1RTSVpFXzMyQjsKLSAgICBicmVhazsKLSAgY2FzZSBTQUlfUFJPVE9DT0xfREFUQVNJWkVfMjRCSVQ6Ci0gICAgaHNhaS0+SW5pdC5EYXRhU2l6ZSA9IFNBSV9EQVRBU0laRV8yNDsKLSAgICBoc2FpLT5GcmFtZUluaXQuRnJhbWVMZW5ndGggPSA2NCoobmJzbG90LzIpOwotICAgIGhzYWktPkZyYW1lSW5pdC5BY3RpdmVGcmFtZUxlbmd0aCA9IDMyKihuYnNsb3QvMik7Ci0gICAgaHNhaS0+U2xvdEluaXQuU2xvdFNpemUgPSBTQUlfU0xPVFNJWkVfMzJCOwotICAgIGJyZWFrOwotICBjYXNlIFNBSV9QUk9UT0NPTF9EQVRBU0laRV8zMkJJVDoKLSAgICBoc2FpLT5Jbml0LkRhdGFTaXplID0gU0FJX0RBVEFTSVpFXzMyOwotICAgIGhzYWktPkZyYW1lSW5pdC5GcmFtZUxlbmd0aCA9IDY0KihuYnNsb3QvMik7Ci0gICAgaHNhaS0+RnJhbWVJbml0LkFjdGl2ZUZyYW1lTGVuZ3RoID0gMzIqKG5ic2xvdC8yKTsKLSAgICBoc2FpLT5TbG90SW5pdC5TbG90U2l6ZSA9IFNBSV9TTE9UU0laRV8zMkI7Ci0gICAgYnJlYWs7Ci0gIGRlZmF1bHQgOgotICAgIHJldHVybiBIQUxfRVJST1I7CisgICAgY2FzZSBTQUlfUFJPVE9DT0xfREFUQVNJWkVfMTZCSVQ6CisgICAgICBoc2FpLT5Jbml0LkRhdGFTaXplID0gU0FJX0RBVEFTSVpFXzE2OworICAgICAgaHNhaS0+RnJhbWVJbml0LkZyYW1lTGVuZ3RoID0gMzIgKiAobmJzbG90IC8gMik7CisgICAgICBoc2FpLT5GcmFtZUluaXQuQWN0aXZlRnJhbWVMZW5ndGggPSAxNiAqIChuYnNsb3QgLyAyKTsKKyAgICAgIGhzYWktPlNsb3RJbml0LlNsb3RTaXplID0gU0FJX1NMT1RTSVpFXzE2QjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgU0FJX1BST1RPQ09MX0RBVEFTSVpFXzE2QklURVhURU5ERUQgOgorICAgICAgaHNhaS0+SW5pdC5EYXRhU2l6ZSA9IFNBSV9EQVRBU0laRV8xNjsKKyAgICAgIGhzYWktPkZyYW1lSW5pdC5GcmFtZUxlbmd0aCA9IDY0ICogKG5ic2xvdCAvIDIpOworICAgICAgaHNhaS0+RnJhbWVJbml0LkFjdGl2ZUZyYW1lTGVuZ3RoID0gMzIgKiAobmJzbG90IC8gMik7CisgICAgICBoc2FpLT5TbG90SW5pdC5TbG90U2l6ZSA9IFNBSV9TTE9UU0laRV8zMkI7CisgICAgICBicmVhazsKKyAgICBjYXNlIFNBSV9QUk9UT0NPTF9EQVRBU0laRV8yNEJJVDoKKyAgICAgIGhzYWktPkluaXQuRGF0YVNpemUgPSBTQUlfREFUQVNJWkVfMjQ7CisgICAgICBoc2FpLT5GcmFtZUluaXQuRnJhbWVMZW5ndGggPSA2NCAqIChuYnNsb3QgLyAyKTsKKyAgICAgIGhzYWktPkZyYW1lSW5pdC5BY3RpdmVGcmFtZUxlbmd0aCA9IDMyICogKG5ic2xvdCAvIDIpOworICAgICAgaHNhaS0+U2xvdEluaXQuU2xvdFNpemUgPSBTQUlfU0xPVFNJWkVfMzJCOworICAgICAgYnJlYWs7CisgICAgY2FzZSBTQUlfUFJPVE9DT0xfREFUQVNJWkVfMzJCSVQ6CisgICAgICBoc2FpLT5Jbml0LkRhdGFTaXplID0gU0FJX0RBVEFTSVpFXzMyOworICAgICAgaHNhaS0+RnJhbWVJbml0LkZyYW1lTGVuZ3RoID0gNjQgKiAobmJzbG90IC8gMik7CisgICAgICBoc2FpLT5GcmFtZUluaXQuQWN0aXZlRnJhbWVMZW5ndGggPSAzMiAqIChuYnNsb3QgLyAyKTsKKyAgICAgIGhzYWktPlNsb3RJbml0LlNsb3RTaXplID0gU0FJX1NMT1RTSVpFXzMyQjsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQgOgorICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQotICBpZihwcm90b2NvbCA9PSBTQUlfSTJTX0xTQkpVU1RJRklFRCkKKyAgaWYgKHByb3RvY29sID09IFNBSV9JMlNfTFNCSlVTVElGSUVEKQogICB7CiAgICAgaWYgKGRhdGFzaXplID09IFNBSV9QUk9UT0NPTF9EQVRBU0laRV8xNkJJVEVYVEVOREVEKQogICAgIHsKQEAgLTIwMTYsMTIgKzIwNTIsMTQgQEAKICAgaHNhaS0+SW5pdC5Qcm90b2NvbCAgICAgICAgICAgID0gU0FJX0ZSRUVfUFJPVE9DT0w7CiAgIGhzYWktPkluaXQuRmlyc3RCaXQgICAgICAgICAgICA9IFNBSV9GSVJTVEJJVF9NU0I7CiAgIC8qIENvbXB1dGUgQ2xvY2tTdHJvYmluZyBhY2NvcmRpbmcgQXVkaW9Nb2RlICovCi0gIGlmKChoc2FpLT5Jbml0LkF1ZGlvTW9kZSA9PSBTQUlfTU9ERU1BU1RFUl9UWCkgfHwgKGhzYWktPkluaXQuQXVkaW9Nb2RlID09IFNBSV9NT0RFU0xBVkVfVFgpKQotICB7IC8qIFRyYW5zbWl0ICovCisgIGlmICgoaHNhaS0+SW5pdC5BdWRpb01vZGUgPT0gU0FJX01PREVNQVNURVJfVFgpIHx8IChoc2FpLT5Jbml0LkF1ZGlvTW9kZSA9PSBTQUlfTU9ERVNMQVZFX1RYKSkKKyAgeworICAgIC8qIFRyYW5zbWl0ICovCiAgICAgaHNhaS0+SW5pdC5DbG9ja1N0cm9iaW5nICAgICA9IFNBSV9DTE9DS1NUUk9CSU5HX1JJU0lOR0VER0U7CiAgIH0KICAgZWxzZQotICB7IC8qIFJlY2VpdmUgKi8KKyAgeworICAgIC8qIFJlY2VpdmUgKi8KICAgICBoc2FpLT5Jbml0LkNsb2NrU3Ryb2JpbmcgICAgID0gU0FJX0NMT0NLU1RST0JJTkdfRkFMTElOR0VER0U7CiAgIH0KICAgaHNhaS0+RnJhbWVJbml0LkZTRGVmaW5pdGlvbiAgID0gU0FJX0ZTX1NUQVJURlJBTUU7CkBAIC0yMDMxLDQyICsyMDY5LDQwIEBACiAgIGhzYWktPlNsb3RJbml0LlNsb3ROdW1iZXIgICAgICA9IG5ic2xvdDsKICAgaHNhaS0+U2xvdEluaXQuU2xvdEFjdGl2ZSAgICAgID0gU0FJX1NMT1RBQ1RJVkVfQUxMOwogCi0gIHN3aXRjaChwcm90b2NvbCkKKyAgaWYgKHByb3RvY29sID09IFNBSV9QQ01fU0hPUlQpCiAgIHsKLSAgY2FzZSBTQUlfUENNX1NIT1JUIDoKICAgICBoc2FpLT5GcmFtZUluaXQuQWN0aXZlRnJhbWVMZW5ndGggPSAxOwotICAgIGJyZWFrOwotICBjYXNlIFNBSV9QQ01fTE9ORyA6CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogU0FJX1BDTV9MT05HICovCiAgICAgaHNhaS0+RnJhbWVJbml0LkFjdGl2ZUZyYW1lTGVuZ3RoID0gMTM7Ci0gICAgYnJlYWs7Ci0gIGRlZmF1bHQgOgotICAgIHJldHVybiBIQUxfRVJST1I7CiAgIH0KIAotICBzd2l0Y2goZGF0YXNpemUpCisgIHN3aXRjaCAoZGF0YXNpemUpCiAgIHsKLSAgY2FzZSBTQUlfUFJPVE9DT0xfREFUQVNJWkVfMTZCSVQ6Ci0gICAgaHNhaS0+SW5pdC5EYXRhU2l6ZSA9IFNBSV9EQVRBU0laRV8xNjsKLSAgICBoc2FpLT5GcmFtZUluaXQuRnJhbWVMZW5ndGggPSAxNiAqIG5ic2xvdDsKLSAgICBoc2FpLT5TbG90SW5pdC5TbG90U2l6ZSA9IFNBSV9TTE9UU0laRV8xNkI7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgU0FJX1BST1RPQ09MX0RBVEFTSVpFXzE2QklURVhURU5ERUQgOgotICAgIGhzYWktPkluaXQuRGF0YVNpemUgPSBTQUlfREFUQVNJWkVfMTY7Ci0gICAgaHNhaS0+RnJhbWVJbml0LkZyYW1lTGVuZ3RoID0gMzIgKiBuYnNsb3Q7Ci0gICAgaHNhaS0+U2xvdEluaXQuU2xvdFNpemUgPSBTQUlfU0xPVFNJWkVfMzJCOwotICAgIGJyZWFrOwotICBjYXNlIFNBSV9QUk9UT0NPTF9EQVRBU0laRV8yNEJJVCA6Ci0gICAgaHNhaS0+SW5pdC5EYXRhU2l6ZSA9IFNBSV9EQVRBU0laRV8yNDsKLSAgICBoc2FpLT5GcmFtZUluaXQuRnJhbWVMZW5ndGggPSAzMiAqIG5ic2xvdDsKLSAgICBoc2FpLT5TbG90SW5pdC5TbG90U2l6ZSA9IFNBSV9TTE9UU0laRV8zMkI7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgU0FJX1BST1RPQ09MX0RBVEFTSVpFXzMyQklUOgotICAgIGhzYWktPkluaXQuRGF0YVNpemUgPSBTQUlfREFUQVNJWkVfMzI7Ci0gICAgaHNhaS0+RnJhbWVJbml0LkZyYW1lTGVuZ3RoID0gMzIgKiBuYnNsb3Q7Ci0gICAgaHNhaS0+U2xvdEluaXQuU2xvdFNpemUgPSBTQUlfU0xPVFNJWkVfMzJCOwotICAgIGJyZWFrOwotICBkZWZhdWx0IDoKLSAgICByZXR1cm4gSEFMX0VSUk9SOworICAgIGNhc2UgU0FJX1BST1RPQ09MX0RBVEFTSVpFXzE2QklUOgorICAgICAgaHNhaS0+SW5pdC5EYXRhU2l6ZSA9IFNBSV9EQVRBU0laRV8xNjsKKyAgICAgIGhzYWktPkZyYW1lSW5pdC5GcmFtZUxlbmd0aCA9IDE2ICogbmJzbG90OworICAgICAgaHNhaS0+U2xvdEluaXQuU2xvdFNpemUgPSBTQUlfU0xPVFNJWkVfMTZCOworICAgICAgYnJlYWs7CisgICAgY2FzZSBTQUlfUFJPVE9DT0xfREFUQVNJWkVfMTZCSVRFWFRFTkRFRCA6CisgICAgICBoc2FpLT5Jbml0LkRhdGFTaXplID0gU0FJX0RBVEFTSVpFXzE2OworICAgICAgaHNhaS0+RnJhbWVJbml0LkZyYW1lTGVuZ3RoID0gMzIgKiBuYnNsb3Q7CisgICAgICBoc2FpLT5TbG90SW5pdC5TbG90U2l6ZSA9IFNBSV9TTE9UU0laRV8zMkI7CisgICAgICBicmVhazsKKyAgICBjYXNlIFNBSV9QUk9UT0NPTF9EQVRBU0laRV8yNEJJVCA6CisgICAgICBoc2FpLT5Jbml0LkRhdGFTaXplID0gU0FJX0RBVEFTSVpFXzI0OworICAgICAgaHNhaS0+RnJhbWVJbml0LkZyYW1lTGVuZ3RoID0gMzIgKiBuYnNsb3Q7CisgICAgICBoc2FpLT5TbG90SW5pdC5TbG90U2l6ZSA9IFNBSV9TTE9UU0laRV8zMkI7CisgICAgICBicmVhazsKKyAgICBjYXNlIFNBSV9QUk9UT0NPTF9EQVRBU0laRV8zMkJJVDoKKyAgICAgIGhzYWktPkluaXQuRGF0YVNpemUgPSBTQUlfREFUQVNJWkVfMzI7CisgICAgICBoc2FpLT5GcmFtZUluaXQuRnJhbWVMZW5ndGggPSAzMiAqIG5ic2xvdDsKKyAgICAgIGhzYWktPlNsb3RJbml0LlNsb3RTaXplID0gU0FJX1NMT1RTSVpFXzMyQjsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQgOgorICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQogCiAgIHJldHVybiBIQUxfT0s7CkBAIC0yMDgxLDIxICsyMTE3LDIxIEBACiBzdGF0aWMgdm9pZCBTQUlfRmlsbEZpZm8oU0FJX0hhbmRsZVR5cGVEZWYgKmhzYWkpCiB7CiAgIC8qIGZpbGwgdGhlIGZpZm8gd2l0aCBkYXRhIGJlZm9yZSB0byBlbmFibGVkIHRoZSBTQUkgKi8KLSAgd2hpbGUoKChoc2FpLT5JbnN0YW5jZS0+U1IgJiBTQUlfeFNSX0ZMVkwpICE9IFNBSV9GSUZPU1RBVFVTX0ZVTEwpICYmIChoc2FpLT5YZmVyQ291bnQgPiAwKSkKKyAgd2hpbGUgKCgoaHNhaS0+SW5zdGFuY2UtPlNSICYgU0FJX3hTUl9GTFZMKSAhPSBTQUlfRklGT1NUQVRVU19GVUxMKSAmJiAoaHNhaS0+WGZlckNvdW50ID4gMCkpCiAgIHsKLSAgICBpZigoaHNhaS0+SW5pdC5EYXRhU2l6ZSA9PSBTQUlfREFUQVNJWkVfOCkgJiYgKGhzYWktPkluaXQuQ29tcGFuZGluZ01vZGUgPT0gU0FJX05PQ09NUEFORElORykpCisgICAgaWYgKChoc2FpLT5Jbml0LkRhdGFTaXplID09IFNBSV9EQVRBU0laRV84KSAmJiAoaHNhaS0+SW5pdC5Db21wYW5kaW5nTW9kZSA9PSBTQUlfTk9DT01QQU5ESU5HKSkKICAgICB7CiAgICAgICBoc2FpLT5JbnN0YW5jZS0+RFIgPSAoKmhzYWktPnBCdWZmUHRyKyspOwogICAgIH0KLSAgICBlbHNlIGlmKGhzYWktPkluaXQuRGF0YVNpemUgPD0gU0FJX0RBVEFTSVpFXzE2KQorICAgIGVsc2UgaWYgKGhzYWktPkluaXQuRGF0YVNpemUgPD0gU0FJX0RBVEFTSVpFXzE2KQogICAgIHsKICAgICAgIGhzYWktPkluc3RhbmNlLT5EUiA9ICooKHVpbnQzMl90ICopaHNhaS0+cEJ1ZmZQdHIpOwotICAgICAgaHNhaS0+cEJ1ZmZQdHIrPSAyOworICAgICAgaHNhaS0+cEJ1ZmZQdHIgKz0gMjsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgIGhzYWktPkluc3RhbmNlLT5EUiA9ICooKHVpbnQzMl90ICopaHNhaS0+cEJ1ZmZQdHIpOwotICAgICAgaHNhaS0+cEJ1ZmZQdHIrPSA0OworICAgICAgaHNhaS0+cEJ1ZmZQdHIgKz0gNDsKICAgICB9CiAgICAgaHNhaS0+WGZlckNvdW50LS07CiAgIH0KQEAgLTIxMTIsMjUgKzIxNDgsMjUgQEAKIHsKICAgdWludDMyX3QgdG1wSVQgPSBTQUlfSVRfT1ZSVURSOwogCi0gIGlmKG1vZGUgPT0gU0FJX01PREVfSVQpCisgIGlmIChtb2RlID09IFNBSV9NT0RFX0lUKQogICB7Ci0gICAgdG1wSVR8PSBTQUlfSVRfRlJFUTsKKyAgICB0bXBJVCB8PSBTQUlfSVRfRlJFUTsKICAgfQogCi0gIGlmKChoc2FpLT5Jbml0LlByb3RvY29sID09IFNBSV9BQzk3X1BST1RPQ09MKSAmJgotICAgICgoaHNhaS0+SW5pdC5BdWRpb01vZGUgPT0gU0FJX01PREVTTEFWRV9SWCkgfHwgKGhzYWktPkluaXQuQXVkaW9Nb2RlID09IFNBSV9NT0RFTUFTVEVSX1JYKSkpCisgIGlmICgoaHNhaS0+SW5pdC5Qcm90b2NvbCA9PSBTQUlfQUM5N19QUk9UT0NPTCkgJiYKKyAgICAgICgoaHNhaS0+SW5pdC5BdWRpb01vZGUgPT0gU0FJX01PREVTTEFWRV9SWCkgfHwgKGhzYWktPkluaXQuQXVkaW9Nb2RlID09IFNBSV9NT0RFTUFTVEVSX1JYKSkpCiAgIHsKLSAgICB0bXBJVHw9IFNBSV9JVF9DTlJEWTsKKyAgICB0bXBJVCB8PSBTQUlfSVRfQ05SRFk7CiAgIH0KIAotICBpZigoaHNhaS0+SW5pdC5BdWRpb01vZGUgPT0gU0FJX01PREVTTEFWRV9SWCkgfHwgKGhzYWktPkluaXQuQXVkaW9Nb2RlID09IFNBSV9NT0RFU0xBVkVfVFgpKQorICBpZiAoKGhzYWktPkluaXQuQXVkaW9Nb2RlID09IFNBSV9NT0RFU0xBVkVfUlgpIHx8IChoc2FpLT5Jbml0LkF1ZGlvTW9kZSA9PSBTQUlfTU9ERVNMQVZFX1RYKSkKICAgewotICAgIHRtcElUfD0gU0FJX0lUX0FGU0RFVCB8IFNBSV9JVF9MRlNERVQ7CisgICAgdG1wSVQgfD0gU0FJX0lUX0FGU0RFVCB8IFNBSV9JVF9MRlNERVQ7CiAgIH0KICAgZWxzZQogICB7CiAgICAgLyogaHNhaSBoYXMgYmVlbiBjb25maWd1cmVkIGluIG1hc3RlciBtb2RlICovCi0gICAgdG1wSVR8PSBTQUlfSVRfV0NLQ0ZHOworICAgIHRtcElUIHw9IFNBSV9JVF9XQ0tDRkc7CiAgIH0KICAgcmV0dXJuIHRtcElUOwogfQpAQCAtMjE0Myw3ICsyMTc5LDcgQEAKICAgKi8KIHN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBTQUlfRGlzYWJsZShTQUlfSGFuZGxlVHlwZURlZiAqaHNhaSkKIHsKLSAgcmVnaXN0ZXIgdWludDMyX3QgY291bnQgPSBTQUlfREVGQVVMVF9USU1FT1VUICogKFN5c3RlbUNvcmVDbG9jayAvNy8xMDAwKTsKKyAgdWludDMyX3QgY291bnQgPSBTQUlfREVGQVVMVF9USU1FT1VUICogKFN5c3RlbUNvcmVDbG9jayAvIDcgLyAxMDAwKTsKICAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogCiAgIC8qIERpc2FibGUgdGhlIFNBSSBpbnN0YW5jZSAqLwpAQCAtMjE1OSw3ICsyMTk1LDggQEAKICAgICAgIHN0YXR1cyA9IEhBTF9USU1FT1VUOwogICAgICAgYnJlYWs7CiAgICAgfQotICB9IHdoaWxlKChoc2FpLT5JbnN0YW5jZS0+Q1IxICYgU0FJX3hDUjFfU0FJRU4pICE9IFJFU0VUKTsKKyAgfQorICB3aGlsZSAoKGhzYWktPkluc3RhbmNlLT5DUjEgJiBTQUlfeENSMV9TQUlFTikgIT0gUkVTRVQpOwogCiAgIHJldHVybiBzdGF0dXM7CiB9CkBAIC0yMTcyLDcgKzIyMDksNyBAQAogICAqLwogc3RhdGljIHZvaWQgU0FJX1RyYW5zbWl0X0lUOEJpdChTQUlfSGFuZGxlVHlwZURlZiAqaHNhaSkKIHsKLSAgaWYoaHNhaS0+WGZlckNvdW50ID09IDApCisgIGlmIChoc2FpLT5YZmVyQ291bnQgPT0gMCkKICAgewogICAgIC8qIEhhbmRsZSB0aGUgZW5kIG9mIHRoZSB0cmFuc21pc3Npb24gKi8KICAgICAvKiBEaXNhYmxlIEZSRVEgYW5kIE9WUlVEUiBpbnRlcnJ1cHRzICovCkBAIC0yMjAwLDcgKzIyMzcsNyBAQAogICAqLwogc3RhdGljIHZvaWQgU0FJX1RyYW5zbWl0X0lUMTZCaXQoU0FJX0hhbmRsZVR5cGVEZWYgKmhzYWkpCiB7Ci0gIGlmKGhzYWktPlhmZXJDb3VudCA9PSAwKQorICBpZiAoaHNhaS0+WGZlckNvdW50ID09IDApCiAgIHsKICAgICAvKiBIYW5kbGUgdGhlIGVuZCBvZiB0aGUgdHJhbnNtaXNzaW9uICovCiAgICAgLyogRGlzYWJsZSBGUkVRIGFuZCBPVlJVRFIgaW50ZXJydXB0cyAqLwpAQCAtMjIxNiw3ICsyMjUzLDcgQEAKICAgewogICAgIC8qIFdyaXRlIGRhdGEgb24gRFIgcmVnaXN0ZXIgKi8KICAgICBoc2FpLT5JbnN0YW5jZS0+RFIgPSAqKHVpbnQxNl90ICopaHNhaS0+cEJ1ZmZQdHI7Ci0gICAgaHNhaS0+cEJ1ZmZQdHIrPTI7CisgICAgaHNhaS0+cEJ1ZmZQdHIgKz0gMjsKICAgICBoc2FpLT5YZmVyQ291bnQtLTsKICAgfQogfQpAQCAtMjIyOSw3ICsyMjY2LDcgQEAKICAgKi8KIHN0YXRpYyB2b2lkIFNBSV9UcmFuc21pdF9JVDMyQml0KFNBSV9IYW5kbGVUeXBlRGVmICpoc2FpKQogewotICBpZihoc2FpLT5YZmVyQ291bnQgPT0gMCkKKyAgaWYgKGhzYWktPlhmZXJDb3VudCA9PSAwKQogICB7CiAgICAgLyogSGFuZGxlIHRoZSBlbmQgb2YgdGhlIHRyYW5zbWlzc2lvbiAqLwogICAgIC8qIERpc2FibGUgRlJFUSBhbmQgT1ZSVURSIGludGVycnVwdHMgKi8KQEAgLTIyNDUsNyArMjI4Miw3IEBACiAgIHsKICAgICAvKiBXcml0ZSBkYXRhIG9uIERSIHJlZ2lzdGVyICovCiAgICAgaHNhaS0+SW5zdGFuY2UtPkRSID0gKih1aW50MzJfdCAqKWhzYWktPnBCdWZmUHRyOwotICAgIGhzYWktPnBCdWZmUHRyKz00OworICAgIGhzYWktPnBCdWZmUHRyICs9IDQ7CiAgICAgaHNhaS0+WGZlckNvdW50LS07CiAgIH0KIH0KQEAgLTIyNjMsNyArMjMwMCw3IEBACiAgIGhzYWktPlhmZXJDb3VudC0tOwogCiAgIC8qIENoZWNrIGVuZCBvZiB0aGUgdHJhbnNmZXIgKi8KLSAgaWYoaHNhaS0+WGZlckNvdW50ID09IDApCisgIGlmIChoc2FpLT5YZmVyQ291bnQgPT0gMCkKICAgewogICAgIC8qIERpc2FibGUgVFhFIGFuZCBPVlJVRFIgaW50ZXJydXB0cyAqLwogICAgIF9fSEFMX1NBSV9ESVNBQkxFX0lUKGhzYWksIFNBSV9JbnRlcnJ1cHRGbGFnKGhzYWksIFNBSV9NT0RFX0lUKSk7CkBAIC0yMjg5LDEyICsyMzI2LDEyIEBACiBzdGF0aWMgdm9pZCBTQUlfUmVjZWl2ZV9JVDE2Qml0KFNBSV9IYW5kbGVUeXBlRGVmICpoc2FpKQogewogICAvKiBSZWNlaXZlIGRhdGEgKi8KLSAgKih1aW50MTZfdCopaHNhaS0+cEJ1ZmZQdHIgPSBoc2FpLT5JbnN0YW5jZS0+RFI7Ci0gIGhzYWktPnBCdWZmUHRyKz0yOworICAqKHVpbnQxNl90ICopaHNhaS0+cEJ1ZmZQdHIgPSBoc2FpLT5JbnN0YW5jZS0+RFI7CisgIGhzYWktPnBCdWZmUHRyICs9IDI7CiAgIGhzYWktPlhmZXJDb3VudC0tOwogCiAgIC8qIENoZWNrIGVuZCBvZiB0aGUgdHJhbnNmZXIgKi8KLSAgaWYoaHNhaS0+WGZlckNvdW50ID09IDApCisgIGlmIChoc2FpLT5YZmVyQ291bnQgPT0gMCkKICAgewogICAgIC8qIERpc2FibGUgVFhFIGFuZCBPVlJVRFIgaW50ZXJydXB0cyAqLwogICAgIF9fSEFMX1NBSV9ESVNBQkxFX0lUKGhzYWksIFNBSV9JbnRlcnJ1cHRGbGFnKGhzYWksIFNBSV9NT0RFX0lUKSk7CkBAIC0yMzIwLDEyICsyMzU3LDEyIEBACiBzdGF0aWMgdm9pZCBTQUlfUmVjZWl2ZV9JVDMyQml0KFNBSV9IYW5kbGVUeXBlRGVmICpoc2FpKQogewogICAvKiBSZWNlaXZlIGRhdGEgKi8KLSAgKih1aW50MzJfdCopaHNhaS0+cEJ1ZmZQdHIgPSBoc2FpLT5JbnN0YW5jZS0+RFI7Ci0gIGhzYWktPnBCdWZmUHRyKz00OworICAqKHVpbnQzMl90ICopaHNhaS0+cEJ1ZmZQdHIgPSBoc2FpLT5JbnN0YW5jZS0+RFI7CisgIGhzYWktPnBCdWZmUHRyICs9IDQ7CiAgIGhzYWktPlhmZXJDb3VudC0tOwogCiAgIC8qIENoZWNrIGVuZCBvZiB0aGUgdHJhbnNmZXIgKi8KLSAgaWYoaHNhaS0+WGZlckNvdW50ID09IDApCisgIGlmIChoc2FpLT5YZmVyQ291bnQgPT0gMCkKICAgewogICAgIC8qIERpc2FibGUgVFhFIGFuZCBPVlJVRFIgaW50ZXJydXB0cyAqLwogICAgIF9fSEFMX1NBSV9ESVNBQkxFX0lUKGhzYWksIFNBSV9JbnRlcnJ1cHRGbGFnKGhzYWksIFNBSV9NT0RFX0lUKSk7CkBAIC0yMzUwLDcgKzIzODcsNyBAQAogICAqLwogc3RhdGljIHZvaWQgU0FJX0RNQVR4Q3BsdChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSkKIHsKLSAgU0FJX0hhbmRsZVR5cGVEZWYqIGhzYWkgPSAoU0FJX0hhbmRsZVR5cGVEZWYqKSgoRE1BX0hhbmRsZVR5cGVEZWYqICloZG1hKS0+UGFyZW50OworICBTQUlfSGFuZGxlVHlwZURlZiAqaHNhaSA9IChTQUlfSGFuZGxlVHlwZURlZiAqKSgoRE1BX0hhbmRsZVR5cGVEZWYgKiloZG1hKS0+UGFyZW50OwogCiAgIGlmIChoZG1hLT5Jbml0Lk1vZGUgIT0gRE1BX0NJUkNVTEFSKQogICB7CkBAIC0yMzYyLDcgKzIzOTksNyBAQAogICAgIC8qIFN0b3AgdGhlIGludGVycnVwdHMgZXJyb3IgaGFuZGxpbmcgKi8KICAgICBfX0hBTF9TQUlfRElTQUJMRV9JVChoc2FpLCBTQUlfSW50ZXJydXB0RmxhZyhoc2FpLCBTQUlfTU9ERV9ETUEpKTsKIAotICAgIGhzYWktPlN0YXRlPSBIQUxfU0FJX1NUQVRFX1JFQURZOworICAgIGhzYWktPlN0YXRlID0gSEFMX1NBSV9TVEFURV9SRUFEWTsKICAgfQogI2lmIChVU0VfSEFMX1NBSV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKICAgaHNhaS0+VHhDcGx0Q2FsbGJhY2soaHNhaSk7CkBAIC0yMzc5LDcgKzI0MTYsNyBAQAogICAqLwogc3RhdGljIHZvaWQgU0FJX0RNQVR4SGFsZkNwbHQoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpCiB7Ci0gIFNBSV9IYW5kbGVUeXBlRGVmKiBoc2FpID0gKFNBSV9IYW5kbGVUeXBlRGVmKikoKERNQV9IYW5kbGVUeXBlRGVmKiloZG1hKS0+UGFyZW50OworICBTQUlfSGFuZGxlVHlwZURlZiAqaHNhaSA9IChTQUlfSGFuZGxlVHlwZURlZiAqKSgoRE1BX0hhbmRsZVR5cGVEZWYgKiloZG1hKS0+UGFyZW50OwogCiAjaWYgKFVTRV9IQUxfU0FJX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogICBoc2FpLT5UeEhhbGZDcGx0Q2FsbGJhY2soaHNhaSk7CkBAIC0yMzk2LDcgKzI0MzMsNyBAQAogICAqLwogc3RhdGljIHZvaWQgU0FJX0RNQVJ4Q3BsdChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSkKIHsKLSAgU0FJX0hhbmRsZVR5cGVEZWYqIGhzYWkgPSAoIFNBSV9IYW5kbGVUeXBlRGVmKiApKChETUFfSGFuZGxlVHlwZURlZiogKWhkbWEpLT5QYXJlbnQ7CisgIFNBSV9IYW5kbGVUeXBlRGVmICpoc2FpID0gKFNBSV9IYW5kbGVUeXBlRGVmICopKChETUFfSGFuZGxlVHlwZURlZiAqKWhkbWEpLT5QYXJlbnQ7CiAKICAgaWYgKGhkbWEtPkluaXQuTW9kZSAhPSBETUFfQ0lSQ1VMQVIpCiAgIHsKQEAgLTI0MjQsNyArMjQ2MSw3IEBACiAgICovCiBzdGF0aWMgdm9pZCBTQUlfRE1BUnhIYWxmQ3BsdChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSkKIHsKLSAgU0FJX0hhbmRsZVR5cGVEZWYqIGhzYWkgPSAoU0FJX0hhbmRsZVR5cGVEZWYqKSgoRE1BX0hhbmRsZVR5cGVEZWYqKWhkbWEpLT5QYXJlbnQ7CisgIFNBSV9IYW5kbGVUeXBlRGVmICpoc2FpID0gKFNBSV9IYW5kbGVUeXBlRGVmICopKChETUFfSGFuZGxlVHlwZURlZiAqKWhkbWEpLT5QYXJlbnQ7CiAKICNpZiAoVVNFX0hBTF9TQUlfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCiAgIGhzYWktPlJ4SGFsZkNwbHRDYWxsYmFjayhoc2FpKTsKQEAgLTI0NDEsMTIgKzI0NzgsMTIgQEAKICAgKi8KIHN0YXRpYyB2b2lkIFNBSV9ETUFFcnJvcihETUFfSGFuZGxlVHlwZURlZiAqaGRtYSkKIHsKLSAgU0FJX0hhbmRsZVR5cGVEZWYqIGhzYWkgPSAoIFNBSV9IYW5kbGVUeXBlRGVmKiApKChETUFfSGFuZGxlVHlwZURlZiogKWhkbWEpLT5QYXJlbnQ7CisgIFNBSV9IYW5kbGVUeXBlRGVmICpoc2FpID0gKFNBSV9IYW5kbGVUeXBlRGVmICopKChETUFfSGFuZGxlVHlwZURlZiAqKWhkbWEpLT5QYXJlbnQ7CiAKICAgLyogU2V0IFNBSSBlcnJvciBjb2RlICovCiAgIGhzYWktPkVycm9yQ29kZSB8PSBIQUxfU0FJX0VSUk9SX0RNQTsKIAotICBpZigoaHNhaS0+aGRtYXR4LT5FcnJvckNvZGUgPT0gSEFMX0RNQV9FUlJPUl9URSkgfHwgKGhzYWktPmhkbWFyeC0+RXJyb3JDb2RlID09IEhBTF9ETUFfRVJST1JfVEUpKQorICBpZiAoKGhzYWktPmhkbWF0eC0+RXJyb3JDb2RlID09IEhBTF9ETUFfRVJST1JfVEUpIHx8IChoc2FpLT5oZG1hcngtPkVycm9yQ29kZSA9PSBIQUxfRE1BX0VSUk9SX1RFKSkKICAgewogICAgIC8qIERpc2FibGUgdGhlIFNBSSBETUEgcmVxdWVzdCAqLwogICAgIGhzYWktPkluc3RhbmNlLT5DUjEgJj0gflNBSV94Q1IxX0RNQUVOOwpAQCAtMjQ3Niw3ICsyNTEzLDcgQEAKICAgKi8KIHN0YXRpYyB2b2lkIFNBSV9ETUFBYm9ydChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSkKIHsKLSAgU0FJX0hhbmRsZVR5cGVEZWYqIGhzYWkgPSAoIFNBSV9IYW5kbGVUeXBlRGVmKiApKChETUFfSGFuZGxlVHlwZURlZiogKWhkbWEpLT5QYXJlbnQ7CisgIFNBSV9IYW5kbGVUeXBlRGVmICpoc2FpID0gKFNBSV9IYW5kbGVUeXBlRGVmICopKChETUFfSGFuZGxlVHlwZURlZiAqKWhkbWEpLT5QYXJlbnQ7CiAKICAgLyogRGlzYWJsZSBETUEgcmVxdWVzdCAqLwogICBoc2FpLT5JbnN0YW5jZS0+Q1IxICY9IH5TQUlfeENSMV9ETUFFTjsKQEAgLTI0ODUsNyArMjUyMiw3IEBACiAgIGhzYWktPkluc3RhbmNlLT5JTVIgPSAwVTsKICAgaHNhaS0+SW5zdGFuY2UtPkNMUkZSID0gMHhGRkZGRkZGRlU7CiAKLSAgaWYoaHNhaS0+RXJyb3JDb2RlICE9IEhBTF9TQUlfRVJST1JfV0NLQ0ZHKQorICBpZiAoaHNhaS0+RXJyb3JDb2RlICE9IEhBTF9TQUlfRVJST1JfV0NLQ0ZHKQogICB7CiAgICAgLyogRGlzYWJsZSBTQUkgcGVyaXBoZXJhbCAqLwogICAgIFNBSV9EaXNhYmxlKGhzYWkpOwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfc2FpX2V4LmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9zYWlfZXguYwppbmRleCA0Nzg1NTU1Li5mOWViODYyIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF9zYWlfZXguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF9zYWlfZXguYwpAQCAtMTksNyArMTksNyBAQAogICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlCiAgICoKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICovIAorICAqLwogCiAvKiBJbmNsdWRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogI2luY2x1ZGUgInN0bTMyZjd4eF9oYWwuaCIKZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3NkLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9zZC5jCmluZGV4IDMzYTA4NjEuLjRhMzc0NGYgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3NkLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfc2QuYwpAQCAtNDQ4LDYgKzQ0OCwxNyBAQAogICAgIHJldHVybiBIQUxfRVJST1I7CiAgIH0KIAorICAvKiBTZXQgQmxvY2sgU2l6ZSBmb3IgQ2FyZCAqLworICBlcnJvcnN0YXRlID0gU0RNTUNfQ21kQmxvY2tMZW5ndGgoaHNkLT5JbnN0YW5jZSwgQkxPQ0tTSVpFKTsKKyAgaWYoZXJyb3JzdGF0ZSAhPSBIQUxfU0RfRVJST1JfTk9ORSkKKyAgeworICAgIC8qIENsZWFyIGFsbCB0aGUgc3RhdGljIGZsYWdzICovCisgICAgX19IQUxfU0RfQ0xFQVJfRkxBRyhoc2QsIFNETU1DX1NUQVRJQ19GTEFHUyk7CisgICAgaHNkLT5FcnJvckNvZGUgfD0gZXJyb3JzdGF0ZTsKKyAgICBoc2QtPlN0YXRlID0gSEFMX1NEX1NUQVRFX1JFQURZOworICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KKwogICByZXR1cm4gSEFMX09LOwogfQogCkBAIC01ODgsMTcgKzU5OSw2IEBACiAgICAgICBhZGQgKj0gNTEyVTsKICAgICB9CiAKLSAgICAvKiBTZXQgQmxvY2sgU2l6ZSBmb3IgQ2FyZCAqLwotICAgIGVycm9yc3RhdGUgPSBTRE1NQ19DbWRCbG9ja0xlbmd0aChoc2QtPkluc3RhbmNlLCBCTE9DS1NJWkUpOwotICAgIGlmKGVycm9yc3RhdGUgIT0gSEFMX1NEX0VSUk9SX05PTkUpCi0gICAgewotICAgICAgLyogQ2xlYXIgYWxsIHRoZSBzdGF0aWMgZmxhZ3MgKi8KLSAgICAgIF9fSEFMX1NEX0NMRUFSX0ZMQUcoaHNkLCBTRE1NQ19TVEFUSUNfRkxBR1MpOwotICAgICAgaHNkLT5FcnJvckNvZGUgfD0gZXJyb3JzdGF0ZTsKLSAgICAgIGhzZC0+U3RhdGUgPSBIQUxfU0RfU1RBVEVfUkVBRFk7Ci0gICAgICByZXR1cm4gSEFMX0VSUk9SOwotICAgIH0KLQogICAgIC8qIENvbmZpZ3VyZSB0aGUgU0QgRFBTTSAoRGF0YSBQYXRoIFN0YXRlIE1hY2hpbmUpICovCiAgICAgY29uZmlnLkRhdGFUaW1lT3V0ICAgPSBTRE1NQ19EQVRBVElNRU9VVDsKICAgICBjb25maWcuRGF0YUxlbmd0aCAgICA9IE51bWJlck9mQmxvY2tzICogQkxPQ0tTSVpFOwpAQCAtODEwLDE3ICs4MTAsNiBAQAogICAgICAgYWRkICo9IDUxMlU7CiAgICAgfQogCi0gICAgLyogU2V0IEJsb2NrIFNpemUgZm9yIENhcmQgKi8KLSAgICBlcnJvcnN0YXRlID0gU0RNTUNfQ21kQmxvY2tMZW5ndGgoaHNkLT5JbnN0YW5jZSwgQkxPQ0tTSVpFKTsKLSAgICBpZihlcnJvcnN0YXRlICE9IEhBTF9TRF9FUlJPUl9OT05FKQotICAgIHsKLSAgICAgIC8qIENsZWFyIGFsbCB0aGUgc3RhdGljIGZsYWdzICovCi0gICAgICBfX0hBTF9TRF9DTEVBUl9GTEFHKGhzZCwgU0RNTUNfU1RBVElDX0ZMQUdTKTsKLSAgICAgIGhzZC0+RXJyb3JDb2RlIHw9IGVycm9yc3RhdGU7Ci0gICAgICBoc2QtPlN0YXRlID0gSEFMX1NEX1NUQVRFX1JFQURZOwotICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKLSAgICB9Ci0KICAgICAvKiBDb25maWd1cmUgdGhlIFNEIERQU00gKERhdGEgUGF0aCBTdGF0ZSBNYWNoaW5lKSAqLwogICAgIGNvbmZpZy5EYXRhVGltZU91dCAgID0gU0RNTUNfREFUQVRJTUVPVVQ7CiAgICAgY29uZmlnLkRhdGFMZW5ndGggICAgPSBOdW1iZXJPZkJsb2NrcyAqIEJMT0NLU0laRTsKQEAgLTEwMDcsMTcgKzk5Niw2IEBACiAgICAgICBhZGQgKj0gNTEyVTsKICAgICB9CiAKLSAgICAvKiBTZXQgQmxvY2sgU2l6ZSBmb3IgQ2FyZCAqLwotICAgIGVycm9yc3RhdGUgPSBTRE1NQ19DbWRCbG9ja0xlbmd0aChoc2QtPkluc3RhbmNlLCBCTE9DS1NJWkUpOwotICAgIGlmKGVycm9yc3RhdGUgIT0gSEFMX1NEX0VSUk9SX05PTkUpCi0gICAgewotICAgICAgLyogQ2xlYXIgYWxsIHRoZSBzdGF0aWMgZmxhZ3MgKi8KLSAgICAgIF9fSEFMX1NEX0NMRUFSX0ZMQUcoaHNkLCBTRE1NQ19TVEFUSUNfRkxBR1MpOwotICAgICAgaHNkLT5FcnJvckNvZGUgfD0gZXJyb3JzdGF0ZTsKLSAgICAgIGhzZC0+U3RhdGUgPSBIQUxfU0RfU1RBVEVfUkVBRFk7Ci0gICAgICByZXR1cm4gSEFMX0VSUk9SOwotICAgIH0KLQogICAgIC8qIENvbmZpZ3VyZSB0aGUgU0QgRFBTTSAoRGF0YSBQYXRoIFN0YXRlIE1hY2hpbmUpICovCiAgICAgY29uZmlnLkRhdGFUaW1lT3V0ICAgPSBTRE1NQ19EQVRBVElNRU9VVDsKICAgICBjb25maWcuRGF0YUxlbmd0aCAgICA9IEJMT0NLU0laRSAqIE51bWJlck9mQmxvY2tzOwpAQCAtMTExMSwxNyArMTA4OSw2IEBACiAgICAgICBhZGQgKj0gNTEyVTsKICAgICB9CiAKLSAgICAvKiBTZXQgQmxvY2sgU2l6ZSBmb3IgQ2FyZCAqLwotICAgIGVycm9yc3RhdGUgPSBTRE1NQ19DbWRCbG9ja0xlbmd0aChoc2QtPkluc3RhbmNlLCBCTE9DS1NJWkUpOwotICAgIGlmKGVycm9yc3RhdGUgIT0gSEFMX1NEX0VSUk9SX05PTkUpCi0gICAgewotICAgICAgLyogQ2xlYXIgYWxsIHRoZSBzdGF0aWMgZmxhZ3MgKi8KLSAgICAgIF9fSEFMX1NEX0NMRUFSX0ZMQUcoaHNkLCBTRE1NQ19TVEFUSUNfRkxBR1MpOwotICAgICAgaHNkLT5FcnJvckNvZGUgfD0gZXJyb3JzdGF0ZTsKLSAgICAgIGhzZC0+U3RhdGUgPSBIQUxfU0RfU1RBVEVfUkVBRFk7Ci0gICAgICByZXR1cm4gSEFMX0VSUk9SOwotICAgIH0KLQogICAgIC8qIFdyaXRlIEJsb2NrcyBpbiBQb2xsaW5nIG1vZGUgKi8KICAgICBpZihOdW1iZXJPZkJsb2NrcyA+IDFVKQogICAgIHsKQEAgLTEyMTUsNiArMTE4MiwxMCBAQAogICAgIC8qIFNldCB0aGUgRE1BIEFib3J0IGNhbGxiYWNrICovCiAgICAgaHNkLT5oZG1hcngtPlhmZXJBYm9ydENhbGxiYWNrID0gTlVMTDsKIAorICAgIC8qIEZvcmNlIERNQSBEaXJlY3Rpb24gKi8KKyAgICBoc2QtPmhkbWFyeC0+SW5pdC5EaXJlY3Rpb24gPSBETUFfUEVSSVBIX1RPX01FTU9SWTsKKyAgICBNT0RJRllfUkVHKGhzZC0+aGRtYXJ4LT5JbnN0YW5jZS0+Q1IsIERNQV9TeENSX0RJUiwgaHNkLT5oZG1hcngtPkluaXQuRGlyZWN0aW9uKTsKKwogICAgIC8qIEVuYWJsZSB0aGUgRE1BIENoYW5uZWwgKi8KICAgICBpZihIQUxfRE1BX1N0YXJ0X0lUKGhzZC0+aGRtYXJ4LCAodWludDMyX3QpJmhzZC0+SW5zdGFuY2UtPkZJRk8sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KShCTE9DS1NJWkUgKiBOdW1iZXJPZkJsb2NrcykvNFUpICE9IEhBTF9PSykKICAgICB7CkBAIC0xMjM0LDE3ICsxMjA1LDYgQEAKICAgICAgICAgYWRkICo9IDUxMlU7CiAgICAgICB9CiAKLSAgICAgIC8qIFNldCBCbG9jayBTaXplIGZvciBDYXJkICovCi0gICAgICBlcnJvcnN0YXRlID0gU0RNTUNfQ21kQmxvY2tMZW5ndGgoaHNkLT5JbnN0YW5jZSwgQkxPQ0tTSVpFKTsKLSAgICAgIGlmKGVycm9yc3RhdGUgIT0gSEFMX1NEX0VSUk9SX05PTkUpCi0gICAgICB7Ci0gICAgICAgIC8qIENsZWFyIGFsbCB0aGUgc3RhdGljIGZsYWdzICovCi0gICAgICAgIF9fSEFMX1NEX0NMRUFSX0ZMQUcoaHNkLCBTRE1NQ19TVEFUSUNfRkxBR1MpOwotICAgICAgICBoc2QtPkVycm9yQ29kZSB8PSBlcnJvcnN0YXRlOwotICAgICAgICBoc2QtPlN0YXRlID0gSEFMX1NEX1NUQVRFX1JFQURZOwotICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwotICAgICAgfQotCiAgICAgICAvKiBDb25maWd1cmUgdGhlIFNEIERQU00gKERhdGEgUGF0aCBTdGF0ZSBNYWNoaW5lKSAqLwogICAgICAgY29uZmlnLkRhdGFUaW1lT3V0ICAgPSBTRE1NQ19EQVRBVElNRU9VVDsKICAgICAgIGNvbmZpZy5EYXRhTGVuZ3RoICAgID0gQkxPQ0tTSVpFICogTnVtYmVyT2ZCbG9ja3M7CkBAIC0xMzQ1LDE3ICsxMzA1LDYgQEAKICAgICAgIGFkZCAqPSA1MTJVOwogICAgIH0KIAotICAgIC8qIFNldCBCbG9jayBTaXplIGZvciBDYXJkICovCi0gICAgZXJyb3JzdGF0ZSA9IFNETU1DX0NtZEJsb2NrTGVuZ3RoKGhzZC0+SW5zdGFuY2UsIEJMT0NLU0laRSk7Ci0gICAgaWYoZXJyb3JzdGF0ZSAhPSBIQUxfU0RfRVJST1JfTk9ORSkKLSAgICB7Ci0gICAgICAvKiBDbGVhciBhbGwgdGhlIHN0YXRpYyBmbGFncyAqLwotICAgICAgX19IQUxfU0RfQ0xFQVJfRkxBRyhoc2QsIFNETU1DX1NUQVRJQ19GTEFHUyk7Ci0gICAgICBoc2QtPkVycm9yQ29kZSB8PSBlcnJvcnN0YXRlOwotICAgICAgaHNkLT5TdGF0ZSA9IEhBTF9TRF9TVEFURV9SRUFEWTsKLSAgICAgIHJldHVybiBIQUxfRVJST1I7Ci0gICAgfQotCiAgICAgLyogV3JpdGUgQmxvY2tzIGluIFBvbGxpbmcgbW9kZSAqLwogICAgIGlmKE51bWJlck9mQmxvY2tzID4gMVUpCiAgICAgewpAQCAtMTM4NCw2ICsxMzMzLDEwIEBACiAgICAgLyogRW5hYmxlIFNETU1DIERNQSB0cmFuc2ZlciAqLwogICAgIF9fSEFMX1NEX0RNQV9FTkFCTEUoaHNkKTsKIAorICAgIC8qIEZvcmNlIERNQSBEaXJlY3Rpb24gKi8KKyAgICBoc2QtPmhkbWF0eC0+SW5pdC5EaXJlY3Rpb24gPSBETUFfTUVNT1JZX1RPX1BFUklQSDsKKyAgICBNT0RJRllfUkVHKGhzZC0+aGRtYXR4LT5JbnN0YW5jZS0+Q1IsIERNQV9TeENSX0RJUiwgaHNkLT5oZG1hdHgtPkluaXQuRGlyZWN0aW9uKTsKKwogICAgIC8qIEVuYWJsZSB0aGUgRE1BIENoYW5uZWwgKi8KICAgICBpZihIQUxfRE1BX1N0YXJ0X0lUKGhzZC0+aGRtYXR4LCAodWludDMyX3QpcERhdGEsICh1aW50MzJfdCkmaHNkLT5JbnN0YW5jZS0+RklGTywgKHVpbnQzMl90KShCTE9DS1NJWkUgKiBOdW1iZXJPZkJsb2NrcykvNFUpICE9IEhBTF9PSykKICAgICB7CkBAIC0yMTQ0LDYgKzIwOTcsNyBAQAogewogICB1aW50MzJfdCBzZF9zdGF0dXNbMTZdOwogICB1aW50MzJfdCBlcnJvcnN0YXRlOworICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAKICAgZXJyb3JzdGF0ZSA9IFNEX1NlbmRTRFN0YXR1cyhoc2QsIHNkX3N0YXR1cyk7CiAgIGlmKGVycm9yc3RhdGUgIT0gSEFMX1NEX0VSUk9SX05PTkUpCkBAIC0yMTUyLDcgKzIxMDYsNyBAQAogICAgIF9fSEFMX1NEX0NMRUFSX0ZMQUcoaHNkLCBTRE1NQ19TVEFUSUNfRkxBR1MpOwogICAgIGhzZC0+RXJyb3JDb2RlIHw9IGVycm9yc3RhdGU7CiAgICAgaHNkLT5TdGF0ZSA9IEhBTF9TRF9TVEFURV9SRUFEWTsKLSAgICByZXR1cm4gSEFMX0VSUk9SOworICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgfQogICBlbHNlCiAgIHsKQEAgLTIxNzgsNyArMjEzMiwxOCBAQAogICAgIHBTdGF0dXMtPkVyYXNlT2Zmc2V0ID0gKHVpbnQ4X3QpKChzZF9zdGF0dXNbM10gJiAweDAzMDBVKSA+PiA4VSk7CiAgIH0KIAotICByZXR1cm4gSEFMX09LOworICAvKiBTZXQgQmxvY2sgU2l6ZSBmb3IgQ2FyZCAqLworICBlcnJvcnN0YXRlID0gU0RNTUNfQ21kQmxvY2tMZW5ndGgoaHNkLT5JbnN0YW5jZSwgQkxPQ0tTSVpFKTsKKyAgaWYoZXJyb3JzdGF0ZSAhPSBIQUxfU0RfRVJST1JfTk9ORSkKKyAgeworICAgIC8qIENsZWFyIGFsbCB0aGUgc3RhdGljIGZsYWdzICovCisgICAgX19IQUxfU0RfQ0xFQVJfRkxBRyhoc2QsIFNETU1DX1NUQVRJQ19GTEFHUyk7CisgICAgaHNkLT5FcnJvckNvZGUgPSBlcnJvcnN0YXRlOworICAgIGhzZC0+U3RhdGUgPSBIQUxfU0RfU1RBVEVfUkVBRFk7CisgICAgc3RhdHVzID0gSEFMX0VSUk9SOworICB9CisKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC0yMjE3LDYgKzIxODIsNyBAQAogewogICBTRE1NQ19Jbml0VHlwZURlZiBJbml0OwogICB1aW50MzJfdCBlcnJvcnN0YXRlOworICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1NETU1DX0JVU19XSURFKFdpZGVNb2RlKSk7CkBAIC0yMjU5LDcgKzIyMjUsNyBAQAogICAgIC8qIENsZWFyIGFsbCB0aGUgc3RhdGljIGZsYWdzICovCiAgICAgX19IQUxfU0RfQ0xFQVJfRkxBRyhoc2QsIFNETU1DX1NUQVRJQ19GTEFHUyk7CiAgICAgaHNkLT5TdGF0ZSA9IEhBTF9TRF9TVEFURV9SRUFEWTsKLSAgICByZXR1cm4gSEFMX0VSUk9SOworICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgfQogICBlbHNlCiAgIHsKQEAgLTIyNzMsMTAgKzIyMzksMjAgQEAKICAgICAodm9pZClTRE1NQ19Jbml0KGhzZC0+SW5zdGFuY2UsIEluaXQpOwogICB9CiAKKyAgLyogU2V0IEJsb2NrIFNpemUgZm9yIENhcmQgKi8KKyAgZXJyb3JzdGF0ZSA9IFNETU1DX0NtZEJsb2NrTGVuZ3RoKGhzZC0+SW5zdGFuY2UsIEJMT0NLU0laRSk7CisgIGlmKGVycm9yc3RhdGUgIT0gSEFMX1NEX0VSUk9SX05PTkUpCisgIHsKKyAgICAvKiBDbGVhciBhbGwgdGhlIHN0YXRpYyBmbGFncyAqLworICAgIF9fSEFMX1NEX0NMRUFSX0ZMQUcoaHNkLCBTRE1NQ19TVEFUSUNfRkxBR1MpOworICAgIGhzZC0+RXJyb3JDb2RlIHw9IGVycm9yc3RhdGU7CisgICAgc3RhdHVzID0gSEFMX0VSUk9SOworICB9CisKICAgLyogQ2hhbmdlIFN0YXRlICovCiAgIGhzZC0+U3RhdGUgPSBIQUxfU0RfU1RBVEVfUkVBRFk7CiAKLSAgcmV0dXJuIEhBTF9PSzsKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCkBAIC0zMDk3LDEzICszMDczLDE3IEBACiAgICAgcmV0dXJuIGVycm9yc3RhdGU7CiAgIH0KIAotICB3aGlsZSghX19IQUxfU0RfR0VUX0ZMQUcoaHNkLCBTRE1NQ19GTEFHX1JYT1ZFUlIgfCBTRE1NQ19GTEFHX0RDUkNGQUlMIHwgU0RNTUNfRkxBR19EVElNRU9VVCB8IFNETU1DX0ZMQUdfREJDS0VORCkpCisgIHdoaWxlKCFfX0hBTF9TRF9HRVRfRkxBRyhoc2QsIFNETU1DX0ZMQUdfUlhPVkVSUiB8IFNETU1DX0ZMQUdfRENSQ0ZBSUwgfCBTRE1NQ19GTEFHX0RUSU1FT1VUKSkKICAgewogICAgIGlmKF9fSEFMX1NEX0dFVF9GTEFHKGhzZCwgU0RNTUNfRkxBR19SWERBVkwpKQogICAgIHsKICAgICAgICoodGVtcHNjciArIGluZGV4KSA9IFNETU1DX1JlYWRGSUZPKGhzZC0+SW5zdGFuY2UpOwogICAgICAgaW5kZXgrKzsKICAgICB9CisgICAgZWxzZSBpZighX19IQUxfU0RfR0VUX0ZMQUcoaHNkLCBTRE1NQ19GTEFHX1JYQUNUKSkKKyAgICB7CisgICAgICBicmVhazsKKyAgICB9CiAKICAgICBpZigoSEFMX0dldFRpY2soKSAtIHRpY2tzdGFydCkgPj0gIFNETU1DX0RBVEFUSU1FT1VUKQogICAgIHsKZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3NtYXJ0Y2FyZC5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfc21hcnRjYXJkLmMKaW5kZXggYzk2NGFkMC4uNzA0YzIzNiAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfc21hcnRjYXJkLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfc21hcnRjYXJkLmMKQEAgLTM1LDcgKzM1LDggQEAKICAgICAgICAgICAgICAoKysrKSBDb25maWd1cmUgdGhlIGRlY2xhcmVkIERNQSBoYW5kbGUgc3RydWN0dXJlIHdpdGggdGhlIHJlcXVpcmVkIFR4L1J4IHBhcmFtZXRlcnMuCiAgICAgICAgICAgICAgKCsrKykgQ29uZmlndXJlIHRoZSBETUEgVHgvUnggY2hhbm5lbC4KICAgICAgICAgICAgICAoKysrKSBBc3NvY2lhdGUgdGhlIGluaXRpYWxpemVkIERNQSBoYW5kbGUgdG8gdGhlIFNNQVJUQ0FSRCBETUEgVHgvUnggaGFuZGxlLgotICAgICAgICAgICAgICgrKyspIENvbmZpZ3VyZSB0aGUgcHJpb3JpdHkgYW5kIGVuYWJsZSB0aGUgTlZJQyBmb3IgdGhlIHRyYW5zZmVyIGNvbXBsZXRlIGludGVycnVwdCBvbiB0aGUgRE1BIFR4L1J4IGNoYW5uZWwuCisgICAgICAgICAgICAgKCsrKykgQ29uZmlndXJlIHRoZSBwcmlvcml0eSBhbmQgZW5hYmxlIHRoZSBOVklDIGZvciB0aGUgdHJhbnNmZXIgY29tcGxldGUKKyAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHQgb24gdGhlIERNQSBUeC9SeCBjaGFubmVsLgogCiAgICAgKCMpIFByb2dyYW0gdGhlIEJhdWQgUmF0ZSwgUGFyaXR5LCBNb2RlKFJlY2VpdmVyL1RyYW5zbWl0dGVyKSwgY2xvY2sgZW5hYmxpbmcvZGlzYWJsaW5nIGFuZCBhY2NvcmRpbmdseSwKICAgICAgICAgdGhlIGNsb2NrIHBhcmFtZXRlcnMgKHBhcml0eSwgcGhhc2UsIGxhc3QgYml0KSwgcHJlc2NhbGVyIHZhbHVlLCBndWFyZCB0aW1lIGFuZCBOQUNLIG9uIHRyYW5zbWlzc2lvbgpAQCAtMTA3LDggKzEwOCw4IEBACiAgICAgYWxsb3dzIHRoZSB1c2VyIHRvIGNvbmZpZ3VyZSBkeW5hbWljYWxseSB0aGUgZHJpdmVyIGNhbGxiYWNrcy4KIAogICAgIFsuLl0KLSAgICBVc2UgRnVuY3Rpb24gQHJlZiBIQUxfU01BUlRDQVJEX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2suCi0gICAgRnVuY3Rpb24gQHJlZiBIQUxfU01BUlRDQVJEX1JlZ2lzdGVyQ2FsbGJhY2soKSBhbGxvd3MgdG8gcmVnaXN0ZXIgZm9sbG93aW5nIGNhbGxiYWNrczoKKyAgICBVc2UgRnVuY3Rpb24gSEFMX1NNQVJUQ0FSRF9SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVnaXN0ZXIgYSB1c2VyIGNhbGxiYWNrLgorICAgIEZ1bmN0aW9uIEhBTF9TTUFSVENBUkRfUmVnaXN0ZXJDYWxsYmFjaygpIGFsbG93cyB0byByZWdpc3RlciBmb2xsb3dpbmcgY2FsbGJhY2tzOgogICAgICgrKSBUeENwbHRDYWxsYmFjayAgICAgICAgICAgIDogVHggQ29tcGxldGUgQ2FsbGJhY2suCiAgICAgKCspIFJ4Q3BsdENhbGxiYWNrICAgICAgICAgICAgOiBSeCBDb21wbGV0ZSBDYWxsYmFjay4KICAgICAoKykgRXJyb3JDYWxsYmFjayAgICAgICAgICAgICA6IEVycm9yIENhbGxiYWNrLgpAQCAtMTIxLDkgKzEyMiw5IEBACiAgICAgYW5kIGEgcG9pbnRlciB0byB0aGUgdXNlciBjYWxsYmFjayBmdW5jdGlvbi4KIAogICAgIFsuLl0KLSAgICBVc2UgZnVuY3Rpb24gQHJlZiBIQUxfU01BUlRDQVJEX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8gdGhlIGRlZmF1bHQKKyAgICBVc2UgZnVuY3Rpb24gSEFMX1NNQVJUQ0FSRF9VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvIHRoZSBkZWZhdWx0CiAgICAgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb24uCi0gICAgQHJlZiBIQUxfU01BUlRDQVJEX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwKKyAgICBIQUxfU01BUlRDQVJEX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwKICAgICBhbmQgdGhlIENhbGxiYWNrIElELgogICAgIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRvIHJlc2V0IGZvbGxvd2luZyBjYWxsYmFja3M6CiAgICAgKCspIFR4Q3BsdENhbGxiYWNrICAgICAgICAgICAgOiBUeCBDb21wbGV0ZSBDYWxsYmFjay4KQEAgLTEzNiwxMyArMTM3LDEzIEBACiAgICAgKCspIE1zcERlSW5pdENhbGxiYWNrICAgICAgICAgOiBTTUFSVENBUkQgTXNwRGVJbml0LgogCiAgICAgWy4uXQotICAgIEJ5IGRlZmF1bHQsIGFmdGVyIHRoZSBAcmVmIEhBTF9TTUFSVENBUkRfSW5pdCgpIGFuZCB3aGVuIHRoZSBzdGF0ZSBpcyBIQUxfU01BUlRDQVJEX1NUQVRFX1JFU0VUCisgICAgQnkgZGVmYXVsdCwgYWZ0ZXIgdGhlIEhBTF9TTUFSVENBUkRfSW5pdCgpIGFuZCB3aGVuIHRoZSBzdGF0ZSBpcyBIQUxfU01BUlRDQVJEX1NUQVRFX1JFU0VUCiAgICAgYWxsIGNhbGxiYWNrcyBhcmUgc2V0IHRvIHRoZSBjb3JyZXNwb25kaW5nIHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9uczoKLSAgICBleGFtcGxlcyBAcmVmIEhBTF9TTUFSVENBUkRfVHhDcGx0Q2FsbGJhY2soKSwgQHJlZiBIQUxfU01BUlRDQVJEX1J4Q3BsdENhbGxiYWNrKCkuCisgICAgZXhhbXBsZXMgSEFMX1NNQVJUQ0FSRF9UeENwbHRDYWxsYmFjaygpLCBIQUxfU01BUlRDQVJEX1J4Q3BsdENhbGxiYWNrKCkuCiAgICAgRXhjZXB0aW9uIGRvbmUgZm9yIE1zcEluaXQgYW5kIE1zcERlSW5pdCBmdW5jdGlvbnMgdGhhdCBhcmUgcmVzcGVjdGl2ZWx5Ci0gICAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMgaW4gdGhlIEByZWYgSEFMX1NNQVJUQ0FSRF9Jbml0KCkKLSAgICBhbmQgQHJlZiBIQUxfU01BUlRDQVJEX0RlSW5pdCgpIG9ubHkgd2hlbiB0aGVzZSBjYWxsYmFja3MgYXJlIG51bGwgKG5vdCByZWdpc3RlcmVkIGJlZm9yZWhhbmQpLgotICAgIElmIG5vdCwgTXNwSW5pdCBvciBNc3BEZUluaXQgYXJlIG5vdCBudWxsLCB0aGUgQHJlZiBIQUxfU01BUlRDQVJEX0luaXQoKSBhbmQgQHJlZiBIQUxfU01BUlRDQVJEX0RlSW5pdCgpCisgICAgcmVzZXQgdG8gdGhlIGxlZ2FjeSB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbnMgaW4gdGhlIEhBTF9TTUFSVENBUkRfSW5pdCgpCisgICAgYW5kIEhBTF9TTUFSVENBUkRfRGVJbml0KCkgb25seSB3aGVuIHRoZXNlIGNhbGxiYWNrcyBhcmUgbnVsbCAobm90IHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCisgICAgSWYgbm90LCBNc3BJbml0IG9yIE1zcERlSW5pdCBhcmUgbm90IG51bGwsIHRoZSBIQUxfU01BUlRDQVJEX0luaXQoKSBhbmQgSEFMX1NNQVJUQ0FSRF9EZUluaXQoKQogICAgIGtlZXAgYW5kIHVzZSB0aGUgdXNlciBNc3BJbml0L01zcERlSW5pdCBjYWxsYmFja3MgKHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkuCiAKICAgICBbLi5dCkBAIC0xNTEsOCArMTUyLDggQEAKICAgICBpbiBIQUxfU01BUlRDQVJEX1NUQVRFX1JFQURZIG9yIEhBTF9TTUFSVENBUkRfU1RBVEVfUkVTRVQgc3RhdGUsIHRodXMgcmVnaXN0ZXJlZCAodXNlcikKICAgICBNc3BJbml0L0RlSW5pdCBjYWxsYmFja3MgY2FuIGJlIHVzZWQgZHVyaW5nIHRoZSBJbml0L0RlSW5pdC4KICAgICBJbiB0aGF0IGNhc2UgZmlyc3QgcmVnaXN0ZXIgdGhlIE1zcEluaXQvTXNwRGVJbml0IHVzZXIgY2FsbGJhY2tzCi0gICAgdXNpbmcgQHJlZiBIQUxfU01BUlRDQVJEX1JlZ2lzdGVyQ2FsbGJhY2soKSBiZWZvcmUgY2FsbGluZyBAcmVmIEhBTF9TTUFSVENBUkRfRGVJbml0KCkKLSAgICBvciBAcmVmIEhBTF9TTUFSVENBUkRfSW5pdCgpIGZ1bmN0aW9uLgorICAgIHVzaW5nIEhBTF9TTUFSVENBUkRfUmVnaXN0ZXJDYWxsYmFjaygpIGJlZm9yZSBjYWxsaW5nIEhBTF9TTUFSVENBUkRfRGVJbml0KCkKKyAgICBvciBIQUxfU01BUlRDQVJEX0luaXQoKSBmdW5jdGlvbi4KIAogICAgIFsuLl0KICAgICBXaGVuIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgVVNFX0hBTF9TTUFSVENBUkRfUkVHSVNURVJfQ0FMTEJBQ0tTIGlzIHNldCB0byAwIG9yCkBAIC0xOTQsMjEgKzE5NSwyMyBAQAogLyoqIEBkZWZncm91cCBTTUFSVENBUkRfUHJpdmF0ZV9Db25zdGFudHMgU01BUlRDQVJEIFByaXZhdGUgQ29uc3RhbnRzCiAgICogQHsKICAgKi8KLSNkZWZpbmUgU01BUlRDQVJEX1RFQUNLX1JFQUNLX1RJTUVPVVQgICAgICAgICAgICAgICAxMDAwVSAgICAgIC8qITwgU01BUlRDQVJEIFRYIG9yIFJYIGVuYWJsZSBhY2tub3dsZWRnZSB0aW1lLW91dCB2YWx1ZSAgKi8KKyNkZWZpbmUgU01BUlRDQVJEX1RFQUNLX1JFQUNLX1RJTUVPVVQgIDEwMDBVICAgICAgIC8qITwgU01BUlRDQVJEIFRYIG9yIFJYIGVuYWJsZSBhY2tub3dsZWRnZSB0aW1lLW91dCB2YWx1ZSAqLwogCi0jZGVmaW5lIFVTQVJUX0NSMV9GSUVMRFMgICAgICAoKHVpbnQzMl90KShVU0FSVF9DUjFfTSB8IFVTQVJUX0NSMV9QQ0UgfCBVU0FSVF9DUjFfUFMgICB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0NSMV9URSB8IFVTQVJUX0NSMV9SRSB8IFVTQVJUX0NSMV9PVkVSOCkpICAgICAgICAgICAgIC8qITwgVVNBUlQgQ1IxIGZpZWxkcyBvZiBwYXJhbWV0ZXJzIHNldCBieSBTTUFSVENBUkRfU2V0Q29uZmlnIEFQSSAqLworI2RlZmluZSBVU0FSVF9DUjFfRklFTERTICAoKHVpbnQzMl90KShVU0FSVF9DUjFfTSB8IFVTQVJUX0NSMV9QQ0UgfCBVU0FSVF9DUjFfUFMgfCBVU0FSVF9DUjFfVEUgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfQ1IxX1JFIHwgVVNBUlRfQ1IxX09WRVI4KSkgLyohPCBVU0FSVCBDUjEgZmllbGRzIG9mIHBhcmFtZXRlcnMgc2V0IGJ5IFNNQVJUQ0FSRF9TZXRDb25maWcgQVBJICovCiAKLSNkZWZpbmUgVVNBUlRfQ1IyX0NMS19GSUVMRFMgICgodWludDMyX3QpKFVTQVJUX0NSMl9DTEtFTiB8IFVTQVJUX0NSMl9DUE9MIHwgVVNBUlRfQ1IyX0NQSEEgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9DUjJfTEJDTCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiE8IFNNQVJUQ0FSRCBjbG9jay1yZWxhdGVkIFVTQVJUIENSMiBmaWVsZHMgb2YgcGFyYW1ldGVycyAqLworI2RlZmluZSBVU0FSVF9DUjJfQ0xLX0ZJRUxEUyAgKCh1aW50MzJfdCkoVVNBUlRfQ1IyX0NMS0VOIHwgVVNBUlRfQ1IyX0NQT0wgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9DUjJfQ1BIQSB8IFVTQVJUX0NSMl9MQkNMKSkgLyohPCBTTUFSVENBUkQgY2xvY2stcmVsYXRlZCBVU0FSVCBDUjIgZmllbGRzIG9mIHBhcmFtZXRlcnMgKi8KIAotI2RlZmluZSBVU0FSVF9DUjJfRklFTERTICAgICAgKCh1aW50MzJfdCkoVVNBUlRfQ1IyX1JUT0VOIHwgVVNBUlRfQ1IyX0NMS19GSUVMRFMgfCBVU0FSVF9DUjJfU1RPUCkpICAgLyohPCBVU0FSVCBDUjIgZmllbGRzIG9mIHBhcmFtZXRlcnMgc2V0IGJ5IFNNQVJUQ0FSRF9TZXRDb25maWcgQVBJICovCisjZGVmaW5lIFVTQVJUX0NSMl9GSUVMRFMgICgodWludDMyX3QpKFVTQVJUX0NSMl9SVE9FTiB8IFVTQVJUX0NSMl9DTEtfRklFTERTIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9DUjJfU1RPUCkpIC8qITwgVVNBUlQgQ1IyIGZpZWxkcyBvZiBwYXJhbWV0ZXJzIHNldCBieSBTTUFSVENBUkRfU2V0Q29uZmlnIEFQSSAqLwogCi0jZGVmaW5lIFVTQVJUX0NSM19GSUVMRFMgICAgICAoKHVpbnQzMl90KShVU0FSVF9DUjNfT05FQklUIHwgVVNBUlRfQ1IzX05BQ0sgfCBVU0FSVF9DUjNfU0NBUkNOVCkpICAgICAvKiE8IFVTQVJUIENSMyBmaWVsZHMgb2YgcGFyYW1ldGVycyBzZXQgYnkgU01BUlRDQVJEX1NldENvbmZpZyBBUEkgKi8KKyNkZWZpbmUgVVNBUlRfQ1IzX0ZJRUxEUyAgKCh1aW50MzJfdCkoVVNBUlRfQ1IzX09ORUJJVCB8IFVTQVJUX0NSM19OQUNLIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0FSVF9DUjNfU0NBUkNOVCkpIC8qITwgVVNBUlQgQ1IzIGZpZWxkcyBvZiBwYXJhbWV0ZXJzIHNldCBieSBTTUFSVENBUkRfU2V0Q29uZmlnIEFQSSAqLwogCi0jZGVmaW5lIFVTQVJUX0JSUl9NSU4gICAgMHgxMFUgICAgICAgIC8qITwgVVNBUlQgQlJSIG1pbmltdW0gYXV0aG9yaXplZCB2YWx1ZSAqLworI2RlZmluZSBVU0FSVF9CUlJfTUlOICAweDEwVSAgICAgICAgLyohPCBVU0FSVCBCUlIgbWluaW11bSBhdXRob3JpemVkIHZhbHVlICovCiAKLSNkZWZpbmUgVVNBUlRfQlJSX01BWCAgICAweDAwMDBGRkZGVSAgLyohPCBVU0FSVCBCUlIgbWF4aW11bSBhdXRob3JpemVkIHZhbHVlICovCisjZGVmaW5lIFVTQVJUX0JSUl9NQVggIDB4MDAwMEZGRkZVICAvKiE8IFVTQVJUIEJSUiBtYXhpbXVtIGF1dGhvcml6ZWQgdmFsdWUgKi8KIC8qKgogICAqIEB9CiAgICovCkBAIC00NzMsNyArNDc2LDggQEAKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUFSVENBUkRfUmVnaXN0ZXJDYWxsYmFjayhTTUFSVENBUkRfSGFuZGxlVHlwZURlZiAqaHNtYXJ0Y2FyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfU01BUlRDQVJEX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsIHBTTUFSVENBUkRfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfU01BUlRDQVJEX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFNNQVJUQ0FSRF9DYWxsYmFja1R5cGVEZWYgcENhbGxiYWNrKQogewogICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAKQEAgLTU5OSwzNiArNjAzLDM4IEBACiAgICAgc3dpdGNoIChDYWxsYmFja0lEKQogICAgIHsKICAgICAgIGNhc2UgSEFMX1NNQVJUQ0FSRF9UWF9DT01QTEVURV9DQl9JRCA6Ci0gICAgICAgIGhzbWFydGNhcmQtPlR4Q3BsdENhbGxiYWNrID0gSEFMX1NNQVJUQ0FSRF9UeENwbHRDYWxsYmFjazsgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIFR4Q3BsdENhbGxiYWNrICAgICAgICAgICAgKi8KKyAgICAgICAgaHNtYXJ0Y2FyZC0+VHhDcGx0Q2FsbGJhY2sgPSBIQUxfU01BUlRDQVJEX1R4Q3BsdENhbGxiYWNrOyAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgVHhDcGx0Q2FsbGJhY2sgKi8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1NNQVJUQ0FSRF9SWF9DT01QTEVURV9DQl9JRCA6Ci0gICAgICAgIGhzbWFydGNhcmQtPlJ4Q3BsdENhbGxiYWNrID0gSEFMX1NNQVJUQ0FSRF9SeENwbHRDYWxsYmFjazsgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIFJ4Q3BsdENhbGxiYWNrICAgICAgICAgICAgKi8KKyAgICAgICAgaHNtYXJ0Y2FyZC0+UnhDcGx0Q2FsbGJhY2sgPSBIQUxfU01BUlRDQVJEX1J4Q3BsdENhbGxiYWNrOyAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgUnhDcGx0Q2FsbGJhY2sgKi8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1NNQVJUQ0FSRF9FUlJPUl9DQl9JRCA6Ci0gICAgICAgIGhzbWFydGNhcmQtPkVycm9yQ2FsbGJhY2sgPSBIQUxfU01BUlRDQVJEX0Vycm9yQ2FsbGJhY2s7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEVycm9yQ2FsbGJhY2sgICAgICAgICAgICAgKi8KKyAgICAgICAgaHNtYXJ0Y2FyZC0+RXJyb3JDYWxsYmFjayA9IEhBTF9TTUFSVENBUkRfRXJyb3JDYWxsYmFjazsgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgRXJyb3JDYWxsYmFjayAgKi8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1NNQVJUQ0FSRF9BQk9SVF9DT01QTEVURV9DQl9JRCA6Ci0gICAgICAgIGhzbWFydGNhcmQtPkFib3J0Q3BsdENhbGxiYWNrID0gSEFMX1NNQVJUQ0FSRF9BYm9ydENwbHRDYWxsYmFjazsgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEFib3J0Q3BsdENhbGxiYWNrICAgICAgICAgKi8KKyAgICAgICAgaHNtYXJ0Y2FyZC0+QWJvcnRDcGx0Q2FsbGJhY2sgPSBIQUxfU01BUlRDQVJEX0Fib3J0Q3BsdENhbGxiYWNrOyAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgQWJvcnRDcGx0Q2FsbGJhY2sgKi8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1NNQVJUQ0FSRF9BQk9SVF9UUkFOU01JVF9DT01QTEVURV9DQl9JRCA6Ci0gICAgICAgIGhzbWFydGNhcmQtPkFib3J0VHJhbnNtaXRDcGx0Q2FsbGJhY2sgPSBIQUxfU01BUlRDQVJEX0Fib3J0VHJhbnNtaXRDcGx0Q2FsbGJhY2s7IC8qIExlZ2FjeSB3ZWFrIEFib3J0VHJhbnNtaXRDcGx0Q2FsbGJhY2sgKi8KKyAgICAgICAgaHNtYXJ0Y2FyZC0+QWJvcnRUcmFuc21pdENwbHRDYWxsYmFjayA9IEhBTF9TTUFSVENBUkRfQWJvcnRUcmFuc21pdENwbHRDYWxsYmFjazsgLyogTGVnYWN5IHdlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWJvcnRUcmFuc21pdENwbHRDYWxsYmFjayovCiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9TTUFSVENBUkRfQUJPUlRfUkVDRUlWRV9DT01QTEVURV9DQl9JRCA6Ci0gICAgICAgIGhzbWFydGNhcmQtPkFib3J0UmVjZWl2ZUNwbHRDYWxsYmFjayA9IEhBTF9TTUFSVENBUkRfQWJvcnRSZWNlaXZlQ3BsdENhbGxiYWNrOyAgIC8qIExlZ2FjeSB3ZWFrIEFib3J0UmVjZWl2ZUNwbHRDYWxsYmFjayAgKi8KKyAgICAgICAgaHNtYXJ0Y2FyZC0+QWJvcnRSZWNlaXZlQ3BsdENhbGxiYWNrID0gSEFMX1NNQVJUQ0FSRF9BYm9ydFJlY2VpdmVDcGx0Q2FsbGJhY2s7ICAvKiBMZWdhY3kgd2VhaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFib3J0UmVjZWl2ZUNwbHRDYWxsYmFjayAqLwogICAgICAgICBicmVhazsKIAogCiAgICAgICBjYXNlIEhBTF9TTUFSVENBUkRfTVNQSU5JVF9DQl9JRCA6Ci0gICAgICAgIGhzbWFydGNhcmQtPk1zcEluaXRDYWxsYmFjayA9IEhBTF9TTUFSVENBUkRfTXNwSW5pdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE1zcEluaXRDYWxsYmFjayAgICAgICAgICAgKi8KKyAgICAgICAgaHNtYXJ0Y2FyZC0+TXNwSW5pdENhbGxiYWNrID0gSEFMX1NNQVJUQ0FSRF9Nc3BJbml0OyAgICAgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgTXNwSW5pdENhbGxiYWNrICAqLwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfU01BUlRDQVJEX01TUERFSU5JVF9DQl9JRCA6Ci0gICAgICAgIGhzbWFydGNhcmQtPk1zcERlSW5pdENhbGxiYWNrID0gSEFMX1NNQVJUQ0FSRF9Nc3BEZUluaXQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE1zcERlSW5pdENhbGxiYWNrICAgICAgICAgKi8KKyAgICAgICAgaHNtYXJ0Y2FyZC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfU01BUlRDQVJEX01zcERlSW5pdDsgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgTXNwRGVJbml0Q2FsbGJhY2sgKi8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGRlZmF1bHQgOgpAQCAtNjk5LDYyICs3MDUsNjcgQEAKICAgICAoKykgMS41IHN0b3AgYml0cyB3aGVuIHRyYW5zbWl0dGluZyBhbmQgcmVjZWl2aW5nOiB3aGVyZSBTVE9QPTExIGluIHRoZSBVU0FSVF9DUjIgcmVnaXN0ZXIuCiAKICAgWy4uXQotICAgICgrKSBUaGVyZSBhcmUgdHdvIG1vZGVzIG9mIHRyYW5zZmVyOgotICAgICAgICAoKyspIEJsb2NraW5nIG1vZGU6IFRoZSBjb21tdW5pY2F0aW9uIGlzIHBlcmZvcm1lZCBpbiBwb2xsaW5nIG1vZGUuCisgICAgKCMpIFRoZXJlIGFyZSB0d28gbW9kZXMgb2YgdHJhbnNmZXI6CisgICAgICAgICgjIykgQmxvY2tpbmcgbW9kZTogVGhlIGNvbW11bmljYXRpb24gaXMgcGVyZm9ybWVkIGluIHBvbGxpbmcgbW9kZS4KICAgICAgICAgICAgICBUaGUgSEFMIHN0YXR1cyBvZiBhbGwgZGF0YSBwcm9jZXNzaW5nIGlzIHJldHVybmVkIGJ5IHRoZSBzYW1lIGZ1bmN0aW9uCiAgICAgICAgICAgICAgYWZ0ZXIgZmluaXNoaW5nIHRyYW5zZmVyLgotICAgICAgICAoKyspIE5vbi1CbG9ja2luZyBtb2RlOiBUaGUgY29tbXVuaWNhdGlvbiBpcyBwZXJmb3JtZWQgdXNpbmcgSW50ZXJydXB0cworICAgICAgICAoIyMpIE5vbi1CbG9ja2luZyBtb2RlOiBUaGUgY29tbXVuaWNhdGlvbiBpcyBwZXJmb3JtZWQgdXNpbmcgSW50ZXJydXB0cwogICAgICAgICAgICAgIG9yIERNQSwgdGhlIHJlbGV2YW50IEFQSSdzIHJldHVybiB0aGUgSEFMIHN0YXR1cy4KICAgICAgICAgICAgICBUaGUgZW5kIG9mIHRoZSBkYXRhIHByb2Nlc3Npbmcgd2lsbCBiZSBpbmRpY2F0ZWQgdGhyb3VnaCB0aGUKICAgICAgICAgICAgICBkZWRpY2F0ZWQgU01BUlRDQVJEIElSUSB3aGVuIHVzaW5nIEludGVycnVwdCBtb2RlIG9yIHRoZSBETUEgSVJRIHdoZW4KICAgICAgICAgICAgICB1c2luZyBETUEgbW9kZS4KLSAgICAgICAgKCsrKSBUaGUgSEFMX1NNQVJUQ0FSRF9UeENwbHRDYWxsYmFjaygpLCBIQUxfU01BUlRDQVJEX1J4Q3BsdENhbGxiYWNrKCkgdXNlciBjYWxsYmFja3MKKyAgICAgICAgKCMjKSBUaGUgSEFMX1NNQVJUQ0FSRF9UeENwbHRDYWxsYmFjaygpLCBIQUxfU01BUlRDQVJEX1J4Q3BsdENhbGxiYWNrKCkgdXNlciBjYWxsYmFja3MKICAgICAgICAgICAgICB3aWxsIGJlIGV4ZWN1dGVkIHJlc3BlY3RpdmVseSBhdCB0aGUgZW5kIG9mIHRoZSBUcmFuc21pdCBvciBSZWNlaXZlIHByb2Nlc3MKICAgICAgICAgICAgICBUaGUgSEFMX1NNQVJUQ0FSRF9FcnJvckNhbGxiYWNrKCkgdXNlciBjYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gYSBjb21tdW5pY2F0aW9uCiAgICAgICAgICAgICAgZXJyb3IgaXMgZGV0ZWN0ZWQuCiAKLSAgICAoKykgQmxvY2tpbmcgbW9kZSBBUElzIGFyZSA6Ci0gICAgICAgICgrKykgSEFMX1NNQVJUQ0FSRF9UcmFuc21pdCgpCi0gICAgICAgICgrKykgSEFMX1NNQVJUQ0FSRF9SZWNlaXZlKCkKKyAgICAoIykgQmxvY2tpbmcgbW9kZSBBUElzIGFyZSA6CisgICAgICAgICgjIykgSEFMX1NNQVJUQ0FSRF9UcmFuc21pdCgpCisgICAgICAgICgjIykgSEFMX1NNQVJUQ0FSRF9SZWNlaXZlKCkKIAotICAgICgrKSBOb24gQmxvY2tpbmcgbW9kZSBBUElzIHdpdGggSW50ZXJydXB0IGFyZSA6Ci0gICAgICAgICgrKykgSEFMX1NNQVJUQ0FSRF9UcmFuc21pdF9JVCgpCi0gICAgICAgICgrKykgSEFMX1NNQVJUQ0FSRF9SZWNlaXZlX0lUKCkKLSAgICAgICAgKCsrKSBIQUxfU01BUlRDQVJEX0lSUUhhbmRsZXIoKQorICAgICgjKSBOb24gQmxvY2tpbmcgbW9kZSBBUElzIHdpdGggSW50ZXJydXB0IGFyZSA6CisgICAgICAgICgjIykgSEFMX1NNQVJUQ0FSRF9UcmFuc21pdF9JVCgpCisgICAgICAgICgjIykgSEFMX1NNQVJUQ0FSRF9SZWNlaXZlX0lUKCkKKyAgICAgICAgKCMjKSBIQUxfU01BUlRDQVJEX0lSUUhhbmRsZXIoKQogCi0gICAgKCspIE5vbiBCbG9ja2luZyBtb2RlIGZ1bmN0aW9ucyB3aXRoIERNQSBhcmUgOgotICAgICAgICAoKyspIEhBTF9TTUFSVENBUkRfVHJhbnNtaXRfRE1BKCkKLSAgICAgICAgKCsrKSBIQUxfU01BUlRDQVJEX1JlY2VpdmVfRE1BKCkKKyAgICAoIykgTm9uIEJsb2NraW5nIG1vZGUgZnVuY3Rpb25zIHdpdGggRE1BIGFyZSA6CisgICAgICAgICgjIykgSEFMX1NNQVJUQ0FSRF9UcmFuc21pdF9ETUEoKQorICAgICAgICAoIyMpIEhBTF9TTUFSVENBUkRfUmVjZWl2ZV9ETUEoKQogCi0gICAgKCspIEEgc2V0IG9mIFRyYW5zZmVyIENvbXBsZXRlIENhbGxiYWNrcyBhcmUgcHJvdmlkZWQgaW4gbm9uIEJsb2NraW5nIG1vZGU6Ci0gICAgICAgICgrKykgSEFMX1NNQVJUQ0FSRF9UeENwbHRDYWxsYmFjaygpCi0gICAgICAgICgrKykgSEFMX1NNQVJUQ0FSRF9SeENwbHRDYWxsYmFjaygpCi0gICAgICAgICgrKykgSEFMX1NNQVJUQ0FSRF9FcnJvckNhbGxiYWNrKCkKKyAgICAoIykgQSBzZXQgb2YgVHJhbnNmZXIgQ29tcGxldGUgQ2FsbGJhY2tzIGFyZSBwcm92aWRlZCBpbiBub24gQmxvY2tpbmcgbW9kZToKKyAgICAgICAgKCMjKSBIQUxfU01BUlRDQVJEX1R4Q3BsdENhbGxiYWNrKCkKKyAgICAgICAgKCMjKSBIQUxfU01BUlRDQVJEX1J4Q3BsdENhbGxiYWNrKCkKKyAgICAgICAgKCMjKSBIQUxfU01BUlRDQVJEX0Vycm9yQ2FsbGJhY2soKQogCiAgIFsuLl0KICAgICAoIykgTm9uLUJsb2NraW5nIG1vZGUgdHJhbnNmZXJzIGNvdWxkIGJlIGFib3J0ZWQgdXNpbmcgQWJvcnQgQVBJJ3MgOgotICAgICAgICAoKyspIEhBTF9TTUFSVENBUkRfQWJvcnQoKQotICAgICAgICAoKyspIEhBTF9TTUFSVENBUkRfQWJvcnRUcmFuc21pdCgpCi0gICAgICAgICgrKykgSEFMX1NNQVJUQ0FSRF9BYm9ydFJlY2VpdmUoKQotICAgICAgICAoKyspIEhBTF9TTUFSVENBUkRfQWJvcnRfSVQoKQotICAgICAgICAoKyspIEhBTF9TTUFSVENBUkRfQWJvcnRUcmFuc21pdF9JVCgpCi0gICAgICAgICgrKykgSEFMX1NNQVJUQ0FSRF9BYm9ydFJlY2VpdmVfSVQoKQorICAgICAgICAoIyMpIEhBTF9TTUFSVENBUkRfQWJvcnQoKQorICAgICAgICAoIyMpIEhBTF9TTUFSVENBUkRfQWJvcnRUcmFuc21pdCgpCisgICAgICAgICgjIykgSEFMX1NNQVJUQ0FSRF9BYm9ydFJlY2VpdmUoKQorICAgICAgICAoIyMpIEhBTF9TTUFSVENBUkRfQWJvcnRfSVQoKQorICAgICAgICAoIyMpIEhBTF9TTUFSVENBUkRfQWJvcnRUcmFuc21pdF9JVCgpCisgICAgICAgICgjIykgSEFMX1NNQVJUQ0FSRF9BYm9ydFJlY2VpdmVfSVQoKQogCi0gICAgKCMpIEZvciBBYm9ydCBzZXJ2aWNlcyBiYXNlZCBvbiBpbnRlcnJ1cHRzIChIQUxfU01BUlRDQVJEX0Fib3J0eHh4X0lUKSwgYSBzZXQgb2YgQWJvcnQgQ29tcGxldGUgQ2FsbGJhY2tzIGFyZSBwcm92aWRlZDoKLSAgICAgICAgKCsrKSBIQUxfU01BUlRDQVJEX0Fib3J0Q3BsdENhbGxiYWNrKCkKLSAgICAgICAgKCsrKSBIQUxfU01BUlRDQVJEX0Fib3J0VHJhbnNtaXRDcGx0Q2FsbGJhY2soKQotICAgICAgICAoKyspIEhBTF9TTUFSVENBUkRfQWJvcnRSZWNlaXZlQ3BsdENhbGxiYWNrKCkKKyAgICAoIykgRm9yIEFib3J0IHNlcnZpY2VzIGJhc2VkIG9uIGludGVycnVwdHMgKEhBTF9TTUFSVENBUkRfQWJvcnR4eHhfSVQpLAorICAgICAgICBhIHNldCBvZiBBYm9ydCBDb21wbGV0ZSBDYWxsYmFja3MgYXJlIHByb3ZpZGVkOgorICAgICAgICAoIyMpIEhBTF9TTUFSVENBUkRfQWJvcnRDcGx0Q2FsbGJhY2soKQorICAgICAgICAoIyMpIEhBTF9TTUFSVENBUkRfQWJvcnRUcmFuc21pdENwbHRDYWxsYmFjaygpCisgICAgICAgICgjIykgSEFMX1NNQVJUQ0FSRF9BYm9ydFJlY2VpdmVDcGx0Q2FsbGJhY2soKQogCiAgICAgKCMpIEluIE5vbi1CbG9ja2luZyBtb2RlIHRyYW5zZmVycywgcG9zc2libGUgZXJyb3JzIGFyZSBzcGxpdCBpbnRvIDIgY2F0ZWdvcmllcy4KICAgICAgICAgRXJyb3JzIGFyZSBoYW5kbGVkIGFzIGZvbGxvd3MgOgotICAgICAgICgrKykgRXJyb3IgaXMgY29uc2lkZXJlZCBhcyBSZWNvdmVyYWJsZSBhbmQgbm9uIGJsb2NraW5nIDogVHJhbnNmZXIgY291bGQgZ28gdGlsbCBlbmQsIGJ1dCBlcnJvciBzZXZlcml0eSBpcwotICAgICAgICAgICAgdG8gYmUgZXZhbHVhdGVkIGJ5IHVzZXIgOiB0aGlzIGNvbmNlcm5zIEZyYW1lIEVycm9yLCBQYXJpdHkgRXJyb3Igb3IgTm9pc2UgRXJyb3IgaW4gSW50ZXJydXB0IG1vZGUgcmVjZXB0aW9uIC4KLSAgICAgICAgICAgIFJlY2VpdmVkIGNoYXJhY3RlciBpcyB0aGVuIHJldHJpZXZlZCBhbmQgc3RvcmVkIGluIFJ4IGJ1ZmZlciwgRXJyb3IgY29kZSBpcyBzZXQgdG8gYWxsb3cgdXNlciB0byBpZGVudGlmeSBlcnJvciB0eXBlLAotICAgICAgICAgICAgYW5kIEhBTF9TTUFSVENBUkRfRXJyb3JDYWxsYmFjaygpIHVzZXIgY2FsbGJhY2sgaXMgZXhlY3V0ZWQuIFRyYW5zZmVyIGlzIGtlcHQgb25nb2luZyBvbiBTTUFSVENBUkQgc2lkZS4KLSAgICAgICAgICAgIElmIHVzZXIgd2FudHMgdG8gYWJvcnQgaXQsIEFib3J0IHNlcnZpY2VzIHNob3VsZCBiZSBjYWxsZWQgYnkgdXNlci4KLSAgICAgICAoKyspIEVycm9yIGlzIGNvbnNpZGVyZWQgYXMgQmxvY2tpbmcgOiBUcmFuc2ZlciBjb3VsZCBub3QgYmUgY29tcGxldGVkIHByb3Blcmx5IGFuZCBpcyBhYm9ydGVkLgotICAgICAgICAgICAgVGhpcyBjb25jZXJucyBGcmFtZSBFcnJvciBpbiBJbnRlcnJ1cHQgbW9kZSB0cmFubWlzc2lvbiwgT3ZlcnJ1biBFcnJvciBpbiBJbnRlcnJ1cHQgbW9kZSByZWNlcHRpb24gYW5kIGFsbCBlcnJvcnMgaW4gRE1BIG1vZGUuCi0gICAgICAgICAgICBFcnJvciBjb2RlIGlzIHNldCB0byBhbGxvdyB1c2VyIHRvIGlkZW50aWZ5IGVycm9yIHR5cGUsIGFuZCBIQUxfU01BUlRDQVJEX0Vycm9yQ2FsbGJhY2soKSB1c2VyIGNhbGxiYWNrIGlzIGV4ZWN1dGVkLgorICAgICAgICgjIykgRXJyb3IgaXMgY29uc2lkZXJlZCBhcyBSZWNvdmVyYWJsZSBhbmQgbm9uIGJsb2NraW5nIDogVHJhbnNmZXIgY291bGQgZ28gdGlsbCBlbmQsIGJ1dCBlcnJvciBzZXZlcml0eSBpcworICAgICAgICAgICB0byBiZSBldmFsdWF0ZWQgYnkgdXNlciA6IHRoaXMgY29uY2VybnMgRnJhbWUgRXJyb3IsCisgICAgICAgICAgIFBhcml0eSBFcnJvciBvciBOb2lzZSBFcnJvciBpbiBJbnRlcnJ1cHQgbW9kZSByZWNlcHRpb24gLgorICAgICAgICAgICBSZWNlaXZlZCBjaGFyYWN0ZXIgaXMgdGhlbiByZXRyaWV2ZWQgYW5kIHN0b3JlZCBpbiBSeCBidWZmZXIsCisgICAgICAgICAgIEVycm9yIGNvZGUgaXMgc2V0IHRvIGFsbG93IHVzZXIgdG8gaWRlbnRpZnkgZXJyb3IgdHlwZSwKKyAgICAgICAgICAgYW5kIEhBTF9TTUFSVENBUkRfRXJyb3JDYWxsYmFjaygpIHVzZXIgY2FsbGJhY2sgaXMgZXhlY3V0ZWQuIFRyYW5zZmVyIGlzIGtlcHQgb25nb2luZyBvbiBTTUFSVENBUkQgc2lkZS4KKyAgICAgICAgICAgSWYgdXNlciB3YW50cyB0byBhYm9ydCBpdCwgQWJvcnQgc2VydmljZXMgc2hvdWxkIGJlIGNhbGxlZCBieSB1c2VyLgorICAgICAgICgjIykgRXJyb3IgaXMgY29uc2lkZXJlZCBhcyBCbG9ja2luZyA6IFRyYW5zZmVyIGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQgcHJvcGVybHkgYW5kIGlzIGFib3J0ZWQuCisgICAgICAgICAgIFRoaXMgY29uY2VybnMgRnJhbWUgRXJyb3IgaW4gSW50ZXJydXB0IG1vZGUgdHJhbnNtaXNzaW9uLCBPdmVycnVuIEVycm9yIGluIEludGVycnVwdAorICAgICAgICAgICBtb2RlIHJlY2VwdGlvbiBhbmQgYWxsIGVycm9ycyBpbiBETUEgbW9kZS4KKyAgICAgICAgICAgRXJyb3IgY29kZSBpcyBzZXQgdG8gYWxsb3cgdXNlciB0byBpZGVudGlmeSBlcnJvciB0eXBlLAorICAgICAgICAgICBhbmQgSEFMX1NNQVJUQ0FSRF9FcnJvckNhbGxiYWNrKCkgdXNlciBjYWxsYmFjayBpcyBleGVjdXRlZC4KIAogQGVuZHZlcmJhdGltCiAgICogQHsKQEAgLTc5NCwxNCArODA1LDIzIEBACiAgICAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCBmaXJzdCB0byB1cGRhdGUgbW9kZSBmb3IgVFggbWFzdGVyICovCiAgICAgQ0xFQVJfQklUKGhzbWFydGNhcmQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9VRSk7CiAKLSAgICAvKiBEaXNhYmxlIFJ4LCBlbmFibGUgVHggKi8KLSAgICBDTEVBUl9CSVQoaHNtYXJ0Y2FyZC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1JFKTsKLSAgICBTRVRfQklUKGhzbWFydGNhcmQtPkluc3RhbmNlLT5SUVIsICh1aW50MTZfdClTTUFSVENBUkRfUlhEQVRBX0ZMVVNIX1JFUVVFU1QpOworICAgIC8qIEluIGNhc2Ugb2YgVFggb25seSBtb2RlLCBpZiBOQUNLIGlzIGVuYWJsZWQsIHRoZSBVU0FSVCBtdXN0IGJlIGFibGUgdG8gbW9uaXRvcgorICAgICAgIHRoZSBiaWRpcmVjdGlvbmFsIGxpbmUgdG8gZGV0ZWN0IGEgTkFDSyBzaWduYWwgaW4gY2FzZSBvZiBwYXJpdHkgZXJyb3IuCisgICAgICAgVGhlcmVmb3JlLCB0aGUgcmVjZWl2ZXIgYmxvY2sgbXVzdCBiZSBlbmFibGVkIGFzIHdlbGwgKFJFIGJpdCBtdXN0IGJlIHNldCkuICovCisgICAgaWYgKChoc21hcnRjYXJkLT5Jbml0Lk1vZGUgPT0gU01BUlRDQVJEX01PREVfVFgpCisgICAgICAgICYmIChoc21hcnRjYXJkLT5Jbml0Lk5BQ0tFbmFibGUgPT0gU01BUlRDQVJEX05BQ0tfRU5BQkxFKSkKKyAgICB7CisgICAgICBTRVRfQklUKGhzbWFydGNhcmQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9SRSk7CisgICAgfQorICAgIC8qIEVuYWJsZSBUeCAqLwogICAgIFNFVF9CSVQoaHNtYXJ0Y2FyZC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1RFKTsKIAogICAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCAqLwogICAgIFNFVF9CSVQoaHNtYXJ0Y2FyZC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1VFKTsKIAorICAgIC8qIFBlcmZvcm0gYSBUWC9SWCBGSUZPIEZsdXNoICovCisgICAgX19IQUxfU01BUlRDQVJEX0ZMVVNIX0RSUkVHSVNURVIoaHNtYXJ0Y2FyZCk7CisKICAgICBoc21hcnRjYXJkLT5FcnJvckNvZGUgPSBIQUxfU01BUlRDQVJEX0VSUk9SX05PTkU7CiAgICAgaHNtYXJ0Y2FyZC0+VHhYZmVyU2l6ZSA9IFNpemU7CiAgICAgaHNtYXJ0Y2FyZC0+VHhYZmVyQ291bnQgPSBTaXplOwpAQCAtODE2LDIwICs4MzYsMjggQEAKICAgICAgIGhzbWFydGNhcmQtPkluc3RhbmNlLT5URFIgPSAodWludDhfdCkoKnB0bXBkYXRhICYgMHhGRlUpOwogICAgICAgcHRtcGRhdGErKzsKICAgICB9Ci0gICAgaWYgKFNNQVJUQ0FSRF9XYWl0T25GbGFnVW50aWxUaW1lb3V0KGhzbWFydGNhcmQsIFNNQVJUQ0FSRF9UUkFOU01JU1NJT05fQ09NUExFVElPTl9GTEFHKGhzbWFydGNhcmQpLCBSRVNFVCwgdGlja3N0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lb3V0KSAhPSBIQUxfT0spCisgICAgaWYgKFNNQVJUQ0FSRF9XYWl0T25GbGFnVW50aWxUaW1lb3V0KGhzbWFydGNhcmQsIFNNQVJUQ0FSRF9UUkFOU01JU1NJT05fQ09NUExFVElPTl9GTEFHKGhzbWFydGNhcmQpLCBSRVNFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja3N0YXJ0LCBUaW1lb3V0KSAhPSBIQUxfT0spCiAgICAgewogICAgICAgcmV0dXJuIEhBTF9USU1FT1VUOwogICAgIH0KLSAgICAvKiBSZS1lbmFibGUgUnggYXQgZW5kIG9mIHRyYW5zbWlzc2lvbiBpZiBpbml0aWFsIG1vZGUgaXMgUngvVHggKi8KLSAgICBpZiAoaHNtYXJ0Y2FyZC0+SW5pdC5Nb2RlID09IFNNQVJUQ0FSRF9NT0RFX1RYX1JYKQorCisgICAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCBmaXJzdCB0byB1cGRhdGUgbW9kZSAqLworICAgIENMRUFSX0JJVChoc21hcnRjYXJkLT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfVUUpOworICAgIGlmICgoaHNtYXJ0Y2FyZC0+SW5pdC5Nb2RlID09IFNNQVJUQ0FSRF9NT0RFX1RYKQorICAgICAgICAmJiAoaHNtYXJ0Y2FyZC0+SW5pdC5OQUNLRW5hYmxlID09IFNNQVJUQ0FSRF9OQUNLX0VOQUJMRSkpCiAgICAgewotICAgICAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCBmaXJzdCB0byB1cGRhdGUgbW9kZXMgKi8KLSAgICAgIENMRUFSX0JJVChoc21hcnRjYXJkLT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfVUUpOwotICAgICAgU0VUX0JJVChoc21hcnRjYXJkLT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUkUpOwotICAgICAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsICovCi0gICAgICBTRVRfQklUKGhzbWFydGNhcmQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9VRSk7CisgICAgICAvKiBJbiBjYXNlIG9mIFRYIG9ubHkgbW9kZSwgaWYgTkFDSyBpcyBlbmFibGVkLCByZWNlaXZlciBibG9jayBoYXMgYmVlbiBlbmFibGVkCisgICAgICAgICBmb3IgVHJhbnNtaXQgcGhhc2UuIERpc2FibGUgdGhpcyByZWNlaXZlciBibG9jay4gKi8KKyAgICAgIENMRUFSX0JJVChoc21hcnRjYXJkLT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUkUpOwogICAgIH0KKyAgICBpZiAoKGhzbWFydGNhcmQtPkluaXQuTW9kZSA9PSBTTUFSVENBUkRfTU9ERV9UWF9SWCkKKyAgICAgICAgfHwgKGhzbWFydGNhcmQtPkluaXQuTkFDS0VuYWJsZSA9PSBTTUFSVENBUkRfTkFDS19FTkFCTEUpKQorICAgIHsKKyAgICAgIC8qIFBlcmZvcm0gYSBUWCBGSUZPIEZsdXNoIGF0IGVuZCBvZiBUeCBwaGFzZSwgYXMgYWxsIHNlbnQgYnl0ZXMgYXJlIGFwcGVhcmluZyBpbiBSeCBEYXRhIHJlZ2lzdGVyICovCisgICAgICBfX0hBTF9TTUFSVENBUkRfRkxVU0hfRFJSRUdJU1RFUihoc21hcnRjYXJkKTsKKyAgICB9CisgICAgU0VUX0JJVChoc21hcnRjYXJkLT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfVUUpOwogCiAgICAgLyogQXQgZW5kIG9mIFR4IHByb2Nlc3MsIHJlc3RvcmUgaHNtYXJ0Y2FyZC0+Z1N0YXRlIHRvIFJlYWR5ICovCiAgICAgaHNtYXJ0Y2FyZC0+Z1N0YXRlID0gSEFMX1NNQVJUQ0FSRF9TVEFURV9SRUFEWTsKQEAgLTkzOSwxNCArOTY3LDIzIEBACiAgICAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCBmaXJzdCB0byB1cGRhdGUgbW9kZSBmb3IgVFggbWFzdGVyICovCiAgICAgQ0xFQVJfQklUKGhzbWFydGNhcmQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9VRSk7CiAKLSAgICAvKiBEaXNhYmxlIFJ4LCBlbmFibGUgVHggKi8KLSAgICBDTEVBUl9CSVQoaHNtYXJ0Y2FyZC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1JFKTsKLSAgICBTRVRfQklUKGhzbWFydGNhcmQtPkluc3RhbmNlLT5SUVIsICh1aW50MTZfdClTTUFSVENBUkRfUlhEQVRBX0ZMVVNIX1JFUVVFU1QpOworICAgIC8qIEluIGNhc2Ugb2YgVFggb25seSBtb2RlLCBpZiBOQUNLIGlzIGVuYWJsZWQsIHRoZSBVU0FSVCBtdXN0IGJlIGFibGUgdG8gbW9uaXRvcgorICAgICAgIHRoZSBiaWRpcmVjdGlvbmFsIGxpbmUgdG8gZGV0ZWN0IGEgTkFDSyBzaWduYWwgaW4gY2FzZSBvZiBwYXJpdHkgZXJyb3IuCisgICAgICAgVGhlcmVmb3JlLCB0aGUgcmVjZWl2ZXIgYmxvY2sgbXVzdCBiZSBlbmFibGVkIGFzIHdlbGwgKFJFIGJpdCBtdXN0IGJlIHNldCkuICovCisgICAgaWYgKChoc21hcnRjYXJkLT5Jbml0Lk1vZGUgPT0gU01BUlRDQVJEX01PREVfVFgpCisgICAgICAgICYmIChoc21hcnRjYXJkLT5Jbml0Lk5BQ0tFbmFibGUgPT0gU01BUlRDQVJEX05BQ0tfRU5BQkxFKSkKKyAgICB7CisgICAgICBTRVRfQklUKGhzbWFydGNhcmQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9SRSk7CisgICAgfQorICAgIC8qIEVuYWJsZSBUeCAqLwogICAgIFNFVF9CSVQoaHNtYXJ0Y2FyZC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1RFKTsKIAogICAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCAqLwogICAgIFNFVF9CSVQoaHNtYXJ0Y2FyZC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1VFKTsKIAorICAgIC8qIFBlcmZvcm0gYSBUWC9SWCBGSUZPIEZsdXNoICovCisgICAgX19IQUxfU01BUlRDQVJEX0ZMVVNIX0RSUkVHSVNURVIoaHNtYXJ0Y2FyZCk7CisKICAgICAvKiBDb25maWd1cmUgVHggaW50ZXJydXB0IHByb2Nlc3NpbmcgKi8KICAgICAvKiBTZXQgdGhlIFR4IElTUiBmdW5jdGlvbiBwb2ludGVyICovCiAgICAgaHNtYXJ0Y2FyZC0+VHhJU1IgPSBTTUFSVENBUkRfVHhJU1I7CkBAIC0xMDQ4LDE0ICsxMDg1LDIzIEBACiAgICAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCBmaXJzdCB0byB1cGRhdGUgbW9kZSBmb3IgVFggbWFzdGVyICovCiAgICAgQ0xFQVJfQklUKGhzbWFydGNhcmQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9VRSk7CiAKLSAgICAvKiBEaXNhYmxlIFJ4LCBlbmFibGUgVHggKi8KLSAgICBDTEVBUl9CSVQoaHNtYXJ0Y2FyZC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1JFKTsKLSAgICBTRVRfQklUKGhzbWFydGNhcmQtPkluc3RhbmNlLT5SUVIsICh1aW50MTZfdClTTUFSVENBUkRfUlhEQVRBX0ZMVVNIX1JFUVVFU1QpOworICAgIC8qIEluIGNhc2Ugb2YgVFggb25seSBtb2RlLCBpZiBOQUNLIGlzIGVuYWJsZWQsIHRoZSBVU0FSVCBtdXN0IGJlIGFibGUgdG8gbW9uaXRvcgorICAgICAgIHRoZSBiaWRpcmVjdGlvbmFsIGxpbmUgdG8gZGV0ZWN0IGEgTkFDSyBzaWduYWwgaW4gY2FzZSBvZiBwYXJpdHkgZXJyb3IuCisgICAgICAgVGhlcmVmb3JlLCB0aGUgcmVjZWl2ZXIgYmxvY2sgbXVzdCBiZSBlbmFibGVkIGFzIHdlbGwgKFJFIGJpdCBtdXN0IGJlIHNldCkuICovCisgICAgaWYgKChoc21hcnRjYXJkLT5Jbml0Lk1vZGUgPT0gU01BUlRDQVJEX01PREVfVFgpCisgICAgICAgICYmIChoc21hcnRjYXJkLT5Jbml0Lk5BQ0tFbmFibGUgPT0gU01BUlRDQVJEX05BQ0tfRU5BQkxFKSkKKyAgICB7CisgICAgICBTRVRfQklUKGhzbWFydGNhcmQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9SRSk7CisgICAgfQorICAgIC8qIEVuYWJsZSBUeCAqLwogICAgIFNFVF9CSVQoaHNtYXJ0Y2FyZC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1RFKTsKIAogICAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCAqLwogICAgIFNFVF9CSVQoaHNtYXJ0Y2FyZC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1VFKTsKIAorICAgIC8qIFBlcmZvcm0gYSBUWC9SWCBGSUZPIEZsdXNoICovCisgICAgX19IQUxfU01BUlRDQVJEX0ZMVVNIX0RSUkVHSVNURVIoaHNtYXJ0Y2FyZCk7CisKICAgICAvKiBTZXQgdGhlIFNNQVJUQ0FSRCBETUEgdHJhbnNmZXIgY29tcGxldGUgY2FsbGJhY2sgKi8KICAgICBoc21hcnRjYXJkLT5oZG1hdHgtPlhmZXJDcGx0Q2FsbGJhY2sgPSBTTUFSVENBUkRfRE1BVHJhbnNtaXRDcGx0OwogCkBAIC0xMTk4LDcgKzEyNDQsOCBAQAogewogICAvKiBEaXNhYmxlIFJUT0lFLCBFT0JJRSwgVFhFSUUsIFRDSUUsIFJYTkUsIFBFIGFuZCBFUlIgKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikgaW50ZXJydXB0cyAqLwogICBDTEVBUl9CSVQoaHNtYXJ0Y2FyZC0+SW5zdGFuY2UtPkNSMSwKLSAgICAgICAgICAgIChVU0FSVF9DUjFfUlhORUlFIHwgVVNBUlRfQ1IxX1BFSUUgfCBVU0FSVF9DUjFfVFhFSUUgfCBVU0FSVF9DUjFfVENJRSB8IFVTQVJUX0NSMV9SVE9JRSB8IFVTQVJUX0NSMV9FT0JJRSkpOworICAgICAgICAgICAgKFVTQVJUX0NSMV9SWE5FSUUgfCBVU0FSVF9DUjFfUEVJRSB8IFVTQVJUX0NSMV9UWEVJRSB8IFVTQVJUX0NSMV9UQ0lFIHwgVVNBUlRfQ1IxX1JUT0lFIHwKKyAgICAgICAgICAgICBVU0FSVF9DUjFfRU9CSUUpKTsKICAgQ0xFQVJfQklUKGhzbWFydGNhcmQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOwogCiAgIC8qIERpc2FibGUgdGhlIFNNQVJUQ0FSRCBETUEgVHggcmVxdWVzdCBpZiBlbmFibGVkICovCkBAIC0xMjU3LDggKzEzMDQsOCBAQAogCiAgIC8qIENsZWFyIHRoZSBFcnJvciBmbGFncyBpbiB0aGUgSUNSIHJlZ2lzdGVyICovCiAgIF9fSEFMX1NNQVJUQ0FSRF9DTEVBUl9GTEFHKGhzbWFydGNhcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQVJUQ0FSRF9DTEVBUl9PUkVGIHwgU01BUlRDQVJEX0NMRUFSX05FRiB8IFNNQVJUQ0FSRF9DTEVBUl9QRUYgfCBTTUFSVENBUkRfQ0xFQVJfRkVGIHwgU01BUlRDQVJEX0NMRUFSX1JUT0YgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfQ0xFQVJfRU9CRik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQVJUQ0FSRF9DTEVBUl9PUkVGIHwgU01BUlRDQVJEX0NMRUFSX05FRiB8IFNNQVJUQ0FSRF9DTEVBUl9QRUYgfCBTTUFSVENBUkRfQ0xFQVJfRkVGIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01BUlRDQVJEX0NMRUFSX1JUT0YgfCBTTUFSVENBUkRfQ0xFQVJfRU9CRik7CiAKICAgLyogUmVzdG9yZSBoc21hcnRjYXJkLT5nU3RhdGUgYW5kIGhzbWFydGNhcmQtPlJ4U3RhdGUgdG8gUmVhZHkgKi8KICAgaHNtYXJ0Y2FyZC0+Z1N0YXRlICA9IEhBTF9TTUFSVENBUkRfU1RBVEVfUkVBRFk7CkBAIC0xMzg4LDggKzE0MzUsOCBAQAogCiAgIC8qIENsZWFyIHRoZSBFcnJvciBmbGFncyBpbiB0aGUgSUNSIHJlZ2lzdGVyICovCiAgIF9fSEFMX1NNQVJUQ0FSRF9DTEVBUl9GTEFHKGhzbWFydGNhcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQVJUQ0FSRF9DTEVBUl9PUkVGIHwgU01BUlRDQVJEX0NMRUFSX05FRiB8IFNNQVJUQ0FSRF9DTEVBUl9QRUYgfCBTTUFSVENBUkRfQ0xFQVJfRkVGIHwgU01BUlRDQVJEX0NMRUFSX1JUT0YgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfQ0xFQVJfRU9CRik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQVJUQ0FSRF9DTEVBUl9PUkVGIHwgU01BUlRDQVJEX0NMRUFSX05FRiB8IFNNQVJUQ0FSRF9DTEVBUl9QRUYgfCBTTUFSVENBUkRfQ0xFQVJfRkVGIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01BUlRDQVJEX0NMRUFSX1JUT0YgfCBTTUFSVENBUkRfQ0xFQVJfRU9CRik7CiAKICAgLyogUmVzdG9yZSBoc21hcnRjYXJkLT5SeFN0YXRlIHRvIFJlYWR5ICovCiAgIGhzbWFydGNhcmQtPlJ4U3RhdGUgPSBIQUxfU01BUlRDQVJEX1NUQVRFX1JFQURZOwpAQCAtMTQxOCwxMSArMTQ2NSwxMyBAQAogCiAgIC8qIERpc2FibGUgUlRPSUUsIEVPQklFLCBUWEVJRSwgVENJRSwgUlhORSwgUEUgYW5kIEVSUiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKSBpbnRlcnJ1cHRzICovCiAgIENMRUFSX0JJVChoc21hcnRjYXJkLT5JbnN0YW5jZS0+Q1IxLAotICAgICAgICAgICAgKFVTQVJUX0NSMV9SWE5FSUUgfCBVU0FSVF9DUjFfUEVJRSB8IFVTQVJUX0NSMV9UWEVJRSB8IFVTQVJUX0NSMV9UQ0lFIHwgVVNBUlRfQ1IxX1JUT0lFIHwgVVNBUlRfQ1IxX0VPQklFKSk7CisgICAgICAgICAgICAoVVNBUlRfQ1IxX1JYTkVJRSB8IFVTQVJUX0NSMV9QRUlFIHwgVVNBUlRfQ1IxX1RYRUlFIHwgVVNBUlRfQ1IxX1RDSUUgfCBVU0FSVF9DUjFfUlRPSUUgfAorICAgICAgICAgICAgIFVTQVJUX0NSMV9FT0JJRSkpOwogICBDTEVBUl9CSVQoaHNtYXJ0Y2FyZC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CiAKLSAgLyogSWYgRE1BIFR4IGFuZC9vciBETUEgUnggSGFuZGxlcyBhcmUgYXNzb2NpYXRlZCB0byBTTUFSVENBUkQgSGFuZGxlLCBETUEgQWJvcnQgY29tcGxldGUgY2FsbGJhY2tzIHNob3VsZCBiZSBpbml0aWFsaXNlZAotICAgICBiZWZvcmUgYW55IGNhbGwgdG8gRE1BIEFib3J0IGZ1bmN0aW9ucyAqLworICAvKiBJZiBETUEgVHggYW5kL29yIERNQSBSeCBIYW5kbGVzIGFyZSBhc3NvY2lhdGVkIHRvIFNNQVJUQ0FSRCBIYW5kbGUsCisgICAgIERNQSBBYm9ydCBjb21wbGV0ZSBjYWxsYmFja3Mgc2hvdWxkIGJlIGluaXRpYWxpc2VkIGJlZm9yZSBhbnkgY2FsbAorICAgICB0byBETUEgQWJvcnQgZnVuY3Rpb25zICovCiAgIC8qIERNQSBUeCBIYW5kbGUgaXMgdmFsaWQgKi8KICAgaWYgKGhzbWFydGNhcmQtPmhkbWF0eCAhPSBOVUxMKQogICB7CkBAIC0xNTE2LDggKzE1NjUsOCBAQAogCiAgICAgLyogQ2xlYXIgdGhlIEVycm9yIGZsYWdzIGluIHRoZSBJQ1IgcmVnaXN0ZXIgKi8KICAgICBfX0hBTF9TTUFSVENBUkRfQ0xFQVJfRkxBRyhoc21hcnRjYXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQVJUQ0FSRF9DTEVBUl9PUkVGIHwgU01BUlRDQVJEX0NMRUFSX05FRiB8IFNNQVJUQ0FSRF9DTEVBUl9QRUYgfCBTTUFSVENBUkRfQ0xFQVJfRkVGIHwgU01BUlRDQVJEX0NMRUFSX1JUT0YgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQVJUQ0FSRF9DTEVBUl9FT0JGKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfQ0xFQVJfT1JFRiB8IFNNQVJUQ0FSRF9DTEVBUl9ORUYgfCBTTUFSVENBUkRfQ0xFQVJfUEVGIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfQ0xFQVJfRkVGIHwgU01BUlRDQVJEX0NMRUFSX1JUT0YgfCBTTUFSVENBUkRfQ0xFQVJfRU9CRik7CiAKICAgICAvKiBSZXN0b3JlIGhzbWFydGNhcmQtPmdTdGF0ZSBhbmQgaHNtYXJ0Y2FyZC0+UnhTdGF0ZSB0byBSZWFkeSAqLwogICAgIGhzbWFydGNhcmQtPmdTdGF0ZSAgPSBIQUxfU01BUlRDQVJEX1NUQVRFX1JFQURZOwpAQCAtMTY4Nyw4ICsxNzM2LDggQEAKIAogICAgICAgLyogQ2xlYXIgdGhlIEVycm9yIGZsYWdzIGluIHRoZSBJQ1IgcmVnaXN0ZXIgKi8KICAgICAgIF9fSEFMX1NNQVJUQ0FSRF9DTEVBUl9GTEFHKGhzbWFydGNhcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfQ0xFQVJfT1JFRiB8IFNNQVJUQ0FSRF9DTEVBUl9ORUYgfCBTTUFSVENBUkRfQ0xFQVJfUEVGIHwgU01BUlRDQVJEX0NMRUFSX0ZFRiB8IFNNQVJUQ0FSRF9DTEVBUl9SVE9GIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQVJUQ0FSRF9DTEVBUl9FT0JGKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQVJUQ0FSRF9DTEVBUl9PUkVGIHwgU01BUlRDQVJEX0NMRUFSX05FRiB8IFNNQVJUQ0FSRF9DTEVBUl9QRUYgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01BUlRDQVJEX0NMRUFSX0ZFRiB8IFNNQVJUQ0FSRF9DTEVBUl9SVE9GIHwgU01BUlRDQVJEX0NMRUFSX0VPQkYpOwogCiAgICAgICAvKiBSZXN0b3JlIGhzbWFydGNhcmQtPlJ4U3RhdGUgdG8gUmVhZHkgKi8KICAgICAgIGhzbWFydGNhcmQtPlJ4U3RhdGUgPSBIQUxfU01BUlRDQVJEX1NUQVRFX1JFQURZOwpAQCAtMTcxMyw4ICsxNzYyLDggQEAKIAogICAgIC8qIENsZWFyIHRoZSBFcnJvciBmbGFncyBpbiB0aGUgSUNSIHJlZ2lzdGVyICovCiAgICAgX19IQUxfU01BUlRDQVJEX0NMRUFSX0ZMQUcoaHNtYXJ0Y2FyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfQ0xFQVJfT1JFRiB8IFNNQVJUQ0FSRF9DTEVBUl9ORUYgfCBTTUFSVENBUkRfQ0xFQVJfUEVGIHwgU01BUlRDQVJEX0NMRUFSX0ZFRiB8IFNNQVJUQ0FSRF9DTEVBUl9SVE9GIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfQ0xFQVJfRU9CRik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01BUlRDQVJEX0NMRUFSX09SRUYgfCBTTUFSVENBUkRfQ0xFQVJfTkVGIHwgU01BUlRDQVJEX0NMRUFSX1BFRiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01BUlRDQVJEX0NMRUFSX0ZFRiB8IFNNQVJUQ0FSRF9DTEVBUl9SVE9GIHwgU01BUlRDQVJEX0NMRUFSX0VPQkYpOwogCiAgICAgLyogUmVzdG9yZSBoc21hcnRjYXJkLT5SeFN0YXRlIHRvIFJlYWR5ICovCiAgICAgaHNtYXJ0Y2FyZC0+UnhTdGF0ZSA9IEhBTF9TTUFSVENBUkRfU1RBVEVfUkVBRFk7CkBAIC0yMTU2LDEyICsyMjA1LDE0IEBACiB2b2lkIFNNQVJUQ0FSRF9Jbml0Q2FsbGJhY2tzVG9EZWZhdWx0KFNNQVJUQ0FSRF9IYW5kbGVUeXBlRGVmICpoc21hcnRjYXJkKQogewogICAvKiBJbml0IHRoZSBTTUFSVENBUkQgQ2FsbGJhY2sgc2V0dGluZ3MgKi8KLSAgaHNtYXJ0Y2FyZC0+VHhDcGx0Q2FsbGJhY2sgICAgICAgICAgICA9IEhBTF9TTUFSVENBUkRfVHhDcGx0Q2FsbGJhY2s7ICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgVHhDcGx0Q2FsbGJhY2sgICAgICAgICAgICAqLwotICBoc21hcnRjYXJkLT5SeENwbHRDYWxsYmFjayAgICAgICAgICAgID0gSEFMX1NNQVJUQ0FSRF9SeENwbHRDYWxsYmFjazsgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBSeENwbHRDYWxsYmFjayAgICAgICAgICAgICovCi0gIGhzbWFydGNhcmQtPkVycm9yQ2FsbGJhY2sgICAgICAgICAgICAgPSBIQUxfU01BUlRDQVJEX0Vycm9yQ2FsbGJhY2s7ICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEVycm9yQ2FsbGJhY2sgICAgICAgICAgICAgKi8KLSAgaHNtYXJ0Y2FyZC0+QWJvcnRDcGx0Q2FsbGJhY2sgICAgICAgICA9IEhBTF9TTUFSVENBUkRfQWJvcnRDcGx0Q2FsbGJhY2s7ICAgICAgICAgLyogTGVnYWN5IHdlYWsgQWJvcnRDcGx0Q2FsbGJhY2sgICAgICAgICAqLwotICBoc21hcnRjYXJkLT5BYm9ydFRyYW5zbWl0Q3BsdENhbGxiYWNrID0gSEFMX1NNQVJUQ0FSRF9BYm9ydFRyYW5zbWl0Q3BsdENhbGxiYWNrOyAvKiBMZWdhY3kgd2VhayBBYm9ydFRyYW5zbWl0Q3BsdENhbGxiYWNrICovCi0gIGhzbWFydGNhcmQtPkFib3J0UmVjZWl2ZUNwbHRDYWxsYmFjayAgPSBIQUxfU01BUlRDQVJEX0Fib3J0UmVjZWl2ZUNwbHRDYWxsYmFjazsgIC8qIExlZ2FjeSB3ZWFrIEFib3J0UmVjZWl2ZUNwbHRDYWxsYmFjayAgKi8KKyAgaHNtYXJ0Y2FyZC0+VHhDcGx0Q2FsbGJhY2sgICAgICAgICAgICA9IEhBTF9TTUFSVENBUkRfVHhDcGx0Q2FsbGJhY2s7ICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgVHhDcGx0Q2FsbGJhY2sgICAgKi8KKyAgaHNtYXJ0Y2FyZC0+UnhDcGx0Q2FsbGJhY2sgICAgICAgICAgICA9IEhBTF9TTUFSVENBUkRfUnhDcGx0Q2FsbGJhY2s7ICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgUnhDcGx0Q2FsbGJhY2sgICAgKi8KKyAgaHNtYXJ0Y2FyZC0+RXJyb3JDYWxsYmFjayAgICAgICAgICAgICA9IEhBTF9TTUFSVENBUkRfRXJyb3JDYWxsYmFjazsgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgRXJyb3JDYWxsYmFjayAgICAgKi8KKyAgaHNtYXJ0Y2FyZC0+QWJvcnRDcGx0Q2FsbGJhY2sgICAgICAgICA9IEhBTF9TTUFSVENBUkRfQWJvcnRDcGx0Q2FsbGJhY2s7ICAgICAgICAgLyogTGVnYWN5IHdlYWsgQWJvcnRDcGx0Q2FsbGJhY2sgKi8KKyAgaHNtYXJ0Y2FyZC0+QWJvcnRUcmFuc21pdENwbHRDYWxsYmFjayA9IEhBTF9TTUFSVENBUkRfQWJvcnRUcmFuc21pdENwbHRDYWxsYmFjazsgLyogTGVnYWN5IHdlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWJvcnRUcmFuc21pdENwbHRDYWxsYmFjayAgICAgKi8KKyAgaHNtYXJ0Y2FyZC0+QWJvcnRSZWNlaXZlQ3BsdENhbGxiYWNrICA9IEhBTF9TTUFSVENBUkRfQWJvcnRSZWNlaXZlQ3BsdENhbGxiYWNrOyAgLyogTGVnYWN5IHdlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWJvcnRSZWNlaXZlQ3BsdENhbGxiYWNrICAgICAgKi8KIAogfQogI2VuZGlmIC8qIFVTRV9IQUxfU01BUlRDQVJEX1JFR0lTVEVSX0NBTExCQUNLUyAqLwpAQCAtMjIwMCw3ICsyMjUxLDggQEAKICAgICogQ29uZmlndXJlIHRoZSBQYXJpdHkgYW5kIE1vZGU6CiAgICAqICBzZXQgUFMgYml0IGFjY29yZGluZyB0byBoc21hcnRjYXJkLT5Jbml0LlBhcml0eSB2YWx1ZQogICAgKiAgc2V0IFRFIGFuZCBSRSBiaXRzIGFjY29yZGluZyB0byBoc21hcnRjYXJkLT5Jbml0Lk1vZGUgdmFsdWUgKi8KLSAgdG1wcmVnID0gKHVpbnQzMl90KShoc21hcnRjYXJkLT5Jbml0LlBhcml0eSB8IGhzbWFydGNhcmQtPkluaXQuTW9kZSB8IGhzbWFydGNhcmQtPkluaXQuV29yZExlbmd0aCk7CisgIHRtcHJlZyA9ICgoKHVpbnQzMl90KWhzbWFydGNhcmQtPkluaXQuUGFyaXR5KSB8ICgodWludDMyX3QpaHNtYXJ0Y2FyZC0+SW5pdC5Nb2RlKSB8CisgICAgICAgICAgICAoKHVpbnQzMl90KWhzbWFydGNhcmQtPkluaXQuV29yZExlbmd0aCkpOwogICBNT0RJRllfUkVHKGhzbWFydGNhcmQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9GSUVMRFMsIHRtcHJlZyk7CiAKICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVU0FSVCBDUjIgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0yNDA1LDcgKzI0NTcsOCBAQAogICAgIHsKICAgICAgIGlmICgoKEhBTF9HZXRUaWNrKCkgLSBUaWNrc3RhcnQpID4gVGltZW91dCkgfHwgKFRpbWVvdXQgPT0gMFUpKQogICAgICAgewotICAgICAgICAvKiBEaXNhYmxlIFRYRSwgUlhORSwgUEUgYW5kIEVSUiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKSBpbnRlcnJ1cHRzIGZvciB0aGUgaW50ZXJydXB0IHByb2Nlc3MgKi8KKyAgICAgICAgLyogRGlzYWJsZSBUWEUsIFJYTkUsIFBFIGFuZCBFUlIgKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikKKyAgICAgICAgICAgaW50ZXJydXB0cyBmb3IgdGhlIGludGVycnVwdCBwcm9jZXNzICovCiAgICAgICAgIENMRUFSX0JJVChoc21hcnRjYXJkLT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1JYTkVJRSB8IFVTQVJUX0NSMV9QRUlFIHwgVVNBUlRfQ1IxX1RYRUlFKSk7CiAgICAgICAgIENMRUFSX0JJVChoc21hcnRjYXJkLT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKIApAQCAtMjU5OSw4ICsyNjUyLDggQEAKIAogICAvKiBDbGVhciB0aGUgRXJyb3IgZmxhZ3MgaW4gdGhlIElDUiByZWdpc3RlciAqLwogICBfX0hBTF9TTUFSVENBUkRfQ0xFQVJfRkxBRyhoc21hcnRjYXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfQ0xFQVJfT1JFRiB8IFNNQVJUQ0FSRF9DTEVBUl9ORUYgfCBTTUFSVENBUkRfQ0xFQVJfUEVGIHwgU01BUlRDQVJEX0NMRUFSX0ZFRiB8IFNNQVJUQ0FSRF9DTEVBUl9SVE9GIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01BUlRDQVJEX0NMRUFSX0VPQkYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfQ0xFQVJfT1JFRiB8IFNNQVJUQ0FSRF9DTEVBUl9ORUYgfCBTTUFSVENBUkRfQ0xFQVJfUEVGIHwgU01BUlRDQVJEX0NMRUFSX0ZFRiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQVJUQ0FSRF9DTEVBUl9SVE9GIHwgU01BUlRDQVJEX0NMRUFSX0VPQkYpOwogCiAgIC8qIFJlc3RvcmUgaHNtYXJ0Y2FyZC0+Z1N0YXRlIGFuZCBoc21hcnRjYXJkLT5SeFN0YXRlIHRvIFJlYWR5ICovCiAgIGhzbWFydGNhcmQtPmdTdGF0ZSAgPSBIQUxfU01BUlRDQVJEX1NUQVRFX1JFQURZOwpAQCAtMjY0OCw4ICsyNzAxLDggQEAKIAogICAvKiBDbGVhciB0aGUgRXJyb3IgZmxhZ3MgaW4gdGhlIElDUiByZWdpc3RlciAqLwogICBfX0hBTF9TTUFSVENBUkRfQ0xFQVJfRkxBRyhoc21hcnRjYXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfQ0xFQVJfT1JFRiB8IFNNQVJUQ0FSRF9DTEVBUl9ORUYgfCBTTUFSVENBUkRfQ0xFQVJfUEVGIHwgU01BUlRDQVJEX0NMRUFSX0ZFRiB8IFNNQVJUQ0FSRF9DTEVBUl9SVE9GIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01BUlRDQVJEX0NMRUFSX0VPQkYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfQ0xFQVJfT1JFRiB8IFNNQVJUQ0FSRF9DTEVBUl9ORUYgfCBTTUFSVENBUkRfQ0xFQVJfUEVGIHwgU01BUlRDQVJEX0NMRUFSX0ZFRiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQVJUQ0FSRF9DTEVBUl9SVE9GIHwgU01BUlRDQVJEX0NMRUFSX0VPQkYpOwogCiAgIC8qIFJlc3RvcmUgaHNtYXJ0Y2FyZC0+Z1N0YXRlIGFuZCBoc21hcnRjYXJkLT5SeFN0YXRlIHRvIFJlYWR5ICovCiAgIGhzbWFydGNhcmQtPmdTdGF0ZSAgPSBIQUxfU01BUlRDQVJEX1NUQVRFX1JFQURZOwpAQCAtMjcxMCw4ICsyNzYzLDggQEAKIAogICAvKiBDbGVhciB0aGUgRXJyb3IgZmxhZ3MgaW4gdGhlIElDUiByZWdpc3RlciAqLwogICBfX0hBTF9TTUFSVENBUkRfQ0xFQVJfRkxBRyhoc21hcnRjYXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfQ0xFQVJfT1JFRiB8IFNNQVJUQ0FSRF9DTEVBUl9ORUYgfCBTTUFSVENBUkRfQ0xFQVJfUEVGIHwgU01BUlRDQVJEX0NMRUFSX0ZFRiB8IFNNQVJUQ0FSRF9DTEVBUl9SVE9GIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01BUlRDQVJEX0NMRUFSX0VPQkYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTUFSVENBUkRfQ0xFQVJfT1JFRiB8IFNNQVJUQ0FSRF9DTEVBUl9ORUYgfCBTTUFSVENBUkRfQ0xFQVJfUEVGIHwgU01BUlRDQVJEX0NMRUFSX0ZFRiB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQVJUQ0FSRF9DTEVBUl9SVE9GIHwgU01BUlRDQVJEX0NMRUFSX0VPQkYpOwogCiAgIC8qIFJlc3RvcmUgaHNtYXJ0Y2FyZC0+UnhTdGF0ZSB0byBSZWFkeSAqLwogICBoc21hcnRjYXJkLT5SeFN0YXRlID0gSEFMX1NNQVJUQ0FSRF9TVEFURV9SRUFEWTsKQEAgLTI3NzMsMTUgKzI4MjYsMjIgQEAKICAgICBDTEVBUl9CSVQoaHNtYXJ0Y2FyZC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CiAgIH0KIAotICAvKiBSZS1lbmFibGUgUnggYXQgZW5kIG9mIHRyYW5zbWlzc2lvbiBpZiBpbml0aWFsIG1vZGUgaXMgUngvVHggKi8KLSAgaWYgKGhzbWFydGNhcmQtPkluaXQuTW9kZSA9PSBTTUFSVENBUkRfTU9ERV9UWF9SWCkKKyAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCBmaXJzdCB0byB1cGRhdGUgbW9kZSAqLworICBDTEVBUl9CSVQoaHNtYXJ0Y2FyZC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1VFKTsKKyAgaWYgKChoc21hcnRjYXJkLT5Jbml0Lk1vZGUgPT0gU01BUlRDQVJEX01PREVfVFgpCisgICAgICAmJiAoaHNtYXJ0Y2FyZC0+SW5pdC5OQUNLRW5hYmxlID09IFNNQVJUQ0FSRF9OQUNLX0VOQUJMRSkpCiAgIHsKLSAgICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsIGZpcnN0IHRvIHVwZGF0ZSBtb2RlcyAqLwotICAgIENMRUFSX0JJVChoc21hcnRjYXJkLT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfVUUpOwotICAgIFNFVF9CSVQoaHNtYXJ0Y2FyZC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1JFKTsKLSAgICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwgKi8KLSAgICBTRVRfQklUKGhzbWFydGNhcmQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9VRSk7CisgICAgLyogSW4gY2FzZSBvZiBUWCBvbmx5IG1vZGUsIGlmIE5BQ0sgaXMgZW5hYmxlZCwgcmVjZWl2ZXIgYmxvY2sgaGFzIGJlZW4gZW5hYmxlZAorICAgICAgIGZvciBUcmFuc21pdCBwaGFzZS4gRGlzYWJsZSB0aGlzIHJlY2VpdmVyIGJsb2NrLiAqLworICAgIENMRUFSX0JJVChoc21hcnRjYXJkLT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUkUpOwogICB9CisgIGlmICgoaHNtYXJ0Y2FyZC0+SW5pdC5Nb2RlID09IFNNQVJUQ0FSRF9NT0RFX1RYX1JYKQorICAgICAgfHwgKGhzbWFydGNhcmQtPkluaXQuTkFDS0VuYWJsZSA9PSBTTUFSVENBUkRfTkFDS19FTkFCTEUpKQorICB7CisgICAgLyogUGVyZm9ybSBhIFRYIEZJRk8gRmx1c2ggYXQgZW5kIG9mIFR4IHBoYXNlLCBhcyBhbGwgc2VudCBieXRlcyBhcmUgYXBwZWFyaW5nIGluIFJ4IERhdGEgcmVnaXN0ZXIgKi8KKyAgICBfX0hBTF9TTUFSVENBUkRfRkxVU0hfRFJSRUdJU1RFUihoc21hcnRjYXJkKTsKKyAgfQorICBTRVRfQklUKGhzbWFydGNhcmQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9VRSk7CiAKICAgLyogVHggcHJvY2VzcyBpcyBlbmRlZCwgcmVzdG9yZSBoc21hcnRjYXJkLT5nU3RhdGUgdG8gUmVhZHkgKi8KICAgaHNtYXJ0Y2FyZC0+Z1N0YXRlID0gSEFMX1NNQVJUQ0FSRF9TVEFURV9SRUFEWTsKZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3NtYnVzLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9zbWJ1cy5jCmluZGV4IGEwMWQ5ZjguLjBkYTYzZGMgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3NtYnVzLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfc21idXMuYwpAQCAtMjAzLDE4ICsyMDMsMjAgQEAKIC8qKiBAYWRkdG9ncm91cCBTTUJVU19Qcml2YXRlX0Z1bmN0aW9ucyBTTUJVUyBQcml2YXRlIEZ1bmN0aW9ucwogICAqIEB7CiAgICovCi1zdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgU01CVVNfV2FpdE9uRmxhZ1VudGlsVGltZW91dChzdHJ1Y3QgX19TTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQzMl90IEZsYWcsIEZsYWdTdGF0dXMgU3RhdHVzLCB1aW50MzJfdCBUaW1lb3V0KTsKK3N0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBTTUJVU19XYWl0T25GbGFnVW50aWxUaW1lb3V0KFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDMyX3QgRmxhZywgRmxhZ1N0YXR1cyBTdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KTsKIAotc3RhdGljIHZvaWQgU01CVVNfRW5hYmxlX0lSUShzdHJ1Y3QgX19TTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQzMl90IEludGVycnVwdFJlcXVlc3QpOwotc3RhdGljIHZvaWQgU01CVVNfRGlzYWJsZV9JUlEoc3RydWN0IF9fU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MzJfdCBJbnRlcnJ1cHRSZXF1ZXN0KTsKLXN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBTTUJVU19NYXN0ZXJfSVNSKHN0cnVjdCBfX1NNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDMyX3QgU3RhdHVzRmxhZ3MpOwotc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIFNNQlVTX1NsYXZlX0lTUihzdHJ1Y3QgX19TTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQzMl90IFN0YXR1c0ZsYWdzKTsKK3N0YXRpYyB2b2lkIFNNQlVTX0VuYWJsZV9JUlEoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MzJfdCBJbnRlcnJ1cHRSZXF1ZXN0KTsKK3N0YXRpYyB2b2lkIFNNQlVTX0Rpc2FibGVfSVJRKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDMyX3QgSW50ZXJydXB0UmVxdWVzdCk7CitzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgU01CVVNfTWFzdGVyX0lTUihTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQzMl90IFN0YXR1c0ZsYWdzKTsKK3N0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBTTUJVU19TbGF2ZV9JU1IoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MzJfdCBTdGF0dXNGbGFncyk7CiAKLXN0YXRpYyB2b2lkIFNNQlVTX0NvbnZlcnRPdGhlclhmZXJPcHRpb25zKHN0cnVjdCBfX1NNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cyk7CitzdGF0aWMgdm9pZCBTTUJVU19Db252ZXJ0T3RoZXJYZmVyT3B0aW9ucyhTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMpOwogCi1zdGF0aWMgdm9pZCBTTUJVU19JVEVycm9ySGFuZGxlcihzdHJ1Y3QgX19TTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMpOworc3RhdGljIHZvaWQgU01CVVNfSVRFcnJvckhhbmRsZXIoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzKTsKIAotc3RhdGljIHZvaWQgU01CVVNfVHJhbnNmZXJDb25maWcoc3RydWN0IF9fU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCAgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCBTaXplLCB1aW50MzJfdCBNb2RlLCB1aW50MzJfdCBSZXF1ZXN0KTsKK3N0YXRpYyB2b2lkIFNNQlVTX1RyYW5zZmVyQ29uZmlnKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgU2l6ZSwgdWludDMyX3QgTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFJlcXVlc3QpOwogLyoqCiAgICogQH0KICAgKi8KQEAgLTIyNiw4ICsyMjgsOCBAQAogICAqLwogCiAvKiogQGRlZmdyb3VwIFNNQlVTX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucwotICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMKLSAqCisgICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMKKyAgKgogQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAjIyMjIyBJbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zICMjIyMjCkBAIC01NzksNyArNTgxLDggQEAKICAgKiBAcGFyYW0gIHBDYWxsYmFjayBwb2ludGVyIHRvIHRoZSBDYWxsYmFjayBmdW5jdGlvbgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX1JlZ2lzdGVyQ2FsbGJhY2soU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCBIQUxfU01CVVNfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCwgcFNNQlVTX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU01CVVNfUmVnaXN0ZXJDYWxsYmFjayhTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIEhBTF9TTUJVU19DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFNNQlVTX0NhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spCiB7CiAgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKIApAQCAtODU4LDggKzg2MSw4IEBACiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgU01CVVNfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMiBJbnB1dCBhbmQgT3V0cHV0IG9wZXJhdGlvbiBmdW5jdGlvbnMKLSAqICBAYnJpZWYgICBEYXRhIHRyYW5zZmVycyBmdW5jdGlvbnMKLSAqCisgICogIEBicmllZiAgIERhdGEgdHJhbnNmZXJzIGZ1bmN0aW9ucworICAqCiBAdmVyYmF0aW0KICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAgICAgICAgIyMjIyMgSU8gb3BlcmF0aW9uIGZ1bmN0aW9ucyAjIyMjIwpAQCAtOTExLDcgKzkxNCw4IEBACiAgICogQHBhcmFtICBYZmVyT3B0aW9ucyBPcHRpb25zIG9mIFRyYW5zZmVyLCB2YWx1ZSBvZiBAcmVmIFNNQlVTX1hmZXJPcHRpb25zX2RlZmluaXRpb24KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUJVU19NYXN0ZXJfVHJhbnNtaXRfSVQoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU01CVVNfTWFzdGVyX1RyYW5zbWl0X0lUKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDE2X3QgRGV2QWRkcmVzcywgdWludDhfdCAqcERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFhmZXJPcHRpb25zKQogewogICB1aW50MzJfdCB0bXA7CiAKQEAgLTk1MCw3ICs5NTQsOCBAQAogICAgIC8qIFNldCBOQllURVMgdG8gd3JpdGUgYW5kIHJlbG9hZCBpZiBzaXplID4gTUFYX05CWVRFX1NJWkUgYW5kIGdlbmVyYXRlIFJFU1RBUlQgKi8KICAgICBpZiAoKGhzbWJ1cy0+WGZlclNpemUgPCBoc21idXMtPlhmZXJDb3VudCkgJiYgKGhzbWJ1cy0+WGZlclNpemUgPT0gTUFYX05CWVRFX1NJWkUpKQogICAgIHsKLSAgICAgIFNNQlVTX1RyYW5zZmVyQ29uZmlnKGhzbWJ1cywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaHNtYnVzLT5YZmVyU2l6ZSwgU01CVVNfUkVMT0FEX01PREUgfCAoaHNtYnVzLT5YZmVyT3B0aW9ucyAmIFNNQlVTX1NFTkRQRUNfTU9ERSksIFNNQlVTX0dFTkVSQVRFX1NUQVJUX1dSSVRFKTsKKyAgICAgIFNNQlVTX1RyYW5zZmVyQ29uZmlnKGhzbWJ1cywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaHNtYnVzLT5YZmVyU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQlVTX1JFTE9BRF9NT0RFIHwgKGhzbWJ1cy0+WGZlck9wdGlvbnMgJiBTTUJVU19TRU5EUEVDX01PREUpLCBTTUJVU19HRU5FUkFURV9TVEFSVF9XUklURSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0xMDEwLDcgKzEwMTUsOCBAQAogICAqIEBwYXJhbSAgWGZlck9wdGlvbnMgT3B0aW9ucyBvZiBUcmFuc2ZlciwgdmFsdWUgb2YgQHJlZiBTTUJVU19YZmVyT3B0aW9uc19kZWZpbml0aW9uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU01CVVNfTWFzdGVyX1JlY2VpdmVfSVQoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU01CVVNfTWFzdGVyX1JlY2VpdmVfSVQoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50OF90ICpwRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBYZmVyT3B0aW9ucykKIHsKICAgdWludDMyX3QgdG1wOwogCkBAIC0xMDUwLDcgKzEwNTYsOCBAQAogICAgIC8qIFNldCBOQllURVMgdG8gd3JpdGUgYW5kIHJlbG9hZCBpZiBzaXplID4gTUFYX05CWVRFX1NJWkUgYW5kIGdlbmVyYXRlIFJFU1RBUlQgKi8KICAgICBpZiAoKGhzbWJ1cy0+WGZlclNpemUgPCBoc21idXMtPlhmZXJDb3VudCkgJiYgKGhzbWJ1cy0+WGZlclNpemUgPT0gTUFYX05CWVRFX1NJWkUpKQogICAgIHsKLSAgICAgIFNNQlVTX1RyYW5zZmVyQ29uZmlnKGhzbWJ1cywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaHNtYnVzLT5YZmVyU2l6ZSwgU01CVVNfUkVMT0FEX01PREUgIHwgKGhzbWJ1cy0+WGZlck9wdGlvbnMgJiBTTUJVU19TRU5EUEVDX01PREUpLCBTTUJVU19HRU5FUkFURV9TVEFSVF9SRUFEKTsKKyAgICAgIFNNQlVTX1RyYW5zZmVyQ29uZmlnKGhzbWJ1cywgRGV2QWRkcmVzcywgKHVpbnQ4X3QpaHNtYnVzLT5YZmVyU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQlVTX1JFTE9BRF9NT0RFICB8IChoc21idXMtPlhmZXJPcHRpb25zICYgU01CVVNfU0VORFBFQ19NT0RFKSwgU01CVVNfR0VORVJBVEVfU1RBUlRfUkVBRCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0xMTY1LDcgKzExNzIsOCBAQAogICAqIEBwYXJhbSAgWGZlck9wdGlvbnMgT3B0aW9ucyBvZiBUcmFuc2ZlciwgdmFsdWUgb2YgQHJlZiBTTUJVU19YZmVyT3B0aW9uc19kZWZpbml0aW9uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU01CVVNfU2xhdmVfVHJhbnNtaXRfSVQoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwgdWludDMyX3QgWGZlck9wdGlvbnMpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU01CVVNfU2xhdmVfVHJhbnNtaXRfSVQoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50OF90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBYZmVyT3B0aW9ucykKIHsKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1NNQlVTX1RSQU5TRkVSX09QVElPTlNfUkVRVUVTVChYZmVyT3B0aW9ucykpOwpAQCAtMTIxMyw3ICsxMjIxLDggQEAKICAgICAvKiBTZXQgTkJZVEVTIHRvIHdyaXRlIGFuZCByZWxvYWQgaWYgc2l6ZSA+IE1BWF9OQllURV9TSVpFIGFuZCBnZW5lcmF0ZSBSRVNUQVJUICovCiAgICAgaWYgKChoc21idXMtPlhmZXJTaXplIDwgaHNtYnVzLT5YZmVyQ291bnQpICYmIChoc21idXMtPlhmZXJTaXplID09IE1BWF9OQllURV9TSVpFKSkKICAgICB7Ci0gICAgICBTTUJVU19UcmFuc2ZlckNvbmZpZyhoc21idXMsIDAsICh1aW50OF90KWhzbWJ1cy0+WGZlclNpemUsIFNNQlVTX1JFTE9BRF9NT0RFIHwgKGhzbWJ1cy0+WGZlck9wdGlvbnMgJiBTTUJVU19TRU5EUEVDX01PREUpLCBTTUJVU19OT19TVEFSVFNUT1ApOworICAgICAgU01CVVNfVHJhbnNmZXJDb25maWcoaHNtYnVzLCAwLCAodWludDhfdCloc21idXMtPlhmZXJTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU01CVVNfUkVMT0FEX01PREUgfCAoaHNtYnVzLT5YZmVyT3B0aW9ucyAmIFNNQlVTX1NFTkRQRUNfTU9ERSksIFNNQlVTX05PX1NUQVJUU1RPUCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0xMjU5LDcgKzEyNjgsOCBAQAogICAqIEBwYXJhbSAgWGZlck9wdGlvbnMgT3B0aW9ucyBvZiBUcmFuc2ZlciwgdmFsdWUgb2YgQHJlZiBTTUJVU19YZmVyT3B0aW9uc19kZWZpbml0aW9uCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfU01CVVNfU2xhdmVfUmVjZWl2ZV9JVChTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplLCB1aW50MzJfdCBYZmVyT3B0aW9ucykKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TTUJVU19TbGF2ZV9SZWNlaXZlX0lUKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBYZmVyT3B0aW9ucykKIHsKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1NNQlVTX1RSQU5TRkVSX09QVElPTlNfUkVRVUVTVChYZmVyT3B0aW9ucykpOwpAQCAtMTQxNyw3ICsxNDI3LDggQEAKICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCBkdXJhdGlvbgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NNQlVTX0lzRGV2aWNlUmVhZHkoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MTZfdCBEZXZBZGRyZXNzLCB1aW50MzJfdCBUcmlhbHMsIHVpbnQzMl90IFRpbWVvdXQpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfU01CVVNfSXNEZXZpY2VSZWFkeShTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQzMl90IFRyaWFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpbWVvdXQpCiB7CiAgIHVpbnQzMl90IHRpY2tzdGFydDsKIApAQCAtMTUyNiw4ICsxNTM3LDcgQEAKIAogICAgICAgLyogSW5jcmVtZW50IFRyaWFscyAqLwogICAgICAgU01CVVNfVHJpYWxzKys7Ci0gICAgfQotICAgIHdoaWxlIChTTUJVU19UcmlhbHMgPCBUcmlhbHMpOworICAgIH0gd2hpbGUgKFNNQlVTX1RyaWFscyA8IFRyaWFscyk7CiAKICAgICBoc21idXMtPlN0YXRlID0gSEFMX1NNQlVTX1NUQVRFX1JFQURZOwogCkBAIC0xNTQ5LDggKzE1NTksOCBAQAogICAqLwogCiAvKiogQGRlZmdyb3VwIFNNQlVTX0lSUV9IYW5kbGVyX2FuZF9DYWxsYmFja3MgSVJRIEhhbmRsZXIgYW5kIENhbGxiYWNrcwotICogQHsKLSAqLworICAqIEB7CisgICovCiAKIC8qKgogICAqIEBicmllZiAgSGFuZGxlIFNNQlVTIGV2ZW50IGludGVycnVwdCByZXF1ZXN0LgpAQCAtMTU2Niw3ICsxNTc2LDEyIEBACiAgIHVpbnQzMl90IHRtcGNyMXZhbHVlID0gUkVBRF9SRUcoaHNtYnVzLT5JbnN0YW5jZS0+Q1IxKTsKIAogICAvKiBTTUJVUyBpbiBtb2RlIFRyYW5zbWl0dGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0gIGlmICgoU01CVVNfQ0hFQ0tfSVRfU09VUkNFKHRtcGNyMXZhbHVlLCAoU01CVVNfSVRfVENJIHwgU01CVVNfSVRfU1RPUEkgfCBTTUJVU19JVF9OQUNLSSB8IFNNQlVTX0lUX1RYSSkpICE9IFJFU0VUKSAmJiAoKFNNQlVTX0NIRUNLX0ZMQUcodG1waXNydmFsdWUsIFNNQlVTX0ZMQUdfVFhJUykgIT0gUkVTRVQpIHx8IChTTUJVU19DSEVDS19GTEFHKHRtcGlzcnZhbHVlLCBTTUJVU19GTEFHX1RDUikgIT0gUkVTRVQpIHx8IChTTUJVU19DSEVDS19GTEFHKHRtcGlzcnZhbHVlLCBTTUJVU19GTEFHX1RDKSAhPSBSRVNFVCkgfHwgKFNNQlVTX0NIRUNLX0ZMQUcodG1waXNydmFsdWUsIFNNQlVTX0ZMQUdfU1RPUEYpICE9IFJFU0VUKSB8fCAoU01CVVNfQ0hFQ0tfRkxBRyh0bXBpc3J2YWx1ZSwgU01CVVNfRkxBR19BRikgIT0gUkVTRVQpKSkKKyAgaWYgKChTTUJVU19DSEVDS19JVF9TT1VSQ0UodG1wY3IxdmFsdWUsIChTTUJVU19JVF9UQ0kgfCBTTUJVU19JVF9TVE9QSSB8IFNNQlVTX0lUX05BQ0tJIHwgU01CVVNfSVRfVFhJKSkgIT0gUkVTRVQpICYmCisgICAgICAoKFNNQlVTX0NIRUNLX0ZMQUcodG1waXNydmFsdWUsIFNNQlVTX0ZMQUdfVFhJUykgIT0gUkVTRVQpIHx8CisgICAgICAgKFNNQlVTX0NIRUNLX0ZMQUcodG1waXNydmFsdWUsIFNNQlVTX0ZMQUdfVENSKSAhPSBSRVNFVCkgfHwKKyAgICAgICAoU01CVVNfQ0hFQ0tfRkxBRyh0bXBpc3J2YWx1ZSwgU01CVVNfRkxBR19UQykgIT0gUkVTRVQpIHx8CisgICAgICAgKFNNQlVTX0NIRUNLX0ZMQUcodG1waXNydmFsdWUsIFNNQlVTX0ZMQUdfU1RPUEYpICE9IFJFU0VUKSB8fAorICAgICAgIChTTUJVU19DSEVDS19GTEFHKHRtcGlzcnZhbHVlLCBTTUJVU19GTEFHX0FGKSAhPSBSRVNFVCkpKQogICB7CiAgICAgLyogU2xhdmUgbW9kZSBzZWxlY3RlZCAqLwogICAgIGlmICgoaHNtYnVzLT5TdGF0ZSAmIEhBTF9TTUJVU19TVEFURV9TTEFWRV9CVVNZX1RYKSA9PSBIQUxfU01CVVNfU1RBVEVfU0xBVkVfQlVTWV9UWCkKQEAgLTE1ODUsNyArMTYwMCwxMiBAQAogICB9CiAKICAgLyogU01CVVMgaW4gbW9kZSBSZWNlaXZlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSAgaWYgKChTTUJVU19DSEVDS19JVF9TT1VSQ0UodG1wY3IxdmFsdWUsIChTTUJVU19JVF9UQ0kgfCBTTUJVU19JVF9TVE9QSSB8IFNNQlVTX0lUX05BQ0tJIHwgU01CVVNfSVRfUlhJKSkgIT0gUkVTRVQpICYmICgoU01CVVNfQ0hFQ0tfRkxBRyh0bXBpc3J2YWx1ZSwgU01CVVNfRkxBR19SWE5FKSAhPSBSRVNFVCkgfHwgKFNNQlVTX0NIRUNLX0ZMQUcodG1waXNydmFsdWUsIFNNQlVTX0ZMQUdfVENSKSAhPSBSRVNFVCkgfHwgKFNNQlVTX0NIRUNLX0ZMQUcodG1waXNydmFsdWUsIFNNQlVTX0ZMQUdfVEMpICE9IFJFU0VUKSB8fCAoU01CVVNfQ0hFQ0tfRkxBRyh0bXBpc3J2YWx1ZSwgU01CVVNfRkxBR19TVE9QRikgIT0gUkVTRVQpIHx8IChTTUJVU19DSEVDS19GTEFHKHRtcGlzcnZhbHVlLCBTTUJVU19GTEFHX0FGKSAhPSBSRVNFVCkpKQorICBpZiAoKFNNQlVTX0NIRUNLX0lUX1NPVVJDRSh0bXBjcjF2YWx1ZSwgKFNNQlVTX0lUX1RDSSB8IFNNQlVTX0lUX1NUT1BJIHwgU01CVVNfSVRfTkFDS0kgfCBTTUJVU19JVF9SWEkpKSAhPSBSRVNFVCkgJiYKKyAgICAgICgoU01CVVNfQ0hFQ0tfRkxBRyh0bXBpc3J2YWx1ZSwgU01CVVNfRkxBR19SWE5FKSAhPSBSRVNFVCkgfHwKKyAgICAgICAoU01CVVNfQ0hFQ0tfRkxBRyh0bXBpc3J2YWx1ZSwgU01CVVNfRkxBR19UQ1IpICE9IFJFU0VUKSB8fAorICAgICAgIChTTUJVU19DSEVDS19GTEFHKHRtcGlzcnZhbHVlLCBTTUJVU19GTEFHX1RDKSAhPSBSRVNFVCkgfHwKKyAgICAgICAoU01CVVNfQ0hFQ0tfRkxBRyh0bXBpc3J2YWx1ZSwgU01CVVNfRkxBR19TVE9QRikgIT0gUkVTRVQpIHx8CisgICAgICAgKFNNQlVTX0NIRUNLX0ZMQUcodG1waXNydmFsdWUsIFNNQlVTX0ZMQUdfQUYpICE9IFJFU0VUKSkpCiAgIHsKICAgICAvKiBTbGF2ZSBtb2RlIHNlbGVjdGVkICovCiAgICAgaWYgKChoc21idXMtPlN0YXRlICYgSEFMX1NNQlVTX1NUQVRFX1NMQVZFX0JVU1lfUlgpID09IEhBTF9TTUJVU19TVEFURV9TTEFWRV9CVVNZX1JYKQpAQCAtMTYwNCw3ICsxNjI0LDEyIEBACiAgIH0KIAogICAvKiBTTUJVUyBpbiBtb2RlIExpc3RlbmVyIE9ubHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotICBpZiAoKChTTUJVU19DSEVDS19JVF9TT1VSQ0UodG1wY3IxdmFsdWUsIFNNQlVTX0lUX0FERFJJKSAhPSBSRVNFVCkgfHwgKFNNQlVTX0NIRUNLX0lUX1NPVVJDRSh0bXBjcjF2YWx1ZSwgU01CVVNfSVRfU1RPUEkpICE9IFJFU0VUKSB8fCAoU01CVVNfQ0hFQ0tfSVRfU09VUkNFKHRtcGNyMXZhbHVlLCBTTUJVU19JVF9OQUNLSSkgIT0gUkVTRVQpKSAmJiAoKFNNQlVTX0NIRUNLX0ZMQUcodG1waXNydmFsdWUsIFNNQlVTX0ZMQUdfQUREUikgIT0gUkVTRVQpIHx8IChTTUJVU19DSEVDS19GTEFHKHRtcGlzcnZhbHVlLCBTTUJVU19GTEFHX1NUT1BGKSAhPSBSRVNFVCkgfHwgKFNNQlVTX0NIRUNLX0ZMQUcodG1waXNydmFsdWUsIFNNQlVTX0ZMQUdfQUYpICE9IFJFU0VUKSkpCisgIGlmICgoKFNNQlVTX0NIRUNLX0lUX1NPVVJDRSh0bXBjcjF2YWx1ZSwgU01CVVNfSVRfQUREUkkpICE9IFJFU0VUKSB8fAorICAgICAgIChTTUJVU19DSEVDS19JVF9TT1VSQ0UodG1wY3IxdmFsdWUsIFNNQlVTX0lUX1NUT1BJKSAhPSBSRVNFVCkgfHwKKyAgICAgICAoU01CVVNfQ0hFQ0tfSVRfU09VUkNFKHRtcGNyMXZhbHVlLCBTTUJVU19JVF9OQUNLSSkgIT0gUkVTRVQpKSAmJgorICAgICAgKChTTUJVU19DSEVDS19GTEFHKHRtcGlzcnZhbHVlLCBTTUJVU19GTEFHX0FERFIpICE9IFJFU0VUKSB8fAorICAgICAgIChTTUJVU19DSEVDS19GTEFHKHRtcGlzcnZhbHVlLCBTTUJVU19GTEFHX1NUT1BGKSAhPSBSRVNFVCkgfHwKKyAgICAgICAoU01CVVNfQ0hFQ0tfRkxBRyh0bXBpc3J2YWx1ZSwgU01CVVNfRkxBR19BRikgIT0gUkVTRVQpKSkKICAgewogICAgIGlmICgoaHNtYnVzLT5TdGF0ZSAmIEhBTF9TTUJVU19TVEFURV9MSVNURU4pID09IEhBTF9TTUJVU19TVEFURV9MSVNURU4pCiAgICAgewpAQCAtMTc0NCw4ICsxNzY5LDggQEAKICAgKi8KIAogLyoqIEBkZWZncm91cCBTTUJVU19FeHBvcnRlZF9GdW5jdGlvbnNfR3JvdXAzIFBlcmlwaGVyYWwgU3RhdGUgYW5kIEVycm9ycyBmdW5jdGlvbnMKLSAqICBAYnJpZWYgICBQZXJpcGhlcmFsIFN0YXRlIGFuZCBFcnJvcnMgZnVuY3Rpb25zCi0gKgorICAqICBAYnJpZWYgICBQZXJpcGhlcmFsIFN0YXRlIGFuZCBFcnJvcnMgZnVuY3Rpb25zCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICMjIyMjIFBlcmlwaGVyYWwgU3RhdGUgYW5kIEVycm9ycyBmdW5jdGlvbnMgIyMjIyMKQEAgLTE3NzEsMTEgKzE3OTYsMTEgQEAKIH0KIAogLyoqCi0qIEBicmllZiAgUmV0dXJuIHRoZSBTTUJVUyBlcnJvciBjb2RlLgorICAqIEBicmllZiAgUmV0dXJuIHRoZSBTTUJVUyBlcnJvciBjb2RlLgogICAqIEBwYXJhbSAgaHNtYnVzIFBvaW50ZXIgdG8gYSBTTUJVU19IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCiAgICogICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgc3BlY2lmaWVkIFNNQlVTLgotKiBAcmV0dmFsIFNNQlVTIEVycm9yIENvZGUKLSovCisgICogQHJldHZhbCBTTUJVUyBFcnJvciBDb2RlCisgICovCiB1aW50MzJfdCBIQUxfU01CVVNfR2V0RXJyb3IoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzKQogewogICByZXR1cm4gaHNtYnVzLT5FcnJvckNvZGU7CkBAIC0xNzkwLDcgKzE4MTUsNyBAQAogICAqLwogCiAvKiogQGFkZHRvZ3JvdXAgU01CVVNfUHJpdmF0ZV9GdW5jdGlvbnMgU01CVVMgUHJpdmF0ZSBGdW5jdGlvbnMKLSAqICBAYnJpZWYgICBEYXRhIHRyYW5zZmVycyBQcml2YXRlIGZ1bmN0aW9ucworICAqICBAYnJpZWYgICBEYXRhIHRyYW5zZmVycyBQcml2YXRlIGZ1bmN0aW9ucwogICAqIEB7CiAgICovCiAKQEAgLTE4MDEsNyArMTgyNiw3IEBACiAgICogQHBhcmFtICBTdGF0dXNGbGFncyBWYWx1ZSBvZiBJbnRlcnJ1cHQgRmxhZ3MuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1zdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgU01CVVNfTWFzdGVyX0lTUihzdHJ1Y3QgX19TTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQzMl90IFN0YXR1c0ZsYWdzKQorc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIFNNQlVTX01hc3Rlcl9JU1IoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MzJfdCBTdGF0dXNGbGFncykKIHsKICAgdWludDE2X3QgRGV2QWRkcmVzczsKIApAQCAtMTg1NCw3ICsxODc5LDcgQEAKICAgICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KICAgICAgIF9fSEFMX1VOTE9DSyhoc21idXMpOwogCi0gICAgICAvKiBSRWVuYWJsZSB0aGUgc2VsZWN0ZWQgU01CVVMgcGVyaXBoZXJhbCAqLworICAgICAgLyogUmUtZW5hYmxlIHRoZSBzZWxlY3RlZCBTTUJVUyBwZXJpcGhlcmFsICovCiAgICAgICBfX0hBTF9TTUJVU19FTkFCTEUoaHNtYnVzKTsKIAogICAgICAgLyogQ2FsbCB0aGUgY29ycmVzcG9uZGluZyBjYWxsYmFjayB0byBpbmZvcm0gdXBwZXIgbGF5ZXIgb2YgRW5kIG9mIFRyYW5zZmVyICovCkBAIC0xOTQxLDcgKzE5NjYsOCBAQAogCiAgICAgICBpZiAoaHNtYnVzLT5YZmVyQ291bnQgPiBNQVhfTkJZVEVfU0laRSkKICAgICAgIHsKLSAgICAgICAgU01CVVNfVHJhbnNmZXJDb25maWcoaHNtYnVzLCBEZXZBZGRyZXNzLCBNQVhfTkJZVEVfU0laRSwgKFNNQlVTX1JFTE9BRF9NT0RFIHwgKGhzbWJ1cy0+WGZlck9wdGlvbnMgJiBTTUJVU19TRU5EUEVDX01PREUpKSwgU01CVVNfTk9fU1RBUlRTVE9QKTsKKyAgICAgICAgU01CVVNfVHJhbnNmZXJDb25maWcoaHNtYnVzLCBEZXZBZGRyZXNzLCBNQVhfTkJZVEVfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNNQlVTX1JFTE9BRF9NT0RFIHwgKGhzbWJ1cy0+WGZlck9wdGlvbnMgJiBTTUJVU19TRU5EUEVDX01PREUpKSwgU01CVVNfTk9fU1RBUlRTVE9QKTsKICAgICAgICAgaHNtYnVzLT5YZmVyU2l6ZSA9IE1BWF9OQllURV9TSVpFOwogICAgICAgfQogICAgICAgZWxzZQpAQCAtMjA4NSw3ICsyMTExLDcgQEAKICAgKiBAcGFyYW0gIFN0YXR1c0ZsYWdzIFZhbHVlIG9mIEludGVycnVwdCBGbGFncy4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLXN0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBTTUJVU19TbGF2ZV9JU1Ioc3RydWN0IF9fU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MzJfdCBTdGF0dXNGbGFncykKK3N0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBTTUJVU19TbGF2ZV9JU1IoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MzJfdCBTdGF0dXNGbGFncykKIHsKICAgdWludDhfdCBUcmFuc2ZlckRpcmVjdGlvbjsKICAgdWludDE2X3QgU2xhdmVBZGRyQ29kZTsKQEAgLTIxNTUsNyArMjE4MSw4IEBACiAgICAgSEFMX1NNQlVTX0FkZHJDYWxsYmFjayhoc21idXMsIFRyYW5zZmVyRGlyZWN0aW9uLCBTbGF2ZUFkZHJDb2RlKTsKICNlbmRpZiAvKiBVU0VfSEFMX1NNQlVTX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogICB9Ci0gIGVsc2UgaWYgKChTTUJVU19DSEVDS19GTEFHKFN0YXR1c0ZsYWdzLCBTTUJVU19GTEFHX1JYTkUpICE9IFJFU0VUKSB8fCAoU01CVVNfQ0hFQ0tfRkxBRyhTdGF0dXNGbGFncywgU01CVVNfRkxBR19UQ1IpICE9IFJFU0VUKSkKKyAgZWxzZSBpZiAoKFNNQlVTX0NIRUNLX0ZMQUcoU3RhdHVzRmxhZ3MsIFNNQlVTX0ZMQUdfUlhORSkgIT0gUkVTRVQpIHx8CisgICAgICAgICAgIChTTUJVU19DSEVDS19GTEFHKFN0YXR1c0ZsYWdzLCBTTUJVU19GTEFHX1RDUikgIT0gUkVTRVQpKQogICB7CiAgICAgaWYgKChoc21idXMtPlN0YXRlICYgSEFMX1NNQlVTX1NUQVRFX1NMQVZFX0JVU1lfUlgpID09IEhBTF9TTUJVU19TVEFURV9TTEFWRV9CVVNZX1JYKQogICAgIHsKQEAgLTIyMTAsNyArMjIzNyw4IEBACiAgICAgICB7CiAgICAgICAgIGlmIChoc21idXMtPlhmZXJDb3VudCA+IE1BWF9OQllURV9TSVpFKQogICAgICAgICB7Ci0gICAgICAgICAgU01CVVNfVHJhbnNmZXJDb25maWcoaHNtYnVzLCAwLCBNQVhfTkJZVEVfU0laRSwgKFNNQlVTX1JFTE9BRF9NT0RFIHwgKGhzbWJ1cy0+WGZlck9wdGlvbnMgJiBTTUJVU19TRU5EUEVDX01PREUpKSwgU01CVVNfTk9fU1RBUlRTVE9QKTsKKyAgICAgICAgICBTTUJVU19UcmFuc2ZlckNvbmZpZyhoc21idXMsIDAsIE1BWF9OQllURV9TSVpFLCAoU01CVVNfUkVMT0FEX01PREUgfCAoaHNtYnVzLT5YZmVyT3B0aW9ucyAmIFNNQlVTX1NFTkRQRUNfTU9ERSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNQlVTX05PX1NUQVJUU1RPUCk7CiAgICAgICAgICAgaHNtYnVzLT5YZmVyU2l6ZSA9IE1BWF9OQllURV9TSVpFOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKQEAgLTIzNDEsNyArMjM2OSw3IEBACiAgICogQHBhcmFtICBJbnRlcnJ1cHRSZXF1ZXN0IFZhbHVlIG9mIEByZWYgU01CVVNfSW50ZXJydXB0X2NvbmZpZ3VyYXRpb25fZGVmaW5pdGlvbi4KICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KLXN0YXRpYyB2b2lkIFNNQlVTX0VuYWJsZV9JUlEoc3RydWN0IF9fU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MzJfdCBJbnRlcnJ1cHRSZXF1ZXN0KQorc3RhdGljIHZvaWQgU01CVVNfRW5hYmxlX0lSUShTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMsIHVpbnQzMl90IEludGVycnVwdFJlcXVlc3QpCiB7CiAgIHVpbnQzMl90IHRtcGlzciA9IDBVTDsKIApAQCAtMjM4MSw3ICsyNDA5LDcgQEAKICAgKiBAcGFyYW0gIEludGVycnVwdFJlcXVlc3QgVmFsdWUgb2YgQHJlZiBTTUJVU19JbnRlcnJ1cHRfY29uZmlndXJhdGlvbl9kZWZpbml0aW9uLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotc3RhdGljIHZvaWQgU01CVVNfRGlzYWJsZV9JUlEoc3RydWN0IF9fU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MzJfdCBJbnRlcnJ1cHRSZXF1ZXN0KQorc3RhdGljIHZvaWQgU01CVVNfRGlzYWJsZV9JUlEoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MzJfdCBJbnRlcnJ1cHRSZXF1ZXN0KQogewogICB1aW50MzJfdCB0bXBpc3IgPSAwVUw7CiAgIHVpbnQzMl90IHRtcHN0YXRlID0gaHNtYnVzLT5TdGF0ZTsKQEAgLTI0NTMsNyArMjQ4MSw3IEBACiAgICogQHBhcmFtICBoc21idXMgU01CVVMgaGFuZGxlLgogICAqIEByZXR2YWwgTm9uZQogICAqLwotc3RhdGljIHZvaWQgU01CVVNfSVRFcnJvckhhbmRsZXIoc3RydWN0IF9fU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzKQorc3RhdGljIHZvaWQgU01CVVNfSVRFcnJvckhhbmRsZXIoU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzKQogewogICB1aW50MzJfdCBpdGZsYWdzICAgPSBSRUFEX1JFRyhoc21idXMtPkluc3RhbmNlLT5JU1IpOwogICB1aW50MzJfdCBpdHNvdXJjZXMgPSBSRUFEX1JFRyhoc21idXMtPkluc3RhbmNlLT5DUjEpOwpAQCAtMjU1NCw3ICsyNTgyLDggQEAKICAgKiBAcGFyYW0gIFRpbWVvdXQgVGltZW91dCBkdXJhdGlvbgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIFNNQlVTX1dhaXRPbkZsYWdVbnRpbFRpbWVvdXQoc3RydWN0IF9fU01CVVNfSGFuZGxlVHlwZURlZiAqaHNtYnVzLCB1aW50MzJfdCBGbGFnLCBGbGFnU3RhdHVzIFN0YXR1cywgdWludDMyX3QgVGltZW91dCkKK3N0YXRpYyBIQUxfU3RhdHVzVHlwZURlZiBTTUJVU19XYWl0T25GbGFnVW50aWxUaW1lb3V0KFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgdWludDMyX3QgRmxhZywgRmxhZ1N0YXR1cyBTdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KQogewogICB1aW50MzJfdCB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOwogCkBAIC0yNjAzLDcgKzI2MzIsOCBAQAogICAqICAgICBAYXJnIEByZWYgU01CVVNfR0VORVJBVEVfU1RBUlRfV1JJVEUgR2VuZXJhdGUgUmVzdGFydCBmb3Igd3JpdGUgcmVxdWVzdC4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLXN0YXRpYyB2b2lkIFNNQlVTX1RyYW5zZmVyQ29uZmlnKHN0cnVjdCBfX1NNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgU2l6ZSwgdWludDMyX3QgTW9kZSwgdWludDMyX3QgUmVxdWVzdCkKK3N0YXRpYyB2b2lkIFNNQlVTX1RyYW5zZmVyQ29uZmlnKFNNQlVTX0hhbmRsZVR5cGVEZWYgKmhzbWJ1cywgIHVpbnQxNl90IERldkFkZHJlc3MsIHVpbnQ4X3QgU2l6ZSwgdWludDMyX3QgTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFJlcXVlc3QpCiB7CiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19TTUJVU19BTExfSU5TVEFOQ0UoaHNtYnVzLT5JbnN0YW5jZSkpOwpAQCAtMjYxMSwxNiArMjY0MSwyMCBAQAogICBhc3NlcnRfcGFyYW0oSVNfU01CVVNfVFJBTlNGRVJfUkVRVUVTVChSZXF1ZXN0KSk7CiAKICAgLyogdXBkYXRlIENSMiByZWdpc3RlciAqLwotICBNT0RJRllfUkVHKGhzbWJ1cy0+SW5zdGFuY2UtPkNSMiwgKChJMkNfQ1IyX1NBREQgfCBJMkNfQ1IyX05CWVRFUyB8IEkyQ19DUjJfUkVMT0FEIHwgSTJDX0NSMl9BVVRPRU5EIHwgKEkyQ19DUjJfUkRfV1JOICYgKHVpbnQzMl90KShSZXF1ZXN0ID4+ICgzMVVMIC0gSTJDX0NSMl9SRF9XUk5fUG9zKSkpIHwgSTJDX0NSMl9TVEFSVCB8IEkyQ19DUjJfU1RPUCAgfCBJMkNfQ1IyX1BFQ0JZVEUpKSwgXAotICAgICAgICAgICAgICh1aW50MzJfdCkoKCh1aW50MzJfdClEZXZBZGRyZXNzICYgSTJDX0NSMl9TQUREKSB8ICgoKHVpbnQzMl90KVNpemUgPDwgSTJDX0NSMl9OQllURVNfUG9zKSAmIEkyQ19DUjJfTkJZVEVTKSB8ICh1aW50MzJfdClNb2RlIHwgKHVpbnQzMl90KVJlcXVlc3QpKTsKKyAgTU9ESUZZX1JFRyhoc21idXMtPkluc3RhbmNlLT5DUjIsCisgICAgICAgICAgICAgKChJMkNfQ1IyX1NBREQgfCBJMkNfQ1IyX05CWVRFUyB8IEkyQ19DUjJfUkVMT0FEIHwgSTJDX0NSMl9BVVRPRU5EIHwgXAorICAgICAgICAgICAgICAgKEkyQ19DUjJfUkRfV1JOICYgKHVpbnQzMl90KShSZXF1ZXN0ID4+ICgzMVVMIC0gSTJDX0NSMl9SRF9XUk5fUG9zKSkpIHwgXAorICAgICAgICAgICAgICAgSTJDX0NSMl9TVEFSVCB8IEkyQ19DUjJfU1RPUCAgfCBJMkNfQ1IyX1BFQ0JZVEUpKSwgXAorICAgICAgICAgICAgICh1aW50MzJfdCkoKCh1aW50MzJfdClEZXZBZGRyZXNzICYgSTJDX0NSMl9TQUREKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQzMl90KVNpemUgPDwgSTJDX0NSMl9OQllURVNfUG9zKSAmIEkyQ19DUjJfTkJZVEVTKSB8ICh1aW50MzJfdClNb2RlIHwgKHVpbnQzMl90KVJlcXVlc3QpKTsKIH0KIAogLyoqCi0gICogQGJyaWVmICBDb252ZXJ0IFNNQlVTeCBPVEhFUl94eHggWGZlck9wdGlvbnMgdG8gZnVuY3Rpb25uYWwgWGZlck9wdGlvbnMuCisgICogQGJyaWVmICBDb252ZXJ0IFNNQlVTeCBPVEhFUl94eHggWGZlck9wdGlvbnMgdG8gZnVuY3Rpb25hbCBYZmVyT3B0aW9ucy4KICAgKiBAcGFyYW0gIGhzbWJ1cyBTTUJVUyBoYW5kbGUuCiAgICogQHJldHZhbCBOb25lCiAgICovCi1zdGF0aWMgdm9pZCBTTUJVU19Db252ZXJ0T3RoZXJYZmVyT3B0aW9ucyhzdHJ1Y3QgX19TTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMpCitzdGF0aWMgdm9pZCBTTUJVU19Db252ZXJ0T3RoZXJYZmVyT3B0aW9ucyhTTUJVU19IYW5kbGVUeXBlRGVmICpoc21idXMpCiB7CiAgIC8qIGlmIHVzZXIgc2V0IFhmZXJPcHRpb25zIHRvIFNNQlVTX09USEVSX0ZSQU1FX05PX1BFQyAgICovCiAgIC8qIGl0IHJlcXVlc3QgaW1wbGljaXRseSB0byBnZW5lcmF0ZSBhIHJlc3RhcnQgY29uZGl0aW9uICovCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF9zcGRpZnJ4LmMgYi9TcmMvc3RtMzJmN3h4X2hhbF9zcGRpZnJ4LmMKaW5kZXggMTVjMDNhYy4uMDM2YTlkOSAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfc3BkaWZyeC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3NwZGlmcnguYwpAQCAtOTMsNyArOTMsNyBAQAogCiAgIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgIFVTRV9IQUxfU1BESUZSWF9SRUdJU1RFUl9DQUxMQkFDS1Mgd2hlbiBzZXQgdG8gMQogICBhbGxvd3MgdGhlIHVzZXIgdG8gY29uZmlndXJlIGR5bmFtaWNhbGx5IHRoZSBkcml2ZXIgY2FsbGJhY2tzLgotICBVc2UgSEFMX1NQRElGUlhfUmVnaXN0ZXJDYWxsYmFjaygpIGZ1bnRpb24gdG8gcmVnaXN0ZXIgYW4gaW50ZXJydXB0IGNhbGxiYWNrLgorICBVc2UgSEFMX1NQRElGUlhfUmVnaXN0ZXJDYWxsYmFjaygpIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyIGFuIGludGVycnVwdCBjYWxsYmFjay4KIAogICBUaGUgSEFMX1NQRElGUlhfUmVnaXN0ZXJDYWxsYmFjaygpIGZ1bmN0aW9uIGFsbG93cyB0byByZWdpc3RlciB0aGUgZm9sbG93aW5nIGNhbGxiYWNrczoKICAgICAoKykgUnhIYWxmQ3BsdENhbGxiYWNrICA6IFNQRElGUlggRGF0YSBmbG93IGhhbGYgY29tcGxldGVkIGNhbGxiYWNrLgpAQCAtODQxLDcgKzg0MSw3IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfU1BESUZSWF9SZWNlaXZlRGF0YUZsb3dfSVQoU1BESUZSWF9IYW5kbGVUeXBlRGVmICpoc3BkaWYsIHVpbnQzMl90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSkKIHsKLSAgcmVnaXN0ZXIgdWludDMyX3QgY291bnQgPSBTUERJRlJYX1RJTUVPVVRfVkFMVUUgKiAoU3lzdGVtQ29yZUNsb2NrIC8gMjRVIC8gMTAwMFUpOworICB1aW50MzJfdCBjb3VudCA9IFNQRElGUlhfVElNRU9VVF9WQUxVRSAqIChTeXN0ZW1Db3JlQ2xvY2sgLyAyNFUgLyAxMDAwVSk7CiAKICAgY29uc3QgSEFMX1NQRElGUlhfU3RhdGVUeXBlRGVmIHRlbXBTdGF0ZSA9IGhzcGRpZi0+U3RhdGU7CiAKQEAgLTkyNiw3ICs5MjYsNyBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NQRElGUlhfUmVjZWl2ZUNvbnRyb2xGbG93X0lUKFNQRElGUlhfSGFuZGxlVHlwZURlZiAqaHNwZGlmLCB1aW50MzJfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpCiB7Ci0gIHJlZ2lzdGVyIHVpbnQzMl90IGNvdW50ID0gU1BESUZSWF9USU1FT1VUX1ZBTFVFICogKFN5c3RlbUNvcmVDbG9jayAvIDI0VSAvIDEwMDBVKTsKKyAgdWludDMyX3QgY291bnQgPSBTUERJRlJYX1RJTUVPVVRfVkFMVUUgKiAoU3lzdGVtQ29yZUNsb2NrIC8gMjRVIC8gMTAwMFUpOwogCiAgIGNvbnN0IEhBTF9TUERJRlJYX1N0YXRlVHlwZURlZiB0ZW1wU3RhdGUgPSBoc3BkaWYtPlN0YXRlOwogCkBAIC0xMDExLDcgKzEwMTEsNyBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NQRElGUlhfUmVjZWl2ZURhdGFGbG93X0RNQShTUERJRlJYX0hhbmRsZVR5cGVEZWYgKmhzcGRpZiwgdWludDMyX3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKQogewotICByZWdpc3RlciB1aW50MzJfdCBjb3VudCA9IFNQRElGUlhfVElNRU9VVF9WQUxVRSAqIChTeXN0ZW1Db3JlQ2xvY2sgLyAyNFUgLyAxMDAwVSk7CisgIHVpbnQzMl90IGNvdW50ID0gU1BESUZSWF9USU1FT1VUX1ZBTFVFICogKFN5c3RlbUNvcmVDbG9jayAvIDI0VSAvIDEwMDBVKTsKIAogICBjb25zdCBIQUxfU1BESUZSWF9TdGF0ZVR5cGVEZWYgdGVtcFN0YXRlID0gaHNwZGlmLT5TdGF0ZTsKIApAQCAtMTExMiw3ICsxMTEyLDcgQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUERJRlJYX1JlY2VpdmVDb250cm9sRmxvd19ETUEoU1BESUZSWF9IYW5kbGVUeXBlRGVmICpoc3BkaWYsIHVpbnQzMl90ICpwRGF0YSwgdWludDE2X3QgU2l6ZSkKIHsKLSAgcmVnaXN0ZXIgdWludDMyX3QgY291bnQgPSBTUERJRlJYX1RJTUVPVVRfVkFMVUUgKiAoU3lzdGVtQ29yZUNsb2NrIC8gMjRVIC8gMTAwMFUpOworICB1aW50MzJfdCBjb3VudCA9IFNQRElGUlhfVElNRU9VVF9WQUxVRSAqIChTeXN0ZW1Db3JlQ2xvY2sgLyAyNFUgLyAxMDAwVSk7CiAKICAgY29uc3QgSEFMX1NQRElGUlhfU3RhdGVUeXBlRGVmIHRlbXBTdGF0ZSA9IGhzcGRpZi0+U3RhdGU7CiAKZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3NwaS5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfc3BpLmMKaW5kZXggMmUxNGNlYS4uNjg0NjIxYyAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfc3BpLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfc3BpLmMKQEAgLTY1LDE2ICs2NSwxNiBAQAogICAgICAgICAgIFVzZSBGdW5jdGlvbnMgSEFMX1NQSV9SZWdpc3RlckNhbGxiYWNrKCkgdG8gcmVnaXN0ZXIgYW4gaW50ZXJydXB0IGNhbGxiYWNrLgogCiAgICAgICAgICAgRnVuY3Rpb24gSEFMX1NQSV9SZWdpc3RlckNhbGxiYWNrKCkgYWxsb3dzIHRvIHJlZ2lzdGVyIGZvbGxvd2luZyBjYWxsYmFja3M6Ci0gICAgICAgICAgICAoKykgVHhDcGx0Q2FsbGJhY2sgICAgICAgIDogU1BJIFR4IENvbXBsZXRlZCBjYWxsYmFjawotICAgICAgICAgICAgKCspIFJ4Q3BsdENhbGxiYWNrICAgICAgICA6IFNQSSBSeCBDb21wbGV0ZWQgY2FsbGJhY2sKLSAgICAgICAgICAgICgrKSBUeFJ4Q3BsdENhbGxiYWNrICAgICAgOiBTUEkgVHhSeCBDb21wbGV0ZWQgY2FsbGJhY2sKLSAgICAgICAgICAgICgrKSBUeEhhbGZDcGx0Q2FsbGJhY2sgICAgOiBTUEkgVHggSGFsZiBDb21wbGV0ZWQgY2FsbGJhY2sKLSAgICAgICAgICAgICgrKSBSeEhhbGZDcGx0Q2FsbGJhY2sgICAgOiBTUEkgUnggSGFsZiBDb21wbGV0ZWQgY2FsbGJhY2sKLSAgICAgICAgICAgICgrKSBUeFJ4SGFsZkNwbHRDYWxsYmFjayAgOiBTUEkgVHhSeCBIYWxmIENvbXBsZXRlZCBjYWxsYmFjawotICAgICAgICAgICAgKCspIEVycm9yQ2FsbGJhY2sgICAgICAgICA6IFNQSSBFcnJvciBjYWxsYmFjawotICAgICAgICAgICAgKCspIEFib3J0Q3BsdENhbGxiYWNrICAgICA6IFNQSSBBYm9ydCBjYWxsYmFjawotICAgICAgICAgICAgKCspIE1zcEluaXRDYWxsYmFjayAgICAgICA6IFNQSSBNc3AgSW5pdCBjYWxsYmFjawotICAgICAgICAgICAgKCspIE1zcERlSW5pdENhbGxiYWNrICAgICA6IFNQSSBNc3AgRGVJbml0IGNhbGxiYWNrCisgICAgICAgICAgICAoKyspIFR4Q3BsdENhbGxiYWNrICAgICAgICA6IFNQSSBUeCBDb21wbGV0ZWQgY2FsbGJhY2sKKyAgICAgICAgICAgICgrKykgUnhDcGx0Q2FsbGJhY2sgICAgICAgIDogU1BJIFJ4IENvbXBsZXRlZCBjYWxsYmFjaworICAgICAgICAgICAgKCsrKSBUeFJ4Q3BsdENhbGxiYWNrICAgICAgOiBTUEkgVHhSeCBDb21wbGV0ZWQgY2FsbGJhY2sKKyAgICAgICAgICAgICgrKykgVHhIYWxmQ3BsdENhbGxiYWNrICAgIDogU1BJIFR4IEhhbGYgQ29tcGxldGVkIGNhbGxiYWNrCisgICAgICAgICAgICAoKyspIFJ4SGFsZkNwbHRDYWxsYmFjayAgICA6IFNQSSBSeCBIYWxmIENvbXBsZXRlZCBjYWxsYmFjaworICAgICAgICAgICAgKCsrKSBUeFJ4SGFsZkNwbHRDYWxsYmFjayAgOiBTUEkgVHhSeCBIYWxmIENvbXBsZXRlZCBjYWxsYmFjaworICAgICAgICAgICAgKCsrKSBFcnJvckNhbGxiYWNrICAgICAgICAgOiBTUEkgRXJyb3IgY2FsbGJhY2sKKyAgICAgICAgICAgICgrKykgQWJvcnRDcGx0Q2FsbGJhY2sgICAgIDogU1BJIEFib3J0IGNhbGxiYWNrCisgICAgICAgICAgICAoKyspIE1zcEluaXRDYWxsYmFjayAgICAgICA6IFNQSSBNc3AgSW5pdCBjYWxsYmFjaworICAgICAgICAgICAgKCsrKSBNc3BEZUluaXRDYWxsYmFjayAgICAgOiBTUEkgTXNwIERlSW5pdCBjYWxsYmFjawogICAgICAgICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgYXMgcGFyYW1ldGVycyB0aGUgSEFMIHBlcmlwaGVyYWwgaGFuZGxlLCB0aGUgQ2FsbGJhY2sgSUQKICAgICAgICAgICBhbmQgYSBwb2ludGVyIHRvIHRoZSB1c2VyIGNhbGxiYWNrIGZ1bmN0aW9uLgogCkBAIC04NCwxNyArODQsMTggQEAKICAgICAgICAgICBIQUxfU1BJX1VuUmVnaXN0ZXJDYWxsYmFjayB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsCiAgICAgICAgICAgYW5kIHRoZSBDYWxsYmFjayBJRC4KICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0byByZXNldCBmb2xsb3dpbmcgY2FsbGJhY2tzOgotICAgICAgICAgICAgKCspIFR4Q3BsdENhbGxiYWNrICAgICAgICA6IFNQSSBUeCBDb21wbGV0ZWQgY2FsbGJhY2sKLSAgICAgICAgICAgICgrKSBSeENwbHRDYWxsYmFjayAgICAgICAgOiBTUEkgUnggQ29tcGxldGVkIGNhbGxiYWNrCi0gICAgICAgICAgICAoKykgVHhSeENwbHRDYWxsYmFjayAgICAgIDogU1BJIFR4UnggQ29tcGxldGVkIGNhbGxiYWNrCi0gICAgICAgICAgICAoKykgVHhIYWxmQ3BsdENhbGxiYWNrICAgIDogU1BJIFR4IEhhbGYgQ29tcGxldGVkIGNhbGxiYWNrCi0gICAgICAgICAgICAoKykgUnhIYWxmQ3BsdENhbGxiYWNrICAgIDogU1BJIFJ4IEhhbGYgQ29tcGxldGVkIGNhbGxiYWNrCi0gICAgICAgICAgICAoKykgVHhSeEhhbGZDcGx0Q2FsbGJhY2sgIDogU1BJIFR4UnggSGFsZiBDb21wbGV0ZWQgY2FsbGJhY2sKLSAgICAgICAgICAgICgrKSBFcnJvckNhbGxiYWNrICAgICAgICAgOiBTUEkgRXJyb3IgY2FsbGJhY2sKLSAgICAgICAgICAgICgrKSBBYm9ydENwbHRDYWxsYmFjayAgICAgOiBTUEkgQWJvcnQgY2FsbGJhY2sKLSAgICAgICAgICAgICgrKSBNc3BJbml0Q2FsbGJhY2sgICAgICAgOiBTUEkgTXNwIEluaXQgY2FsbGJhY2sKLSAgICAgICAgICAgICgrKSBNc3BEZUluaXRDYWxsYmFjayAgICAgOiBTUEkgTXNwIERlSW5pdCBjYWxsYmFjaworICAgICAgICAgICAgKCsrKSBUeENwbHRDYWxsYmFjayAgICAgICAgOiBTUEkgVHggQ29tcGxldGVkIGNhbGxiYWNrCisgICAgICAgICAgICAoKyspIFJ4Q3BsdENhbGxiYWNrICAgICAgICA6IFNQSSBSeCBDb21wbGV0ZWQgY2FsbGJhY2sKKyAgICAgICAgICAgICgrKykgVHhSeENwbHRDYWxsYmFjayAgICAgIDogU1BJIFR4UnggQ29tcGxldGVkIGNhbGxiYWNrCisgICAgICAgICAgICAoKyspIFR4SGFsZkNwbHRDYWxsYmFjayAgICA6IFNQSSBUeCBIYWxmIENvbXBsZXRlZCBjYWxsYmFjaworICAgICAgICAgICAgKCsrKSBSeEhhbGZDcGx0Q2FsbGJhY2sgICAgOiBTUEkgUnggSGFsZiBDb21wbGV0ZWQgY2FsbGJhY2sKKyAgICAgICAgICAgICgrKykgVHhSeEhhbGZDcGx0Q2FsbGJhY2sgIDogU1BJIFR4UnggSGFsZiBDb21wbGV0ZWQgY2FsbGJhY2sKKyAgICAgICAgICAgICgrKykgRXJyb3JDYWxsYmFjayAgICAgICAgIDogU1BJIEVycm9yIGNhbGxiYWNrCisgICAgICAgICAgICAoKyspIEFib3J0Q3BsdENhbGxiYWNrICAgICA6IFNQSSBBYm9ydCBjYWxsYmFjaworICAgICAgICAgICAgKCsrKSBNc3BJbml0Q2FsbGJhY2sgICAgICAgOiBTUEkgTXNwIEluaXQgY2FsbGJhY2sKKyAgICAgICAgICAgICgrKykgTXNwRGVJbml0Q2FsbGJhY2sgICAgIDogU1BJIE1zcCBEZUluaXQgY2FsbGJhY2sKIAorICAgICAgIFsuLl0KICAgICAgICBCeSBkZWZhdWx0LCBhZnRlciB0aGUgSEFMX1NQSV9Jbml0KCkgYW5kIHdoZW4gdGhlIHN0YXRlIGlzIEhBTF9TUElfU1RBVEVfUkVTRVQKICAgICAgICBhbGwgY2FsbGJhY2tzIGFyZSBzZXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgd2VhayBmdW5jdGlvbnM6CiAgICAgICAgZXhhbXBsZXMgSEFMX1NQSV9NYXN0ZXJUeENwbHRDYWxsYmFjaygpLCBIQUxfU1BJX01hc3RlclJ4Q3BsdENhbGxiYWNrKCkuCkBAIC0xMDQsNiArMTA1LDcgQEAKICAgICAgICBJZiBNc3BJbml0IG9yIE1zcERlSW5pdCBhcmUgbm90IG51bGwsIHRoZSBIQUxfU1BJX0luaXQoKS8gSEFMX1NQSV9EZUluaXQoKQogICAgICAgIGtlZXAgYW5kIHVzZSB0aGUgdXNlciBNc3BJbml0L01zcERlSW5pdCBjYWxsYmFja3MgKHJlZ2lzdGVyZWQgYmVmb3JlaGFuZCkgd2hhdGV2ZXIgdGhlIHN0YXRlLgogCisgICAgICAgWy4uXQogICAgICAgIENhbGxiYWNrcyBjYW4gYmUgcmVnaXN0ZXJlZC91bnJlZ2lzdGVyZWQgaW4gSEFMX1NQSV9TVEFURV9SRUFEWSBzdGF0ZSBvbmx5LgogICAgICAgIEV4Y2VwdGlvbiBkb25lIE1zcEluaXQvTXNwRGVJbml0IGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSByZWdpc3RlcmVkL3VucmVnaXN0ZXJlZAogICAgICAgIGluIEhBTF9TUElfU1RBVEVfUkVBRFkgb3IgSEFMX1NQSV9TVEFURV9SRVNFVCBzdGF0ZSwKQEAgLTExMiw3ICsxMTQsOCBAQAogICAgICAgIHVzaW5nIEhBTF9TUElfUmVnaXN0ZXJDYWxsYmFjaygpIGJlZm9yZSBjYWxsaW5nIEhBTF9TUElfRGVJbml0KCkKICAgICAgICBvciBIQUxfU1BJX0luaXQoKSBmdW5jdGlvbi4KIAotICAgICAgIFdoZW4gVGhlIGNvbXBpbGF0aW9uIGRlZmluZSBVU0VfSEFMX1BQUF9SRUdJU1RFUl9DQUxMQkFDS1MgaXMgc2V0IHRvIDAgb3IKKyAgICAgICBbLi5dCisgICAgICAgV2hlbiB0aGUgY29tcGlsYXRpb24gZGVmaW5lIFVTRV9IQUxfUFBQX1JFR0lTVEVSX0NBTExCQUNLUyBpcyBzZXQgdG8gMCBvcgogICAgICAgIG5vdCBkZWZpbmVkLCB0aGUgY2FsbGJhY2sgcmVnaXN0ZXJpbmcgZmVhdHVyZSBpcyBub3QgYXZhaWxhYmxlCiAgICAgICAgYW5kIHdlYWsgKHN1cmNoYXJnZWQpIGNhbGxiYWNrcyBhcmUgdXNlZC4KIApAQCAtMTI4LDcgKzEzMSw3IEBACiAgICAgICAgRGF0YVNpemUgPSBTUElfREFUQVNJWkVfOEJJVDoKICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICB8IDJMaW5lcyBGdWxsZHVwbGV4ICAgfCAgICAgMkxpbmVzIFJ4T25seSAgICB8ICAgICAgICAgMUxpbmUgICAgICAgIHwKLSAgICAgICB8IFByb2Nlc3MgfCBUcmFuZmVydCBtb2RlICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKKyAgICAgICB8IFByb2Nlc3MgfCBUcmFuc2ZlciBtb2RlICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICB8ICBNYXN0ZXIgIHwgIFNsYXZlICAgfCAgTWFzdGVyICAgfCAgU2xhdmUgICB8ICBNYXN0ZXIgICB8ICBTbGF2ZSAgIHwKICAgICAgICB8PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PXwKICAgICAgICB8ICAgIFQgICAgfCAgICAgUG9sbGluZyAgICB8IEZwY2xrLzQgIHwgRnBjbGsvOCAgfCAgICBOQSAgICAgfCAgICBOQSAgICB8ICAgIE5BICAgICB8ICAgTkEgICAgIHwKQEAgLTE1Myw3ICsxNTYsNyBAQAogICAgICAgIERhdGFTaXplID0gU1BJX0RBVEFTSVpFXzE2QklUOgogICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgMkxpbmVzIEZ1bGxkdXBsZXggICB8ICAgICAyTGluZXMgUnhPbmx5ICAgIHwgICAgICAgICAxTGluZSAgICAgICAgfAotICAgICAgIHwgUHJvY2VzcyB8IFRyYW5mZXJ0IG1vZGUgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorICAgICAgIHwgUHJvY2VzcyB8IFRyYW5zZmVyIG1vZGUgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAogICAgICAgIHwgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgIE1hc3RlciAgfCAgU2xhdmUgICB8ICBNYXN0ZXIgICB8ICBTbGF2ZSAgIHwgIE1hc3RlciAgIHwgIFNsYXZlICAgfAogICAgICAgIHw9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09fAogICAgICAgIHwgICAgVCAgICB8ICAgICBQb2xsaW5nICAgIHwgRnBjbGsvNCAgfCBGcGNsay84ICB8ICAgIE5BICAgICB8ICAgIE5BICAgIHwgICAgTkEgICAgIHwgICBOQSAgICAgfApAQCAtMjY5LDggKzI3Miw4IEBACiAgICovCiAKIC8qKiBAZGVmZ3JvdXAgU1BJX0V4cG9ydGVkX0Z1bmN0aW9uc19Hcm91cDEgSW5pdGlhbGl6YXRpb24gYW5kIGRlLWluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucwotICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMKLSAqCisgICogIEBicmllZiAgICBJbml0aWFsaXphdGlvbiBhbmQgQ29uZmlndXJhdGlvbiBmdW5jdGlvbnMKKyAgKgogQHZlcmJhdGltCiAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAjIyMjIyBJbml0aWFsaXphdGlvbiBhbmQgZGUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zICMjIyMjCkBAIC0zMzQsNiArMzM3LDI0IEBACiAgIHsKICAgICBhc3NlcnRfcGFyYW0oSVNfU1BJX0NQT0woaHNwaS0+SW5pdC5DTEtQb2xhcml0eSkpOwogICAgIGFzc2VydF9wYXJhbShJU19TUElfQ1BIQShoc3BpLT5Jbml0LkNMS1BoYXNlKSk7CisKKyAgICBpZiAoaHNwaS0+SW5pdC5Nb2RlID09IFNQSV9NT0RFX01BU1RFUikKKyAgICB7CisgICAgICBhc3NlcnRfcGFyYW0oSVNfU1BJX0JBVURSQVRFX1BSRVNDQUxFUihoc3BpLT5Jbml0LkJhdWRSYXRlUHJlc2NhbGVyKSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBCYXVkcmF0ZSBwcmVzY2FsZXIgbm90IHVzZSBpbiBNb3RvcmFvbGEgU2xhdmUgbW9kZS4gZm9yY2UgdG8gZGVmYXVsdCB2YWx1ZSAqLworICAgICAgaHNwaS0+SW5pdC5CYXVkUmF0ZVByZXNjYWxlciA9IFNQSV9CQVVEUkFURVBSRVNDQUxFUl8yOworICAgIH0KKyAgfQorICBlbHNlCisgIHsKKyAgICBhc3NlcnRfcGFyYW0oSVNfU1BJX0JBVURSQVRFX1BSRVNDQUxFUihoc3BpLT5Jbml0LkJhdWRSYXRlUHJlc2NhbGVyKSk7CisKKyAgICAvKiBGb3JjZSBwb2xhcml0eSBhbmQgcGhhc2UgdG8gVEkgcHJvdG9jYW9sIHJlcXVpcmVtZW50cyAqLworICAgIGhzcGktPkluaXQuQ0xLUG9sYXJpdHkgPSBTUElfUE9MQVJJVFlfTE9XOworICAgIGhzcGktPkluaXQuQ0xLUGhhc2UgICAgPSBTUElfUEhBU0VfMUVER0U7CiAgIH0KICNpZiAoVVNFX1NQSV9DUkMgIT0gMFUpCiAgIGFzc2VydF9wYXJhbShJU19TUElfQ1JDX0NBTENVTEFUSU9OKGhzcGktPkluaXQuQ1JDQ2FsY3VsYXRpb24pKTsKQEAgLTM5Nyw0NCArNDE4LDU2IEBACiAgICAgaHNwaS0+SW5pdC5DUkNDYWxjdWxhdGlvbiA9IFNQSV9DUkNDQUxDVUxBVElPTl9ESVNBQkxFOwogICB9CiAKLSAgLyogQWxpZ24gdGhlIENSQyBMZW5ndGggb24gdGhlIGRhdGEgc2l6ZSAqLwotICBpZiAoaHNwaS0+SW5pdC5DUkNMZW5ndGggPT0gU1BJX0NSQ19MRU5HVEhfREFUQVNJWkUpCi0gIHsKLSAgICAvKiBDUkMgTGVuZ3RoIGFsaWduZWQgb24gdGhlIGRhdGEgc2l6ZSA6IHZhbHVlIHNldCBieSBkZWZhdWx0ICovCi0gICAgaWYgKGhzcGktPkluaXQuRGF0YVNpemUgPiBTUElfREFUQVNJWkVfOEJJVCkKLSAgICB7Ci0gICAgICBoc3BpLT5Jbml0LkNSQ0xlbmd0aCA9IFNQSV9DUkNfTEVOR1RIXzE2QklUOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgaHNwaS0+SW5pdC5DUkNMZW5ndGggPSBTUElfQ1JDX0xFTkdUSF84QklUOwotICAgIH0KLSAgfQotCiAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU1BJeCBDUjEgJiBDUjIgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogICAvKiBDb25maWd1cmUgOiBTUEkgTW9kZSwgQ29tbXVuaWNhdGlvbiBNb2RlLCBDbG9jayBwb2xhcml0eSBhbmQgcGhhc2UsIE5TUyBtYW5hZ2VtZW50LAogICBDb21tdW5pY2F0aW9uIHNwZWVkLCBGaXJzdCBiaXQgYW5kIENSQyBjYWxjdWxhdGlvbiBzdGF0ZSAqLwotICBXUklURV9SRUcoaHNwaS0+SW5zdGFuY2UtPkNSMSwgKGhzcGktPkluaXQuTW9kZSB8IGhzcGktPkluaXQuRGlyZWN0aW9uIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoc3BpLT5Jbml0LkNMS1BvbGFyaXR5IHwgaHNwaS0+SW5pdC5DTEtQaGFzZSB8IChoc3BpLT5Jbml0Lk5TUyAmIFNQSV9DUjFfU1NNKSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHNwaS0+SW5pdC5CYXVkUmF0ZVByZXNjYWxlciB8IGhzcGktPkluaXQuRmlyc3RCaXQgIHwgaHNwaS0+SW5pdC5DUkNDYWxjdWxhdGlvbikpOworICBXUklURV9SRUcoaHNwaS0+SW5zdGFuY2UtPkNSMSwgKChoc3BpLT5Jbml0Lk1vZGUgJiAoU1BJX0NSMV9NU1RSIHwgU1BJX0NSMV9TU0kpKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhzcGktPkluaXQuRGlyZWN0aW9uICYgKFNQSV9DUjFfUlhPTkxZIHwgU1BJX0NSMV9CSURJTU9ERSkpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaHNwaS0+SW5pdC5DTEtQb2xhcml0eSAmIFNQSV9DUjFfQ1BPTCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoc3BpLT5Jbml0LkNMS1BoYXNlICYgU1BJX0NSMV9DUEhBKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhzcGktPkluaXQuTlNTICYgU1BJX0NSMV9TU00pIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaHNwaS0+SW5pdC5CYXVkUmF0ZVByZXNjYWxlciAmIFNQSV9DUjFfQlJfTXNrKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhzcGktPkluaXQuRmlyc3RCaXQgICYgU1BJX0NSMV9MU0JGSVJTVCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoc3BpLT5Jbml0LkNSQ0NhbGN1bGF0aW9uICYgU1BJX0NSMV9DUkNFTikpKTsKICNpZiAoVVNFX1NQSV9DUkMgIT0gMFUpCi0gIC8qIENvbmZpZ3VyZSA6IENSQyBMZW5ndGggKi8KLSAgaWYgKGhzcGktPkluaXQuQ1JDTGVuZ3RoID09IFNQSV9DUkNfTEVOR1RIXzE2QklUKQorICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU1BJeCBDUkNMIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgIGlmIChoc3BpLT5Jbml0LkNSQ0NhbGN1bGF0aW9uID09IFNQSV9DUkNDQUxDVUxBVElPTl9FTkFCTEUpCiAgIHsKLSAgICBoc3BpLT5JbnN0YW5jZS0+Q1IxIHw9IFNQSV9DUjFfQ1JDTDsKKyAgICAvKiBBbGlnbiB0aGUgQ1JDIExlbmd0aCBvbiB0aGUgZGF0YSBzaXplICovCisgICAgaWYgKGhzcGktPkluaXQuQ1JDTGVuZ3RoID09IFNQSV9DUkNfTEVOR1RIX0RBVEFTSVpFKQorICAgIHsKKyAgICAgIC8qIENSQyBMZW5ndGggYWxpZ25lZCBvbiB0aGUgZGF0YSBzaXplIDogdmFsdWUgc2V0IGJ5IGRlZmF1bHQgKi8KKyAgICAgIGlmIChoc3BpLT5Jbml0LkRhdGFTaXplID4gU1BJX0RBVEFTSVpFXzhCSVQpCisgICAgICB7CisgICAgICAgIGhzcGktPkluaXQuQ1JDTGVuZ3RoID0gU1BJX0NSQ19MRU5HVEhfMTZCSVQ7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIGhzcGktPkluaXQuQ1JDTGVuZ3RoID0gU1BJX0NSQ19MRU5HVEhfOEJJVDsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBDb25maWd1cmUgOiBDUkMgTGVuZ3RoICovCisgICAgaWYgKGhzcGktPkluaXQuQ1JDTGVuZ3RoID09IFNQSV9DUkNfTEVOR1RIXzE2QklUKQorICAgIHsKKyAgICAgIFNFVF9CSVQoaHNwaS0+SW5zdGFuY2UtPkNSMSwgU1BJX0NSMV9DUkNMKTsKKyAgICB9CiAgIH0KICNlbmRpZiAvKiBVU0VfU1BJX0NSQyAqLwogCiAgIC8qIENvbmZpZ3VyZSA6IE5TUyBtYW5hZ2VtZW50LCBUSSBNb2RlLCBOU1MgUHVsc2UsIERhdGEgc2l6ZSBhbmQgUnggRmlmbyB0aHJlc2hvbGQgKi8KLSAgV1JJVEVfUkVHKGhzcGktPkluc3RhbmNlLT5DUjIsICgoKGhzcGktPkluaXQuTlNTID4+IDE2VSkgJiBTUElfQ1IyX1NTT0UpIHwgaHNwaS0+SW5pdC5USU1vZGUgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhzcGktPkluaXQuTlNTUE1vZGUgfCBoc3BpLT5Jbml0LkRhdGFTaXplKSB8IGZyeHRoKTsKKyAgV1JJVEVfUkVHKGhzcGktPkluc3RhbmNlLT5DUjIsICgoKGhzcGktPkluaXQuTlNTID4+IDE2VSkgJiBTUElfQ1IyX1NTT0UpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaHNwaS0+SW5pdC5USU1vZGUgJiBTUElfQ1IyX0ZSRikgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoc3BpLT5Jbml0Lk5TU1BNb2RlICYgU1BJX0NSMl9OU1NQKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhzcGktPkluaXQuRGF0YVNpemUgJiBTUElfQ1IyX0RTX01zaykgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmcnh0aCAmIFNQSV9DUjJfRlJYVEgpKSk7CiAKICNpZiAoVVNFX1NQSV9DUkMgIT0gMFUpCiAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTUEl4IENSQ1BPTFkgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0qLwogICAvKiBDb25maWd1cmUgOiBDUkMgUG9seW5vbWlhbCAqLwogICBpZiAoaHNwaS0+SW5pdC5DUkNDYWxjdWxhdGlvbiA9PSBTUElfQ1JDQ0FMQ1VMQVRJT05fRU5BQkxFKQogICB7Ci0gICAgV1JJVEVfUkVHKGhzcGktPkluc3RhbmNlLT5DUkNQUiwgaHNwaS0+SW5pdC5DUkNQb2x5bm9taWFsKTsKKyAgICBXUklURV9SRUcoaHNwaS0+SW5zdGFuY2UtPkNSQ1BSLCAoaHNwaS0+SW5pdC5DUkNQb2x5bm9taWFsICYgU1BJX0NSQ1BSX0NSQ1BPTFlfTXNrKSk7CiAgIH0KICNlbmRpZiAvKiBVU0VfU1BJX0NSQyAqLwogCkBAIC01MzUsNyArNTY4LDggQEAKICAgKiBAcGFyYW0gIHBDYWxsYmFjayBwb2ludGVyIHRvIHRoZSBDYWxsYmFjayBmdW5jdGlvbgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NQSV9SZWdpc3RlckNhbGxiYWNrKFNQSV9IYW5kbGVUeXBlRGVmICpoc3BpLCBIQUxfU1BJX0NhbGxiYWNrSURUeXBlRGVmIENhbGxiYWNrSUQsIHBTUElfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUElfUmVnaXN0ZXJDYWxsYmFjayhTUElfSGFuZGxlVHlwZURlZiAqaHNwaSwgSEFMX1NQSV9DYWxsYmFja0lEVHlwZURlZiBDYWxsYmFja0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBTUElfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogCkBAIC03NDUsOCArNzc5LDggQEAKICAgKi8KIAogLyoqIEBkZWZncm91cCBTUElfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMiBJTyBvcGVyYXRpb24gZnVuY3Rpb25zCi0gKiAgQGJyaWVmICAgRGF0YSB0cmFuc2ZlcnMgZnVuY3Rpb25zCi0gKgorICAqICBAYnJpZWYgICBEYXRhIHRyYW5zZmVycyBmdW5jdGlvbnMKKyAgKgogQHZlcmJhdGltCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICMjIyMjIElPIG9wZXJhdGlvbiBmdW5jdGlvbnMgIyMjIyMKQEAgLTgzMSw2ICs4NjUsOCBAQAogICAvKiBDb25maWd1cmUgY29tbXVuaWNhdGlvbiBkaXJlY3Rpb24gOiAxTGluZSAqLwogICBpZiAoaHNwaS0+SW5pdC5EaXJlY3Rpb24gPT0gU1BJX0RJUkVDVElPTl8xTElORSkKICAgeworICAgIC8qIERpc2FibGUgU1BJIFBlcmlwaGVyYWwgYmVmb3JlIHNldCAxTGluZSBkaXJlY3Rpb24gKEJJRElPRSBiaXQpICovCisgICAgX19IQUxfU1BJX0RJU0FCTEUoaHNwaSk7CiAgICAgU1BJXzFMSU5FX1RYKGhzcGkpOwogICB9CiAKQEAgLTk3MSw2ICsxMDA3LDkgQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUElfUmVjZWl2ZShTUElfSGFuZGxlVHlwZURlZiAqaHNwaSwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQzMl90IFRpbWVvdXQpCiB7CisjaWYgKFVTRV9TUElfQ1JDICE9IDBVKQorICBfX0lPIHVpbnQzMl90IHRtcHJlZyA9IDBVOworI2VuZGlmIC8qIFVTRV9TUElfQ1JDICovCiAgIHVpbnQzMl90IHRpY2tzdGFydDsKICAgSEFMX1N0YXR1c1R5cGVEZWYgZXJyb3Jjb2RlID0gSEFMX09LOwogCkBAIC0xMDM4LDYgKzEwNzcsOCBAQAogICAvKiBDb25maWd1cmUgY29tbXVuaWNhdGlvbiBkaXJlY3Rpb246IDFMaW5lICovCiAgIGlmIChoc3BpLT5Jbml0LkRpcmVjdGlvbiA9PSBTUElfRElSRUNUSU9OXzFMSU5FKQogICB7CisgICAgLyogRGlzYWJsZSBTUEkgUGVyaXBoZXJhbCBiZWZvcmUgc2V0IDFMaW5lIGRpcmVjdGlvbiAoQklESU9FIGJpdCkgKi8KKyAgICBfX0hBTF9TUElfRElTQUJMRShoc3BpKTsKICAgICBTUElfMUxJTkVfUlgoaHNwaSk7CiAgIH0KIApAQCAtMTEzNSwxMiArMTE3NiwxNiBAQAogICAgIGlmIChoc3BpLT5Jbml0LkRhdGFTaXplID09IFNQSV9EQVRBU0laRV8xNkJJVCkKICAgICB7CiAgICAgICAvKiBSZWFkIDE2Yml0IENSQyAqLwotICAgICAgUkVBRF9SRUcoaHNwaS0+SW5zdGFuY2UtPkRSKTsKKyAgICAgIHRtcHJlZyA9IFJFQURfUkVHKGhzcGktPkluc3RhbmNlLT5EUik7CisgICAgICAvKiBUbyBhdm9pZCBHQ0Mgd2FybmluZyAqLworICAgICAgVU5VU0VEKHRtcHJlZyk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAvKiBSZWFkIDhiaXQgQ1JDICovCi0gICAgICBSRUFEX1JFRygqKF9fSU8gdWludDhfdCAqKSZoc3BpLT5JbnN0YW5jZS0+RFIpOworICAgICAgdG1wcmVnID0gUkVBRF9SRUcoKihfX0lPIHVpbnQ4X3QgKikmaHNwaS0+SW5zdGFuY2UtPkRSKTsKKyAgICAgIC8qIFRvIGF2b2lkIEdDQyB3YXJuaW5nICovCisgICAgICBVTlVTRUQodG1wcmVnKTsKIAogICAgICAgaWYgKChoc3BpLT5Jbml0LkRhdGFTaXplID09IFNQSV9EQVRBU0laRV84QklUKSAmJiAoaHNwaS0+SW5pdC5DUkNMZW5ndGggPT0gU1BJX0NSQ19MRU5HVEhfMTZCSVQpKQogICAgICAgewpAQCAtMTE1Miw3ICsxMTk3LDkgQEAKICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgICAgIC8qIFJlYWQgOGJpdCBDUkMgYWdhaW4gaW4gY2FzZSBvZiAxNmJpdCBDUkMgaW4gOGJpdCBEYXRhIG1vZGUgKi8KLSAgICAgICAgUkVBRF9SRUcoKihfX0lPIHVpbnQ4X3QgKikmaHNwaS0+SW5zdGFuY2UtPkRSKTsKKyAgICAgICAgdG1wcmVnID0gUkVBRF9SRUcoKihfX0lPIHVpbnQ4X3QgKikmaHNwaS0+SW5zdGFuY2UtPkRSKTsKKyAgICAgICAgLyogVG8gYXZvaWQgR0NDIHdhcm5pbmcgKi8KKyAgICAgICAgVU5VU0VEKHRtcHJlZyk7CiAgICAgICB9CiAgICAgfQogICB9CkBAIC0xMTk3LDYgKzEyNDQsOSBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NQSV9UcmFuc21pdFJlY2VpdmUoU1BJX0hhbmRsZVR5cGVEZWYgKmhzcGksIHVpbnQ4X3QgKnBUeERhdGEsIHVpbnQ4X3QgKnBSeERhdGEsIHVpbnQxNl90IFNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KQogeworI2lmIChVU0VfU1BJX0NSQyAhPSAwVSkKKyAgX19JTyB1aW50MzJfdCB0bXByZWcgPSAwVTsKKyNlbmRpZiAvKiBVU0VfU1BJX0NSQyAqLwogICB1aW50MTZfdCAgICAgICAgICAgICBpbml0aWFsX1R4WGZlckNvdW50OwogICB1aW50MTZfdCAgICAgICAgICAgICBpbml0aWFsX1J4WGZlckNvdW50OwogICB1aW50MzJfdCAgICAgICAgICAgICB0bXBfbW9kZTsKQEAgLTE0MzgsMTIgKzE0ODgsMTYgQEAKICAgICBpZiAoaHNwaS0+SW5pdC5EYXRhU2l6ZSA9PSBTUElfREFUQVNJWkVfMTZCSVQpCiAgICAgewogICAgICAgLyogUmVhZCAxNmJpdCBDUkMgKi8KLSAgICAgIFJFQURfUkVHKGhzcGktPkluc3RhbmNlLT5EUik7CisgICAgICB0bXByZWcgPSBSRUFEX1JFRyhoc3BpLT5JbnN0YW5jZS0+RFIpOworICAgICAgLyogVG8gYXZvaWQgR0NDIHdhcm5pbmcgKi8KKyAgICAgIFVOVVNFRCh0bXByZWcpOwogICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAgLyogUmVhZCA4Yml0IENSQyAqLwotICAgICAgUkVBRF9SRUcoKihfX0lPIHVpbnQ4X3QgKikmaHNwaS0+SW5zdGFuY2UtPkRSKTsKKyAgICAgIHRtcHJlZyA9IFJFQURfUkVHKCooX19JTyB1aW50OF90ICopJmhzcGktPkluc3RhbmNlLT5EUik7CisgICAgICAvKiBUbyBhdm9pZCBHQ0Mgd2FybmluZyAqLworICAgICAgVU5VU0VEKHRtcHJlZyk7CiAKICAgICAgIGlmIChoc3BpLT5Jbml0LkNSQ0xlbmd0aCA9PSBTUElfQ1JDX0xFTkdUSF8xNkJJVCkKICAgICAgIHsKQEAgLTE0NTUsNyArMTUwOSw5IEBACiAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgICAgICAvKiBSZWFkIDhiaXQgQ1JDIGFnYWluIGluIGNhc2Ugb2YgMTZiaXQgQ1JDIGluIDhiaXQgRGF0YSBtb2RlICovCi0gICAgICAgIFJFQURfUkVHKCooX19JTyB1aW50OF90ICopJmhzcGktPkluc3RhbmNlLT5EUik7CisgICAgICAgIHRtcHJlZyA9IFJFQURfUkVHKCooX19JTyB1aW50OF90ICopJmhzcGktPkluc3RhbmNlLT5EUik7CisgICAgICAgIC8qIFRvIGF2b2lkIEdDQyB3YXJuaW5nICovCisgICAgICAgIFVOVVNFRCh0bXByZWcpOwogICAgICAgfQogICAgIH0KICAgfQpAQCAtMTU0MCw2ICsxNTk2LDggQEAKICAgLyogQ29uZmlndXJlIGNvbW11bmljYXRpb24gZGlyZWN0aW9uIDogMUxpbmUgKi8KICAgaWYgKGhzcGktPkluaXQuRGlyZWN0aW9uID09IFNQSV9ESVJFQ1RJT05fMUxJTkUpCiAgIHsKKyAgICAvKiBEaXNhYmxlIFNQSSBQZXJpcGhlcmFsIGJlZm9yZSBzZXQgMUxpbmUgZGlyZWN0aW9uIChCSURJT0UgYml0KSAqLworICAgIF9fSEFMX1NQSV9ESVNBQkxFKGhzcGkpOwogICAgIFNQSV8xTElORV9UWChoc3BpKTsKICAgfQogCkBAIC0xNjMxLDYgKzE2ODksOCBAQAogICAvKiBDb25maWd1cmUgY29tbXVuaWNhdGlvbiBkaXJlY3Rpb24gOiAxTGluZSAqLwogICBpZiAoaHNwaS0+SW5pdC5EaXJlY3Rpb24gPT0gU1BJX0RJUkVDVElPTl8xTElORSkKICAgeworICAgIC8qIERpc2FibGUgU1BJIFBlcmlwaGVyYWwgYmVmb3JlIHNldCAxTGluZSBkaXJlY3Rpb24gKEJJRElPRSBiaXQpICovCisgICAgX19IQUxfU1BJX0RJU0FCTEUoaHNwaSk7CiAgICAgU1BJXzFMSU5FX1JYKGhzcGkpOwogICB9CiAKQEAgLTE4MzEsNiArMTg5MSw4IEBACiAgIC8qIENvbmZpZ3VyZSBjb21tdW5pY2F0aW9uIGRpcmVjdGlvbiA6IDFMaW5lICovCiAgIGlmIChoc3BpLT5Jbml0LkRpcmVjdGlvbiA9PSBTUElfRElSRUNUSU9OXzFMSU5FKQogICB7CisgICAgLyogRGlzYWJsZSBTUEkgUGVyaXBoZXJhbCBiZWZvcmUgc2V0IDFMaW5lIGRpcmVjdGlvbiAoQklESU9FIGJpdCkgKi8KKyAgICBfX0hBTF9TUElfRElTQUJMRShoc3BpKTsKICAgICBTUElfMUxJTkVfVFgoaHNwaSk7CiAgIH0KIApAQCAtMTg3Miw3ICsxOTM0LDggQEAKICAgfQogCiAgIC8qIEVuYWJsZSB0aGUgVHggRE1BIFN0cmVhbS9DaGFubmVsICovCi0gIGlmIChIQUxfT0sgIT0gSEFMX0RNQV9TdGFydF9JVChoc3BpLT5oZG1hdHgsICh1aW50MzJfdCloc3BpLT5wVHhCdWZmUHRyLCAodWludDMyX3QpJmhzcGktPkluc3RhbmNlLT5EUiwgaHNwaS0+VHhYZmVyQ291bnQpKQorICBpZiAoSEFMX09LICE9IEhBTF9ETUFfU3RhcnRfSVQoaHNwaS0+aGRtYXR4LCAodWludDMyX3QpaHNwaS0+cFR4QnVmZlB0ciwgKHVpbnQzMl90KSZoc3BpLT5JbnN0YW5jZS0+RFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoc3BpLT5UeFhmZXJDb3VudCkpCiAgIHsKICAgICAvKiBVcGRhdGUgU1BJIGVycm9yIGNvZGUgKi8KICAgICBTRVRfQklUKGhzcGktPkVycm9yQ29kZSwgSEFMX1NQSV9FUlJPUl9ETUEpOwpAQCAtMTk2MCw2ICsyMDIzLDggQEAKICAgLyogQ29uZmlndXJlIGNvbW11bmljYXRpb24gZGlyZWN0aW9uIDogMUxpbmUgKi8KICAgaWYgKGhzcGktPkluaXQuRGlyZWN0aW9uID09IFNQSV9ESVJFQ1RJT05fMUxJTkUpCiAgIHsKKyAgICAvKiBEaXNhYmxlIFNQSSBQZXJpcGhlcmFsIGJlZm9yZSBzZXQgMUxpbmUgZGlyZWN0aW9uIChCSURJT0UgYml0KSAqLworICAgIF9fSEFMX1NQSV9ESVNBQkxFKGhzcGkpOwogICAgIFNQSV8xTElORV9SWChoc3BpKTsKICAgfQogCkBAIC0yMDE0LDcgKzIwNzksOCBAQAogICBoc3BpLT5oZG1hcngtPlhmZXJBYm9ydENhbGxiYWNrID0gTlVMTDsKIAogICAvKiBFbmFibGUgdGhlIFJ4IERNQSBTdHJlYW0vQ2hhbm5lbCAgKi8KLSAgaWYgKEhBTF9PSyAhPSBIQUxfRE1BX1N0YXJ0X0lUKGhzcGktPmhkbWFyeCwgKHVpbnQzMl90KSZoc3BpLT5JbnN0YW5jZS0+RFIsICh1aW50MzJfdCloc3BpLT5wUnhCdWZmUHRyLCBoc3BpLT5SeFhmZXJDb3VudCkpCisgIGlmIChIQUxfT0sgIT0gSEFMX0RNQV9TdGFydF9JVChoc3BpLT5oZG1hcngsICh1aW50MzJfdCkmaHNwaS0+SW5zdGFuY2UtPkRSLCAodWludDMyX3QpaHNwaS0+cFJ4QnVmZlB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhzcGktPlJ4WGZlckNvdW50KSkKICAgewogICAgIC8qIFVwZGF0ZSBTUEkgZXJyb3IgY29kZSAqLwogICAgIFNFVF9CSVQoaHNwaS0+RXJyb3JDb2RlLCBIQUxfU1BJX0VSUk9SX0RNQSk7CkBAIC0yMTgxLDcgKzIyNDcsOCBAQAogICBoc3BpLT5oZG1hcngtPlhmZXJBYm9ydENhbGxiYWNrID0gTlVMTDsKIAogICAvKiBFbmFibGUgdGhlIFJ4IERNQSBTdHJlYW0vQ2hhbm5lbCAgKi8KLSAgaWYgKEhBTF9PSyAhPSBIQUxfRE1BX1N0YXJ0X0lUKGhzcGktPmhkbWFyeCwgKHVpbnQzMl90KSZoc3BpLT5JbnN0YW5jZS0+RFIsICh1aW50MzJfdCloc3BpLT5wUnhCdWZmUHRyLCBoc3BpLT5SeFhmZXJDb3VudCkpCisgIGlmIChIQUxfT0sgIT0gSEFMX0RNQV9TdGFydF9JVChoc3BpLT5oZG1hcngsICh1aW50MzJfdCkmaHNwaS0+SW5zdGFuY2UtPkRSLCAodWludDMyX3QpaHNwaS0+cFJ4QnVmZlB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhzcGktPlJ4WGZlckNvdW50KSkKICAgewogICAgIC8qIFVwZGF0ZSBTUEkgZXJyb3IgY29kZSAqLwogICAgIFNFVF9CSVQoaHNwaS0+RXJyb3JDb2RlLCBIQUxfU1BJX0VSUk9SX0RNQSk7CkBAIC0yMjAyLDcgKzIyNjksOCBAQAogICBoc3BpLT5oZG1hdHgtPlhmZXJBYm9ydENhbGxiYWNrICAgID0gTlVMTDsKIAogICAvKiBFbmFibGUgdGhlIFR4IERNQSBTdHJlYW0vQ2hhbm5lbCAgKi8KLSAgaWYgKEhBTF9PSyAhPSBIQUxfRE1BX1N0YXJ0X0lUKGhzcGktPmhkbWF0eCwgKHVpbnQzMl90KWhzcGktPnBUeEJ1ZmZQdHIsICh1aW50MzJfdCkmaHNwaS0+SW5zdGFuY2UtPkRSLCBoc3BpLT5UeFhmZXJDb3VudCkpCisgIGlmIChIQUxfT0sgIT0gSEFMX0RNQV9TdGFydF9JVChoc3BpLT5oZG1hdHgsICh1aW50MzJfdCloc3BpLT5wVHhCdWZmUHRyLCAodWludDMyX3QpJmhzcGktPkluc3RhbmNlLT5EUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhzcGktPlR4WGZlckNvdW50KSkKICAgewogICAgIC8qIFVwZGF0ZSBTUEkgZXJyb3IgY29kZSAqLwogICAgIFNFVF9CSVQoaHNwaS0+RXJyb3JDb2RlLCBIQUxfU1BJX0VSUk9SX0RNQSk7CkBAIC0yMjQyLDExICsyMzEwLDEyIEBACiAgICogICAgICAgICAgIC0gU2V0IGhhbmRsZSBTdGF0ZSB0byBSRUFEWQogICAqIEBub3RlICAgVGhpcyBwcm9jZWR1cmUgaXMgZXhlY3V0ZWQgaW4gYmxvY2tpbmcgbW9kZSA6IHdoZW4gZXhpdGluZyBmdW5jdGlvbiwgQWJvcnQgaXMgY29uc2lkZXJlZCBhcyBjb21wbGV0ZWQuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCi0qLworICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1NQSV9BYm9ydChTUElfSGFuZGxlVHlwZURlZiAqaHNwaSkKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgZXJyb3Jjb2RlOwotICBfX0lPIHVpbnQzMl90IGNvdW50LCByZXNldGNvdW50OworICBfX0lPIHVpbnQzMl90IGNvdW50OworICBfX0lPIHVpbnQzMl90IHJlc2V0Y291bnQ7CiAKICAgLyogSW5pdGlhbGl6ZWQgbG9jYWwgdmFyaWFibGUgICovCiAgIGVycm9yY29kZSA9IEhBTF9PSzsKQEAgLTIyNjksOCArMjMzOCw3IEBACiAgICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICAgY291bnQtLTsKLSAgICB9Ci0gICAgd2hpbGUgKGhzcGktPlN0YXRlICE9IEhBTF9TUElfU1RBVEVfQUJPUlQpOworICAgIH0gd2hpbGUgKGhzcGktPlN0YXRlICE9IEhBTF9TUElfU1RBVEVfQUJPUlQpOwogICAgIC8qIFJlc2V0IFRpbWVvdXQgQ291bnRlciAqLwogICAgIGNvdW50ID0gcmVzZXRjb3VudDsKICAgfQpAQCAtMjI4Nyw4ICsyMzU1LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBjb3VudC0tOwotICAgIH0KLSAgICB3aGlsZSAoaHNwaS0+U3RhdGUgIT0gSEFMX1NQSV9TVEFURV9BQk9SVCk7CisgICAgfSB3aGlsZSAoaHNwaS0+U3RhdGUgIT0gSEFMX1NQSV9TVEFURV9BQk9SVCk7CiAgICAgLyogUmVzZXQgVGltZW91dCBDb3VudGVyICovCiAgICAgY291bnQgPSByZXNldGNvdW50OwogICB9CkBAIC0yNDAzLDEyICsyNDcwLDEzIEBACiAgICogQG5vdGUgICBUaGlzIHByb2NlZHVyZSBpcyBleGVjdXRlZCBpbiBJbnRlcnJ1cHQgbW9kZSwgbWVhbmluZyB0aGF0IGFib3J0IHByb2NlZHVyZSBjb3VsZCBiZQogICAqICAgICAgICAgY29uc2lkZXJlZCBhcyBjb21wbGV0ZWQgb25seSB3aGVuIHVzZXIgYWJvcnQgY29tcGxldGUgY2FsbGJhY2sgaXMgZXhlY3V0ZWQgKG5vdCB3aGVuIGV4aXRpbmcgZnVuY3Rpb24pLgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwotKi8KKyAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9TUElfQWJvcnRfSVQoU1BJX0hhbmRsZVR5cGVEZWYgKmhzcGkpCiB7CiAgIEhBTF9TdGF0dXNUeXBlRGVmIGVycm9yY29kZTsKICAgdWludDMyX3QgYWJvcnRjcGx0IDsKLSAgX19JTyB1aW50MzJfdCBjb3VudCwgcmVzZXRjb3VudDsKKyAgX19JTyB1aW50MzJfdCBjb3VudDsKKyAgX19JTyB1aW50MzJfdCByZXNldGNvdW50OwogCiAgIC8qIEluaXRpYWxpemVkIGxvY2FsIHZhcmlhYmxlICAqLwogICBlcnJvcmNvZGUgPSBIQUxfT0s7CkBAIC0yNDMyLDggKzI1MDAsNyBAQAogICAgICAgICBicmVhazsKICAgICAgIH0KICAgICAgIGNvdW50LS07Ci0gICAgfQotICAgIHdoaWxlIChoc3BpLT5TdGF0ZSAhPSBIQUxfU1BJX1NUQVRFX0FCT1JUKTsKKyAgICB9IHdoaWxlIChoc3BpLT5TdGF0ZSAhPSBIQUxfU1BJX1NUQVRFX0FCT1JUKTsKICAgICAvKiBSZXNldCBUaW1lb3V0IENvdW50ZXIgKi8KICAgICBjb3VudCA9IHJlc2V0Y291bnQ7CiAgIH0KQEAgLTI0NTAsOCArMjUxNyw3IEBACiAgICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICAgY291bnQtLTsKLSAgICB9Ci0gICAgd2hpbGUgKGhzcGktPlN0YXRlICE9IEhBTF9TUElfU1RBVEVfQUJPUlQpOworICAgIH0gd2hpbGUgKGhzcGktPlN0YXRlICE9IEhBTF9TUElfU1RBVEVfQUJPUlQpOwogICAgIC8qIFJlc2V0IFRpbWVvdXQgQ291bnRlciAqLwogICAgIGNvdW50ID0gcmVzZXRjb3VudDsKICAgfQpAQCAtMjY2Nyw3ICsyNzMzLDggQEAKICAgfQogCiAgIC8qIFNQSSBpbiBFcnJvciBUcmVhdG1lbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotICBpZiAoKChTUElfQ0hFQ0tfRkxBRyhpdGZsYWcsIFNQSV9GTEFHX01PREYpICE9IFJFU0VUKSB8fCAoU1BJX0NIRUNLX0ZMQUcoaXRmbGFnLCBTUElfRkxBR19PVlIpICE9IFJFU0VUKSB8fCAoU1BJX0NIRUNLX0ZMQUcoaXRmbGFnLCBTUElfRkxBR19GUkUpICE9IFJFU0VUKSkgJiYgKFNQSV9DSEVDS19JVF9TT1VSQ0UoaXRzb3VyY2UsIFNQSV9JVF9FUlIpICE9IFJFU0VUKSkKKyAgaWYgKCgoU1BJX0NIRUNLX0ZMQUcoaXRmbGFnLCBTUElfRkxBR19NT0RGKSAhPSBSRVNFVCkgfHwgKFNQSV9DSEVDS19GTEFHKGl0ZmxhZywgU1BJX0ZMQUdfT1ZSKSAhPSBSRVNFVCkKKyAgICAgICB8fCAoU1BJX0NIRUNLX0ZMQUcoaXRmbGFnLCBTUElfRkxBR19GUkUpICE9IFJFU0VUKSkgJiYgKFNQSV9DSEVDS19JVF9TT1VSQ0UoaXRzb3VyY2UsIFNQSV9JVF9FUlIpICE9IFJFU0VUKSkKICAgewogICAgIC8qIFNQSSBPdmVycnVuIGVycm9yIGludGVycnVwdCBvY2N1cnJlZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgICBpZiAoU1BJX0NIRUNLX0ZMQUcoaXRmbGFnLCBTUElfRkxBR19PVlIpICE9IFJFU0VUKQpAQCAtMjk5OSw2ICszMDY2LDkgQEAKIHsKICAgU1BJX0hhbmRsZVR5cGVEZWYgKmhzcGkgPSAoU1BJX0hhbmRsZVR5cGVEZWYgKikoKChETUFfSGFuZGxlVHlwZURlZiAqKWhkbWEpLT5QYXJlbnQpOyAvKiBEZXJvZ2F0aW9uIE1JU1JBQzIwMTItUnVsZS0xMS41ICovCiAgIHVpbnQzMl90IHRpY2tzdGFydDsKKyNpZiAoVVNFX1NQSV9DUkMgIT0gMFUpCisgIF9fSU8gdWludDMyX3QgdG1wcmVnID0gMFU7CisjZW5kaWYgLyogVVNFX1NQSV9DUkMgKi8KIAogICAvKiBJbml0IHRpY2tzdGFydCBmb3IgdGltZW91dCBtYW5hZ2VtZW50Ki8KICAgdGlja3N0YXJ0ID0gSEFMX0dldFRpY2soKTsKQEAgLTMwMjMsMTIgKzMwOTMsMTYgQEAKICAgICAgIGlmIChoc3BpLT5Jbml0LkRhdGFTaXplID4gU1BJX0RBVEFTSVpFXzhCSVQpCiAgICAgICB7CiAgICAgICAgIC8qIFJlYWQgMTZiaXQgQ1JDICovCi0gICAgICAgIFJFQURfUkVHKGhzcGktPkluc3RhbmNlLT5EUik7CisgICAgICAgIHRtcHJlZyA9IFJFQURfUkVHKGhzcGktPkluc3RhbmNlLT5EUik7CisgICAgICAgIC8qIFRvIGF2b2lkIEdDQyB3YXJuaW5nICovCisgICAgICAgIFVOVVNFRCh0bXByZWcpOwogICAgICAgfQogICAgICAgZWxzZQogICAgICAgewogICAgICAgICAvKiBSZWFkIDhiaXQgQ1JDICovCi0gICAgICAgIFJFQURfUkVHKCooX19JTyB1aW50OF90ICopJmhzcGktPkluc3RhbmNlLT5EUik7CisgICAgICAgIHRtcHJlZyA9IFJFQURfUkVHKCooX19JTyB1aW50OF90ICopJmhzcGktPkluc3RhbmNlLT5EUik7CisgICAgICAgIC8qIFRvIGF2b2lkIEdDQyB3YXJuaW5nICovCisgICAgICAgIFVOVVNFRCh0bXByZWcpOwogCiAgICAgICAgIGlmIChoc3BpLT5Jbml0LkNSQ0xlbmd0aCA9PSBTUElfQ1JDX0xFTkdUSF8xNkJJVCkKICAgICAgICAgewpAQCAtMzAzOCwxNCArMzExMiwyNSBAQAogICAgICAgICAgICAgU0VUX0JJVChoc3BpLT5FcnJvckNvZGUsIEhBTF9TUElfRVJST1JfQ1JDKTsKICAgICAgICAgICB9CiAgICAgICAgICAgLyogUmVhZCA4Yml0IENSQyBhZ2FpbiBpbiBjYXNlIG9mIDE2Yml0IENSQyBpbiA4Yml0IERhdGEgbW9kZSAqLwotICAgICAgICAgIFJFQURfUkVHKCooX19JTyB1aW50OF90ICopJmhzcGktPkluc3RhbmNlLT5EUik7CisgICAgICAgICAgdG1wcmVnID0gUkVBRF9SRUcoKihfX0lPIHVpbnQ4X3QgKikmaHNwaS0+SW5zdGFuY2UtPkRSKTsKKyAgICAgICAgICAvKiBUbyBhdm9pZCBHQ0Mgd2FybmluZyAqLworICAgICAgICAgIFVOVVNFRCh0bXByZWcpOwogICAgICAgICB9CiAgICAgICB9CiAgICAgfQogI2VuZGlmIC8qIFVTRV9TUElfQ1JDICovCiAKLSAgICAvKiBEaXNhYmxlIFJ4L1R4IERNQSBSZXF1ZXN0IChkb25lIGJ5IGRlZmF1bHQgdG8gaGFuZGxlIHRoZSBjYXNlIG1hc3RlciByeCBkaXJlY3Rpb24gMiBsaW5lcykgKi8KLSAgICBDTEVBUl9CSVQoaHNwaS0+SW5zdGFuY2UtPkNSMiwgU1BJX0NSMl9UWERNQUVOIHwgU1BJX0NSMl9SWERNQUVOKTsKKyAgICAvKiBDaGVjayBpZiB3ZSBhcmUgaW4gTWFzdGVyIFJYIDIgbGluZSBtb2RlICovCisgICAgaWYgKChoc3BpLT5Jbml0LkRpcmVjdGlvbiA9PSBTUElfRElSRUNUSU9OXzJMSU5FUykgJiYgKGhzcGktPkluaXQuTW9kZSA9PSBTUElfTU9ERV9NQVNURVIpKQorICAgIHsKKyAgICAgIC8qIERpc2FibGUgUngvVHggRE1BIFJlcXVlc3QgKGRvbmUgYnkgZGVmYXVsdCB0byBoYW5kbGUgdGhlIGNhc2UgbWFzdGVyIHJ4IGRpcmVjdGlvbiAyIGxpbmVzKSAqLworICAgICAgQ0xFQVJfQklUKGhzcGktPkluc3RhbmNlLT5DUjIsIFNQSV9DUjJfVFhETUFFTiB8IFNQSV9DUjJfUlhETUFFTik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAvKiBOb3JtYWwgY2FzZSAqLworICAgICAgQ0xFQVJfQklUKGhzcGktPkluc3RhbmNlLT5DUjIsIFNQSV9DUjJfUlhETUFFTik7CisgICAgfQogCiAgICAgLyogQ2hlY2sgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24gKi8KICAgICBpZiAoU1BJX0VuZFJ4VHJhbnNhY3Rpb24oaHNwaSwgU1BJX0RFRkFVTFRfVElNRU9VVCwgdGlja3N0YXJ0KSAhPSBIQUxfT0spCkBAIC0zMDk0LDYgKzMxNzksOSBAQAogewogICBTUElfSGFuZGxlVHlwZURlZiAqaHNwaSA9IChTUElfSGFuZGxlVHlwZURlZiAqKSgoKERNQV9IYW5kbGVUeXBlRGVmICopaGRtYSktPlBhcmVudCk7IC8qIERlcm9nYXRpb24gTUlTUkFDMjAxMi1SdWxlLTExLjUgKi8KICAgdWludDMyX3QgdGlja3N0YXJ0OworI2lmIChVU0VfU1BJX0NSQyAhPSAwVSkKKyAgX19JTyB1aW50MzJfdCB0bXByZWcgPSAwVTsKKyNlbmRpZiAvKiBVU0VfU1BJX0NSQyAqLwogCiAgIC8qIEluaXQgdGlja3N0YXJ0IGZvciB0aW1lb3V0IG1hbmFnZW1lbnQqLwogICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOwpAQCAtMzExNyw3ICszMjA1LDkgQEAKICAgICAgICAgICBTRVRfQklUKGhzcGktPkVycm9yQ29kZSwgSEFMX1NQSV9FUlJPUl9DUkMpOwogICAgICAgICB9CiAgICAgICAgIC8qIFJlYWQgQ1JDIHRvIEZsdXNoIERSIGFuZCBSWE5FIGZsYWcgKi8KLSAgICAgICAgUkVBRF9SRUcoKihfX0lPIHVpbnQ4X3QgKikmaHNwaS0+SW5zdGFuY2UtPkRSKTsKKyAgICAgICAgdG1wcmVnID0gUkVBRF9SRUcoKihfX0lPIHVpbnQ4X3QgKikmaHNwaS0+SW5zdGFuY2UtPkRSKTsKKyAgICAgICAgLyogVG8gYXZvaWQgR0NDIHdhcm5pbmcgKi8KKyAgICAgICAgVU5VU0VEKHRtcHJlZyk7CiAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICB7CkBAIC0zMTI3LDcgKzMyMTcsOSBAQAogICAgICAgICAgIFNFVF9CSVQoaHNwaS0+RXJyb3JDb2RlLCBIQUxfU1BJX0VSUk9SX0NSQyk7CiAgICAgICAgIH0KICAgICAgICAgLyogUmVhZCBDUkMgdG8gRmx1c2ggRFIgYW5kIFJYTkUgZmxhZyAqLwotICAgICAgICBSRUFEX1JFRyhoc3BpLT5JbnN0YW5jZS0+RFIpOworICAgICAgICB0bXByZWcgPSBSRUFEX1JFRyhoc3BpLT5JbnN0YW5jZS0+RFIpOworICAgICAgICAvKiBUbyBhdm9pZCBHQ0Mgd2FybmluZyAqLworICAgICAgICBVTlVTRUQodG1wcmVnKTsKICAgICAgIH0KICAgICB9CiAjZW5kaWYgLyogVVNFX1NQSV9DUkMgKi8KQEAgLTM0NjIsOCArMzU1NCwxMiBAQAogICAqLwogc3RhdGljIHZvaWQgU1BJXzJsaW5lc1J4SVNSXzhCSVRDUkMoc3RydWN0IF9fU1BJX0hhbmRsZVR5cGVEZWYgKmhzcGkpCiB7Ci0gIC8qIFJlYWQgOGJpdCBDUkMgdG8gZmx1c2ggRGF0YSBSZWdzaXRlciAqLwotICBSRUFEX1JFRygqKF9fSU8gdWludDhfdCAqKSZoc3BpLT5JbnN0YW5jZS0+RFIpOworICBfX0lPIHVpbnQzMl90IHRtcHJlZyA9IDBVOworCisgIC8qIFJlYWQgOGJpdCBDUkMgdG8gZmx1c2ggRGF0YSBSZWdpc3RlciAqLworICB0bXByZWcgPSBSRUFEX1JFRygqKF9fSU8gdWludDhfdCAqKSZoc3BpLT5JbnN0YW5jZS0+RFIpOworICAvKiBUbyBhdm9pZCBHQ0Mgd2FybmluZyAqLworICBVTlVTRUQodG1wcmVnKTsKIAogICBoc3BpLT5DUkNTaXplLS07CiAKQEAgLTM1NzAsOCArMzY2NiwxMiBAQAogICAqLwogc3RhdGljIHZvaWQgU1BJXzJsaW5lc1J4SVNSXzE2QklUQ1JDKHN0cnVjdCBfX1NQSV9IYW5kbGVUeXBlRGVmICpoc3BpKQogewotICAvKiBSZWFkIDE2Yml0IENSQyB0byBmbHVzaCBEYXRhIFJlZ3NpdGVyICovCi0gIFJFQURfUkVHKGhzcGktPkluc3RhbmNlLT5EUik7CisgIF9fSU8gdWludDMyX3QgdG1wcmVnID0gMFU7CisKKyAgLyogUmVhZCAxNmJpdCBDUkMgdG8gZmx1c2ggRGF0YSBSZWdpc3RlciAqLworICB0bXByZWcgPSBSRUFEX1JFRyhoc3BpLT5JbnN0YW5jZS0+RFIpOworICAvKiBUbyBhdm9pZCBHQ0Mgd2FybmluZyAqLworICBVTlVTRUQodG1wcmVnKTsgIAogCiAgIC8qIERpc2FibGUgUlhORSBpbnRlcnJ1cHQgKi8KICAgX19IQUxfU1BJX0RJU0FCTEVfSVQoaHNwaSwgU1BJX0lUX1JYTkUpOwpAQCAtMzYyNiw4ICszNzI2LDEyIEBACiAgICovCiBzdGF0aWMgdm9pZCBTUElfUnhJU1JfOEJJVENSQyhzdHJ1Y3QgX19TUElfSGFuZGxlVHlwZURlZiAqaHNwaSkKIHsKKyAgX19JTyB1aW50MzJfdCB0bXByZWcgPSAwVTsKKwogICAvKiBSZWFkIDhiaXQgQ1JDIHRvIGZsdXNoIERhdGEgUmVnaXN0ZXIgKi8KLSAgUkVBRF9SRUcoKihfX0lPIHVpbnQ4X3QgKikmaHNwaS0+SW5zdGFuY2UtPkRSKTsKKyAgdG1wcmVnID0gUkVBRF9SRUcoKihfX0lPIHVpbnQ4X3QgKikmaHNwaS0+SW5zdGFuY2UtPkRSKTsKKyAgLyogVG8gYXZvaWQgR0NDIHdhcm5pbmcgKi8KKyAgVU5VU0VEKHRtcHJlZyk7CiAKICAgaHNwaS0+Q1JDU2l6ZS0tOwogCkBAIC0zNjgwLDggKzM3ODQsMTIgQEAKICAgKi8KIHN0YXRpYyB2b2lkIFNQSV9SeElTUl8xNkJJVENSQyhzdHJ1Y3QgX19TUElfSGFuZGxlVHlwZURlZiAqaHNwaSkKIHsKKyAgX19JTyB1aW50MzJfdCB0bXByZWcgPSAwVTsKKwogICAvKiBSZWFkIDE2Yml0IENSQyB0byBmbHVzaCBEYXRhIFJlZ2lzdGVyICovCi0gIFJFQURfUkVHKGhzcGktPkluc3RhbmNlLT5EUik7CisgIHRtcHJlZyA9IFJFQURfUkVHKGhzcGktPkluc3RhbmNlLT5EUik7CisgIC8qIFRvIGF2b2lkIEdDQyB3YXJuaW5nICovCisgIFVOVVNFRCh0bXByZWcpOwogCiAgIC8qIERpc2FibGUgUlhORSBhbmQgRVJSIGludGVycnVwdCAqLwogICBfX0hBTF9TUElfRElTQUJMRV9JVChoc3BpLCAoU1BJX0lUX1JYTkUgfCBTUElfSVRfRVJSKSk7CkBAIC0zNzg3LDY5ICszODk1LDIyIEBACiBzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgU1BJX1dhaXRGbGFnU3RhdGVVbnRpbFRpbWVvdXQoU1BJX0hhbmRsZVR5cGVEZWYgKmhzcGksIHVpbnQzMl90IEZsYWcsIEZsYWdTdGF0dXMgU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgVGltZW91dCwgdWludDMyX3QgVGlja3N0YXJ0KQogeworICBfX0lPIHVpbnQzMl90IGNvdW50OworICB1aW50MzJfdCB0bXBfdGltZW91dDsKKyAgdWludDMyX3QgdG1wX3RpY2tzdGFydDsKKworICAvKiBBZGp1c3QgVGltZW91dCB2YWx1ZSAgaW4gY2FzZSBvZiBlbmQgb2YgdHJhbnNmZXIgKi8KKyAgdG1wX3RpbWVvdXQgICA9IFRpbWVvdXQgLSAoSEFMX0dldFRpY2soKSAtIFRpY2tzdGFydCk7CisgIHRtcF90aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOworCisgIC8qIENhbGN1bGF0ZSBUaW1lb3V0IGJhc2VkIG9uIGEgc29mdHdhcmUgbG9vcCB0byBhdm9pZCBibG9ja2luZyBpc3N1ZSBpZiBTeXN0aWNrIGlzIGRpc2FibGVkICovCisgIGNvdW50ID0gdG1wX3RpbWVvdXQgKiAoKFN5c3RlbUNvcmVDbG9jayAqIDMyVSkgPj4gMjBVKTsKKwogICB3aGlsZSAoKF9fSEFMX1NQSV9HRVRfRkxBRyhoc3BpLCBGbGFnKSA/IFNFVCA6IFJFU0VUKSAhPSBTdGF0ZSkKICAgewogICAgIGlmIChUaW1lb3V0ICE9IEhBTF9NQVhfREVMQVkpCiAgICAgewotICAgICAgaWYgKCgoSEFMX0dldFRpY2soKSAtIFRpY2tzdGFydCkgPj0gVGltZW91dCkgfHwgKFRpbWVvdXQgPT0gMFUpKQotICAgICAgewotICAgICAgICAvKiBEaXNhYmxlIHRoZSBTUEkgYW5kIHJlc2V0IHRoZSBDUkM6IHRoZSBDUkMgdmFsdWUgc2hvdWxkIGJlIGNsZWFyZWQKLSAgICAgICAgb24gYm90aCBtYXN0ZXIgYW5kIHNsYXZlIHNpZGVzIGluIG9yZGVyIHRvIHJlc3luY2hyb25pemUgdGhlIG1hc3RlcgotICAgICAgICBhbmQgc2xhdmUgZm9yIHRoZWlyIHJlc3BlY3RpdmUgQ1JDIGNhbGN1bGF0aW9uICovCi0KLSAgICAgICAgLyogRGlzYWJsZSBUWEUsIFJYTkUgYW5kIEVSUiBpbnRlcnJ1cHRzIGZvciB0aGUgaW50ZXJydXB0IHByb2Nlc3MgKi8KLSAgICAgICAgX19IQUxfU1BJX0RJU0FCTEVfSVQoaHNwaSwgKFNQSV9JVF9UWEUgfCBTUElfSVRfUlhORSB8IFNQSV9JVF9FUlIpKTsKLQotICAgICAgICBpZiAoKGhzcGktPkluaXQuTW9kZSA9PSBTUElfTU9ERV9NQVNURVIpICYmICgoaHNwaS0+SW5pdC5EaXJlY3Rpb24gPT0gU1BJX0RJUkVDVElPTl8xTElORSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGhzcGktPkluaXQuRGlyZWN0aW9uID09IFNQSV9ESVJFQ1RJT05fMkxJTkVTX1JYT05MWSkpKQotICAgICAgICB7Ci0gICAgICAgICAgLyogRGlzYWJsZSBTUEkgcGVyaXBoZXJhbCAqLwotICAgICAgICAgIF9fSEFMX1NQSV9ESVNBQkxFKGhzcGkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogUmVzZXQgQ1JDIENhbGN1bGF0aW9uICovCi0gICAgICAgIGlmIChoc3BpLT5Jbml0LkNSQ0NhbGN1bGF0aW9uID09IFNQSV9DUkNDQUxDVUxBVElPTl9FTkFCTEUpCi0gICAgICAgIHsKLSAgICAgICAgICBTUElfUkVTRVRfQ1JDKGhzcGkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaHNwaS0+U3RhdGUgPSBIQUxfU1BJX1NUQVRFX1JFQURZOwotCi0gICAgICAgIC8qIFByb2Nlc3MgVW5sb2NrZWQgKi8KLSAgICAgICAgX19IQUxfVU5MT0NLKGhzcGkpOwotCi0gICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICByZXR1cm4gSEFMX09LOwotfQotCi0vKioKLSAgKiBAYnJpZWYgIEhhbmRsZSBTUEkgRklGTyBDb21tdW5pY2F0aW9uIFRpbWVvdXQuCi0gICogQHBhcmFtICBoc3BpIHBvaW50ZXIgdG8gYSBTUElfSGFuZGxlVHlwZURlZiBzdHJ1Y3R1cmUgdGhhdCBjb250YWlucwotICAqICAgICAgICAgICAgICB0aGUgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgU1BJIG1vZHVsZS4KLSAgKiBAcGFyYW0gIEZpZm8gRmlmbyB0byBjaGVjawotICAqIEBwYXJhbSAgU3RhdGUgRmlmbyBzdGF0ZSB0byBjaGVjawotICAqIEBwYXJhbSAgVGltZW91dCBUaW1lb3V0IGR1cmF0aW9uCi0gICogQHBhcmFtICBUaWNrc3RhcnQgdGljayBzdGFydCB2YWx1ZQotICAqIEByZXR2YWwgSEFMIHN0YXR1cwotICAqLwotc3RhdGljIEhBTF9TdGF0dXNUeXBlRGVmIFNQSV9XYWl0Rmlmb1N0YXRlVW50aWxUaW1lb3V0KFNQSV9IYW5kbGVUeXBlRGVmICpoc3BpLCB1aW50MzJfdCBGaWZvLCB1aW50MzJfdCBTdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0LCB1aW50MzJfdCBUaWNrc3RhcnQpCi17Ci0gIHdoaWxlICgoaHNwaS0+SW5zdGFuY2UtPlNSICYgRmlmbykgIT0gU3RhdGUpCi0gIHsKLSAgICBpZiAoKEZpZm8gPT0gU1BJX1NSX0ZSTFZMKSAmJiAoU3RhdGUgPT0gU1BJX0ZSTFZMX0VNUFRZKSkKLSAgICB7Ci0gICAgICAvKiBSZWFkIDhiaXQgQ1JDIHRvIGZsdXNoIERhdGEgUmVnaXN0ZXIgKi8KLSAgICAgIFJFQURfUkVHKCooKF9fSU8gdWludDhfdCAqKSZoc3BpLT5JbnN0YW5jZS0+RFIpKTsKLSAgICB9Ci0KLSAgICBpZiAoVGltZW91dCAhPSBIQUxfTUFYX0RFTEFZKQotICAgIHsKLSAgICAgIGlmICgoKEhBTF9HZXRUaWNrKCkgLSBUaWNrc3RhcnQpID49IFRpbWVvdXQpIHx8IChUaW1lb3V0ID09IDBVKSkKKyAgICAgIGlmICgoKEhBTF9HZXRUaWNrKCkgLSB0bXBfdGlja3N0YXJ0KSA+PSB0bXBfdGltZW91dCkgfHwgKHRtcF90aW1lb3V0ID09IDBVKSkKICAgICAgIHsKICAgICAgICAgLyogRGlzYWJsZSB0aGUgU1BJIGFuZCByZXNldCB0aGUgQ1JDOiB0aGUgQ1JDIHZhbHVlIHNob3VsZCBiZSBjbGVhcmVkCiAgICAgICAgICAgIG9uIGJvdGggbWFzdGVyIGFuZCBzbGF2ZSBzaWRlcyBpbiBvcmRlciB0byByZXN5bmNocm9uaXplIHRoZSBtYXN0ZXIKQEAgLTM4NzgsNiArMzkzOSw5MCBAQAogCiAgICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKICAgICAgIH0KKyAgICAgIC8qIElmIFN5c3RpY2sgaXMgZGlzYWJsZWQgb3Igbm90IGluY3JlbWVudGVkLCBkZWFjdGl2YXRlIHRpbWVvdXQgdG8gZ28gaW4gZGlzYWJsZSBsb29wIHByb2NlZHVyZSAqLworICAgICAgaWYoY291bnQgPT0gMFUpCisgICAgICB7CisgICAgICAgIHRtcF90aW1lb3V0ID0gMFU7CisgICAgICB9CisgICAgICBjb3VudC0tOworICAgIH0KKyAgfQorCisgIHJldHVybiBIQUxfT0s7Cit9CisKKy8qKgorICAqIEBicmllZiAgSGFuZGxlIFNQSSBGSUZPIENvbW11bmljYXRpb24gVGltZW91dC4KKyAgKiBAcGFyYW0gIGhzcGkgcG9pbnRlciB0byBhIFNQSV9IYW5kbGVUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCisgICogICAgICAgICAgICAgIHRoZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciBTUEkgbW9kdWxlLgorICAqIEBwYXJhbSAgRmlmbyBGaWZvIHRvIGNoZWNrCisgICogQHBhcmFtICBTdGF0ZSBGaWZvIHN0YXRlIHRvIGNoZWNrCisgICogQHBhcmFtICBUaW1lb3V0IFRpbWVvdXQgZHVyYXRpb24KKyAgKiBAcGFyYW0gIFRpY2tzdGFydCB0aWNrIHN0YXJ0IHZhbHVlCisgICogQHJldHZhbCBIQUwgc3RhdHVzCisgICovCitzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgU1BJX1dhaXRGaWZvU3RhdGVVbnRpbFRpbWVvdXQoU1BJX0hhbmRsZVR5cGVEZWYgKmhzcGksIHVpbnQzMl90IEZpZm8sIHVpbnQzMl90IFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFRpbWVvdXQsIHVpbnQzMl90IFRpY2tzdGFydCkKK3sKKyAgX19JTyB1aW50MzJfdCB0bXByZWc7CisgIF9fSU8gdWludDMyX3QgY291bnQ7CisgIHVpbnQzMl90IHRtcF90aW1lb3V0OworICB1aW50MzJfdCB0bXBfdGlja3N0YXJ0OworCisgIC8qIEFkanVzdCBUaW1lb3V0IHZhbHVlICBpbiBjYXNlIG9mIGVuZCBvZiB0cmFuc2ZlciAqLworICB0bXBfdGltZW91dCA9IFRpbWVvdXQgLSAoSEFMX0dldFRpY2soKSAtIFRpY2tzdGFydCk7CisgIHRtcF90aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOworCisgIC8qIENhbGN1bGF0ZSBUaW1lb3V0IGJhc2VkIG9uIGEgc29mdHdhcmUgbG9vcCB0byBhdm9pZCBibG9ja2luZyBpc3N1ZSBpZiBTeXN0aWNrIGlzIGRpc2FibGVkICovCisgIGNvdW50ID0gdG1wX3RpbWVvdXQgKiAoKFN5c3RlbUNvcmVDbG9jayAqIDM1VSkgPj4gMjBVKTsKKworICB3aGlsZSAoKGhzcGktPkluc3RhbmNlLT5TUiAmIEZpZm8pICE9IFN0YXRlKQorICB7CisgICAgaWYgKChGaWZvID09IFNQSV9TUl9GUkxWTCkgJiYgKFN0YXRlID09IFNQSV9GUkxWTF9FTVBUWSkpCisgICAgeworICAgICAgLyogRmx1c2ggRGF0YSBSZWdpc3RlciBieSBhIGJsYW5rIHJlYWQgKi8KKyAgICAgIHRtcHJlZyA9IFJFQURfUkVHKCooKF9fSU8gdWludDhfdCAqKSZoc3BpLT5JbnN0YW5jZS0+RFIpKTsKKyAgICAgIC8qIFRvIGF2b2lkIEdDQyB3YXJuaW5nICovCisgICAgICBVTlVTRUQodG1wcmVnKTsKKyAgICB9CisKKyAgICBpZiAoVGltZW91dCAhPSBIQUxfTUFYX0RFTEFZKQorICAgIHsKKyAgICAgIGlmICgoKEhBTF9HZXRUaWNrKCkgLSB0bXBfdGlja3N0YXJ0KSA+PSB0bXBfdGltZW91dCkgfHwgKHRtcF90aW1lb3V0ID09IDBVKSkKKyAgICAgIHsKKyAgICAgICAgLyogRGlzYWJsZSB0aGUgU1BJIGFuZCByZXNldCB0aGUgQ1JDOiB0aGUgQ1JDIHZhbHVlIHNob3VsZCBiZSBjbGVhcmVkCisgICAgICAgICAgIG9uIGJvdGggbWFzdGVyIGFuZCBzbGF2ZSBzaWRlcyBpbiBvcmRlciB0byByZXN5bmNocm9uaXplIHRoZSBtYXN0ZXIKKyAgICAgICAgICAgYW5kIHNsYXZlIGZvciB0aGVpciByZXNwZWN0aXZlIENSQyBjYWxjdWxhdGlvbiAqLworCisgICAgICAgIC8qIERpc2FibGUgVFhFLCBSWE5FIGFuZCBFUlIgaW50ZXJydXB0cyBmb3IgdGhlIGludGVycnVwdCBwcm9jZXNzICovCisgICAgICAgIF9fSEFMX1NQSV9ESVNBQkxFX0lUKGhzcGksIChTUElfSVRfVFhFIHwgU1BJX0lUX1JYTkUgfCBTUElfSVRfRVJSKSk7CisKKyAgICAgICAgaWYgKChoc3BpLT5Jbml0Lk1vZGUgPT0gU1BJX01PREVfTUFTVEVSKSAmJiAoKGhzcGktPkluaXQuRGlyZWN0aW9uID09IFNQSV9ESVJFQ1RJT05fMUxJTkUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChoc3BpLT5Jbml0LkRpcmVjdGlvbiA9PSBTUElfRElSRUNUSU9OXzJMSU5FU19SWE9OTFkpKSkKKyAgICAgICAgeworICAgICAgICAgIC8qIERpc2FibGUgU1BJIHBlcmlwaGVyYWwgKi8KKyAgICAgICAgICBfX0hBTF9TUElfRElTQUJMRShoc3BpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFJlc2V0IENSQyBDYWxjdWxhdGlvbiAqLworICAgICAgICBpZiAoaHNwaS0+SW5pdC5DUkNDYWxjdWxhdGlvbiA9PSBTUElfQ1JDQ0FMQ1VMQVRJT05fRU5BQkxFKQorICAgICAgICB7CisgICAgICAgICAgU1BJX1JFU0VUX0NSQyhoc3BpKTsKKyAgICAgICAgfQorCisgICAgICAgIGhzcGktPlN0YXRlID0gSEFMX1NQSV9TVEFURV9SRUFEWTsKKworICAgICAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCisgICAgICAgIF9fSEFMX1VOTE9DSyhoc3BpKTsKKworICAgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CisgICAgICB9CisgICAgICAvKiBJZiBTeXN0aWNrIGlzIGRpc2FibGVkIG9yIG5vdCBpbmNyZW1lbnRlZCwgZGVhY3RpdmF0ZSB0aW1lb3V0IHRvIGdvIGluIGRpc2FibGUgbG9vcCBwcm9jZWR1cmUgKi8KKyAgICAgIGlmKGNvdW50ID09IDBVKQorICAgICAgeworICAgICAgICB0bXBfdGltZW91dCA9IDBVOworICAgICAgfSAgICAgIAorICAgICAgY291bnQtLTsKICAgICB9CiAgIH0KIApAQCAtMzk2NCw3ICs0MTA5LDcgQEAKIHsKICAgdWludDMyX3QgdGlja3N0YXJ0OwogCi0gIC8qIEluaXQgdGlja3N0YXJ0IGZvciB0aW1lb3V0IG1hbmFnbWVudCovCisgIC8qIEluaXQgdGlja3N0YXJ0IGZvciB0aW1lb3V0IG1hbmFnZW1lbnQgKi8KICAgdGlja3N0YXJ0ID0gSEFMX0dldFRpY2soKTsKIAogICAvKiBEaXNhYmxlIEVSUiBpbnRlcnJ1cHQgKi8KQEAgLTQxNjQsOCArNDMwOSw3IEBACiAgICAgICBicmVhazsKICAgICB9CiAgICAgY291bnQtLTsKLSAgfQotICB3aGlsZSAoSEFMX0lTX0JJVF9TRVQoaHNwaS0+SW5zdGFuY2UtPkNSMiwgU1BJX0NSMl9SWE5FSUUpKTsKKyAgfSB3aGlsZSAoSEFMX0lTX0JJVF9TRVQoaHNwaS0+SW5zdGFuY2UtPkNSMiwgU1BJX0NSMl9SWE5FSUUpKTsKIAogICAvKiBDb250cm9sIHRoZSBCU1kgZmxhZyAqLwogICBpZiAoU1BJX1dhaXRGbGFnU3RhdGVVbnRpbFRpbWVvdXQoaHNwaSwgU1BJX0ZMQUdfQlNZLCBSRVNFVCwgU1BJX0RFRkFVTFRfVElNRU9VVCwgSEFMX0dldFRpY2soKSkgIT0gSEFMX09LKQpAQCAtNDIwNiw4ICs0MzUwLDcgQEAKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjb3VudC0tOwotICB9Ci0gIHdoaWxlIChIQUxfSVNfQklUX1NFVChoc3BpLT5JbnN0YW5jZS0+Q1IyLCBTUElfQ1IyX1RYRUlFKSk7CisgIH0gd2hpbGUgKEhBTF9JU19CSVRfU0VUKGhzcGktPkluc3RhbmNlLT5DUjIsIFNQSV9DUjJfVFhFSUUpKTsKIAogICBpZiAoU1BJX0VuZFJ4VHhUcmFuc2FjdGlvbihoc3BpLCBTUElfREVGQVVMVF9USU1FT1VULCBIQUxfR2V0VGljaygpKSAhPSBIQUxfT0spCiAgIHsKQEAgLTQyMzgsOCArNDM4MSw3IEBACiAgICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICAgY291bnQtLTsKLSAgICB9Ci0gICAgd2hpbGUgKEhBTF9JU19CSVRfU0VUKGhzcGktPkluc3RhbmNlLT5DUjIsIFNQSV9DUjJfUlhORUlFKSk7CisgICAgfSB3aGlsZSAoSEFMX0lTX0JJVF9TRVQoaHNwaS0+SW5zdGFuY2UtPkNSMiwgU1BJX0NSMl9SWE5FSUUpKTsKIAogICAgIC8qIENvbnRyb2wgdGhlIEJTWSBmbGFnICovCiAgICAgaWYgKFNQSV9XYWl0RmxhZ1N0YXRlVW50aWxUaW1lb3V0KGhzcGksIFNQSV9GTEFHX0JTWSwgUkVTRVQsIFNQSV9ERUZBVUxUX1RJTUVPVVQsIEhBTF9HZXRUaWNrKCkpICE9IEhBTF9PSykKZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3RpbS5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfdGltLmMKaW5kZXggYjMzNjVkNi4uMjQ5NmRkNiAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfdGltLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfdGltLmMKQEAgLTE5OSw3ICsxOTksNyBAQAogCiAvKiBQcml2YXRlIHR5cGVkZWYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogUHJpdmF0ZSBkZWZpbmUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qIFByaXZhdGUgbWFjcm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKiBQcml2YXRlIG1hY3JvcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogUHJpdmF0ZSB2YXJpYWJsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIFByaXZhdGUgZnVuY3Rpb24gcHJvdG90eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiogQGFkZHRvZ3JvdXAgVElNX1ByaXZhdGVfRnVuY3Rpb25zCkBAIC0yMjEsNiArMjIxLDcgQEAKIHN0YXRpYyB2b2lkIFRJTV9JVFJ4X1NldENvbmZpZyhUSU1fVHlwZURlZiAqVElNeCwgdWludDMyX3QgSW5wdXRUcmlnZ2VyU291cmNlKTsKIHN0YXRpYyB2b2lkIFRJTV9ETUFQZXJpb2RFbGFwc2VkQ3BsdChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7CiBzdGF0aWMgdm9pZCBUSU1fRE1BUGVyaW9kRWxhcHNlZEhhbGZDcGx0KERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKTsKK3N0YXRpYyB2b2lkIFRJTV9ETUFEZWxheVB1bHNlQ3BsdChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7CiBzdGF0aWMgdm9pZCBUSU1fRE1BVHJpZ2dlckNwbHQoRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpOwogc3RhdGljIHZvaWQgVElNX0RNQVRyaWdnZXJIYWxmQ3BsdChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7CiBzdGF0aWMgSEFMX1N0YXR1c1R5cGVEZWYgVElNX1NsYXZlVGltZXJfU2V0Q29uZmlnKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLApAQCAtMzA2LDYgKzMwNywxMyBAQAogICAvKiBTZXQgdGhlIFRpbWUgQmFzZSBjb25maWd1cmF0aW9uICovCiAgIFRJTV9CYXNlX1NldENvbmZpZyhodGltLT5JbnN0YW5jZSwgJmh0aW0tPkluaXQpOwogCisgIC8qIEluaXRpYWxpemUgdGhlIERNQSBidXJzdCBvcGVyYXRpb24gc3RhdGUgKi8KKyAgaHRpbS0+RE1BQnVyc3RTdGF0ZSA9IEhBTF9ETUFfQlVSU1RfU1RBVEVfUkVBRFk7CisKKyAgLyogSW5pdGlhbGl6ZSB0aGUgVElNIGNoYW5uZWxzIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVF9BTEwoaHRpbSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVRfQUxMKGh0aW0sIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisKICAgLyogSW5pdGlhbGl6ZSB0aGUgVElNIHN0YXRlKi8KICAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFQURZOwogCkBAIC0zMzksNiArMzQ3LDEzIEBACiAgIEhBTF9USU1fQmFzZV9Nc3BEZUluaXQoaHRpbSk7CiAjZW5kaWYgLyogVVNFX0hBTF9USU1fUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAKKyAgLyogQ2hhbmdlIHRoZSBETUEgYnVyc3Qgb3BlcmF0aW9uIHN0YXRlICovCisgIGh0aW0tPkRNQUJ1cnN0U3RhdGUgPSBIQUxfRE1BX0JVUlNUX1NUQVRFX1JFU0VUOworCisgIC8qIENoYW5nZSB0aGUgVElNIGNoYW5uZWxzIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVF9BTEwoaHRpbSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVRfQUxMKGh0aW0sIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRVNFVCk7CisKICAgLyogQ2hhbmdlIFRJTSBzdGF0ZSAqLwogICBodGltLT5TdGF0ZSA9IEhBTF9USU1fU1RBVEVfUkVTRVQ7CiAKQEAgLTM5MSwxOSArNDA2LDI5IEBACiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKTsKIAorICAvKiBDaGVjayB0aGUgVElNIHN0YXRlICovCisgIGlmIChodGltLT5TdGF0ZSAhPSBIQUxfVElNX1NUQVRFX1JFQURZKQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgfQorCiAgIC8qIFNldCB0aGUgVElNIHN0YXRlICovCiAgIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9CVVNZOwogCiAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCwgZXhjZXB0IGluIHRyaWdnZXIgbW9kZSB3aGVyZSBlbmFibGUgaXMgYXV0b21hdGljYWxseSBkb25lIHdpdGggdHJpZ2dlciAqLwotICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7Ci0gIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgIGlmIChJU19USU1fU0xBVkVfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKQorICB7CisgICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOworICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgeworICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKKyAgICB9CisgIH0KKyAgZWxzZQogICB7CiAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKICAgfQogCi0gIC8qIENoYW5nZSB0aGUgVElNIHN0YXRlKi8KLSAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFQURZOwotCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KICAgcmV0dXJuIEhBTF9PSzsKIH0KQEAgLTQxOCwxMyArNDQzLDEwIEBACiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKTsKIAotICAvKiBTZXQgdGhlIFRJTSBzdGF0ZSAqLwotICBodGltLT5TdGF0ZSA9IEhBTF9USU1fU1RBVEVfQlVTWTsKLQogICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCiAgIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOwogCi0gIC8qIENoYW5nZSB0aGUgVElNIHN0YXRlKi8KKyAgLyogU2V0IHRoZSBUSU0gc3RhdGUgKi8KICAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFQURZOwogCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KQEAgLTQ0MywxMiArNDY1LDI4IEBACiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKTsKIAorICAvKiBDaGVjayB0aGUgVElNIHN0YXRlICovCisgIGlmIChodGltLT5TdGF0ZSAhPSBIQUxfVElNX1NUQVRFX1JFQURZKQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgfQorCisgIC8qIFNldCB0aGUgVElNIHN0YXRlICovCisgIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9CVVNZOworCiAgIC8qIEVuYWJsZSB0aGUgVElNIFVwZGF0ZSBpbnRlcnJ1cHQgKi8KICAgX19IQUxfVElNX0VOQUJMRV9JVChodGltLCBUSU1fSVRfVVBEQVRFKTsKIAogICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwsIGV4Y2VwdCBpbiB0cmlnZ2VyIG1vZGUgd2hlcmUgZW5hYmxlIGlzIGF1dG9tYXRpY2FsbHkgZG9uZSB3aXRoIHRyaWdnZXIgKi8KLSAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOwotICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICBpZiAoSVNfVElNX1NMQVZFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSkKKyAgeworICAgIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKKyAgICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICAgIHsKKyAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CisgICAgfQorICB9CisgIGVsc2UKICAgewogICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CiAgIH0KQEAgLTQ2NiwxMiArNTA0LDE2IEBACiB7CiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKTsKKwogICAvKiBEaXNhYmxlIHRoZSBUSU0gVXBkYXRlIGludGVycnVwdCAqLwogICBfX0hBTF9USU1fRElTQUJMRV9JVChodGltLCBUSU1fSVRfVVBEQVRFKTsKIAogICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCiAgIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOwogCisgIC8qIFNldCB0aGUgVElNIHN0YXRlICovCisgIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRUFEWTsKKwogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CiB9CkBAIC00OTAsNiArNTMyLDcgQEAKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9ETUFfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKTsKIAorICAvKiBTZXQgdGhlIFRJTSBzdGF0ZSAqLwogICBpZiAoaHRpbS0+U3RhdGUgPT0gSEFMX1RJTV9TVEFURV9CVVNZKQogICB7CiAgICAgcmV0dXJuIEhBTF9CVVNZOwpAQCAtNTA3LDcgKzU1MCw3IEBACiAgIH0KICAgZWxzZQogICB7Ci0gICAgLyogbm90aGluZyB0byBkbyAqLworICAgIHJldHVybiBIQUxfRVJST1I7CiAgIH0KIAogICAvKiBTZXQgdGhlIERNQSBQZXJpb2QgZWxhcHNlZCBjYWxsYmFja3MgKi8KQEAgLTUyMCw2ICs1NjMsNyBAQAogICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX1VQREFURV0sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+QVJSLCBMZW5ndGgpICE9IEhBTF9PSykKICAgeworICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICByZXR1cm4gSEFMX0VSUk9SOwogICB9CiAKQEAgLTUyNyw4ICs1NzEsMTUgQEAKICAgX19IQUxfVElNX0VOQUJMRV9ETUEoaHRpbSwgVElNX0RNQV9VUERBVEUpOwogCiAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCwgZXhjZXB0IGluIHRyaWdnZXIgbW9kZSB3aGVyZSBlbmFibGUgaXMgYXV0b21hdGljYWxseSBkb25lIHdpdGggdHJpZ2dlciAqLwotICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7Ci0gIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgIGlmIChJU19USU1fU0xBVkVfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKQorICB7CisgICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOworICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgeworICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKKyAgICB9CisgIH0KKyAgZWxzZQogICB7CiAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKICAgfQpAQCAtNTU1LDcgKzYwNiw3IEBACiAgIC8qIERpc2FibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CiAKLSAgLyogQ2hhbmdlIHRoZSBodGltIHN0YXRlICovCisgIC8qIFNldCB0aGUgVElNIHN0YXRlICovCiAgIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRUFEWTsKIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCkBAIC02MzgsNiArNjg5LDEzIEBACiAgIC8qIEluaXQgdGhlIGJhc2UgdGltZSBmb3IgdGhlIE91dHB1dCBDb21wYXJlICovCiAgIFRJTV9CYXNlX1NldENvbmZpZyhodGltLT5JbnN0YW5jZSwgICZodGltLT5Jbml0KTsKIAorICAvKiBJbml0aWFsaXplIHRoZSBETUEgYnVyc3Qgb3BlcmF0aW9uIHN0YXRlICovCisgIGh0aW0tPkRNQUJ1cnN0U3RhdGUgPSBIQUxfRE1BX0JVUlNUX1NUQVRFX1JFQURZOworCisgIC8qIEluaXRpYWxpemUgdGhlIFRJTSBjaGFubmVscyBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVRfQUxMKGh0aW0sIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUX0FMTChodGltLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworCiAgIC8qIEluaXRpYWxpemUgdGhlIFRJTSBzdGF0ZSovCiAgIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRUFEWTsKIApAQCAtNjcxLDYgKzcyOSwxMyBAQAogICBIQUxfVElNX09DX01zcERlSW5pdChodGltKTsKICNlbmRpZiAvKiBVU0VfSEFMX1RJTV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIAorICAvKiBDaGFuZ2UgdGhlIERNQSBidXJzdCBvcGVyYXRpb24gc3RhdGUgKi8KKyAgaHRpbS0+RE1BQnVyc3RTdGF0ZSA9IEhBTF9ETUFfQlVSU1RfU1RBVEVfUkVTRVQ7CisKKyAgLyogQ2hhbmdlIHRoZSBUSU0gY2hhbm5lbHMgc3RhdGUgKi8KKyAgVElNX0NIQU5ORUxfU1RBVEVfU0VUX0FMTChodGltLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVTRVQpOworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVF9BTEwoaHRpbSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUKTsKKwogICAvKiBDaGFuZ2UgVElNIHN0YXRlICovCiAgIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRVNFVDsKIApAQCAtNzMwLDYgKzc5NSwxNSBAQAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDWF9JTlNUQU5DRShodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCkpOwogCisgIC8qIENoZWNrIHRoZSBUSU0gY2hhbm5lbCBzdGF0ZSAqLworICBpZiAoVElNX0NIQU5ORUxfU1RBVEVfR0VUKGh0aW0sIENoYW5uZWwpICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgeworICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KKworICAvKiBTZXQgdGhlIFRJTSBjaGFubmVsIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisKICAgLyogRW5hYmxlIHRoZSBPdXRwdXQgY29tcGFyZSBjaGFubmVsICovCiAgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsLCBUSU1fQ0N4X0VOQUJMRSk7CiAKQEAgLTc0MCw4ICs4MTQsMTUgQEAKICAgfQogCiAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCwgZXhjZXB0IGluIHRyaWdnZXIgbW9kZSB3aGVyZSBlbmFibGUgaXMgYXV0b21hdGljYWxseSBkb25lIHdpdGggdHJpZ2dlciAqLwotICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7Ci0gIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgIGlmIChJU19USU1fU0xBVkVfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKQorICB7CisgICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOworICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgeworICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKKyAgICB9CisgIH0KKyAgZWxzZQogICB7CiAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKICAgfQpAQCAtNzgwLDYgKzg2MSw5IEBACiAgIC8qIERpc2FibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CiAKKyAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbCBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKwogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CiB9CkBAIC04MDIsNiArODg2LDE1IEBACiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fQ0NYX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsKSk7CiAKKyAgLyogQ2hlY2sgdGhlIFRJTSBjaGFubmVsIHN0YXRlICovCisgIGlmIChUSU1fQ0hBTk5FTF9TVEFURV9HRVQoaHRpbSwgQ2hhbm5lbCkgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgfQorCisgIC8qIFNldCB0aGUgVElNIGNoYW5uZWwgc3RhdGUgKi8KKyAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKwogICBzd2l0Y2ggKENoYW5uZWwpCiAgIHsKICAgICBjYXNlIFRJTV9DSEFOTkVMXzE6CkBAIC04NDYsOCArOTM5LDE1IEBACiAgIH0KIAogICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwsIGV4Y2VwdCBpbiB0cmlnZ2VyIG1vZGUgd2hlcmUgZW5hYmxlIGlzIGF1dG9tYXRpY2FsbHkgZG9uZSB3aXRoIHRyaWdnZXIgKi8KLSAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOwotICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICBpZiAoSVNfVElNX1NMQVZFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSkKKyAgeworICAgIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKKyAgICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICAgIHsKKyAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CisgICAgfQorICB9CisgIGVsc2UKICAgewogICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CiAgIH0KQEAgLTkxOCw2ICsxMDE4LDkgQEAKICAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCAqLwogICBfX0hBTF9USU1fRElTQUJMRShodGltKTsKIAorICAvKiBTZXQgdGhlIFRJTSBjaGFubmVsIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KICAgcmV0dXJuIEhBTF9PSzsKIH0KQEAgLTk0MiwxMSArMTA0NSwxMiBAQAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDWF9JTlNUQU5DRShodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCkpOwogCi0gIGlmIChodGltLT5TdGF0ZSA9PSBIQUxfVElNX1NUQVRFX0JVU1kpCisgIC8qIFNldCB0aGUgVElNIGNoYW5uZWwgc3RhdGUgKi8KKyAgaWYgKFRJTV9DSEFOTkVMX1NUQVRFX0dFVChodGltLCBDaGFubmVsKSA9PSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSkKICAgewogICAgIHJldHVybiBIQUxfQlVTWTsKICAgfQotICBlbHNlIGlmIChodGltLT5TdGF0ZSA9PSBIQUxfVElNX1NUQVRFX1JFQURZKQorICBlbHNlIGlmIChUSU1fQ0hBTk5FTF9TVEFURV9HRVQoaHRpbSwgQ2hhbm5lbCkgPT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQogICB7CiAgICAgaWYgKChwRGF0YSA9PSBOVUxMKSAmJiAoTGVuZ3RoID4gMFUpKQogICAgIHsKQEAgLTk1NCwxMiArMTA1OCwxMiBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX0JVU1k7CisgICAgICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOwogICAgIH0KICAgfQogICBlbHNlCiAgIHsKLSAgICAvKiBub3RoaW5nIHRvIGRvICovCisgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgfQogCiAgIHN3aXRjaCAoQ2hhbm5lbCkKQEAgLTk3Niw2ICsxMDgwLDcgQEAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwogICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMSwgTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CisgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICAgIH0KIApAQCAtOTk2LDYgKzExMDEsNyBAQAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXSwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IyLCBMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKKyAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwogICAgICAgfQogCkBAIC0xMDE2LDYgKzExMjIsNyBAQAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MzXSwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IzLCBMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKKyAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwogICAgICAgfQogICAgICAgLyogRW5hYmxlIHRoZSBUSU0gQ2FwdHVyZS9Db21wYXJlIDMgRE1BIHJlcXVlc3QgKi8KQEAgLTEwMzUsNiArMTE0Miw3IEBACiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KICAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzRdLCAodWludDMyX3QpcERhdGEsICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjQsIExlbmd0aCkgIT0gSEFMX09LKQogICAgICAgeworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgICB9CiAgICAgICAvKiBFbmFibGUgdGhlIFRJTSBDYXB0dXJlL0NvbXBhcmUgNCBETUEgcmVxdWVzdCAqLwpAQCAtMTA1Niw4ICsxMTY0LDE1IEBACiAgIH0KIAogICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwsIGV4Y2VwdCBpbiB0cmlnZ2VyIG1vZGUgd2hlcmUgZW5hYmxlIGlzIGF1dG9tYXRpY2FsbHkgZG9uZSB3aXRoIHRyaWdnZXIgKi8KLSAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOwotICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICBpZiAoSVNfVElNX1NMQVZFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSkKKyAgeworICAgIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKKyAgICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICAgIHsKKyAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CisgICAgfQorICB9CisgIGVsc2UKICAgewogICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CiAgIH0KQEAgLTExMzIsOCArMTI0Nyw4IEBACiAgIC8qIERpc2FibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CiAKLSAgLyogQ2hhbmdlIHRoZSBodGltIHN0YXRlICovCi0gIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRUFEWTsKKyAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbCBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CkBAIC0xMjE1LDYgKzEzMzAsMTMgQEAKICAgLyogSW5pdCB0aGUgYmFzZSB0aW1lIGZvciB0aGUgUFdNICovCiAgIFRJTV9CYXNlX1NldENvbmZpZyhodGltLT5JbnN0YW5jZSwgJmh0aW0tPkluaXQpOwogCisgIC8qIEluaXRpYWxpemUgdGhlIERNQSBidXJzdCBvcGVyYXRpb24gc3RhdGUgKi8KKyAgaHRpbS0+RE1BQnVyc3RTdGF0ZSA9IEhBTF9ETUFfQlVSU1RfU1RBVEVfUkVBRFk7CisKKyAgLyogSW5pdGlhbGl6ZSB0aGUgVElNIGNoYW5uZWxzIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVF9BTEwoaHRpbSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVRfQUxMKGh0aW0sIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisKICAgLyogSW5pdGlhbGl6ZSB0aGUgVElNIHN0YXRlKi8KICAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFQURZOwogCkBAIC0xMjQ4LDYgKzEzNzAsMTMgQEAKICAgSEFMX1RJTV9QV01fTXNwRGVJbml0KGh0aW0pOwogI2VuZGlmIC8qIFVTRV9IQUxfVElNX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogCisgIC8qIENoYW5nZSB0aGUgRE1BIGJ1cnN0IG9wZXJhdGlvbiBzdGF0ZSAqLworICBodGltLT5ETUFCdXJzdFN0YXRlID0gSEFMX0RNQV9CVVJTVF9TVEFURV9SRVNFVDsKKworICAvKiBDaGFuZ2UgdGhlIFRJTSBjaGFubmVscyBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVRfQUxMKGh0aW0sIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRVNFVCk7CisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUX0FMTChodGltLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVTRVQpOworCiAgIC8qIENoYW5nZSBUSU0gc3RhdGUgKi8KICAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFU0VUOwogCkBAIC0xMzA3LDYgKzE0MzYsMTUgQEAKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9DQ1hfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwpKTsKIAorICAvKiBDaGVjayB0aGUgVElNIGNoYW5uZWwgc3RhdGUgKi8KKyAgaWYgKFRJTV9DSEFOTkVMX1NUQVRFX0dFVChodGltLCBDaGFubmVsKSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbCBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworCiAgIC8qIEVuYWJsZSB0aGUgQ2FwdHVyZSBjb21wYXJlIGNoYW5uZWwgKi8KICAgVElNX0NDeENoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwsIFRJTV9DQ3hfRU5BQkxFKTsKIApAQCAtMTMxNyw4ICsxNDU1LDE1IEBACiAgIH0KIAogICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwsIGV4Y2VwdCBpbiB0cmlnZ2VyIG1vZGUgd2hlcmUgZW5hYmxlIGlzIGF1dG9tYXRpY2FsbHkgZG9uZSB3aXRoIHRyaWdnZXIgKi8KLSAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOwotICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICBpZiAoSVNfVElNX1NMQVZFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSkKKyAgeworICAgIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKKyAgICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICAgIHsKKyAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CisgICAgfQorICB9CisgIGVsc2UKICAgewogICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CiAgIH0KQEAgLTEzNTcsOCArMTUwMiw4IEBACiAgIC8qIERpc2FibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CiAKLSAgLyogQ2hhbmdlIHRoZSBodGltIHN0YXRlICovCi0gIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRUFEWTsKKyAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbCBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CkBAIC0xMzgxLDYgKzE1MjYsMTUgQEAKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9DQ1hfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwpKTsKIAorICAvKiBDaGVjayB0aGUgVElNIGNoYW5uZWwgc3RhdGUgKi8KKyAgaWYgKFRJTV9DSEFOTkVMX1NUQVRFX0dFVChodGltLCBDaGFubmVsKSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbCBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworCiAgIHN3aXRjaCAoQ2hhbm5lbCkKICAgewogICAgIGNhc2UgVElNX0NIQU5ORUxfMToKQEAgLTE0MjUsOCArMTU3OSwxNSBAQAogICB9CiAKICAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsLCBleGNlcHQgaW4gdHJpZ2dlciBtb2RlIHdoZXJlIGVuYWJsZSBpcyBhdXRvbWF0aWNhbGx5IGRvbmUgd2l0aCB0cmlnZ2VyICovCi0gIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKLSAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKKyAgaWYgKElTX1RJTV9TTEFWRV9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpCisgIHsKKyAgICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7CisgICAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKKyAgICB7CisgICAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOworICAgIH0KKyAgfQorICBlbHNlCiAgIHsKICAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOwogICB9CkBAIC0xNDk3LDYgKzE2NTgsOSBAQAogICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCiAgIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOwogCisgIC8qIFNldCB0aGUgVElNIGNoYW5uZWwgc3RhdGUgKi8KKyAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwogICByZXR1cm4gSEFMX09LOwogfQpAQCAtMTUyMSwxMSArMTY4NSwxMiBAQAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDWF9JTlNUQU5DRShodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCkpOwogCi0gIGlmIChodGltLT5TdGF0ZSA9PSBIQUxfVElNX1NUQVRFX0JVU1kpCisgIC8qIFNldCB0aGUgVElNIGNoYW5uZWwgc3RhdGUgKi8KKyAgaWYgKFRJTV9DSEFOTkVMX1NUQVRFX0dFVChodGltLCBDaGFubmVsKSA9PSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSkKICAgewogICAgIHJldHVybiBIQUxfQlVTWTsKICAgfQotICBlbHNlIGlmIChodGltLT5TdGF0ZSA9PSBIQUxfVElNX1NUQVRFX1JFQURZKQorICBlbHNlIGlmIChUSU1fQ0hBTk5FTF9TVEFURV9HRVQoaHRpbSwgQ2hhbm5lbCkgPT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQogICB7CiAgICAgaWYgKChwRGF0YSA9PSBOVUxMKSAmJiAoTGVuZ3RoID4gMFUpKQogICAgIHsKQEAgLTE1MzMsMTIgKzE2OTgsMTIgQEAKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9CVVNZOworICAgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKICAgICB9CiAgIH0KICAgZWxzZQogICB7Ci0gICAgLyogbm90aGluZyB0byBkbyAqLworICAgIHJldHVybiBIQUxfRVJST1I7CiAgIH0KIAogICBzd2l0Y2ggKENoYW5uZWwpCkBAIC0xNTU1LDYgKzE3MjAsNyBAQAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXSwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IxLCBMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKKyAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwogICAgICAgfQogCkBAIC0xNTc1LDYgKzE3NDEsNyBAQAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXSwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IyLCBMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKKyAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwogICAgICAgfQogICAgICAgLyogRW5hYmxlIHRoZSBUSU0gQ2FwdHVyZS9Db21wYXJlIDIgRE1BIHJlcXVlc3QgKi8KQEAgLTE1OTQsNiArMTc2MSw3IEBACiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KICAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzNdLCAodWludDMyX3QpcERhdGEsICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjMsIExlbmd0aCkgIT0gSEFMX09LKQogICAgICAgeworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgICB9CiAgICAgICAvKiBFbmFibGUgdGhlIFRJTSBPdXRwdXQgQ2FwdHVyZS9Db21wYXJlIDMgcmVxdWVzdCAqLwpAQCAtMTYxMyw2ICsxNzgxLDcgQEAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwogICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDNF0sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSNCwgTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CisgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICAgIH0KICAgICAgIC8qIEVuYWJsZSB0aGUgVElNIENhcHR1cmUvQ29tcGFyZSA0IERNQSByZXF1ZXN0ICovCkBAIC0xNjM0LDggKzE4MDMsMTUgQEAKICAgfQogCiAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCwgZXhjZXB0IGluIHRyaWdnZXIgbW9kZSB3aGVyZSBlbmFibGUgaXMgYXV0b21hdGljYWxseSBkb25lIHdpdGggdHJpZ2dlciAqLwotICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7Ci0gIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgIGlmIChJU19USU1fU0xBVkVfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKQorICB7CisgICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOworICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgeworICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKKyAgICB9CisgIH0KKyAgZWxzZQogICB7CiAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKICAgfQpAQCAtMTcxMCw4ICsxODg2LDggQEAKICAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCAqLwogICBfX0hBTF9USU1fRElTQUJMRShodGltKTsKIAotICAvKiBDaGFuZ2UgdGhlIGh0aW0gc3RhdGUgKi8KLSAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFQURZOworICAvKiBTZXQgdGhlIFRJTSBjaGFubmVsIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOwogCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KICAgcmV0dXJuIEhBTF9PSzsKQEAgLTE3OTMsNiArMTk2OSwxMyBAQAogICAvKiBJbml0IHRoZSBiYXNlIHRpbWUgZm9yIHRoZSBpbnB1dCBjYXB0dXJlICovCiAgIFRJTV9CYXNlX1NldENvbmZpZyhodGltLT5JbnN0YW5jZSwgJmh0aW0tPkluaXQpOwogCisgIC8qIEluaXRpYWxpemUgdGhlIERNQSBidXJzdCBvcGVyYXRpb24gc3RhdGUgKi8KKyAgaHRpbS0+RE1BQnVyc3RTdGF0ZSA9IEhBTF9ETUFfQlVSU1RfU1RBVEVfUkVBRFk7CisKKyAgLyogSW5pdGlhbGl6ZSB0aGUgVElNIGNoYW5uZWxzIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVF9BTEwoaHRpbSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVRfQUxMKGh0aW0sIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisKICAgLyogSW5pdGlhbGl6ZSB0aGUgVElNIHN0YXRlKi8KICAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFQURZOwogCkBAIC0xODI2LDYgKzIwMDksMTMgQEAKICAgSEFMX1RJTV9JQ19Nc3BEZUluaXQoaHRpbSk7CiAjZW5kaWYgLyogVVNFX0hBTF9USU1fUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAKKyAgLyogQ2hhbmdlIHRoZSBETUEgYnVyc3Qgb3BlcmF0aW9uIHN0YXRlICovCisgIGh0aW0tPkRNQUJ1cnN0U3RhdGUgPSBIQUxfRE1BX0JVUlNUX1NUQVRFX1JFU0VUOworCisgIC8qIENoYW5nZSB0aGUgVElNIGNoYW5uZWxzIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVF9BTEwoaHRpbSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVRfQUxMKGh0aW0sIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRVNFVCk7CisKICAgLyogQ2hhbmdlIFRJTSBzdGF0ZSAqLwogICBodGltLT5TdGF0ZSA9IEhBTF9USU1fU1RBVEVfUkVTRVQ7CiAKQEAgLTE4NzksMTYgKzIwNjksMzYgQEAKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fSUNfU3RhcnQoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IENoYW5uZWwpCiB7CiAgIHVpbnQzMl90IHRtcHNtY3I7CisgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjaGFubmVsX3N0YXRlID0gVElNX0NIQU5ORUxfU1RBVEVfR0VUKGh0aW0sIENoYW5uZWwpOworICBIQUxfVElNX0NoYW5uZWxTdGF0ZVR5cGVEZWYgY29tcGxlbWVudGFyeV9jaGFubmVsX3N0YXRlID0gVElNX0NIQU5ORUxfTl9TVEFURV9HRVQoaHRpbSwgQ2hhbm5lbCk7CiAKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9DQ1hfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwpKTsKIAorICAvKiBDaGVjayB0aGUgVElNIGNoYW5uZWwgc3RhdGUgKi8KKyAgaWYgKChjaGFubmVsX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgICAgIHx8IChjb21wbGVtZW50YXJ5X2NoYW5uZWxfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKSkKKyAgeworICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KKworICAvKiBTZXQgdGhlIFRJTSBjaGFubmVsIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKwogICAvKiBFbmFibGUgdGhlIElucHV0IENhcHR1cmUgY2hhbm5lbCAqLwogICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCwgVElNX0NDeF9FTkFCTEUpOwogCiAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCwgZXhjZXB0IGluIHRyaWdnZXIgbW9kZSB3aGVyZSBlbmFibGUgaXMgYXV0b21hdGljYWxseSBkb25lIHdpdGggdHJpZ2dlciAqLwotICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7Ci0gIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgIGlmIChJU19USU1fU0xBVkVfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKQorICB7CisgICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOworICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgeworICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKKyAgICB9CisgIH0KKyAgZWxzZQogICB7CiAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKICAgfQpAQCAtMTkxOSw2ICsyMTI5LDEwIEBACiAgIC8qIERpc2FibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CiAKKyAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbCBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKwogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CiB9CkBAIC0xOTM3LDEwICsyMTUxLDIzIEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX0lDX1N0YXJ0X0lUKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBDaGFubmVsKQogewogICB1aW50MzJfdCB0bXBzbWNyOworICBIQUxfVElNX0NoYW5uZWxTdGF0ZVR5cGVEZWYgY2hhbm5lbF9zdGF0ZSA9IFRJTV9DSEFOTkVMX1NUQVRFX0dFVChodGltLCBDaGFubmVsKTsKKyAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNvbXBsZW1lbnRhcnlfY2hhbm5lbF9zdGF0ZSA9IFRJTV9DSEFOTkVMX05fU1RBVEVfR0VUKGh0aW0sIENoYW5uZWwpOwogCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fQ0NYX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsKSk7CiAKKyAgLyogQ2hlY2sgdGhlIFRJTSBjaGFubmVsIHN0YXRlICovCisgIGlmICgoY2hhbm5lbF9zdGF0ZSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpCisgICAgICB8fCAoY29tcGxlbWVudGFyeV9jaGFubmVsX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkpCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbCBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisKICAgc3dpdGNoIChDaGFubmVsKQogICB7CiAgICAgY2FzZSBUSU1fQ0hBTk5FTF8xOgpAQCAtMTk3OCw4ICsyMjA1LDE1IEBACiAgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsLCBUSU1fQ0N4X0VOQUJMRSk7CiAKICAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsLCBleGNlcHQgaW4gdHJpZ2dlciBtb2RlIHdoZXJlIGVuYWJsZSBpcyBhdXRvbWF0aWNhbGx5IGRvbmUgd2l0aCB0cmlnZ2VyICovCi0gIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKLSAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKKyAgaWYgKElTX1RJTV9TTEFWRV9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpCisgIHsKKyAgICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7CisgICAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKKyAgICB7CisgICAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOworICAgIH0KKyAgfQorICBlbHNlCiAgIHsKICAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOwogICB9CkBAIC0yMDQ0LDYgKzIyNzgsMTAgQEAKICAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCAqLwogICBfX0hBTF9USU1fRElTQUJMRShodGltKTsKIAorICAvKiBTZXQgdGhlIFRJTSBjaGFubmVsIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KICAgcmV0dXJuIEhBTF9PSzsKIH0KQEAgLTIwNjQsMTYgKzIzMDIsMjEgQEAKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fSUNfU3RhcnRfRE1BKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBDaGFubmVsLCB1aW50MzJfdCAqcERhdGEsIHVpbnQxNl90IExlbmd0aCkKIHsKICAgdWludDMyX3QgdG1wc21jcjsKKyAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNoYW5uZWxfc3RhdGUgPSBUSU1fQ0hBTk5FTF9TVEFURV9HRVQoaHRpbSwgQ2hhbm5lbCk7CisgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjb21wbGVtZW50YXJ5X2NoYW5uZWxfc3RhdGUgPSBUSU1fQ0hBTk5FTF9OX1NUQVRFX0dFVChodGltLCBDaGFubmVsKTsKIAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDWF9JTlNUQU5DRShodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCkpOwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0RNQV9DQ19JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpOwogCi0gIGlmIChodGltLT5TdGF0ZSA9PSBIQUxfVElNX1NUQVRFX0JVU1kpCisgIC8qIFNldCB0aGUgVElNIGNoYW5uZWwgc3RhdGUgKi8KKyAgaWYgKChjaGFubmVsX3N0YXRlID09IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKQorICAgICAgfHwgKGNvbXBsZW1lbnRhcnlfY2hhbm5lbF9zdGF0ZSA9PSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSkpCiAgIHsKICAgICByZXR1cm4gSEFMX0JVU1k7CiAgIH0KLSAgZWxzZSBpZiAoaHRpbS0+U3RhdGUgPT0gSEFMX1RJTV9TVEFURV9SRUFEWSkKKyAgZWxzZSBpZiAoKGNoYW5uZWxfc3RhdGUgPT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQorICAgICAgICAgICAmJiAoY29tcGxlbWVudGFyeV9jaGFubmVsX3N0YXRlID09IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkpCiAgIHsKICAgICBpZiAoKHBEYXRhID09IE5VTEwpICYmIChMZW5ndGggPiAwVSkpCiAgICAgewpAQCAtMjA4MSwxMiArMjMyNCwzMCBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX0JVU1k7CisgICAgICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworICAgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOwogICAgIH0KICAgfQogICBlbHNlCiAgIHsKLSAgICAvKiBub3RoaW5nIHRvIGRvICovCisgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgfQorCisgIC8qIEVuYWJsZSB0aGUgSW5wdXQgQ2FwdHVyZSBjaGFubmVsICovCisgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsLCBUSU1fQ0N4X0VOQUJMRSk7CisKKyAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsLCBleGNlcHQgaW4gdHJpZ2dlciBtb2RlIHdoZXJlIGVuYWJsZSBpcyBhdXRvbWF0aWNhbGx5IGRvbmUgd2l0aCB0cmlnZ2VyICovCisgIGlmIChJU19USU1fU0xBVkVfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKQorICB7CisgICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOworICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgeworICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKKyAgICB9CisgIH0KKyAgZWxzZQorICB7CisgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKICAgfQogCiAgIHN3aXRjaCAoQ2hhbm5lbCkKQEAgLTIxMDMsNiArMjM2NCw3IEBACiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KICAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IxLCAodWludDMyX3QpcERhdGEsIExlbmd0aCkgIT0gSEFMX09LKQogICAgICAgeworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgICB9CiAgICAgICAvKiBFbmFibGUgdGhlIFRJTSBDYXB0dXJlL0NvbXBhcmUgMSBETUEgcmVxdWVzdCAqLwpAQCAtMjEyMiw2ICsyMzg0LDcgQEAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwogICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjIsICh1aW50MzJfdClwRGF0YSwgTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CisgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICAgIH0KICAgICAgIC8qIEVuYWJsZSB0aGUgVElNIENhcHR1cmUvQ29tcGFyZSAyICBETUEgcmVxdWVzdCAqLwpAQCAtMjE0MSw2ICsyNDA0LDcgQEAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwogICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDM10sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjMsICh1aW50MzJfdClwRGF0YSwgTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CisgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICAgIH0KICAgICAgIC8qIEVuYWJsZSB0aGUgVElNIENhcHR1cmUvQ29tcGFyZSAzICBETUEgcmVxdWVzdCAqLwpAQCAtMjE2MCw2ICsyNDI0LDcgQEAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwogICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDNF0sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjQsICh1aW50MzJfdClwRGF0YSwgTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CisgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICAgIH0KICAgICAgIC8qIEVuYWJsZSB0aGUgVElNIENhcHR1cmUvQ29tcGFyZSA0ICBETUEgcmVxdWVzdCAqLwpAQCAtMjE3MSwxNiArMjQzNiw2IEBACiAgICAgICBicmVhazsKICAgfQogCi0gIC8qIEVuYWJsZSB0aGUgSW5wdXQgQ2FwdHVyZSBjaGFubmVsICovCi0gIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsLCBUSU1fQ0N4X0VOQUJMRSk7Ci0KLSAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsLCBleGNlcHQgaW4gdHJpZ2dlciBtb2RlIHdoZXJlIGVuYWJsZSBpcyBhdXRvbWF0aWNhbGx5IGRvbmUgd2l0aCB0cmlnZ2VyICovCi0gIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKLSAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKLSAgewotICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7Ci0gIH0KLQogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CiB9CkBAIC0yMjAyLDYgKzI0NTcsOSBAQAogICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDWF9JTlNUQU5DRShodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCkpOwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0RNQV9DQ19JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpOwogCisgIC8qIERpc2FibGUgdGhlIElucHV0IENhcHR1cmUgY2hhbm5lbCAqLworICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCwgVElNX0NDeF9ESVNBQkxFKTsKKwogICBzd2l0Y2ggKENoYW5uZWwpCiAgIHsKICAgICBjYXNlIFRJTV9DSEFOTkVMXzE6CkBAIC0yMjQwLDE0ICsyNDk4LDEyIEBACiAgICAgICBicmVhazsKICAgfQogCi0gIC8qIERpc2FibGUgdGhlIElucHV0IENhcHR1cmUgY2hhbm5lbCAqLwotICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCwgVElNX0NDeF9ESVNBQkxFKTsKLQogICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCiAgIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOwogCi0gIC8qIENoYW5nZSB0aGUgaHRpbSBzdGF0ZSAqLwotICBodGltLT5TdGF0ZSA9IEhBTF9USU1fU1RBVEVfUkVBRFk7CisgIC8qIFNldCB0aGUgVElNIGNoYW5uZWwgc3RhdGUgKi8KKyAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CiAKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwogICByZXR1cm4gSEFMX09LOwpAQCAtMjI4NCw2ICsyNTQwLDkgQEAKICAgKiAgICAgICAgIHJlcXVpcmVzIGEgdGltZXIgcmVzZXQgdG8gYXZvaWQgdW5leHBlY3RlZCBkaXJlY3Rpb24KICAgKiAgICAgICAgIGR1ZSB0byBESVIgYml0IHJlYWRvbmx5IGluIGNlbnRlciBhbGlnbmVkIG1vZGUuCiAgICogICAgICAgICBFeDogY2FsbCBAcmVmIEhBTF9USU1fT25lUHVsc2VfRGVJbml0KCkgYmVmb3JlIEhBTF9USU1fT25lUHVsc2VfSW5pdCgpCisgICogQG5vdGUgICBXaGVuIHRoZSB0aW1lciBpbnN0YW5jZSBpcyBpbml0aWFsaXplZCBpbiBPbmUgUHVsc2UgbW9kZSwgdGltZXIKKyAgKiAgICAgICAgIGNoYW5uZWxzIDEgYW5kIGNoYW5uZWwgMiBhcmUgcmVzZXJ2ZWQgYW5kIGNhbm5vdCBiZSB1c2VkIGZvciBvdGhlcgorICAqICAgICAgICAgcHVycG9zZS4KICAgKiBAcGFyYW0gIGh0aW0gVElNIE9uZSBQdWxzZSBoYW5kbGUKICAgKiBAcGFyYW0gIE9uZVB1bHNlTW9kZSBTZWxlY3QgdGhlIE9uZSBwdWxzZSBtb2RlLgogICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKQEAgLTIzMzksNiArMjU5OCwxNSBAQAogICAvKiBDb25maWd1cmUgdGhlIE9QTSBNb2RlICovCiAgIGh0aW0tPkluc3RhbmNlLT5DUjEgfD0gT25lUHVsc2VNb2RlOwogCisgIC8qIEluaXRpYWxpemUgdGhlIERNQSBidXJzdCBvcGVyYXRpb24gc3RhdGUgKi8KKyAgaHRpbS0+RE1BQnVyc3RTdGF0ZSA9IEhBTF9ETUFfQlVSU1RfU1RBVEVfUkVBRFk7CisKKyAgLyogSW5pdGlhbGl6ZSB0aGUgVElNIGNoYW5uZWxzIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKwogICAvKiBJbml0aWFsaXplIHRoZSBUSU0gc3RhdGUqLwogICBodGltLT5TdGF0ZSA9IEhBTF9USU1fU1RBVEVfUkVBRFk7CiAKQEAgLTIzNzIsNiArMjY0MCwxNSBAQAogICBIQUxfVElNX09uZVB1bHNlX01zcERlSW5pdChodGltKTsKICNlbmRpZiAvKiBVU0VfSEFMX1RJTV9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KIAorICAvKiBDaGFuZ2UgdGhlIERNQSBidXJzdCBvcGVyYXRpb24gc3RhdGUgKi8KKyAgaHRpbS0+RE1BQnVyc3RTdGF0ZSA9IEhBTF9ETUFfQlVSU1RfU1RBVEVfUkVTRVQ7CisKKyAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbCBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUKTsKKyAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRVNFVCk7CisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRVNFVCk7CisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRVNFVCk7CisKICAgLyogQ2hhbmdlIFRJTSBzdGF0ZSAqLwogICBodGltLT5TdGF0ZSA9IEhBTF9USU1fU1RBVEVfUkVTRVQ7CiAKQEAgLTI0MTMsMjMgKzI2OTAsNDQgQEAKIAogLyoqCiAgICogQGJyaWVmICBTdGFydHMgdGhlIFRJTSBPbmUgUHVsc2Ugc2lnbmFsIGdlbmVyYXRpb24uCisgICogQG5vdGUgVGhvdWdoIE91dHB1dENoYW5uZWwgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQgYnkgdGhlIGZ1bmN0aW9uCisgICogICAgICAgIGl0IGhhcyBiZWVuIGtlcHQgdG8gYXZvaWQgSEFMX1RJTSBBUEkgY29tcGF0aWJpbGl0eSBicmVhay4KKyAgKiBAbm90ZSBUaGUgcHVsc2Ugb3V0cHV0IGNoYW5uZWwgaXMgZGV0ZXJtaW5lZCB3aGVuIGNhbGxpbmcgCisgICogICAgICAgQHJlZiBIQUxfVElNX09uZVB1bHNlX0NvbmZpZ0NoYW5uZWwoKS4gCiAgICogQHBhcmFtICBodGltIFRJTSBPbmUgUHVsc2UgaGFuZGxlCi0gICogQHBhcmFtICBPdXRwdXRDaGFubmVsIFRJTSBDaGFubmVscyB0byBiZSBlbmFibGVkCi0gICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKLSAgKiAgICAgICAgICAgIEBhcmcgVElNX0NIQU5ORUxfMTogVElNIENoYW5uZWwgMSBzZWxlY3RlZAotICAqICAgICAgICAgICAgQGFyZyBUSU1fQ0hBTk5FTF8yOiBUSU0gQ2hhbm5lbCAyIHNlbGVjdGVkCisgICogQHBhcmFtICBPdXRwdXRDaGFubmVsIFNlZSBub3RlIGFib3ZlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX09uZVB1bHNlX1N0YXJ0KFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBPdXRwdXRDaGFubmVsKQogeworICBIQUxfVElNX0NoYW5uZWxTdGF0ZVR5cGVEZWYgY2hhbm5lbF8xX3N0YXRlID0gVElNX0NIQU5ORUxfU1RBVEVfR0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEpOworICBIQUxfVElNX0NoYW5uZWxTdGF0ZVR5cGVEZWYgY2hhbm5lbF8yX3N0YXRlID0gVElNX0NIQU5ORUxfU1RBVEVfR0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIpOworICBIQUxfVElNX0NoYW5uZWxTdGF0ZVR5cGVEZWYgY29tcGxlbWVudGFyeV9jaGFubmVsXzFfc3RhdGUgPSBUSU1fQ0hBTk5FTF9OX1NUQVRFX0dFVChodGltLCBUSU1fQ0hBTk5FTF8xKTsKKyAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8yX3N0YXRlID0gVElNX0NIQU5ORUxfTl9TVEFURV9HRVQoaHRpbSwgVElNX0NIQU5ORUxfMik7CisKICAgLyogUHJldmVudCB1bnVzZWQgYXJndW1lbnQocykgY29tcGlsYXRpb24gd2FybmluZyAqLwogICBVTlVTRUQoT3V0cHV0Q2hhbm5lbCk7CiAKKyAgLyogQ2hlY2sgdGhlIFRJTSBjaGFubmVscyBzdGF0ZSAqLworICBpZiAoKGNoYW5uZWxfMV9zdGF0ZSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpCisgICAgICB8fCAoY2hhbm5lbF8yX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgICAgIHx8IChjb21wbGVtZW50YXJ5X2NoYW5uZWxfMV9zdGF0ZSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpCisgICAgICB8fCAoY29tcGxlbWVudGFyeV9jaGFubmVsXzJfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKSkKKyAgeworICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KKworICAvKiBTZXQgdGhlIFRJTSBjaGFubmVscyBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKwogICAvKiBFbmFibGUgdGhlIENhcHR1cmUgY29tcGFyZSBhbmQgdGhlIElucHV0IENhcHR1cmUgY2hhbm5lbHMKICAgICAoaW4gdGhlIE9QTSBNb2RlIHRoZSB0d28gcG9zc2libGUgY2hhbm5lbHMgdGhhdCBjYW4gYmUgdXNlZCBhcmUgVElNX0NIQU5ORUxfMSBhbmQgVElNX0NIQU5ORUxfMikKICAgICBpZiBUSU1fQ0hBTk5FTF8xIGlzIHVzZWQgYXMgb3V0cHV0LCB0aGUgVElNX0NIQU5ORUxfMiB3aWxsIGJlIHVzZWQgYXMgaW5wdXQgYW5kCiAgICAgaWYgVElNX0NIQU5ORUxfMSBpcyB1c2VkIGFzIGlucHV0LCB0aGUgVElNX0NIQU5ORUxfMiB3aWxsIGJlIHVzZWQgYXMgb3V0cHV0Ci0gICAgaW4gYWxsIGNvbWJpbmF0aW9ucywgdGhlIFRJTV9DSEFOTkVMXzEgYW5kIFRJTV9DSEFOTkVMXzIgc2hvdWxkIGJlIGVuYWJsZWQgdG9nZXRoZXIKKyAgICB3aGF0ZXZlciB0aGUgY29tYmluYXRpb24sIHRoZSBUSU1fQ0hBTk5FTF8xIGFuZCBUSU1fQ0hBTk5FTF8yIHNob3VsZCBiZSBlbmFibGVkIHRvZ2V0aGVyCiAKICAgICBObyBuZWVkIHRvIGVuYWJsZSB0aGUgY291bnRlciwgaXQncyBlbmFibGVkIGF1dG9tYXRpY2FsbHkgYnkgaGFyZHdhcmUKICAgICAodGhlIGNvdW50ZXIgc3RhcnRzIGluIHJlc3BvbnNlIHRvIGEgc3RpbXVsdXMgYW5kIGdlbmVyYXRlIGEgcHVsc2UgKi8KQEAgLTI0NDksMTEgKzI3NDcsMTIgQEAKIAogLyoqCiAgICogQGJyaWVmICBTdG9wcyB0aGUgVElNIE9uZSBQdWxzZSBzaWduYWwgZ2VuZXJhdGlvbi4KKyAgKiBAbm90ZSBUaG91Z2ggT3V0cHV0Q2hhbm5lbCBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCBhbmQgaWdub3JlZCBieSB0aGUgZnVuY3Rpb24KKyAgKiAgICAgICAgaXQgaGFzIGJlZW4ga2VwdCB0byBhdm9pZCBIQUxfVElNIEFQSSBjb21wYXRpYmlsaXR5IGJyZWFrLgorICAqIEBub3RlIFRoZSBwdWxzZSBvdXRwdXQgY2hhbm5lbCBpcyBkZXRlcm1pbmVkIHdoZW4gY2FsbGluZyAKKyAgKiAgICAgICBAcmVmIEhBTF9USU1fT25lUHVsc2VfQ29uZmlnQ2hhbm5lbCgpLiAKICAgKiBAcGFyYW0gIGh0aW0gVElNIE9uZSBQdWxzZSBoYW5kbGUKLSAgKiBAcGFyYW0gIE91dHB1dENoYW5uZWwgVElNIENoYW5uZWxzIHRvIGJlIGRpc2FibGUKLSAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgotICAqICAgICAgICAgICAgQGFyZyBUSU1fQ0hBTk5FTF8xOiBUSU0gQ2hhbm5lbCAxIHNlbGVjdGVkCi0gICogICAgICAgICAgICBAYXJnIFRJTV9DSEFOTkVMXzI6IFRJTSBDaGFubmVsIDIgc2VsZWN0ZWQKKyAgKiBAcGFyYW0gIE91dHB1dENoYW5uZWwgU2VlIG5vdGUgYWJvdmUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fT25lUHVsc2VfU3RvcChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgT3V0cHV0Q2hhbm5lbCkKQEAgLTI0NjUsNyArMjc2NCw3IEBACiAgIChpbiB0aGUgT1BNIE1vZGUgdGhlIHR3byBwb3NzaWJsZSBjaGFubmVscyB0aGF0IGNhbiBiZSB1c2VkIGFyZSBUSU1fQ0hBTk5FTF8xIGFuZCBUSU1fQ0hBTk5FTF8yKQogICBpZiBUSU1fQ0hBTk5FTF8xIGlzIHVzZWQgYXMgb3V0cHV0LCB0aGUgVElNX0NIQU5ORUxfMiB3aWxsIGJlIHVzZWQgYXMgaW5wdXQgYW5kCiAgIGlmIFRJTV9DSEFOTkVMXzEgaXMgdXNlZCBhcyBpbnB1dCwgdGhlIFRJTV9DSEFOTkVMXzIgd2lsbCBiZSB1c2VkIGFzIG91dHB1dAotICBpbiBhbGwgY29tYmluYXRpb25zLCB0aGUgVElNX0NIQU5ORUxfMSBhbmQgVElNX0NIQU5ORUxfMiBzaG91bGQgYmUgZGlzYWJsZWQgdG9nZXRoZXIgKi8KKyAgd2hhdGV2ZXIgdGhlIGNvbWJpbmF0aW9uLCB0aGUgVElNX0NIQU5ORUxfMSBhbmQgVElNX0NIQU5ORUxfMiBzaG91bGQgYmUgZGlzYWJsZWQgdG9nZXRoZXIgKi8KIAogICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgVElNX0NIQU5ORUxfMSwgVElNX0NDeF9ESVNBQkxFKTsKICAgVElNX0NDeENoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIFRJTV9DSEFOTkVMXzIsIFRJTV9DQ3hfRElTQUJMRSk7CkBAIC0yNDc5LDI5ICsyNzc4LDU2IEBACiAgIC8qIERpc2FibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CiAKKyAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbHMgc3RhdGUgKi8KKyAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8yLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8yLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KICAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCiAgICogQGJyaWVmICBTdGFydHMgdGhlIFRJTSBPbmUgUHVsc2Ugc2lnbmFsIGdlbmVyYXRpb24gaW4gaW50ZXJydXB0IG1vZGUuCisgICogQG5vdGUgVGhvdWdoIE91dHB1dENoYW5uZWwgcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQgYnkgdGhlIGZ1bmN0aW9uCisgICogICAgICAgIGl0IGhhcyBiZWVuIGtlcHQgdG8gYXZvaWQgSEFMX1RJTSBBUEkgY29tcGF0aWJpbGl0eSBicmVhay4KKyAgKiBAbm90ZSBUaGUgcHVsc2Ugb3V0cHV0IGNoYW5uZWwgaXMgZGV0ZXJtaW5lZCB3aGVuIGNhbGxpbmcgCisgICogICAgICAgQHJlZiBIQUxfVElNX09uZVB1bHNlX0NvbmZpZ0NoYW5uZWwoKS4gCiAgICogQHBhcmFtICBodGltIFRJTSBPbmUgUHVsc2UgaGFuZGxlCi0gICogQHBhcmFtICBPdXRwdXRDaGFubmVsIFRJTSBDaGFubmVscyB0byBiZSBlbmFibGVkCi0gICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKLSAgKiAgICAgICAgICAgIEBhcmcgVElNX0NIQU5ORUxfMTogVElNIENoYW5uZWwgMSBzZWxlY3RlZAotICAqICAgICAgICAgICAgQGFyZyBUSU1fQ0hBTk5FTF8yOiBUSU0gQ2hhbm5lbCAyIHNlbGVjdGVkCisgICogQHBhcmFtICBPdXRwdXRDaGFubmVsIFNlZSBub3RlIGFib3ZlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX09uZVB1bHNlX1N0YXJ0X0lUKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBPdXRwdXRDaGFubmVsKQogeworICBIQUxfVElNX0NoYW5uZWxTdGF0ZVR5cGVEZWYgY2hhbm5lbF8xX3N0YXRlID0gVElNX0NIQU5ORUxfU1RBVEVfR0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEpOworICBIQUxfVElNX0NoYW5uZWxTdGF0ZVR5cGVEZWYgY2hhbm5lbF8yX3N0YXRlID0gVElNX0NIQU5ORUxfU1RBVEVfR0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIpOworICBIQUxfVElNX0NoYW5uZWxTdGF0ZVR5cGVEZWYgY29tcGxlbWVudGFyeV9jaGFubmVsXzFfc3RhdGUgPSBUSU1fQ0hBTk5FTF9OX1NUQVRFX0dFVChodGltLCBUSU1fQ0hBTk5FTF8xKTsKKyAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8yX3N0YXRlID0gVElNX0NIQU5ORUxfTl9TVEFURV9HRVQoaHRpbSwgVElNX0NIQU5ORUxfMik7CisKICAgLyogUHJldmVudCB1bnVzZWQgYXJndW1lbnQocykgY29tcGlsYXRpb24gd2FybmluZyAqLwogICBVTlVTRUQoT3V0cHV0Q2hhbm5lbCk7CiAKKyAgLyogQ2hlY2sgdGhlIFRJTSBjaGFubmVscyBzdGF0ZSAqLworICBpZiAoKGNoYW5uZWxfMV9zdGF0ZSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpCisgICAgICB8fCAoY2hhbm5lbF8yX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgICAgIHx8IChjb21wbGVtZW50YXJ5X2NoYW5uZWxfMV9zdGF0ZSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpCisgICAgICB8fCAoY29tcGxlbWVudGFyeV9jaGFubmVsXzJfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKSkKKyAgeworICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KKworICAvKiBTZXQgdGhlIFRJTSBjaGFubmVscyBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKwogICAvKiBFbmFibGUgdGhlIENhcHR1cmUgY29tcGFyZSBhbmQgdGhlIElucHV0IENhcHR1cmUgY2hhbm5lbHMKICAgICAoaW4gdGhlIE9QTSBNb2RlIHRoZSB0d28gcG9zc2libGUgY2hhbm5lbHMgdGhhdCBjYW4gYmUgdXNlZCBhcmUgVElNX0NIQU5ORUxfMSBhbmQgVElNX0NIQU5ORUxfMikKICAgICBpZiBUSU1fQ0hBTk5FTF8xIGlzIHVzZWQgYXMgb3V0cHV0LCB0aGUgVElNX0NIQU5ORUxfMiB3aWxsIGJlIHVzZWQgYXMgaW5wdXQgYW5kCiAgICAgaWYgVElNX0NIQU5ORUxfMSBpcyB1c2VkIGFzIGlucHV0LCB0aGUgVElNX0NIQU5ORUxfMiB3aWxsIGJlIHVzZWQgYXMgb3V0cHV0Ci0gICAgaW4gYWxsIGNvbWJpbmF0aW9ucywgdGhlIFRJTV9DSEFOTkVMXzEgYW5kIFRJTV9DSEFOTkVMXzIgc2hvdWxkIGJlIGVuYWJsZWQgdG9nZXRoZXIKKyAgICB3aGF0ZXZlciB0aGUgY29tYmluYXRpb24sIHRoZSBUSU1fQ0hBTk5FTF8xIGFuZCBUSU1fQ0hBTk5FTF8yIHNob3VsZCBiZSBlbmFibGVkIHRvZ2V0aGVyCiAKICAgICBObyBuZWVkIHRvIGVuYWJsZSB0aGUgY291bnRlciwgaXQncyBlbmFibGVkIGF1dG9tYXRpY2FsbHkgYnkgaGFyZHdhcmUKICAgICAodGhlIGNvdW50ZXIgc3RhcnRzIGluIHJlc3BvbnNlIHRvIGEgc3RpbXVsdXMgYW5kIGdlbmVyYXRlIGEgcHVsc2UgKi8KQEAgLTI1MjcsMTEgKzI4NTMsMTIgQEAKIAogLyoqCiAgICogQGJyaWVmICBTdG9wcyB0aGUgVElNIE9uZSBQdWxzZSBzaWduYWwgZ2VuZXJhdGlvbiBpbiBpbnRlcnJ1cHQgbW9kZS4KKyAgKiBAbm90ZSBUaG91Z2ggT3V0cHV0Q2hhbm5lbCBwYXJhbWV0ZXIgaXMgZGVwcmVjYXRlZCBhbmQgaWdub3JlZCBieSB0aGUgZnVuY3Rpb24KKyAgKiAgICAgICAgaXQgaGFzIGJlZW4ga2VwdCB0byBhdm9pZCBIQUxfVElNIEFQSSBjb21wYXRpYmlsaXR5IGJyZWFrLgorICAqIEBub3RlIFRoZSBwdWxzZSBvdXRwdXQgY2hhbm5lbCBpcyBkZXRlcm1pbmVkIHdoZW4gY2FsbGluZyAKKyAgKiAgICAgICBAcmVmIEhBTF9USU1fT25lUHVsc2VfQ29uZmlnQ2hhbm5lbCgpLiAKICAgKiBAcGFyYW0gIGh0aW0gVElNIE9uZSBQdWxzZSBoYW5kbGUKLSAgKiBAcGFyYW0gIE91dHB1dENoYW5uZWwgVElNIENoYW5uZWxzIHRvIGJlIGVuYWJsZWQKLSAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgotICAqICAgICAgICAgICAgQGFyZyBUSU1fQ0hBTk5FTF8xOiBUSU0gQ2hhbm5lbCAxIHNlbGVjdGVkCi0gICogICAgICAgICAgICBAYXJnIFRJTV9DSEFOTkVMXzI6IFRJTSBDaGFubmVsIDIgc2VsZWN0ZWQKKyAgKiBAcGFyYW0gIE91dHB1dENoYW5uZWwgU2VlIG5vdGUgYWJvdmUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fT25lUHVsc2VfU3RvcF9JVChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgT3V0cHV0Q2hhbm5lbCkKQEAgLTI1NDksNyArMjg3Niw3IEBACiAgIChpbiB0aGUgT1BNIE1vZGUgdGhlIHR3byBwb3NzaWJsZSBjaGFubmVscyB0aGF0IGNhbiBiZSB1c2VkIGFyZSBUSU1fQ0hBTk5FTF8xIGFuZCBUSU1fQ0hBTk5FTF8yKQogICBpZiBUSU1fQ0hBTk5FTF8xIGlzIHVzZWQgYXMgb3V0cHV0LCB0aGUgVElNX0NIQU5ORUxfMiB3aWxsIGJlIHVzZWQgYXMgaW5wdXQgYW5kCiAgIGlmIFRJTV9DSEFOTkVMXzEgaXMgdXNlZCBhcyBpbnB1dCwgdGhlIFRJTV9DSEFOTkVMXzIgd2lsbCBiZSB1c2VkIGFzIG91dHB1dAotICBpbiBhbGwgY29tYmluYXRpb25zLCB0aGUgVElNX0NIQU5ORUxfMSBhbmQgVElNX0NIQU5ORUxfMiBzaG91bGQgYmUgZGlzYWJsZWQgdG9nZXRoZXIgKi8KKyAgd2hhdGV2ZXIgdGhlIGNvbWJpbmF0aW9uLCB0aGUgVElNX0NIQU5ORUxfMSBhbmQgVElNX0NIQU5ORUxfMiBzaG91bGQgYmUgZGlzYWJsZWQgdG9nZXRoZXIgKi8KICAgVElNX0NDeENoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIFRJTV9DSEFOTkVMXzEsIFRJTV9DQ3hfRElTQUJMRSk7CiAgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBUSU1fQ0hBTk5FTF8yLCBUSU1fQ0N4X0RJU0FCTEUpOwogCkBAIC0yNTYyLDYgKzI4ODksMTIgQEAKICAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCAqLwogICBfX0hBTF9USU1fRElTQUJMRShodGltKTsKIAorICAvKiBTZXQgdGhlIFRJTSBjaGFubmVscyBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwogICByZXR1cm4gSEFMX09LOwogfQpAQCAtMjYwMCw2ICsyOTMzLDkgQEAKICAgKiBAbm90ZSAgIEVuY29kZXIgbW9kZSBhbmQgRXh0ZXJuYWwgY2xvY2sgbW9kZSAyIGFyZSBub3QgY29tcGF0aWJsZSBhbmQgbXVzdCBub3QgYmUgc2VsZWN0ZWQgdG9nZXRoZXIKICAgKiAgICAgICAgIEV4OiBBIGNhbGwgZm9yIEByZWYgSEFMX1RJTV9FbmNvZGVyX0luaXQgd2lsbCBlcmFzZSB0aGUgc2V0dGluZ3Mgb2YgQHJlZiBIQUxfVElNX0NvbmZpZ0Nsb2NrU291cmNlCiAgICogICAgICAgICB1c2luZyBUSU1fQ0xPQ0tTT1VSQ0VfRVRSTU9ERTIgYW5kIHZpY2UgdmVyc2EKKyAgKiBAbm90ZSAgIFdoZW4gdGhlIHRpbWVyIGluc3RhbmNlIGlzIGluaXRpYWxpemVkIGluIEVuY29kZXIgbW9kZSwgdGltZXIKKyAgKiAgICAgICAgIGNoYW5uZWxzIDEgYW5kIGNoYW5uZWwgMiBhcmUgcmVzZXJ2ZWQgYW5kIGNhbm5vdCBiZSB1c2VkIGZvciBvdGhlcgorICAqICAgICAgICAgcHVycG9zZS4KICAgKiBAcGFyYW0gIGh0aW0gVElNIEVuY29kZXIgSW50ZXJmYWNlIGhhbmRsZQogICAqIEBwYXJhbSAgc0NvbmZpZyBUSU0gRW5jb2RlciBJbnRlcmZhY2UgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKQEAgLTI2OTcsNiArMzAzMywxNSBAQAogICAvKiBXcml0ZSB0byBUSU14IENDRVIgKi8KICAgaHRpbS0+SW5zdGFuY2UtPkNDRVIgPSB0bXBjY2VyOwogCisgIC8qIEluaXRpYWxpemUgdGhlIERNQSBidXJzdCBvcGVyYXRpb24gc3RhdGUgKi8KKyAgaHRpbS0+RE1BQnVyc3RTdGF0ZSA9IEhBTF9ETUFfQlVSU1RfU1RBVEVfUkVBRFk7CisKKyAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbHMgc3RhdGUgKi8KKyAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8yLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8yLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworCiAgIC8qIEluaXRpYWxpemUgdGhlIFRJTSBzdGF0ZSovCiAgIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRUFEWTsKIApAQCAtMjczMSw2ICszMDc2LDE1IEBACiAgIEhBTF9USU1fRW5jb2Rlcl9Nc3BEZUluaXQoaHRpbSk7CiAjZW5kaWYgLyogVVNFX0hBTF9USU1fUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAKKyAgLyogQ2hhbmdlIHRoZSBETUEgYnVyc3Qgb3BlcmF0aW9uIHN0YXRlICovCisgIGh0aW0tPkRNQUJ1cnN0U3RhdGUgPSBIQUxfRE1BX0JVUlNUX1NUQVRFX1JFU0VUOworCisgIC8qIFNldCB0aGUgVElNIGNoYW5uZWxzIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVTRVQpOworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUKTsKKwogICAvKiBDaGFuZ2UgVElNIHN0YXRlICovCiAgIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRVNFVDsKIApAQCAtMjc4Miw5ICszMTM2LDU5IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX0VuY29kZXJfU3RhcnQoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IENoYW5uZWwpCiB7CisgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjaGFubmVsXzFfc3RhdGUgPSBUSU1fQ0hBTk5FTF9TVEFURV9HRVQoaHRpbSwgVElNX0NIQU5ORUxfMSk7CisgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjaGFubmVsXzJfc3RhdGUgPSBUSU1fQ0hBTk5FTF9TVEFURV9HRVQoaHRpbSwgVElNX0NIQU5ORUxfMik7CisgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjb21wbGVtZW50YXJ5X2NoYW5uZWxfMV9zdGF0ZSA9IFRJTV9DSEFOTkVMX05fU1RBVEVfR0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEpOworICBIQUxfVElNX0NoYW5uZWxTdGF0ZVR5cGVEZWYgY29tcGxlbWVudGFyeV9jaGFubmVsXzJfc3RhdGUgPSBUSU1fQ0hBTk5FTF9OX1NUQVRFX0dFVChodGltLCBUSU1fQ0hBTk5FTF8yKTsKKwogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0VOQ09ERVJfSU5URVJGQUNFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSk7CiAKKyAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbChzKSBzdGF0ZSAqLworICBpZiAoQ2hhbm5lbCA9PSBUSU1fQ0hBTk5FTF8xKQorICB7CisgICAgaWYgKChjaGFubmVsXzFfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQorICAgICAgICB8fCAoY29tcGxlbWVudGFyeV9jaGFubmVsXzFfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKSkKKyAgICB7CisgICAgICByZXR1cm4gSEFMX0VSUk9SOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKyAgICAgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAoQ2hhbm5lbCA9PSBUSU1fQ0hBTk5FTF8yKQorICB7CisgICAgaWYgKChjaGFubmVsXzJfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQorICAgICAgICB8fCAoY29tcGxlbWVudGFyeV9jaGFubmVsXzJfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKSkKKyAgICB7CisgICAgICByZXR1cm4gSEFMX0VSUk9SOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKyAgICAgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKyAgICB9CisgIH0KKyAgZWxzZQorICB7CisgICAgaWYgKChjaGFubmVsXzFfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQorICAgICAgICB8fCAoY2hhbm5lbF8yX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgICAgICAgfHwgKGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8xX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgICAgICAgfHwgKGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8yX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkpCisgICAgeworICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisgICAgICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworICAgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworICAgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworICAgIH0KKyAgfQorCiAgIC8qIEVuYWJsZSB0aGUgZW5jb2RlciBpbnRlcmZhY2UgY2hhbm5lbHMgKi8KICAgc3dpdGNoIChDaGFubmVsKQogICB7CkBAIC0yODU2LDYgKzMyNjAsMjAgQEAKICAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCAqLwogICBfX0hBTF9USU1fRElTQUJMRShodGltKTsKIAorICAvKiBTZXQgdGhlIFRJTSBjaGFubmVsKHMpIHN0YXRlICovCisgIGlmICgoQ2hhbm5lbCA9PSBUSU1fQ0hBTk5FTF8xKSB8fCAoQ2hhbm5lbCA9PSBUSU1fQ0hBTk5FTF8yKSkKKyAgeworICAgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICAgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIH0KKyAgZWxzZQorICB7CisgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8yLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICB9CisKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwogICByZXR1cm4gSEFMX09LOwogfQpAQCAtMjg3Miw5ICszMjkwLDU5IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX0VuY29kZXJfU3RhcnRfSVQoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IENoYW5uZWwpCiB7CisgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjaGFubmVsXzFfc3RhdGUgPSBUSU1fQ0hBTk5FTF9TVEFURV9HRVQoaHRpbSwgVElNX0NIQU5ORUxfMSk7CisgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjaGFubmVsXzJfc3RhdGUgPSBUSU1fQ0hBTk5FTF9TVEFURV9HRVQoaHRpbSwgVElNX0NIQU5ORUxfMik7CisgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjb21wbGVtZW50YXJ5X2NoYW5uZWxfMV9zdGF0ZSA9IFRJTV9DSEFOTkVMX05fU1RBVEVfR0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEpOworICBIQUxfVElNX0NoYW5uZWxTdGF0ZVR5cGVEZWYgY29tcGxlbWVudGFyeV9jaGFubmVsXzJfc3RhdGUgPSBUSU1fQ0hBTk5FTF9OX1NUQVRFX0dFVChodGltLCBUSU1fQ0hBTk5FTF8yKTsKKwogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0VOQ09ERVJfSU5URVJGQUNFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSk7CiAKKyAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbChzKSBzdGF0ZSAqLworICBpZiAoQ2hhbm5lbCA9PSBUSU1fQ0hBTk5FTF8xKQorICB7CisgICAgaWYgKChjaGFubmVsXzFfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQorICAgICAgICB8fCAoY29tcGxlbWVudGFyeV9jaGFubmVsXzFfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKSkKKyAgICB7CisgICAgICByZXR1cm4gSEFMX0VSUk9SOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKyAgICAgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAoQ2hhbm5lbCA9PSBUSU1fQ0hBTk5FTF8yKQorICB7CisgICAgaWYgKChjaGFubmVsXzJfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQorICAgICAgICB8fCAoY29tcGxlbWVudGFyeV9jaGFubmVsXzJfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKSkKKyAgICB7CisgICAgICByZXR1cm4gSEFMX0VSUk9SOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKyAgICAgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKyAgICB9CisgIH0KKyAgZWxzZQorICB7CisgICAgaWYgKChjaGFubmVsXzFfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQorICAgICAgICB8fCAoY2hhbm5lbF8yX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgICAgICAgfHwgKGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8xX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgICAgICAgfHwgKGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8yX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkpCisgICAgeworICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisgICAgICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworICAgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworICAgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworICAgIH0KKyAgfQorCiAgIC8qIEVuYWJsZSB0aGUgZW5jb2RlciBpbnRlcmZhY2UgY2hhbm5lbHMgKi8KICAgLyogRW5hYmxlIHRoZSBjYXB0dXJlIGNvbXBhcmUgSW50ZXJydXB0cyAxIGFuZC9vciAyICovCiAgIHN3aXRjaCAoQ2hhbm5lbCkKQEAgLTI5NTQsOCArMzQyMiwxOSBAQAogICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCiAgIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOwogCi0gIC8qIENoYW5nZSB0aGUgaHRpbSBzdGF0ZSAqLwotICBodGltLT5TdGF0ZSA9IEhBTF9USU1fU1RBVEVfUkVBRFk7CisgIC8qIFNldCB0aGUgVElNIGNoYW5uZWwocykgc3RhdGUgKi8KKyAgaWYgKChDaGFubmVsID09IFRJTV9DSEFOTkVMXzEpIHx8IChDaGFubmVsID09IFRJTV9DSEFOTkVMXzIpKQorICB7CisgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICAgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIH0KIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CkBAIC0yOTc3LDI3ICszNDU2LDk1IEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX0VuY29kZXJfU3RhcnRfRE1BKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBDaGFubmVsLCB1aW50MzJfdCAqcERhdGExLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqcERhdGEyLCB1aW50MTZfdCBMZW5ndGgpCiB7CisgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjaGFubmVsXzFfc3RhdGUgPSBUSU1fQ0hBTk5FTF9TVEFURV9HRVQoaHRpbSwgVElNX0NIQU5ORUxfMSk7CisgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjaGFubmVsXzJfc3RhdGUgPSBUSU1fQ0hBTk5FTF9TVEFURV9HRVQoaHRpbSwgVElNX0NIQU5ORUxfMik7CisgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjb21wbGVtZW50YXJ5X2NoYW5uZWxfMV9zdGF0ZSA9IFRJTV9DSEFOTkVMX05fU1RBVEVfR0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEpOworICBIQUxfVElNX0NoYW5uZWxTdGF0ZVR5cGVEZWYgY29tcGxlbWVudGFyeV9jaGFubmVsXzJfc3RhdGUgPSBUSU1fQ0hBTk5FTF9OX1NUQVRFX0dFVChodGltLCBUSU1fQ0hBTk5FTF8yKTsKKwogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0VOQ09ERVJfSU5URVJGQUNFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSk7CiAKLSAgaWYgKGh0aW0tPlN0YXRlID09IEhBTF9USU1fU1RBVEVfQlVTWSkKKyAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbChzKSBzdGF0ZSAqLworICBpZiAoQ2hhbm5lbCA9PSBUSU1fQ0hBTk5FTF8xKQogICB7Ci0gICAgcmV0dXJuIEhBTF9CVVNZOwotICB9Ci0gIGVsc2UgaWYgKGh0aW0tPlN0YXRlID09IEhBTF9USU1fU1RBVEVfUkVBRFkpCi0gIHsKLSAgICBpZiAoKCgocERhdGExID09IE5VTEwpIHx8IChwRGF0YTIgPT0gTlVMTCkpKSAmJiAoTGVuZ3RoID4gMFUpKQorICAgIGlmICgoY2hhbm5lbF8xX3N0YXRlID09IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKQorICAgICAgICB8fCAoY29tcGxlbWVudGFyeV9jaGFubmVsXzFfc3RhdGUgPT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpKQogICAgIHsKLSAgICAgIHJldHVybiBIQUxfRVJST1I7CisgICAgICByZXR1cm4gSEFMX0JVU1k7CisgICAgfQorICAgIGVsc2UgaWYgKChjaGFubmVsXzFfc3RhdGUgPT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQorICAgICAgICAgICAgICYmIChjb21wbGVtZW50YXJ5X2NoYW5uZWxfMV9zdGF0ZSA9PSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpKQorICAgIHsKKyAgICAgIGlmICgocERhdGExID09IE5VTEwpICYmIChMZW5ndGggPiAwVSkpCisgICAgICB7CisgICAgICAgIHJldHVybiBIQUxfRVJST1I7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisgICAgICAgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKyAgICAgIH0KICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9CVVNZOworICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAoQ2hhbm5lbCA9PSBUSU1fQ0hBTk5FTF8yKQorICB7CisgICAgaWYgKChjaGFubmVsXzJfc3RhdGUgPT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpCisgICAgICAgIHx8IChjb21wbGVtZW50YXJ5X2NoYW5uZWxfMl9zdGF0ZSA9PSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSkpCisgICAgeworICAgICAgcmV0dXJuIEhBTF9CVVNZOworICAgIH0KKyAgICBlbHNlIGlmICgoY2hhbm5lbF8yX3N0YXRlID09IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgICAgICAgICAgICAmJiAoY29tcGxlbWVudGFyeV9jaGFubmVsXzJfc3RhdGUgPT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKSkKKyAgICB7CisgICAgICBpZiAoKHBEYXRhMiA9PSBOVUxMKSAmJiAoTGVuZ3RoID4gMFUpKQorICAgICAgeworICAgICAgICByZXR1cm4gSEFMX0VSUk9SOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworICAgICAgICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8yLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICByZXR1cm4gSEFMX0VSUk9SOwogICAgIH0KICAgfQogICBlbHNlCiAgIHsKLSAgICAvKiBub3RoaW5nIHRvIGRvICovCisgICAgaWYgKChjaGFubmVsXzFfc3RhdGUgPT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpCisgICAgICAgIHx8IChjaGFubmVsXzJfc3RhdGUgPT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpCisgICAgICAgIHx8IChjb21wbGVtZW50YXJ5X2NoYW5uZWxfMV9zdGF0ZSA9PSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSkKKyAgICAgICAgfHwgKGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8yX3N0YXRlID09IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKSkKKyAgICB7CisgICAgICByZXR1cm4gSEFMX0JVU1k7CisgICAgfQorICAgIGVsc2UgaWYgKChjaGFubmVsXzFfc3RhdGUgPT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQorICAgICAgICAgICAgICYmIChjaGFubmVsXzJfc3RhdGUgPT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQorICAgICAgICAgICAgICYmIChjb21wbGVtZW50YXJ5X2NoYW5uZWxfMV9zdGF0ZSA9PSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpCisgICAgICAgICAgICAgJiYgKGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8yX3N0YXRlID09IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkpCisgICAgeworICAgICAgaWYgKCgoKHBEYXRhMSA9PSBOVUxMKSB8fCAocERhdGEyID09IE5VTEwpKSkgJiYgKExlbmd0aCA+IDBVKSkKKyAgICAgIHsKKyAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKyAgICAgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKyAgICAgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworICAgICAgICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8yLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICByZXR1cm4gSEFMX0VSUk9SOworICAgIH0KICAgfQogCiAgIHN3aXRjaCAoQ2hhbm5lbCkKQEAgLTMwMTQsNiArMzU2MSw3IEBACiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KICAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IxLCAodWludDMyX3QpcERhdGExLCBMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKKyAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwogICAgICAgfQogICAgICAgLyogRW5hYmxlIHRoZSBUSU0gSW5wdXQgQ2FwdHVyZSBETUEgcmVxdWVzdCAqLwpAQCAtMzAzOCw2ICszNTg2LDcgQEAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwogICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjIsICh1aW50MzJfdClwRGF0YTIsIExlbmd0aCkgIT0gSEFMX09LKQogICAgICAgeworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgICB9CiAgICAgICAvKiBFbmFibGUgdGhlIFRJTSBJbnB1dCBDYXB0dXJlICBETUEgcmVxdWVzdCAqLwpAQCAtMzA2Myw2ICszNjEyLDcgQEAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwogICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjEsICh1aW50MzJfdClwRGF0YTEsIExlbmd0aCkgIT0gSEFMX09LKQogICAgICAgeworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgICB9CiAKQEAgLTMwNzYsNiArMzYyNiw3IEBACiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KICAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzJdLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IyLCAodWludDMyX3QpcERhdGEyLCBMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKKyAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwogICAgICAgfQogICAgICAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsICovCkBAIC0zMDk1LDYgKzM2NDYsNyBAQAogICAgIGRlZmF1bHQ6CiAgICAgICBicmVhazsKICAgfQorCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KICAgcmV0dXJuIEhBTF9PSzsKIH0KQEAgLTMxNDcsOCArMzY5OSwxOSBAQAogICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCiAgIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOwogCi0gIC8qIENoYW5nZSB0aGUgaHRpbSBzdGF0ZSAqLwotICBodGltLT5TdGF0ZSA9IEhBTF9USU1fU1RBVEVfUkVBRFk7CisgIC8qIFNldCB0aGUgVElNIGNoYW5uZWwocykgc3RhdGUgKi8KKyAgaWYgKChDaGFubmVsID09IFRJTV9DSEFOTkVMXzEpIHx8IChDaGFubmVsID09IFRJTV9DSEFOTkVMXzIpKQorICB7CisgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICAgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIH0KIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CkBAIC0zNDE3LDggKzM5ODAsNiBAQAogICAvKiBQcm9jZXNzIExvY2tlZCAqLwogICBfX0hBTF9MT0NLKGh0aW0pOwogCi0gIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9CVVNZOwotCiAgIHN3aXRjaCAoQ2hhbm5lbCkKICAgewogICAgIGNhc2UgVElNX0NIQU5ORUxfMToKQEAgLTM0ODUsOCArNDA0Niw2IEBACiAgICAgICBicmVhazsKICAgfQogCi0gIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRUFEWTsKLQogICBfX0hBTF9VTkxPQ0soaHRpbSk7CiAKICAgcmV0dXJuIEhBTF9PSzsKQEAgLTM1MTcsOCArNDA3Niw2IEBACiAgIC8qIFByb2Nlc3MgTG9ja2VkICovCiAgIF9fSEFMX0xPQ0soaHRpbSk7CiAKLSAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX0JVU1k7Ci0KICAgaWYgKENoYW5uZWwgPT0gVElNX0NIQU5ORUxfMSkKICAgewogICAgIC8qIFRJMSBDb25maWd1cmF0aW9uICovCkBAIC0zNTgyLDggKzQxMzksNiBAQAogICAgIGh0aW0tPkluc3RhbmNlLT5DQ01SMiB8PSAoc0NvbmZpZy0+SUNQcmVzY2FsZXIgPDwgOFUpOwogICB9CiAKLSAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFQURZOwotCiAgIF9fSEFMX1VOTE9DSyhodGltKTsKIAogICByZXR1cm4gSEFMX09LOwpAQCAtMzYxNyw4ICs0MTcyLDYgQEAKICAgLyogUHJvY2VzcyBMb2NrZWQgKi8KICAgX19IQUxfTE9DSyhodGltKTsKIAotICBodGltLT5TdGF0ZSA9IEhBTF9USU1fU1RBVEVfQlVTWTsKLQogICBzd2l0Y2ggKENoYW5uZWwpCiAgIHsKICAgICBjYXNlIFRJTV9DSEFOTkVMXzE6CkBAIC0zNzI3LDggKzQyODAsNiBAQAogICAgICAgYnJlYWs7CiAgIH0KIAotICBodGltLT5TdGF0ZSA9IEhBTF9USU1fU1RBVEVfUkVBRFk7Ci0KICAgX19IQUxfVU5MT0NLKGh0aW0pOwogCiAgIHJldHVybiBIQUxfT0s7CkBAIC0zODk5LDIwICs0NDUwLDc1IEBACiAgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIG9ubHkgd2hlbiBCdXJzdExlbmd0aCBpcyBlcXVhbCB0byBETUEgZGF0YSB0cmFuc2ZlciBsZW5ndGguCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX0RNQUJ1cnN0X1dyaXRlU3RhcnQoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IEJ1cnN0QmFzZUFkZHJlc3MsIHVpbnQzMl90IEJ1cnN0UmVxdWVzdFNyYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqQnVyc3RCdWZmZXIsIHVpbnQzMl90ICBCdXJzdExlbmd0aCkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fRE1BQnVyc3RfV3JpdGVTdGFydChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQnVyc3RCYXNlQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBCdXJzdFJlcXVlc3RTcmMsIHVpbnQzMl90ICpCdXJzdEJ1ZmZlciwgdWludDMyX3QgIEJ1cnN0TGVuZ3RoKQoreworICByZXR1cm4gSEFMX1RJTV9ETUFCdXJzdF9NdWx0aVdyaXRlU3RhcnQoaHRpbSwgQnVyc3RCYXNlQWRkcmVzcywgQnVyc3RSZXF1ZXN0U3JjLCBCdXJzdEJ1ZmZlciwgQnVyc3RMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJ1cnN0TGVuZ3RoKSA+PiA4VSkgKyAxVSk7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlIHRoZSBETUEgQnVyc3QgdG8gdHJhbnNmZXIgbXVsdGlwbGUgRGF0YSBmcm9tIHRoZSBtZW1vcnkgdG8gdGhlIFRJTSBwZXJpcGhlcmFsCisgICogQHBhcmFtICBodGltIFRJTSBoYW5kbGUKKyAgKiBAcGFyYW0gIEJ1cnN0QmFzZUFkZHJlc3MgVElNIEJhc2UgYWRkcmVzcyBmcm9tIHdoZXJlIHRoZSBETUEgd2lsbCBzdGFydCB0aGUgRGF0YSB3cml0ZQorICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ1IxCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NSMgorICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9TTUNSCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0RJRVIKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfU1IKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfRUdSCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDTVIxCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDTVIyCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDRVIKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ05UCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX1BTQworICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9BUlIKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfUkNSCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDUjEKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ0NSMgorICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9DQ1IzCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDUjQKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQkRUUgorICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9PUgorICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9DQ01SMyAKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ0NSNSAKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ0NSNiAKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQUYxICAoKikKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQUYyICAoKikKKyAgKiAgICAgICAgICgqKSB2YWx1ZSBub3QgZGVmaW5lZCBpbiBhbGwgZGV2aWNlcworICAqIEBwYXJhbSAgQnVyc3RSZXF1ZXN0U3JjIFRJTSBETUEgUmVxdWVzdCBzb3VyY2VzCisgICogICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BX1VQREFURTogVElNIHVwZGF0ZSBJbnRlcnJ1cHQgc291cmNlCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFfQ0MxOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDEgRE1BIHNvdXJjZQorICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BX0NDMjogVElNIENhcHR1cmUgQ29tcGFyZSAyIERNQSBzb3VyY2UKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQV9DQzM6IFRJTSBDYXB0dXJlIENvbXBhcmUgMyBETUEgc291cmNlCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFfQ0M0OiBUSU0gQ2FwdHVyZSBDb21wYXJlIDQgRE1BIHNvdXJjZQorICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BX0NPTTogVElNIENvbW11dGF0aW9uIERNQSBzb3VyY2UKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQV9UUklHR0VSOiBUSU0gVHJpZ2dlciBETUEgc291cmNlCisgICogQHBhcmFtICBCdXJzdEJ1ZmZlciBUaGUgQnVmZmVyIGFkZHJlc3MuCisgICogQHBhcmFtICBCdXJzdExlbmd0aCBETUEgQnVyc3QgbGVuZ3RoLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIHZhbHVlCisgICogICAgICAgICBiZXR3ZWVuOiBUSU1fRE1BQlVSU1RMRU5HVEhfMVRSQU5TRkVSIGFuZCBUSU1fRE1BQlVSU1RMRU5HVEhfMThUUkFOU0ZFUlMuCisgICogQHBhcmFtICBEYXRhTGVuZ3RoIERhdGEgbGVuZ3RoLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIHZhbHVlCisgICogICAgICAgICBiZXR3ZWVuIDEgYW5kIDB4RkZGRi4KKyAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKKyAgKi8KK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fRE1BQnVyc3RfTXVsdGlXcml0ZVN0YXJ0KFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBCdXJzdEJhc2VBZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQnVyc3RSZXF1ZXN0U3JjLCB1aW50MzJfdCAqQnVyc3RCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAgQnVyc3RMZW5ndGgsICB1aW50MzJfdCAgRGF0YUxlbmd0aCkKIHsKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9ETUFCVVJTVF9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0RNQV9CQVNFKEJ1cnN0QmFzZUFkZHJlc3MpKTsKICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9ETUFfU09VUkNFKEJ1cnN0UmVxdWVzdFNyYykpOwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0RNQV9MRU5HVEgoQnVyc3RMZW5ndGgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9ETUFfREFUQV9MRU5HVEgoRGF0YUxlbmd0aCkpOwogCi0gIGlmIChodGltLT5TdGF0ZSA9PSBIQUxfVElNX1NUQVRFX0JVU1kpCisgIGlmIChodGltLT5ETUFCdXJzdFN0YXRlID09IEhBTF9ETUFfQlVSU1RfU1RBVEVfQlVTWSkKICAgewogICAgIHJldHVybiBIQUxfQlVTWTsKICAgfQotICBlbHNlIGlmIChodGltLT5TdGF0ZSA9PSBIQUxfVElNX1NUQVRFX1JFQURZKQorICBlbHNlIGlmIChodGltLT5ETUFCdXJzdFN0YXRlID09IEhBTF9ETUFfQlVSU1RfU1RBVEVfUkVBRFkpCiAgIHsKICAgICBpZiAoKEJ1cnN0QnVmZmVyID09IE5VTEwpICYmIChCdXJzdExlbmd0aCA+IDBVKSkKICAgICB7CkBAIC0zOTIwLDcgKzQ1MjYsNyBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX0JVU1k7CisgICAgICBodGltLT5ETUFCdXJzdFN0YXRlID0gSEFMX0RNQV9CVVJTVF9TVEFURV9CVVNZOwogICAgIH0KICAgfQogICBlbHNlCkBAIC0zOTM5LDggKzQ1NDUsMTAgQEAKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9VUERBVEVdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvciA7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX1VQREFURV0sICh1aW50MzJfdClCdXJzdEJ1ZmZlciwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgKChCdXJzdExlbmd0aCkgPj4gOFUpICsgMVUpICE9IEhBTF9PSykKKyAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9VUERBVEVdLCAodWludDMyX3QpQnVyc3RCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgRGF0YUxlbmd0aCkgIT0gSEFMX09LKQogICAgICAgeworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTM5NTYsOCArNDU2NCw5IEBACiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwogICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0sICh1aW50MzJfdClCdXJzdEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsICgoQnVyc3RMZW5ndGgpID4+IDhVKSArIDFVKSAhPSBIQUxfT0spCisgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgRGF0YUxlbmd0aCkgIT0gSEFMX09LKQogICAgICAgeworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTM5NzMsOCArNDU4Miw5IEBACiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwogICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0sICh1aW50MzJfdClCdXJzdEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsICgoQnVyc3RMZW5ndGgpID4+IDhVKSArIDFVKSAhPSBIQUxfT0spCisgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgRGF0YUxlbmd0aCkgIT0gSEFMX09LKQogICAgICAgeworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTM5OTAsOCArNDYwMCw5IEBACiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwogICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDM10sICh1aW50MzJfdClCdXJzdEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsICgoQnVyc3RMZW5ndGgpID4+IDhVKSArIDFVKSAhPSBIQUxfT0spCisgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgRGF0YUxlbmd0aCkgIT0gSEFMX09LKQogICAgICAgeworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTQwMDcsOCArNDYxOCw5IEBACiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwogICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDNF0sICh1aW50MzJfdClCdXJzdEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsICgoQnVyc3RMZW5ndGgpID4+IDhVKSArIDFVKSAhPSBIQUxfT0spCisgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgRGF0YUxlbmd0aCkgIT0gSEFMX09LKQogICAgICAgeworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTQwMjQsOCArNDYzNiw5IEBACiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwogICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NPTU1VVEFUSU9OXSwgKHVpbnQzMl90KUJ1cnN0QnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgKChCdXJzdExlbmd0aCkgPj4gOFUpICsgMVUpICE9IEhBTF9PSykKKyAgICAgICAgICAgICAgICAgICAgICAgICAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5ETUFSLCBEYXRhTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CisgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICAgIH0KICAgICAgIGJyZWFrOwpAQCAtNDA0MSw4ICs0NjU0LDkgQEAKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfVFJJR0dFUl0sICh1aW50MzJfdClCdXJzdEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsICgoQnVyc3RMZW5ndGgpID4+IDhVKSArIDFVKSAhPSBIQUxfT0spCisgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgRGF0YUxlbmd0aCkgIT0gSEFMX09LKQogICAgICAgeworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTQwNTAsMTQgKzQ2NjQsMTIgQEAKICAgICBkZWZhdWx0OgogICAgICAgYnJlYWs7CiAgIH0KLSAgLyogY29uZmlndXJlIHRoZSBETUEgQnVyc3QgTW9kZSAqLwotICBodGltLT5JbnN0YW5jZS0+RENSID0gKEJ1cnN0QmFzZUFkZHJlc3MgfCBCdXJzdExlbmd0aCk7CiAKKyAgLyogQ29uZmlndXJlIHRoZSBETUEgQnVyc3QgTW9kZSAqLworICBodGltLT5JbnN0YW5jZS0+RENSID0gKEJ1cnN0QmFzZUFkZHJlc3MgfCBCdXJzdExlbmd0aCk7CiAgIC8qIEVuYWJsZSB0aGUgVElNIERNQSBSZXF1ZXN0ICovCiAgIF9fSEFMX1RJTV9FTkFCTEVfRE1BKGh0aW0sIEJ1cnN0UmVxdWVzdFNyYyk7CiAKLSAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFQURZOwotCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KICAgcmV0dXJuIEhBTF9PSzsKIH0KQEAgLTQwNzAsNyArNDY4Miw2IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX0RNQUJ1cnN0X1dyaXRlU3RvcChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgQnVyc3RSZXF1ZXN0U3JjKQogewotICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fRE1BX1NPVVJDRShCdXJzdFJlcXVlc3RTcmMpKTsKIApAQCAtNDA3OSw1MSArNDY5MCw1MSBAQAogICB7CiAgICAgY2FzZSBUSU1fRE1BX1VQREFURToKICAgICB7Ci0gICAgICBzdGF0dXMgPSBIQUxfRE1BX0Fib3J0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9VUERBVEVdKTsKKyAgICAgICh2b2lkKUhBTF9ETUFfQWJvcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX1VQREFURV0pOwogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgVElNX0RNQV9DQzE6CiAgICAgewotICAgICAgc3RhdHVzID0gSEFMX0RNQV9BYm9ydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXSk7CisgICAgICAodm9pZClIQUxfRE1BX0Fib3J0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdKTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRJTV9ETUFfQ0MyOgogICAgIHsKLSAgICAgIHN0YXR1cyA9IEhBTF9ETUFfQWJvcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0pOworICAgICAgKHZvaWQpSEFMX0RNQV9BYm9ydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXSk7CiAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBUSU1fRE1BX0NDMzoKICAgICB7Ci0gICAgICBzdGF0dXMgPSAgSEFMX0RNQV9BYm9ydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MzXSk7CisgICAgICAodm9pZClIQUxfRE1BX0Fib3J0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzNdKTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRJTV9ETUFfQ0M0OgogICAgIHsKLSAgICAgIHN0YXR1cyA9IEhBTF9ETUFfQWJvcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDNF0pOworICAgICAgKHZvaWQpSEFMX0RNQV9BYm9ydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0M0XSk7CiAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBUSU1fRE1BX0NPTToKICAgICB7Ci0gICAgICBzdGF0dXMgPSBIQUxfRE1BX0Fib3J0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DT01NVVRBVElPTl0pOworICAgICAgKHZvaWQpSEFMX0RNQV9BYm9ydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ09NTVVUQVRJT05dKTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRJTV9ETUFfVFJJR0dFUjoKICAgICB7Ci0gICAgICBzdGF0dXMgPSBIQUxfRE1BX0Fib3J0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9UUklHR0VSXSk7CisgICAgICAodm9pZClIQUxfRE1BX0Fib3J0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9UUklHR0VSXSk7CiAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgIGJyZWFrOwogICB9CiAKLSAgaWYgKEhBTF9PSyA9PSBzdGF0dXMpCi0gIHsKLSAgICAvKiBEaXNhYmxlIHRoZSBUSU0gVXBkYXRlIERNQSByZXF1ZXN0ICovCi0gICAgX19IQUxfVElNX0RJU0FCTEVfRE1BKGh0aW0sIEJ1cnN0UmVxdWVzdFNyYyk7Ci0gIH0KKyAgLyogRGlzYWJsZSB0aGUgVElNIFVwZGF0ZSBETUEgcmVxdWVzdCAqLworICBfX0hBTF9USU1fRElTQUJMRV9ETUEoaHRpbSwgQnVyc3RSZXF1ZXN0U3JjKTsKKworICAvKiBDaGFuZ2UgdGhlIERNQSBidXJzdCBvcGVyYXRpb24gc3RhdGUgKi8KKyAgaHRpbS0+RE1BQnVyc3RTdGF0ZSA9IEhBTF9ETUFfQlVSU1RfU1RBVEVfUkVBRFk7CiAKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwotICByZXR1cm4gc3RhdHVzOworICByZXR1cm4gSEFMX09LOwogfQogCiAvKioKQEAgLTQxNzQsMTcgKzQ3ODUsNzIgQEAKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fRE1BQnVyc3RfUmVhZFN0YXJ0KFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBCdXJzdEJhc2VBZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgQnVyc3RSZXF1ZXN0U3JjLCB1aW50MzJfdCAgKkJ1cnN0QnVmZmVyLCB1aW50MzJfdCAgQnVyc3RMZW5ndGgpCiB7CisgIHJldHVybiBIQUxfVElNX0RNQUJ1cnN0X011bHRpUmVhZFN0YXJ0KGh0aW0sIEJ1cnN0QmFzZUFkZHJlc3MsIEJ1cnN0UmVxdWVzdFNyYywgQnVyc3RCdWZmZXIsIEJ1cnN0TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEJ1cnN0TGVuZ3RoKSA+PiA4VSkgKyAxVSk7Cit9CisKKy8qKgorICAqIEBicmllZiAgQ29uZmlndXJlIHRoZSBETUEgQnVyc3QgdG8gdHJhbnNmZXIgRGF0YSBmcm9tIHRoZSBUSU0gcGVyaXBoZXJhbCB0byB0aGUgbWVtb3J5CisgICogQHBhcmFtICBodGltIFRJTSBoYW5kbGUKKyAgKiBAcGFyYW0gIEJ1cnN0QmFzZUFkZHJlc3MgVElNIEJhc2UgYWRkcmVzcyBmcm9tIHdoZXJlIHRoZSBETUEgIHdpbGwgc3RhcnQgdGhlIERhdGEgcmVhZAorICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ1IxCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NSMgorICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9TTUNSCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0RJRVIKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfU1IKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfRUdSCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDTVIxCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDTVIyCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDRVIKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ05UCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX1BTQworICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9BUlIKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfUkNSCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDUjEKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ0NSMgorICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9DQ1IzCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFCQVNFX0NDUjQKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQkRUUgorICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9PUgorICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BQkFTRV9DQ01SMyAKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ0NSNSAKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQ0NSNiAKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQUYxICAoKikKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQUJBU0VfQUYyICAoKikKKyAgKiAgICAgICAgICgqKSB2YWx1ZSBub3QgZGVmaW5lZCBpbiBhbGwgZGV2aWNlcworICAqIEBwYXJhbSAgQnVyc3RSZXF1ZXN0U3JjIFRJTSBETUEgUmVxdWVzdCBzb3VyY2VzCisgICogICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BX1VQREFURTogVElNIHVwZGF0ZSBJbnRlcnJ1cHQgc291cmNlCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFfQ0MxOiBUSU0gQ2FwdHVyZSBDb21wYXJlIDEgRE1BIHNvdXJjZQorICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BX0NDMjogVElNIENhcHR1cmUgQ29tcGFyZSAyIERNQSBzb3VyY2UKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQV9DQzM6IFRJTSBDYXB0dXJlIENvbXBhcmUgMyBETUEgc291cmNlCisgICogICAgICAgICAgICBAYXJnIFRJTV9ETUFfQ0M0OiBUSU0gQ2FwdHVyZSBDb21wYXJlIDQgRE1BIHNvdXJjZQorICAqICAgICAgICAgICAgQGFyZyBUSU1fRE1BX0NPTTogVElNIENvbW11dGF0aW9uIERNQSBzb3VyY2UKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0RNQV9UUklHR0VSOiBUSU0gVHJpZ2dlciBETUEgc291cmNlCisgICogQHBhcmFtICBCdXJzdEJ1ZmZlciBUaGUgQnVmZmVyIGFkZHJlc3MuCisgICogQHBhcmFtICBCdXJzdExlbmd0aCBETUEgQnVyc3QgbGVuZ3RoLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIHZhbHVlCisgICogICAgICAgICBiZXR3ZWVuOiBUSU1fRE1BQlVSU1RMRU5HVEhfMVRSQU5TRkVSIGFuZCBUSU1fRE1BQlVSU1RMRU5HVEhfMThUUkFOU0ZFUlMuCisgICogQHBhcmFtICBEYXRhTGVuZ3RoIERhdGEgbGVuZ3RoLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIHZhbHVlCisgICogICAgICAgICBiZXR3ZWVuIDEgYW5kIDB4RkZGRi4KKyAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKKyAgKi8KK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1fRE1BQnVyc3RfTXVsdGlSZWFkU3RhcnQoVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0sIHVpbnQzMl90IEJ1cnN0QmFzZUFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IEJ1cnN0UmVxdWVzdFNyYywgdWludDMyX3QgICpCdXJzdEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgIEJ1cnN0TGVuZ3RoLCB1aW50MzJfdCAgRGF0YUxlbmd0aCkKK3sKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9ETUFCVVJTVF9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpOwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0RNQV9CQVNFKEJ1cnN0QmFzZUFkZHJlc3MpKTsKICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9ETUFfU09VUkNFKEJ1cnN0UmVxdWVzdFNyYykpOwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0RNQV9MRU5HVEgoQnVyc3RMZW5ndGgpKTsKKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9ETUFfREFUQV9MRU5HVEgoRGF0YUxlbmd0aCkpOwogCi0gIGlmIChodGltLT5TdGF0ZSA9PSBIQUxfVElNX1NUQVRFX0JVU1kpCisgIGlmIChodGltLT5ETUFCdXJzdFN0YXRlID09IEhBTF9ETUFfQlVSU1RfU1RBVEVfQlVTWSkKICAgewogICAgIHJldHVybiBIQUxfQlVTWTsKICAgfQotICBlbHNlIGlmIChodGltLT5TdGF0ZSA9PSBIQUxfVElNX1NUQVRFX1JFQURZKQorICBlbHNlIGlmIChodGltLT5ETUFCdXJzdFN0YXRlID09IEhBTF9ETUFfQlVSU1RfU1RBVEVfUkVBRFkpCiAgIHsKICAgICBpZiAoKEJ1cnN0QnVmZmVyID09IE5VTEwpICYmIChCdXJzdExlbmd0aCA+IDBVKSkKICAgICB7CkBAIC00MTkyLDcgKzQ4NTgsNyBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX0JVU1k7CisgICAgICBodGltLT5ETUFCdXJzdFN0YXRlID0gSEFMX0RNQV9CVVJTVF9TVEFURV9CVVNZOwogICAgIH0KICAgfQogICBlbHNlCkBAIC00MjExLDggKzQ4NzcsMTAgQEAKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9VUERBVEVdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvciA7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX1VQREFURV0sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsICh1aW50MzJfdClCdXJzdEJ1ZmZlciwgKChCdXJzdExlbmd0aCkgPj4gOFUpICsgMVUpICE9IEhBTF9PSykKKyAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9VUERBVEVdLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5ETUFSLCAodWludDMyX3QpQnVyc3RCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YUxlbmd0aCkgIT0gSEFMX09LKQogICAgICAgeworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTQyMjcsMTUgKzQ4OTUsMTcgQEAKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvciA7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsICh1aW50MzJfdClCdXJzdEJ1ZmZlciwgKChCdXJzdExlbmd0aCkgPj4gOFUpICsgMVUpICE9IEhBTF9PSykKKyAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5ETUFSLCAodWludDMyX3QpQnVyc3RCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YUxlbmd0aCkgIT0gSEFMX09LKQogICAgICAgeworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgICB9CiAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBUSU1fRE1BX0NDMjoKICAgICB7Ci0gICAgICAvKiBTZXQgdGhlIERNQSBjYXB0dXJlL2NvbXBhcmUgY2FsbGJhY2tzICovCisgICAgICAvKiBTZXQgdGhlIERNQSBjYXB0dXJlIGNhbGxiYWNrcyAqLwogICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0tPlhmZXJDcGx0Q2FsbGJhY2sgPSBUSU1fRE1BQ2FwdHVyZUNwbHQ7CiAgICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXS0+WGZlckhhbGZDcGx0Q2FsbGJhY2sgPSBUSU1fRE1BQ2FwdHVyZUhhbGZDcGx0OwogCkBAIC00MjQzLDggKzQ5MTMsMTAgQEAKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzJdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvciA7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsICh1aW50MzJfdClCdXJzdEJ1ZmZlciwgKChCdXJzdExlbmd0aCkgPj4gOFUpICsgMVUpICE9IEhBTF9PSykKKyAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzJdLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5ETUFSLCAodWludDMyX3QpQnVyc3RCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YUxlbmd0aCkgIT0gSEFMX09LKQogICAgICAgeworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTQyNTksOCArNDkzMSwxMCBAQAogICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDM10tPlhmZXJFcnJvckNhbGxiYWNrID0gVElNX0RNQUVycm9yIDsKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCi0gICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MzXSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgKHVpbnQzMl90KUJ1cnN0QnVmZmVyLCAoKEJ1cnN0TGVuZ3RoKSA+PiA4VSkgKyAxVSkgIT0gSEFMX09LKQorICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDM10sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsICh1aW50MzJfdClCdXJzdEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CisgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICAgIH0KICAgICAgIGJyZWFrOwpAQCAtNDI3NSw4ICs0OTQ5LDEwIEBACiAgICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0M0XS0+WGZlckVycm9yQ2FsbGJhY2sgPSBUSU1fRE1BRXJyb3IgOwogCiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KLSAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzRdLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5ETUFSLCAodWludDMyX3QpQnVyc3RCdWZmZXIsICgoQnVyc3RMZW5ndGgpID4+IDhVKSArIDFVKSAhPSBIQUxfT0spCisgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0M0XSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+RE1BUiwgKHVpbnQzMl90KUJ1cnN0QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKKyAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwogICAgICAgfQogICAgICAgYnJlYWs7CkBAIC00MjkxLDggKzQ5NjcsMTAgQEAKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DT01NVVRBVElPTl0tPlhmZXJFcnJvckNhbGxiYWNrID0gVElNX0RNQUVycm9yIDsKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCi0gICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ09NTVVUQVRJT05dLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5ETUFSLCAodWludDMyX3QpQnVyc3RCdWZmZXIsICgoQnVyc3RMZW5ndGgpID4+IDhVKSArIDFVKSAhPSBIQUxfT0spCisgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ09NTVVUQVRJT05dLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5ETUFSLCAodWludDMyX3QpQnVyc3RCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YUxlbmd0aCkgIT0gSEFMX09LKQogICAgICAgeworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTQzMDcsOCArNDk4NSwxMCBAQAogICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX1RSSUdHRVJdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvciA7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwotICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX1RSSUdHRVJdLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5ETUFSLCAodWludDMyX3QpQnVyc3RCdWZmZXIsICgoQnVyc3RMZW5ndGgpID4+IDhVKSArIDFVKSAhPSBIQUxfT0spCisgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfVFJJR0dFUl0sICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkRNQVIsICh1aW50MzJfdClCdXJzdEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CisgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICAgIH0KICAgICAgIGJyZWFrOwpAQCAtNDMxNywxNCArNDk5NywxMiBAQAogICAgICAgYnJlYWs7CiAgIH0KIAotICAvKiBjb25maWd1cmUgdGhlIERNQSBCdXJzdCBNb2RlICovCisgIC8qIENvbmZpZ3VyZSB0aGUgRE1BIEJ1cnN0IE1vZGUgKi8KICAgaHRpbS0+SW5zdGFuY2UtPkRDUiA9IChCdXJzdEJhc2VBZGRyZXNzIHwgQnVyc3RMZW5ndGgpOwogCiAgIC8qIEVuYWJsZSB0aGUgVElNIERNQSBSZXF1ZXN0ICovCiAgIF9fSEFMX1RJTV9FTkFCTEVfRE1BKGh0aW0sIEJ1cnN0UmVxdWVzdFNyYyk7CiAKLSAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFQURZOwotCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KICAgcmV0dXJuIEhBTF9PSzsKIH0KQEAgLTQzMzcsNyArNTAxNSw2IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNX0RNQUJ1cnN0X1JlYWRTdG9wKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBCdXJzdFJlcXVlc3RTcmMpCiB7Ci0gIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9ETUFfU09VUkNFKEJ1cnN0UmVxdWVzdFNyYykpOwogCkBAIC00MzQ2LDUxICs1MDIzLDUxIEBACiAgIHsKICAgICBjYXNlIFRJTV9ETUFfVVBEQVRFOgogICAgIHsKLSAgICAgIHN0YXR1cyA9IEhBTF9ETUFfQWJvcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX1VQREFURV0pOworICAgICAgKHZvaWQpSEFMX0RNQV9BYm9ydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfVVBEQVRFXSk7CiAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBUSU1fRE1BX0NDMToKICAgICB7Ci0gICAgICBzdGF0dXMgPSBIQUxfRE1BX0Fib3J0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdKTsKKyAgICAgICh2b2lkKUhBTF9ETUFfQWJvcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0pOwogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgVElNX0RNQV9DQzI6CiAgICAgewotICAgICAgc3RhdHVzID0gSEFMX0RNQV9BYm9ydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXSk7CisgICAgICAodm9pZClIQUxfRE1BX0Fib3J0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzJdKTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRJTV9ETUFfQ0MzOgogICAgIHsKLSAgICAgIHN0YXR1cyA9IEhBTF9ETUFfQWJvcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDM10pOworICAgICAgKHZvaWQpSEFMX0RNQV9BYm9ydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MzXSk7CiAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBUSU1fRE1BX0NDNDoKICAgICB7Ci0gICAgICBzdGF0dXMgPSBIQUxfRE1BX0Fib3J0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzRdKTsKKyAgICAgICh2b2lkKUhBTF9ETUFfQWJvcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDNF0pOwogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgVElNX0RNQV9DT006CiAgICAgewotICAgICAgc3RhdHVzID0gSEFMX0RNQV9BYm9ydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ09NTVVUQVRJT05dKTsKKyAgICAgICh2b2lkKUhBTF9ETUFfQWJvcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NPTU1VVEFUSU9OXSk7CiAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBUSU1fRE1BX1RSSUdHRVI6CiAgICAgewotICAgICAgc3RhdHVzID0gSEFMX0RNQV9BYm9ydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfVFJJR0dFUl0pOworICAgICAgKHZvaWQpSEFMX0RNQV9BYm9ydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfVFJJR0dFUl0pOwogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICBicmVhazsKICAgfQogCi0gIGlmIChIQUxfT0sgPT0gc3RhdHVzKQotICB7Ci0gICAgLyogRGlzYWJsZSB0aGUgVElNIFVwZGF0ZSBETUEgcmVxdWVzdCAqLwotICAgIF9fSEFMX1RJTV9ESVNBQkxFX0RNQShodGltLCBCdXJzdFJlcXVlc3RTcmMpOwotICB9CisgIC8qIERpc2FibGUgdGhlIFRJTSBVcGRhdGUgRE1BIHJlcXVlc3QgKi8KKyAgX19IQUxfVElNX0RJU0FCTEVfRE1BKGh0aW0sIEJ1cnN0UmVxdWVzdFNyYyk7CisKKyAgLyogQ2hhbmdlIHRoZSBETUEgYnVyc3Qgb3BlcmF0aW9uIHN0YXRlICovCisgIGh0aW0tPkRNQUJ1cnN0U3RhdGUgPSBIQUxfRE1BX0JVUlNUX1NUQVRFX1JFQURZOwogCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KLSAgcmV0dXJuIHN0YXR1czsKKyAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCkBAIC00NzI3LDEzICs1NDA0LDEzIEBACiAgICAgY2FzZSBUSU1fQ0xPQ0tTT1VSQ0VfSVRSMToKICAgICBjYXNlIFRJTV9DTE9DS1NPVVJDRV9JVFIyOgogICAgIGNhc2UgVElNX0NMT0NLU09VUkNFX0lUUjM6Ci0gICAgewotICAgICAgLyogQ2hlY2sgd2hldGhlciBvciBub3QgdGhlIHRpbWVyIGluc3RhbmNlIHN1cHBvcnRzIGludGVybmFsIHRyaWdnZXIgaW5wdXQgKi8KLSAgICAgIGFzc2VydF9wYXJhbShJU19USU1fQ0xPQ0tTT1VSQ0VfSVRSWF9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpOworICAgICAgeworICAgICAgICAvKiBDaGVjayB3aGV0aGVyIG9yIG5vdCB0aGUgdGltZXIgaW5zdGFuY2Ugc3VwcG9ydHMgaW50ZXJuYWwgdHJpZ2dlciBpbnB1dCAqLworICAgICAgICBhc3NlcnRfcGFyYW0oSVNfVElNX0NMT0NLU09VUkNFX0lUUlhfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKTsKIAotICAgICAgVElNX0lUUnhfU2V0Q29uZmlnKGh0aW0tPkluc3RhbmNlLCBzQ2xvY2tTb3VyY2VDb25maWctPkNsb2NrU291cmNlKTsKLSAgICAgIGJyZWFrOwotICAgIH0KKyAgICAgICAgVElNX0lUUnhfU2V0Q29uZmlnKGh0aW0tPkluc3RhbmNlLCBzQ2xvY2tTb3VyY2VDb25maWctPkNsb2NrU291cmNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CiAKICAgICBkZWZhdWx0OgogICAgICAgYnJlYWs7CkBAIC01Njc0LDYgKzYzNTEsNTQgQEAKIH0KIAogLyoqCisgICogQGJyaWVmICBSZXR1cm4gdGhlIFRJTSBFbmNvZGVyIE1vZGUgaGFuZGxlIHN0YXRlLgorICAqIEBwYXJhbSAgaHRpbSBUSU0gaGFuZGxlCisgICogQHJldHZhbCBBY3RpdmUgY2hhbm5lbAorICAqLworSEFMX1RJTV9BY3RpdmVDaGFubmVsIEhBTF9USU1fR2V0QWN0aXZlQ2hhbm5lbChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSkKK3sKKyAgcmV0dXJuIGh0aW0tPkNoYW5uZWw7Cit9CisKKy8qKgorICAqIEBicmllZiAgUmV0dXJuIGFjdHVhbCBzdGF0ZSBvZiB0aGUgVElNIGNoYW5uZWwuCisgICogQHBhcmFtICBodGltIFRJTSBoYW5kbGUKKyAgKiBAcGFyYW0gIENoYW5uZWwgVElNIENoYW5uZWwKKyAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICAgICAgICAgQGFyZyBUSU1fQ0hBTk5FTF8xOiBUSU0gQ2hhbm5lbCAxCisgICogICAgICAgICAgICBAYXJnIFRJTV9DSEFOTkVMXzI6IFRJTSBDaGFubmVsIDIKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0NIQU5ORUxfMzogVElNIENoYW5uZWwgMworICAqICAgICAgICAgICAgQGFyZyBUSU1fQ0hBTk5FTF80OiBUSU0gQ2hhbm5lbCA0CisgICogICAgICAgICAgICBAYXJnIFRJTV9DSEFOTkVMXzU6IFRJTSBDaGFubmVsIDUKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0NIQU5ORUxfNjogVElNIENoYW5uZWwgNgorICAqIEByZXR2YWwgVElNIENoYW5uZWwgc3RhdGUKKyAgKi8KK0hBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBIQUxfVElNX0dldENoYW5uZWxTdGF0ZShUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgIHVpbnQzMl90IENoYW5uZWwpCit7CisgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjaGFubmVsX3N0YXRlOworCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fQ0NYX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsKSk7CisKKyAgY2hhbm5lbF9zdGF0ZSA9IFRJTV9DSEFOTkVMX1NUQVRFX0dFVChodGltLCBDaGFubmVsKTsKKworICByZXR1cm4gY2hhbm5lbF9zdGF0ZTsKK30KKworLyoqCisgICogQGJyaWVmICBSZXR1cm4gYWN0dWFsIHN0YXRlIG9mIGEgRE1BIGJ1cnN0IG9wZXJhdGlvbi4KKyAgKiBAcGFyYW0gIGh0aW0gVElNIGhhbmRsZQorICAqIEByZXR2YWwgRE1BIGJ1cnN0IHN0YXRlCisgICovCitIQUxfVElNX0RNQUJ1cnN0U3RhdGVUeXBlRGVmIEhBTF9USU1fRE1BQnVyc3RTdGF0ZShUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSkKK3sKKyAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KKyAgYXNzZXJ0X3BhcmFtKElTX1RJTV9ETUFCVVJTVF9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpOworCisgIHJldHVybiBodGltLT5ETUFCdXJzdFN0YXRlOworfQorCisvKioKICAgKiBAfQogICAqLwogCkBAIC01Njk0LDEzICs2NDE5LDM4IEBACiB7CiAgIFRJTV9IYW5kbGVUeXBlRGVmICpodGltID0gKFRJTV9IYW5kbGVUeXBlRGVmICopKChETUFfSGFuZGxlVHlwZURlZiAqKWhkbWEpLT5QYXJlbnQ7CiAKLSAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFQURZOworICBpZiAoaGRtYSA9PSBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXSkKKyAgeworICAgIGh0aW0tPkNoYW5uZWwgPSBIQUxfVElNX0FDVElWRV9DSEFOTkVMXzE7CisgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIH0KKyAgZWxzZSBpZiAoaGRtYSA9PSBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXSkKKyAgeworICAgIGh0aW0tPkNoYW5uZWwgPSBIQUxfVElNX0FDVElWRV9DSEFOTkVMXzI7CisgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIH0KKyAgZWxzZSBpZiAoaGRtYSA9PSBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MzXSkKKyAgeworICAgIGh0aW0tPkNoYW5uZWwgPSBIQUxfVElNX0FDVElWRV9DSEFOTkVMXzM7CisgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzMsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIH0KKyAgZWxzZSBpZiAoaGRtYSA9PSBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0M0XSkKKyAgeworICAgIGh0aW0tPkNoYW5uZWwgPSBIQUxfVElNX0FDVElWRV9DSEFOTkVMXzQ7CisgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzQsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIH0KKyAgZWxzZQorICB7CisgICAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFQURZOworICB9CiAKICNpZiAoVVNFX0hBTF9USU1fUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCiAgIGh0aW0tPkVycm9yQ2FsbGJhY2soaHRpbSk7CiAjZWxzZQogICBIQUxfVElNX0Vycm9yQ2FsbGJhY2soaHRpbSk7CiAjZW5kaWYgLyogVVNFX0hBTF9USU1fUkVHSVNURVJfQ0FMTEJBQ0tTICovCisKKyAgaHRpbS0+Q2hhbm5lbCA9IEhBTF9USU1fQUNUSVZFX0NIQU5ORUxfQ0xFQVJFRDsKIH0KIAogLyoqCkBAIC01NzA4LDI3ICs2NDU4LDQ1IEBACiAgICogQHBhcmFtICBoZG1hIHBvaW50ZXIgdG8gRE1BIGhhbmRsZS4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KLXZvaWQgVElNX0RNQURlbGF5UHVsc2VDcGx0KERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKQorc3RhdGljIHZvaWQgVElNX0RNQURlbGF5UHVsc2VDcGx0KERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKQogewogICBUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSA9IChUSU1fSGFuZGxlVHlwZURlZiAqKSgoRE1BX0hhbmRsZVR5cGVEZWYgKiloZG1hKS0+UGFyZW50OwogCi0gIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRUFEWTsKLQogICBpZiAoaGRtYSA9PSBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXSkKICAgewogICAgIGh0aW0tPkNoYW5uZWwgPSBIQUxfVElNX0FDVElWRV9DSEFOTkVMXzE7CisKKyAgICBpZiAoaGRtYS0+SW5pdC5Nb2RlID09IERNQV9OT1JNQUwpCisgICAgeworICAgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgICAgfQogICB9CiAgIGVsc2UgaWYgKGhkbWEgPT0gaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0pCiAgIHsKICAgICBodGltLT5DaGFubmVsID0gSEFMX1RJTV9BQ1RJVkVfQ0hBTk5FTF8yOworCisgICAgaWYgKGhkbWEtPkluaXQuTW9kZSA9PSBETUFfTk9STUFMKQorICAgIHsKKyAgICAgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8yLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICAgIH0KICAgfQogICBlbHNlIGlmIChoZG1hID09IGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzNdKQogICB7CiAgICAgaHRpbS0+Q2hhbm5lbCA9IEhBTF9USU1fQUNUSVZFX0NIQU5ORUxfMzsKKworICAgIGlmIChoZG1hLT5Jbml0Lk1vZGUgPT0gRE1BX05PUk1BTCkKKyAgICB7CisgICAgICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMywgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgICB9CiAgIH0KICAgZWxzZSBpZiAoaGRtYSA9PSBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0M0XSkKICAgewogICAgIGh0aW0tPkNoYW5uZWwgPSBIQUxfVElNX0FDVElWRV9DSEFOTkVMXzQ7CisKKyAgICBpZiAoaGRtYS0+SW5pdC5Nb2RlID09IERNQV9OT1JNQUwpCisgICAgeworICAgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzQsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgICAgfQogICB9CiAgIGVsc2UKICAgewpAQCAtNTc1Myw4ICs2NTIxLDYgQEAKIHsKICAgVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0gPSAoVElNX0hhbmRsZVR5cGVEZWYgKikoKERNQV9IYW5kbGVUeXBlRGVmICopaGRtYSktPlBhcmVudDsKIAotICBodGltLT5TdGF0ZSA9IEhBTF9USU1fU1RBVEVfUkVBRFk7Ci0KICAgaWYgKGhkbWEgPT0gaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0pCiAgIHsKICAgICBodGltLT5DaGFubmVsID0gSEFMX1RJTV9BQ1RJVkVfQ0hBTk5FTF8xOwpAQCAtNTc5NCwyMyArNjU2MCw0NSBAQAogewogICBUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSA9IChUSU1fSGFuZGxlVHlwZURlZiAqKSgoRE1BX0hhbmRsZVR5cGVEZWYgKiloZG1hKS0+UGFyZW50OwogCi0gIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRUFEWTsKLQogICBpZiAoaGRtYSA9PSBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXSkKICAgewogICAgIGh0aW0tPkNoYW5uZWwgPSBIQUxfVElNX0FDVElWRV9DSEFOTkVMXzE7CisKKyAgICBpZiAoaGRtYS0+SW5pdC5Nb2RlID09IERNQV9OT1JNQUwpCisgICAgeworICAgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgICAgICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICAgIH0KICAgfQogICBlbHNlIGlmIChoZG1hID09IGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzJdKQogICB7CiAgICAgaHRpbS0+Q2hhbm5lbCA9IEhBTF9USU1fQUNUSVZFX0NIQU5ORUxfMjsKKworICAgIGlmIChoZG1hLT5Jbml0Lk1vZGUgPT0gRE1BX05PUk1BTCkKKyAgICB7CisgICAgICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgICAgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgICAgfQogICB9CiAgIGVsc2UgaWYgKGhkbWEgPT0gaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDM10pCiAgIHsKICAgICBodGltLT5DaGFubmVsID0gSEFMX1RJTV9BQ1RJVkVfQ0hBTk5FTF8zOworCisgICAgaWYgKGhkbWEtPkluaXQuTW9kZSA9PSBETUFfTk9STUFMKQorICAgIHsKKyAgICAgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8zLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICAgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMywgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgICB9CiAgIH0KICAgZWxzZSBpZiAoaGRtYSA9PSBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0M0XSkKICAgewogICAgIGh0aW0tPkNoYW5uZWwgPSBIQUxfVElNX0FDVElWRV9DSEFOTkVMXzQ7CisKKyAgICBpZiAoaGRtYS0+SW5pdC5Nb2RlID09IERNQV9OT1JNQUwpCisgICAgeworICAgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzQsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgICAgICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF80LCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICAgIH0KICAgfQogICBlbHNlCiAgIHsKQEAgLTU4MzUsOCArNjYyMyw2IEBACiB7CiAgIFRJTV9IYW5kbGVUeXBlRGVmICpodGltID0gKFRJTV9IYW5kbGVUeXBlRGVmICopKChETUFfSGFuZGxlVHlwZURlZiAqKWhkbWEpLT5QYXJlbnQ7CiAKLSAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFQURZOwotCiAgIGlmIChoZG1hID09IGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdKQogICB7CiAgICAgaHRpbS0+Q2hhbm5lbCA9IEhBTF9USU1fQUNUSVZFX0NIQU5ORUxfMTsKQEAgLTU4NzYsNyArNjY2MiwxMCBAQAogewogICBUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSA9IChUSU1fSGFuZGxlVHlwZURlZiAqKSgoRE1BX0hhbmRsZVR5cGVEZWYgKiloZG1hKS0+UGFyZW50OwogCi0gIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRUFEWTsKKyAgaWYgKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9VUERBVEVdLT5Jbml0Lk1vZGUgPT0gRE1BX05PUk1BTCkKKyAgeworICAgIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRUFEWTsKKyAgfQogCiAjaWYgKFVTRV9IQUxfVElNX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogICBodGltLT5QZXJpb2RFbGFwc2VkQ2FsbGJhY2soaHRpbSk7CkBAIC01ODk0LDggKzY2ODMsNiBAQAogewogICBUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSA9IChUSU1fSGFuZGxlVHlwZURlZiAqKSgoRE1BX0hhbmRsZVR5cGVEZWYgKiloZG1hKS0+UGFyZW50OwogCi0gIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRUFEWTsKLQogI2lmIChVU0VfSEFMX1RJTV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKICAgaHRpbS0+UGVyaW9kRWxhcHNlZEhhbGZDcGx0Q2FsbGJhY2soaHRpbSk7CiAjZWxzZQpAQCAtNTkxMiw3ICs2Njk5LDEwIEBACiB7CiAgIFRJTV9IYW5kbGVUeXBlRGVmICpodGltID0gKFRJTV9IYW5kbGVUeXBlRGVmICopKChETUFfSGFuZGxlVHlwZURlZiAqKWhkbWEpLT5QYXJlbnQ7CiAKLSAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFQURZOworICBpZiAoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX1RSSUdHRVJdLT5Jbml0Lk1vZGUgPT0gRE1BX05PUk1BTCkKKyAgeworICAgIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRUFEWTsKKyAgfQogCiAjaWYgKFVTRV9IQUxfVElNX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQogICBodGltLT5UcmlnZ2VyQ2FsbGJhY2soaHRpbSk7CkBAIC01OTMwLDggKzY3MjAsNiBAQAogewogICBUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSA9IChUSU1fSGFuZGxlVHlwZURlZiAqKSgoRE1BX0hhbmRsZVR5cGVEZWYgKiloZG1hKS0+UGFyZW50OwogCi0gIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRUFEWTsKLQogI2lmIChVU0VfSEFMX1RJTV9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKICAgaHRpbS0+VHJpZ2dlckhhbGZDcGx0Q2FsbGJhY2soaHRpbSk7CiAjZWxzZQpAQCAtNTk5MCw3ICs2Nzc4LDcgQEAKIC8qKgogICAqIEBicmllZiAgVGltZXIgT3V0cHV0IENvbXBhcmUgMSBjb25maWd1cmF0aW9uCiAgICogQHBhcmFtICBUSU14IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwKLSAgKiBAcGFyYW0gIE9DX0NvbmZpZyBUaGUgb3VwdXQgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUKKyAgKiBAcGFyYW0gIE9DX0NvbmZpZyBUaGUgb3V0cHV0IGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlCiAgICogQHJldHZhbCBOb25lCiAgICovCiBzdGF0aWMgdm9pZCBUSU1fT0MxX1NldENvbmZpZyhUSU1fVHlwZURlZiAqVElNeCwgVElNX09DX0luaXRUeXBlRGVmICpPQ19Db25maWcpCkBAIC02MDY1LDcgKzY4NTMsNyBAQAogLyoqCiAgICogQGJyaWVmICBUaW1lciBPdXRwdXQgQ29tcGFyZSAyIGNvbmZpZ3VyYXRpb24KICAgKiBAcGFyYW0gIFRJTXggdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbAotICAqIEBwYXJhbSAgT0NfQ29uZmlnIFRoZSBvdXB1dCBjb25maWd1cmF0aW9uIHN0cnVjdHVyZQorICAqIEBwYXJhbSAgT0NfQ29uZmlnIFRoZSBvdXRwdXQgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KIHZvaWQgVElNX09DMl9TZXRDb25maWcoVElNX1R5cGVEZWYgKlRJTXgsIFRJTV9PQ19Jbml0VHlwZURlZiAqT0NfQ29uZmlnKQpAQCAtNjE0MSw3ICs2OTI5LDcgQEAKIC8qKgogICAqIEBicmllZiAgVGltZXIgT3V0cHV0IENvbXBhcmUgMyBjb25maWd1cmF0aW9uCiAgICogQHBhcmFtICBUSU14IHRvIHNlbGVjdCB0aGUgVElNIHBlcmlwaGVyYWwKLSAgKiBAcGFyYW0gIE9DX0NvbmZpZyBUaGUgb3VwdXQgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUKKyAgKiBAcGFyYW0gIE9DX0NvbmZpZyBUaGUgb3V0cHV0IGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlCiAgICogQHJldHZhbCBOb25lCiAgICovCiBzdGF0aWMgdm9pZCBUSU1fT0MzX1NldENvbmZpZyhUSU1fVHlwZURlZiAqVElNeCwgVElNX09DX0luaXRUeXBlRGVmICpPQ19Db25maWcpCkBAIC02MjE1LDcgKzcwMDMsNyBAQAogLyoqCiAgICogQGJyaWVmICBUaW1lciBPdXRwdXQgQ29tcGFyZSA0IGNvbmZpZ3VyYXRpb24KICAgKiBAcGFyYW0gIFRJTXggdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbAotICAqIEBwYXJhbSAgT0NfQ29uZmlnIFRoZSBvdXB1dCBjb25maWd1cmF0aW9uIHN0cnVjdHVyZQorICAqIEBwYXJhbSAgT0NfQ29uZmlnIFRoZSBvdXRwdXQgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KIHN0YXRpYyB2b2lkIFRJTV9PQzRfU2V0Q29uZmlnKFRJTV9UeXBlRGVmICpUSU14LCBUSU1fT0NfSW5pdFR5cGVEZWYgKk9DX0NvbmZpZykKQEAgLTYyNzUsNyArNzA2Myw3IEBACiAvKioKICAgKiBAYnJpZWYgIFRpbWVyIE91dHB1dCBDb21wYXJlIDUgY29uZmlndXJhdGlvbgogICAqIEBwYXJhbSAgVElNeCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsCi0gICogQHBhcmFtICBPQ19Db25maWcgVGhlIG91cHV0IGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlCisgICogQHBhcmFtICBPQ19Db25maWcgVGhlIG91dHB1dCBjb25maWd1cmF0aW9uIHN0cnVjdHVyZQogICAqIEByZXR2YWwgTm9uZQogICAqLwogc3RhdGljIHZvaWQgVElNX09DNV9TZXRDb25maWcoVElNX1R5cGVEZWYgKlRJTXgsCkBAIC02MzI4LDcgKzcxMTYsNyBAQAogLyoqCiAgICogQGJyaWVmICBUaW1lciBPdXRwdXQgQ29tcGFyZSA2IGNvbmZpZ3VyYXRpb24KICAgKiBAcGFyYW0gIFRJTXggdG8gc2VsZWN0IHRoZSBUSU0gcGVyaXBoZXJhbAotICAqIEBwYXJhbSAgT0NfQ29uZmlnIFRoZSBvdXB1dCBjb25maWd1cmF0aW9uIHN0cnVjdHVyZQorICAqIEBwYXJhbSAgT0NfQ29uZmlnIFRoZSBvdXRwdXQgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KIHN0YXRpYyB2b2lkIFRJTV9PQzZfU2V0Q29uZmlnKFRJTV9UeXBlRGVmICpUSU14LApAQCAtNjQzMiw3ICs3MjIwLDcgQEAKICAgICAgIGFzc2VydF9wYXJhbShJU19USU1fQ0MxX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSk7CiAgICAgICBhc3NlcnRfcGFyYW0oSVNfVElNX1RSSUdHRVJGSUxURVIoc1NsYXZlQ29uZmlnLT5UcmlnZ2VyRmlsdGVyKSk7CiAKLSAgICAgIGlmKHNTbGF2ZUNvbmZpZy0+U2xhdmVNb2RlID09IFRJTV9TTEFWRU1PREVfR0FURUQpCisgICAgICBpZiAoc1NsYXZlQ29uZmlnLT5TbGF2ZU1vZGUgPT0gVElNX1NMQVZFTU9ERV9HQVRFRCkKICAgICAgIHsKICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICAgIH0KQEAgLTY0ODQsMTEgKzcyNzIsMTEgQEAKICAgICBjYXNlIFRJTV9UU19JVFIxOgogICAgIGNhc2UgVElNX1RTX0lUUjI6CiAgICAgY2FzZSBUSU1fVFNfSVRSMzoKLSAgICB7Ci0gICAgICAvKiBDaGVjayB0aGUgcGFyYW1ldGVyICovCi0gICAgICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDMl9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpOwotICAgICAgYnJlYWs7Ci0gICAgfQorICAgICAgeworICAgICAgICAvKiBDaGVjayB0aGUgcGFyYW1ldGVyICovCisgICAgICAgIGFzc2VydF9wYXJhbShJU19USU1fQ0MyX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSk7CisgICAgICAgIGJyZWFrOworICAgICAgfQogCiAgICAgZGVmYXVsdDoKICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfdGltX2V4LmMgYi9TcmMvc3RtMzJmN3h4X2hhbF90aW1fZXguYwppbmRleCA3ZGQ5MWRmLi5hNWFlOTE4IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF90aW1fZXguYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF90aW1fZXguYwpAQCAtNTUsNyArNTUsNyBAQAogICAgICAgICAgICAgICAgdGhlIGNvbW11dGF0aW9uIGV2ZW50KS4KIAogICAgICAoIykgQWN0aXZhdGUgdGhlIFRJTSBwZXJpcGhlcmFsIHVzaW5nIG9uZSBvZiB0aGUgc3RhcnQgZnVuY3Rpb25zOgotICAgICAgICAgICAoKyspIENvbXBsZW1lbnRhcnkgT3V0cHV0IENvbXBhcmUgOiBIQUxfVElNRXhfT0NOX1N0YXJ0KCksIEhBTF9USU1FeF9PQ05fU3RhcnRfRE1BKCksIEhBTF9USU1FeF9PQ19TdGFydF9JVCgpCisgICAgICAgICAgICgrKykgQ29tcGxlbWVudGFyeSBPdXRwdXQgQ29tcGFyZSA6IEhBTF9USU1FeF9PQ05fU3RhcnQoKSwgSEFMX1RJTUV4X09DTl9TdGFydF9ETUEoKSwgSEFMX1RJTUV4X09DTl9TdGFydF9JVCgpCiAgICAgICAgICAgICgrKykgQ29tcGxlbWVudGFyeSBQV00gZ2VuZXJhdGlvbiA6IEhBTF9USU1FeF9QV01OX1N0YXJ0KCksIEhBTF9USU1FeF9QV01OX1N0YXJ0X0RNQSgpLCBIQUxfVElNRXhfUFdNTl9TdGFydF9JVCgpCiAgICAgICAgICAgICgrKykgQ29tcGxlbWVudGFyeSBPbmUtcHVsc2UgbW9kZSBvdXRwdXQgOiBIQUxfVElNRXhfT25lUHVsc2VOX1N0YXJ0KCksIEhBTF9USU1FeF9PbmVQdWxzZU5fU3RhcnRfSVQoKQogICAgICAgICAgICAoKyspIEhhbGwgU2Vuc29yIG91dHB1dCA6IEhBTF9USU1FeF9IYWxsU2Vuc29yX1N0YXJ0KCksIEhBTF9USU1FeF9IYWxsU2Vuc29yX1N0YXJ0X0RNQSgpLCBIQUxfVElNRXhfSGFsbFNlbnNvcl9TdGFydF9JVCgpLgpAQCAtOTEsOSArOTEsMTEgQEAKIAogLyogUHJpdmF0ZSB0eXBlZGVmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIFByaXZhdGUgZGVmaW5lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiBQcml2YXRlIG1hY3JvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyogUHJpdmF0ZSBtYWNyb3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qIFByaXZhdGUgdmFyaWFibGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKiBQcml2YXRlIGZ1bmN0aW9uIHByb3RvdHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworc3RhdGljIHZvaWQgVElNX0RNQURlbGF5UHVsc2VOQ3BsdChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSk7CitzdGF0aWMgdm9pZCBUSU1fRE1BRXJyb3JDQ3hOKERNQV9IYW5kbGVUeXBlRGVmICpoZG1hKTsKIHN0YXRpYyB2b2lkIFRJTV9DQ3hOQ2hhbm5lbENtZChUSU1fVHlwZURlZiAqVElNeCwgdWludDMyX3QgQ2hhbm5lbCwgdWludDMyX3QgQ2hhbm5lbE5TdGF0ZSk7CiAKIC8qIEV4cG9ydGVkIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xMjQsNiArMTI2LDkgQEAKICAgKi8KIC8qKgogICAqIEBicmllZiAgSW5pdGlhbGl6ZXMgdGhlIFRJTSBIYWxsIFNlbnNvciBJbnRlcmZhY2UgYW5kIGluaXRpYWxpemUgdGhlIGFzc29jaWF0ZWQgaGFuZGxlLgorICAqIEBub3RlICAgV2hlbiB0aGUgdGltZXIgaW5zdGFuY2UgaXMgaW5pdGlhbGl6ZWQgaW4gSGFsbCBTZW5zb3IgSW50ZXJmYWNlIG1vZGUsCisgICogICAgICAgICB0aW1lciBjaGFubmVscyAxIGFuZCBjaGFubmVsIDIgYXJlIHJlc2VydmVkIGFuZCBjYW5ub3QgYmUgdXNlZCBmb3IKKyAgKiAgICAgICAgIG90aGVyIHB1cnBvc2UuCiAgICogQHBhcmFtICBodGltIFRJTSBIYWxsIFNlbnNvciBJbnRlcmZhY2UgaGFuZGxlCiAgICogQHBhcmFtICBzQ29uZmlnIFRJTSBIYWxsIFNlbnNvciBjb25maWd1cmF0aW9uIHN0cnVjdHVyZQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwpAQCAtMjA5LDYgKzIxNCwxNSBAQAogICBodGltLT5JbnN0YW5jZS0+Q1IyICY9IH5USU1fQ1IyX01NUzsKICAgaHRpbS0+SW5zdGFuY2UtPkNSMiB8PSBUSU1fVFJHT19PQzJSRUY7CiAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgRE1BIGJ1cnN0IG9wZXJhdGlvbiBzdGF0ZSAqLworICBodGltLT5ETUFCdXJzdFN0YXRlID0gSEFMX0RNQV9CVVJTVF9TVEFURV9SRUFEWTsKKworICAvKiBJbml0aWFsaXplIHRoZSBUSU0gY2hhbm5lbHMgc3RhdGUgKi8KKyAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8yLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8yLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworCiAgIC8qIEluaXRpYWxpemUgdGhlIFRJTSBzdGF0ZSovCiAgIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRUFEWTsKIApAQCAtMjQyLDYgKzI1NiwxNSBAQAogICBIQUxfVElNRXhfSGFsbFNlbnNvcl9Nc3BEZUluaXQoaHRpbSk7CiAjZW5kaWYgLyogVVNFX0hBTF9USU1fUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAKKyAgLyogQ2hhbmdlIHRoZSBETUEgYnVyc3Qgb3BlcmF0aW9uIHN0YXRlICovCisgIGh0aW0tPkRNQUJ1cnN0U3RhdGUgPSBIQUxfRE1BX0JVUlNUX1NUQVRFX1JFU0VUOworCisgIC8qIENoYW5nZSB0aGUgVElNIGNoYW5uZWxzIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVTRVQpOworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFU0VUKTsKKwogICAvKiBDaGFuZ2UgVElNIHN0YXRlICovCiAgIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9SRVNFVDsKIApAQCAtMjg5LDE3ICszMTIsNDMgQEAKIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1FeF9IYWxsU2Vuc29yX1N0YXJ0KFRJTV9IYW5kbGVUeXBlRGVmICpodGltKQogewogICB1aW50MzJfdCB0bXBzbWNyOworICBIQUxfVElNX0NoYW5uZWxTdGF0ZVR5cGVEZWYgY2hhbm5lbF8xX3N0YXRlID0gVElNX0NIQU5ORUxfU1RBVEVfR0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEpOworICBIQUxfVElNX0NoYW5uZWxTdGF0ZVR5cGVEZWYgY2hhbm5lbF8yX3N0YXRlID0gVElNX0NIQU5ORUxfU1RBVEVfR0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIpOworICBIQUxfVElNX0NoYW5uZWxTdGF0ZVR5cGVEZWYgY29tcGxlbWVudGFyeV9jaGFubmVsXzFfc3RhdGUgPSBUSU1fQ0hBTk5FTF9OX1NUQVRFX0dFVChodGltLCBUSU1fQ0hBTk5FTF8xKTsKKyAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8yX3N0YXRlID0gVElNX0NIQU5ORUxfTl9TVEFURV9HRVQoaHRpbSwgVElNX0NIQU5ORUxfMik7CiAKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9IQUxMX1NFTlNPUl9JTlRFUkZBQ0VfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKTsKIAorICAvKiBDaGVjayB0aGUgVElNIGNoYW5uZWxzIHN0YXRlICovCisgIGlmICgoY2hhbm5lbF8xX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgICAgIHx8IChjaGFubmVsXzJfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQorICAgICAgfHwgKGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8xX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgICAgIHx8IChjb21wbGVtZW50YXJ5X2NoYW5uZWxfMl9zdGF0ZSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpKQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgfQorCisgIC8qIFNldCB0aGUgVElNIGNoYW5uZWxzIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8yLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworCiAgIC8qIEVuYWJsZSB0aGUgSW5wdXQgQ2FwdHVyZSBjaGFubmVsIDEKLSAgICAoaW4gdGhlIEhhbGwgU2Vuc29yIEludGVyZmFjZSB0aGUgdGhyZWUgcG9zc2libGUgY2hhbm5lbHMgdGhhdCBjYW4gYmUgdXNlZCBhcmUgVElNX0NIQU5ORUxfMSwgVElNX0NIQU5ORUxfMiBhbmQgVElNX0NIQU5ORUxfMykgKi8KKyAgKGluIHRoZSBIYWxsIFNlbnNvciBJbnRlcmZhY2UgdGhlIHRocmVlIHBvc3NpYmxlIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHVzZWQgYXJlIFRJTV9DSEFOTkVMXzEsIFRJTV9DSEFOTkVMXzIgYW5kIFRJTV9DSEFOTkVMXzMpICovCiAgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBUSU1fQ0hBTk5FTF8xLCBUSU1fQ0N4X0VOQUJMRSk7CiAKICAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsLCBleGNlcHQgaW4gdHJpZ2dlciBtb2RlIHdoZXJlIGVuYWJsZSBpcyBhdXRvbWF0aWNhbGx5IGRvbmUgd2l0aCB0cmlnZ2VyICovCi0gIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKLSAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKKyAgaWYgKElTX1RJTV9TTEFWRV9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpCisgIHsKKyAgICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7CisgICAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKKyAgICB7CisgICAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOworICAgIH0KKyAgfQorICBlbHNlCiAgIHsKICAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOwogICB9CkBAIC0zMjUsNiArMzc0LDEyIEBACiAgIC8qIERpc2FibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CiAKKyAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbHMgc3RhdGUgKi8KKyAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8yLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8yLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KICAgcmV0dXJuIEhBTF9PSzsKIH0KQEAgLTMzNywxMCArMzkyLDI5IEBACiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNRXhfSGFsbFNlbnNvcl9TdGFydF9JVChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSkKIHsKICAgdWludDMyX3QgdG1wc21jcjsKKyAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNoYW5uZWxfMV9zdGF0ZSA9IFRJTV9DSEFOTkVMX1NUQVRFX0dFVChodGltLCBUSU1fQ0hBTk5FTF8xKTsKKyAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNoYW5uZWxfMl9zdGF0ZSA9IFRJTV9DSEFOTkVMX1NUQVRFX0dFVChodGltLCBUSU1fQ0hBTk5FTF8yKTsKKyAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8xX3N0YXRlID0gVElNX0NIQU5ORUxfTl9TVEFURV9HRVQoaHRpbSwgVElNX0NIQU5ORUxfMSk7CisgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjb21wbGVtZW50YXJ5X2NoYW5uZWxfMl9zdGF0ZSA9IFRJTV9DSEFOTkVMX05fU1RBVEVfR0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIpOwogCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fSEFMTF9TRU5TT1JfSU5URVJGQUNFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSk7CiAKKyAgLyogQ2hlY2sgdGhlIFRJTSBjaGFubmVscyBzdGF0ZSAqLworICBpZiAoKGNoYW5uZWxfMV9zdGF0ZSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpCisgICAgICB8fCAoY2hhbm5lbF8yX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgICAgIHx8IChjb21wbGVtZW50YXJ5X2NoYW5uZWxfMV9zdGF0ZSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpCisgICAgICB8fCAoY29tcGxlbWVudGFyeV9jaGFubmVsXzJfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKSkKKyAgeworICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KKworICAvKiBTZXQgdGhlIFRJTSBjaGFubmVscyBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKwogICAvKiBFbmFibGUgdGhlIGNhcHR1cmUgY29tcGFyZSBJbnRlcnJ1cHRzIDEgZXZlbnQgKi8KICAgX19IQUxfVElNX0VOQUJMRV9JVChodGltLCBUSU1fSVRfQ0MxKTsKIApAQCAtMzQ5LDggKzQyMywxNSBAQAogICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgVElNX0NIQU5ORUxfMSwgVElNX0NDeF9FTkFCTEUpOwogCiAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCwgZXhjZXB0IGluIHRyaWdnZXIgbW9kZSB3aGVyZSBlbmFibGUgaXMgYXV0b21hdGljYWxseSBkb25lIHdpdGggdHJpZ2dlciAqLwotICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7Ci0gIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgIGlmIChJU19USU1fU0xBVkVfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKQorICB7CisgICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOworICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgeworICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKKyAgICB9CisgIH0KKyAgZWxzZQogICB7CiAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKICAgfQpAQCAtMzc5LDYgKzQ2MCwxMiBAQAogICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCiAgIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOwogCisgIC8qIFNldCB0aGUgVElNIGNoYW5uZWxzIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKwogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CiB9CkBAIC0zOTMsMjkgKzQ4MCwzNiBAQAogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTUV4X0hhbGxTZW5zb3JfU3RhcnRfRE1BKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCAqcERhdGEsIHVpbnQxNl90IExlbmd0aCkKIHsKICAgdWludDMyX3QgdG1wc21jcjsKKyAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNoYW5uZWxfMV9zdGF0ZSA9IFRJTV9DSEFOTkVMX1NUQVRFX0dFVChodGltLCBUSU1fQ0hBTk5FTF8xKTsKKyAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8xX3N0YXRlID0gVElNX0NIQU5ORUxfTl9TVEFURV9HRVQoaHRpbSwgVElNX0NIQU5ORUxfMSk7CiAKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9IQUxMX1NFTlNPUl9JTlRFUkZBQ0VfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKTsKIAotICBpZiAoaHRpbS0+U3RhdGUgPT0gSEFMX1RJTV9TVEFURV9CVVNZKQorICAvKiBTZXQgdGhlIFRJTSBjaGFubmVsIHN0YXRlICovCisgIGlmICgoY2hhbm5lbF8xX3N0YXRlID09IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKQorICAgICAgfHwgKGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8xX3N0YXRlID09IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKSkKICAgewogICAgIHJldHVybiBIQUxfQlVTWTsKICAgfQotICBlbHNlIGlmIChodGltLT5TdGF0ZSA9PSBIQUxfVElNX1NUQVRFX1JFQURZKQorICBlbHNlIGlmICgoY2hhbm5lbF8xX3N0YXRlID09IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgICAgICAgICAgJiYgKGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8xX3N0YXRlID09IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkpCiAgIHsKLSAgICBpZiAoKCh1aW50MzJfdClwRGF0YSA9PSAwVSkgJiYgKExlbmd0aCA+IDBVKSkKKyAgICBpZiAoKHBEYXRhID09IE5VTEwpICYmIChMZW5ndGggPiAwVSkpCiAgICAgewogICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgIGh0aW0tPlN0YXRlID0gSEFMX1RJTV9TVEFURV9CVVNZOworICAgICAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKyAgICAgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKICAgICB9CiAgIH0KICAgZWxzZQogICB7Ci0gICAgLyogbm90aGluZyB0byBkbyAqLworICAgIHJldHVybiBIQUxfRVJST1I7CiAgIH0KKwogICAvKiBFbmFibGUgdGhlIElucHV0IENhcHR1cmUgY2hhbm5lbCAxCiAgICAgKGluIHRoZSBIYWxsIFNlbnNvciBJbnRlcmZhY2UgdGhlIHRocmVlIHBvc3NpYmxlIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHVzZWQgYXJlIFRJTV9DSEFOTkVMXzEsIFRJTV9DSEFOTkVMXzIgYW5kIFRJTV9DSEFOTkVMXzMpICovCiAgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBUSU1fQ0hBTk5FTF8xLCBUSU1fQ0N4X0VOQUJMRSk7CkBAIC00MjksMTQgKzUyMywyMiBAQAogICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gZm9yIENhcHR1cmUgMSovCiAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IxLCAodWludDMyX3QpcERhdGEsIExlbmd0aCkgIT0gSEFMX09LKQogICB7CisgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgIHJldHVybiBIQUxfRVJST1I7CiAgIH0KICAgLyogRW5hYmxlIHRoZSBjYXB0dXJlIGNvbXBhcmUgMSBJbnRlcnJ1cHQgKi8KICAgX19IQUxfVElNX0VOQUJMRV9ETUEoaHRpbSwgVElNX0RNQV9DQzEpOwogCiAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCwgZXhjZXB0IGluIHRyaWdnZXIgbW9kZSB3aGVyZSBlbmFibGUgaXMgYXV0b21hdGljYWxseSBkb25lIHdpdGggdHJpZ2dlciAqLwotICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7Ci0gIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgIGlmIChJU19USU1fU0xBVkVfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKQorICB7CisgICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOworICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgeworICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKKyAgICB9CisgIH0KKyAgZWxzZQogICB7CiAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKICAgfQpAQCAtNDY0LDkgKzU2NiwxNCBAQAogICBfX0hBTF9USU1fRElTQUJMRV9ETUEoaHRpbSwgVElNX0RNQV9DQzEpOwogCiAgICh2b2lkKUhBTF9ETUFfQWJvcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0pOworCiAgIC8qIERpc2FibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CiAKKyAgLyogU2V0IHRoZSBUSU0gY2hhbm5lbCBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKwogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CiB9CkBAIC01MTMsNiArNjIwLDE1IEBACiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fQ0NYTl9JTlNUQU5DRShodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCkpOwogCisgIC8qIENoZWNrIHRoZSBUSU0gY29tcGxlbWVudGFyeSBjaGFubmVsIHN0YXRlICovCisgIGlmIChUSU1fQ0hBTk5FTF9OX1NUQVRFX0dFVChodGltLCBDaGFubmVsKSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpCisgIHsKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgLyogU2V0IHRoZSBUSU0gY29tcGxlbWVudGFyeSBjaGFubmVsIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKwogICAvKiBFbmFibGUgdGhlIENhcHR1cmUgY29tcGFyZSBjaGFubmVsIE4gKi8KICAgVElNX0NDeE5DaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsLCBUSU1fQ0N4Tl9FTkFCTEUpOwogCkBAIC01MjAsOCArNjM2LDE1IEBACiAgIF9fSEFMX1RJTV9NT0VfRU5BQkxFKGh0aW0pOwogCiAgIC8qIEVuYWJsZSB0aGUgUGVyaXBoZXJhbCwgZXhjZXB0IGluIHRyaWdnZXIgbW9kZSB3aGVyZSBlbmFibGUgaXMgYXV0b21hdGljYWxseSBkb25lIHdpdGggdHJpZ2dlciAqLwotICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7Ci0gIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgIGlmIChJU19USU1fU0xBVkVfSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UpKQorICB7CisgICAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOworICAgIGlmICghSVNfVElNX1NMQVZFTU9ERV9UUklHR0VSX0VOQUJMRUQodG1wc21jcikpCisgICAgeworICAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKKyAgICB9CisgIH0KKyAgZWxzZQogICB7CiAgICAgX19IQUxfVElNX0VOQUJMRShodGltKTsKICAgfQpAQCAtNTU1LDYgKzY3OCw5IEBACiAgIC8qIERpc2FibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CiAKKyAgLyogU2V0IHRoZSBUSU0gY29tcGxlbWVudGFyeSBjaGFubmVsIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwogICByZXR1cm4gSEFMX09LOwogfQpAQCAtNTc3LDYgKzcwMywxNSBAQAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDWE5fSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwpKTsKIAorICAvKiBDaGVjayB0aGUgVElNIGNvbXBsZW1lbnRhcnkgY2hhbm5lbCBzdGF0ZSAqLworICBpZiAoVElNX0NIQU5ORUxfTl9TVEFURV9HRVQoaHRpbSwgQ2hhbm5lbCkgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgfQorCisgIC8qIFNldCB0aGUgVElNIGNvbXBsZW1lbnRhcnkgY2hhbm5lbCBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisKICAgc3dpdGNoIChDaGFubmVsKQogICB7CiAgICAgY2FzZSBUSU1fQ0hBTk5FTF8xOgpAQCAtNjE1LDggKzc1MCwxNSBAQAogICBfX0hBTF9USU1fTU9FX0VOQUJMRShodGltKTsKIAogICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwsIGV4Y2VwdCBpbiB0cmlnZ2VyIG1vZGUgd2hlcmUgZW5hYmxlIGlzIGF1dG9tYXRpY2FsbHkgZG9uZSB3aXRoIHRyaWdnZXIgKi8KLSAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOwotICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICBpZiAoSVNfVElNX1NMQVZFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSkKKyAgeworICAgIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKKyAgICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICAgIHsKKyAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CisgICAgfQorICB9CisgIGVsc2UKICAgewogICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CiAgIH0KQEAgLTY4NSw2ICs4MjcsOSBAQAogICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCiAgIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOwogCisgIC8qIFNldCB0aGUgVElNIGNvbXBsZW1lbnRhcnkgY2hhbm5lbCBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KICAgcmV0dXJuIEhBTF9PSzsKIH0KQEAgLTcwOSwyNCArODU0LDI1IEBACiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fQ0NYTl9JTlNUQU5DRShodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCkpOwogCi0gIGlmIChodGltLT5TdGF0ZSA9PSBIQUxfVElNX1NUQVRFX0JVU1kpCisgIC8qIFNldCB0aGUgVElNIGNvbXBsZW1lbnRhcnkgY2hhbm5lbCBzdGF0ZSAqLworICBpZiAoVElNX0NIQU5ORUxfTl9TVEFURV9HRVQoaHRpbSwgQ2hhbm5lbCkgPT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpCiAgIHsKICAgICByZXR1cm4gSEFMX0JVU1k7CiAgIH0KLSAgZWxzZSBpZiAoaHRpbS0+U3RhdGUgPT0gSEFMX1RJTV9TVEFURV9SRUFEWSkKKyAgZWxzZSBpZiAoVElNX0NIQU5ORUxfTl9TVEFURV9HRVQoaHRpbSwgQ2hhbm5lbCkgPT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQogICB7Ci0gICAgaWYgKCgodWludDMyX3QpcERhdGEgPT0gMFUpICYmIChMZW5ndGggPiAwVSkpCisgICAgaWYgKChwRGF0YSA9PSBOVUxMKSAmJiAoTGVuZ3RoID4gMFUpKQogICAgIHsKICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICBodGltLT5TdGF0ZSA9IEhBTF9USU1fU1RBVEVfQlVTWTsKKyAgICAgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKICAgICB9CiAgIH0KICAgZWxzZQogICB7Ci0gICAgLyogbm90aGluZyB0byBkbyAgKi8KKyAgICByZXR1cm4gSEFMX0VSUk9SOwogICB9CiAKICAgc3dpdGNoIChDaGFubmVsKQpAQCAtNzM0LDE1ICs4ODAsMTYgQEAKICAgICBjYXNlIFRJTV9DSEFOTkVMXzE6CiAgICAgewogICAgICAgLyogU2V0IHRoZSBETUEgY29tcGFyZSBjYWxsYmFja3MgKi8KLSAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLT5YZmVyQ3BsdENhbGxiYWNrID0gVElNX0RNQURlbGF5UHVsc2VDcGx0OworICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0tPlhmZXJDcGx0Q2FsbGJhY2sgPSBUSU1fRE1BRGVsYXlQdWxzZU5DcGx0OwogICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0tPlhmZXJIYWxmQ3BsdENhbGxiYWNrID0gVElNX0RNQURlbGF5UHVsc2VIYWxmQ3BsdDsKIAogICAgICAgLyogU2V0IHRoZSBETUEgZXJyb3IgY2FsbGJhY2sgKi8KLSAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvciA7CisgICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXS0+WGZlckVycm9yQ2FsbGJhY2sgPSBUSU1fRE1BRXJyb3JDQ3hOIDsKIAogICAgICAgLyogRW5hYmxlIHRoZSBETUEgc3RyZWFtICovCiAgICAgICBpZiAoSEFMX0RNQV9TdGFydF9JVChodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXSwgKHVpbnQzMl90KXBEYXRhLCAodWludDMyX3QpJmh0aW0tPkluc3RhbmNlLT5DQ1IxLCBMZW5ndGgpICE9IEhBTF9PSykKICAgICAgIHsKKyAgICAgICAgLyogUmV0dXJuIGVycm9yIHN0YXR1cyAqLwogICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwogICAgICAgfQogICAgICAgLyogRW5hYmxlIHRoZSBUSU0gT3V0cHV0IENvbXBhcmUgRE1BIHJlcXVlc3QgKi8KQEAgLTc1MywxNSArOTAwLDE2IEBACiAgICAgY2FzZSBUSU1fQ0hBTk5FTF8yOgogICAgIHsKICAgICAgIC8qIFNldCB0aGUgRE1BIGNvbXBhcmUgY2FsbGJhY2tzICovCi0gICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXS0+WGZlckNwbHRDYWxsYmFjayA9IFRJTV9ETUFEZWxheVB1bHNlQ3BsdDsKKyAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzJdLT5YZmVyQ3BsdENhbGxiYWNrID0gVElNX0RNQURlbGF5UHVsc2VOQ3BsdDsKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzJdLT5YZmVySGFsZkNwbHRDYWxsYmFjayA9IFRJTV9ETUFEZWxheVB1bHNlSGFsZkNwbHQ7CiAKICAgICAgIC8qIFNldCB0aGUgRE1BIGVycm9yIGNhbGxiYWNrICovCi0gICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXS0+WGZlckVycm9yQ2FsbGJhY2sgPSBUSU1fRE1BRXJyb3IgOworICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0tPlhmZXJFcnJvckNhbGxiYWNrID0gVElNX0RNQUVycm9yQ0N4TiA7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwogICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMiwgTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CisgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICAgIH0KICAgICAgIC8qIEVuYWJsZSB0aGUgVElNIE91dHB1dCBDb21wYXJlIERNQSByZXF1ZXN0ICovCkBAIC03NzIsMTUgKzkyMCwxNiBAQAogICAgIGNhc2UgVElNX0NIQU5ORUxfMzoKICAgICB7CiAgICAgICAvKiBTZXQgdGhlIERNQSBjb21wYXJlIGNhbGxiYWNrcyAqLwotICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDM10tPlhmZXJDcGx0Q2FsbGJhY2sgPSBUSU1fRE1BRGVsYXlQdWxzZUNwbHQ7CisgICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MzXS0+WGZlckNwbHRDYWxsYmFjayA9IFRJTV9ETUFEZWxheVB1bHNlTkNwbHQ7CiAgICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MzXS0+WGZlckhhbGZDcGx0Q2FsbGJhY2sgPSBUSU1fRE1BRGVsYXlQdWxzZUhhbGZDcGx0OwogCiAgICAgICAvKiBTZXQgdGhlIERNQSBlcnJvciBjYWxsYmFjayAqLwotICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDM10tPlhmZXJFcnJvckNhbGxiYWNrID0gVElNX0RNQUVycm9yIDsKKyAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzNdLT5YZmVyRXJyb3JDYWxsYmFjayA9IFRJTV9ETUFFcnJvckNDeE4gOwogCiAgICAgICAvKiBFbmFibGUgdGhlIERNQSBzdHJlYW0gKi8KICAgICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzNdLCAodWludDMyX3QpcERhdGEsICh1aW50MzJfdCkmaHRpbS0+SW5zdGFuY2UtPkNDUjMsIExlbmd0aCkgIT0gSEFMX09LKQogICAgICAgeworICAgICAgICAvKiBSZXR1cm4gZXJyb3Igc3RhdHVzICovCiAgICAgICAgIHJldHVybiBIQUxfRVJST1I7CiAgICAgICB9CiAgICAgICAvKiBFbmFibGUgdGhlIFRJTSBPdXRwdXQgQ29tcGFyZSBETUEgcmVxdWVzdCAqLwpAQCAtNzk5LDggKzk0OCwxNSBAQAogICBfX0hBTF9USU1fTU9FX0VOQUJMRShodGltKTsKIAogICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwsIGV4Y2VwdCBpbiB0cmlnZ2VyIG1vZGUgd2hlcmUgZW5hYmxlIGlzIGF1dG9tYXRpY2FsbHkgZG9uZSB3aXRoIHRyaWdnZXIgKi8KLSAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOwotICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICBpZiAoSVNfVElNX1NMQVZFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSkKKyAgeworICAgIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKKyAgICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICAgIHsKKyAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CisgICAgfQorICB9CisgIGVsc2UKICAgewogICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CiAgIH0KQEAgLTg2NCw4ICsxMDIwLDggQEAKICAgLyogRGlzYWJsZSB0aGUgUGVyaXBoZXJhbCAqLwogICBfX0hBTF9USU1fRElTQUJMRShodGltKTsKIAotICAvKiBDaGFuZ2UgdGhlIGh0aW0gc3RhdGUgKi8KLSAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX1JFQURZOworICAvKiBTZXQgdGhlIFRJTSBjb21wbGVtZW50YXJ5IGNoYW5uZWwgc3RhdGUgKi8KKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKIAogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CkBAIC05MjIsNiArMTA3OCwxNSBAQAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDWE5fSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwpKTsKIAorICAvKiBDaGVjayB0aGUgVElNIGNvbXBsZW1lbnRhcnkgY2hhbm5lbCBzdGF0ZSAqLworICBpZiAoVElNX0NIQU5ORUxfTl9TVEFURV9HRVQoaHRpbSwgQ2hhbm5lbCkgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgfQorCisgIC8qIFNldCB0aGUgVElNIGNvbXBsZW1lbnRhcnkgY2hhbm5lbCBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisKICAgLyogRW5hYmxlIHRoZSBjb21wbGVtZW50YXJ5IFBXTSBvdXRwdXQgICovCiAgIFRJTV9DQ3hOQ2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgQ2hhbm5lbCwgVElNX0NDeE5fRU5BQkxFKTsKIApAQCAtOTI5LDggKzEwOTQsMTUgQEAKICAgX19IQUxfVElNX01PRV9FTkFCTEUoaHRpbSk7CiAKICAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsLCBleGNlcHQgaW4gdHJpZ2dlciBtb2RlIHdoZXJlIGVuYWJsZSBpcyBhdXRvbWF0aWNhbGx5IGRvbmUgd2l0aCB0cmlnZ2VyICovCi0gIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKLSAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKKyAgaWYgKElTX1RJTV9TTEFWRV9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpCisgIHsKKyAgICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7CisgICAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKKyAgICB7CisgICAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOworICAgIH0KKyAgfQorICBlbHNlCiAgIHsKICAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOwogICB9CkBAIC05NjMsNiArMTEzNSw5IEBACiAgIC8qIERpc2FibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CiAKKyAgLyogU2V0IHRoZSBUSU0gY29tcGxlbWVudGFyeSBjaGFubmVsIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwogICByZXR1cm4gSEFMX09LOwogfQpAQCAtOTg1LDYgKzExNjAsMTUgQEAKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9DQ1hOX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlLCBDaGFubmVsKSk7CiAKKyAgLyogQ2hlY2sgdGhlIFRJTSBjb21wbGVtZW50YXJ5IGNoYW5uZWwgc3RhdGUgKi8KKyAgaWYgKFRJTV9DSEFOTkVMX05fU1RBVEVfR0VUKGh0aW0sIENoYW5uZWwpICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgeworICAgIHJldHVybiBIQUxfRVJST1I7CisgIH0KKworICAvKiBTZXQgdGhlIFRJTSBjb21wbGVtZW50YXJ5IGNoYW5uZWwgc3RhdGUgKi8KKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgQ2hhbm5lbCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworCiAgIHN3aXRjaCAoQ2hhbm5lbCkKICAgewogICAgIGNhc2UgVElNX0NIQU5ORUxfMToKQEAgLTEwMjIsOCArMTIwNiwxNSBAQAogICBfX0hBTF9USU1fTU9FX0VOQUJMRShodGltKTsKIAogICAvKiBFbmFibGUgdGhlIFBlcmlwaGVyYWwsIGV4Y2VwdCBpbiB0cmlnZ2VyIG1vZGUgd2hlcmUgZW5hYmxlIGlzIGF1dG9tYXRpY2FsbHkgZG9uZSB3aXRoIHRyaWdnZXIgKi8KLSAgdG1wc21jciA9IGh0aW0tPkluc3RhbmNlLT5TTUNSICYgVElNX1NNQ1JfU01TOwotICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICBpZiAoSVNfVElNX1NMQVZFX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlKSkKKyAgeworICAgIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKKyAgICBpZiAoIUlTX1RJTV9TTEFWRU1PREVfVFJJR0dFUl9FTkFCTEVEKHRtcHNtY3IpKQorICAgIHsKKyAgICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CisgICAgfQorICB9CisgIGVsc2UKICAgewogICAgIF9fSEFMX1RJTV9FTkFCTEUoaHRpbSk7CiAgIH0KQEAgLTEwOTMsNiArMTI4NCw5IEBACiAgIC8qIERpc2FibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CiAKKyAgLyogU2V0IHRoZSBUSU0gY29tcGxlbWVudGFyeSBjaGFubmVsIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIENoYW5uZWwsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwogICByZXR1cm4gSEFMX09LOwogfQpAQCAtMTExNywzOSArMTMxMSw0MiBAQAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDWE5fSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UsIENoYW5uZWwpKTsKIAotICBpZiAoaHRpbS0+U3RhdGUgPT0gSEFMX1RJTV9TVEFURV9CVVNZKQorICAvKiBTZXQgdGhlIFRJTSBjb21wbGVtZW50YXJ5IGNoYW5uZWwgc3RhdGUgKi8KKyAgaWYgKFRJTV9DSEFOTkVMX05fU1RBVEVfR0VUKGh0aW0sIENoYW5uZWwpID09IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKQogICB7CiAgICAgcmV0dXJuIEhBTF9CVVNZOwogICB9Ci0gIGVsc2UgaWYgKGh0aW0tPlN0YXRlID09IEhBTF9USU1fU1RBVEVfUkVBRFkpCisgIGVsc2UgaWYgKFRJTV9DSEFOTkVMX05fU1RBVEVfR0VUKGh0aW0sIENoYW5uZWwpID09IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKICAgewotICAgIGlmICgoKHVpbnQzMl90KXBEYXRhID09IDBVKSAmJiAoTGVuZ3RoID4gMFUpKQorICAgIGlmICgocERhdGEgPT0gTlVMTCkgJiYgKExlbmd0aCA+IDBVKSkKICAgICB7CiAgICAgICByZXR1cm4gSEFMX0VSUk9SOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgaHRpbS0+U3RhdGUgPSBIQUxfVElNX1NUQVRFX0JVU1k7CisgICAgICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CiAgICAgfQogICB9CiAgIGVsc2UKICAgewotICAgIC8qIG5vdGhpbmcgdG8gZG8gKi8KKyAgICByZXR1cm4gSEFMX0VSUk9SOwogICB9CisKICAgc3dpdGNoIChDaGFubmVsKQogICB7CiAgICAgY2FzZSBUSU1fQ0hBTk5FTF8xOgogICAgIHsKICAgICAgIC8qIFNldCB0aGUgRE1BIGNvbXBhcmUgY2FsbGJhY2tzICovCi0gICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXS0+WGZlckNwbHRDYWxsYmFjayA9IFRJTV9ETUFEZWxheVB1bHNlQ3BsdDsKKyAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLT5YZmVyQ3BsdENhbGxiYWNrID0gVElNX0RNQURlbGF5UHVsc2VOQ3BsdDsKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzFdLT5YZmVySGFsZkNwbHRDYWxsYmFjayA9IFRJTV9ETUFEZWxheVB1bHNlSGFsZkNwbHQ7CiAKICAgICAgIC8qIFNldCB0aGUgRE1BIGVycm9yIGNhbGxiYWNrICovCi0gICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXS0+WGZlckVycm9yQ2FsbGJhY2sgPSBUSU1fRE1BRXJyb3IgOworICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0tPlhmZXJFcnJvckNhbGxiYWNrID0gVElNX0RNQUVycm9yQ0N4TiA7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwogICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMSwgTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CisgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICAgIH0KICAgICAgIC8qIEVuYWJsZSB0aGUgVElNIENhcHR1cmUvQ29tcGFyZSAxIERNQSByZXF1ZXN0ICovCkBAIC0xMTYwLDE1ICsxMzU3LDE2IEBACiAgICAgY2FzZSBUSU1fQ0hBTk5FTF8yOgogICAgIHsKICAgICAgIC8qIFNldCB0aGUgRE1BIGNvbXBhcmUgY2FsbGJhY2tzICovCi0gICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXS0+WGZlckNwbHRDYWxsYmFjayA9IFRJTV9ETUFEZWxheVB1bHNlQ3BsdDsKKyAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzJdLT5YZmVyQ3BsdENhbGxiYWNrID0gVElNX0RNQURlbGF5UHVsc2VOQ3BsdDsKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzJdLT5YZmVySGFsZkNwbHRDYWxsYmFjayA9IFRJTV9ETUFEZWxheVB1bHNlSGFsZkNwbHQ7CiAKICAgICAgIC8qIFNldCB0aGUgRE1BIGVycm9yIGNhbGxiYWNrICovCi0gICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXS0+WGZlckVycm9yQ2FsbGJhY2sgPSBUSU1fRE1BRXJyb3IgOworICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0tPlhmZXJFcnJvckNhbGxiYWNrID0gVElNX0RNQUVycm9yQ0N4TiA7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwogICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMl0sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMiwgTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CisgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICAgIH0KICAgICAgIC8qIEVuYWJsZSB0aGUgVElNIENhcHR1cmUvQ29tcGFyZSAyIERNQSByZXF1ZXN0ICovCkBAIC0xMTc5LDE1ICsxMzc3LDE2IEBACiAgICAgY2FzZSBUSU1fQ0hBTk5FTF8zOgogICAgIHsKICAgICAgIC8qIFNldCB0aGUgRE1BIGNvbXBhcmUgY2FsbGJhY2tzICovCi0gICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MzXS0+WGZlckNwbHRDYWxsYmFjayA9IFRJTV9ETUFEZWxheVB1bHNlQ3BsdDsKKyAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzNdLT5YZmVyQ3BsdENhbGxiYWNrID0gVElNX0RNQURlbGF5UHVsc2VOQ3BsdDsKICAgICAgIGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzNdLT5YZmVySGFsZkNwbHRDYWxsYmFjayA9IFRJTV9ETUFEZWxheVB1bHNlSGFsZkNwbHQ7CiAKICAgICAgIC8qIFNldCB0aGUgRE1BIGVycm9yIGNhbGxiYWNrICovCi0gICAgICBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MzXS0+WGZlckVycm9yQ2FsbGJhY2sgPSBUSU1fRE1BRXJyb3IgOworICAgICAgaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDM10tPlhmZXJFcnJvckNhbGxiYWNrID0gVElNX0RNQUVycm9yQ0N4TiA7CiAKICAgICAgIC8qIEVuYWJsZSB0aGUgRE1BIHN0cmVhbSAqLwogICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDM10sICh1aW50MzJfdClwRGF0YSwgKHVpbnQzMl90KSZodGltLT5JbnN0YW5jZS0+Q0NSMywgTGVuZ3RoKSAhPSBIQUxfT0spCiAgICAgICB7CisgICAgICAgIC8qIFJldHVybiBlcnJvciBzdGF0dXMgKi8KICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKICAgICAgIH0KICAgICAgIC8qIEVuYWJsZSB0aGUgVElNIENhcHR1cmUvQ29tcGFyZSAzIERNQSByZXF1ZXN0ICovCkBAIC0xMjA2LDggKzE0MDUsMTUgQEAKICAgX19IQUxfVElNX01PRV9FTkFCTEUoaHRpbSk7CiAKICAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsLCBleGNlcHQgaW4gdHJpZ2dlciBtb2RlIHdoZXJlIGVuYWJsZSBpcyBhdXRvbWF0aWNhbGx5IGRvbmUgd2l0aCB0cmlnZ2VyICovCi0gIHRtcHNtY3IgPSBodGltLT5JbnN0YW5jZS0+U01DUiAmIFRJTV9TTUNSX1NNUzsKLSAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKKyAgaWYgKElTX1RJTV9TTEFWRV9JTlNUQU5DRShodGltLT5JbnN0YW5jZSkpCisgIHsKKyAgICB0bXBzbWNyID0gaHRpbS0+SW5zdGFuY2UtPlNNQ1IgJiBUSU1fU01DUl9TTVM7CisgICAgaWYgKCFJU19USU1fU0xBVkVNT0RFX1RSSUdHRVJfRU5BQkxFRCh0bXBzbWNyKSkKKyAgICB7CisgICAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOworICAgIH0KKyAgfQorICBlbHNlCiAgIHsKICAgICBfX0hBTF9USU1fRU5BQkxFKGh0aW0pOwogICB9CkBAIC0xMjcxLDggKzE0NzcsOCBAQAogICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCiAgIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOwogCi0gIC8qIENoYW5nZSB0aGUgaHRpbSBzdGF0ZSAqLwotICBodGltLT5TdGF0ZSA9IEhBTF9USU1fU1RBVEVfUkVBRFk7CisgIC8qIFNldCB0aGUgVElNIGNvbXBsZW1lbnRhcnkgY2hhbm5lbCBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBDaGFubmVsLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOwogCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KICAgcmV0dXJuIEhBTF9PSzsKQEAgLTEzMDMsOCArMTUwOSwxMCBAQAogLyoqCiAgICogQGJyaWVmICBTdGFydHMgdGhlIFRJTSBPbmUgUHVsc2Ugc2lnbmFsIGdlbmVyYXRpb24gb24gdGhlIGNvbXBsZW1lbnRhcnkKICAgKiAgICAgICAgIG91dHB1dC4KKyAgKiBAbm90ZSBPdXRwdXRDaGFubmVsIG11c3QgbWF0Y2ggdGhlIHB1bHNlIG91dHB1dCBjaGFubmVsIGNob3NlbiB3aGVuIGNhbGxpbmcgCisgICogICAgICAgQHJlZiBIQUxfVElNX09uZVB1bHNlX0NvbmZpZ0NoYW5uZWwoKS4gCiAgICogQHBhcmFtICBodGltIFRJTSBPbmUgUHVsc2UgaGFuZGxlCi0gICogQHBhcmFtICBPdXRwdXRDaGFubmVsIFRJTSBDaGFubmVsIHRvIGJlIGVuYWJsZWQKKyAgKiBAcGFyYW0gIE91dHB1dENoYW5uZWwgcHVsc2Ugb3V0cHV0IGNoYW5uZWwgdG8gZW5hYmxlCiAgICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKICAgKiAgICAgICAgICAgIEBhcmcgVElNX0NIQU5ORUxfMTogVElNIENoYW5uZWwgMSBzZWxlY3RlZAogICAqICAgICAgICAgICAgQGFyZyBUSU1fQ0hBTk5FTF8yOiBUSU0gQ2hhbm5lbCAyIHNlbGVjdGVkCkBAIC0xMzEyLDExICsxNTIwLDMzIEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNRXhfT25lUHVsc2VOX1N0YXJ0KFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBPdXRwdXRDaGFubmVsKQogeworICB1aW50MzJfdCBpbnB1dF9jaGFubmVsID0gKE91dHB1dENoYW5uZWwgPT0gVElNX0NIQU5ORUxfMSkgPyBUSU1fQ0hBTk5FTF8yIDogVElNX0NIQU5ORUxfMTsKKyAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNoYW5uZWxfMV9zdGF0ZSA9IFRJTV9DSEFOTkVMX1NUQVRFX0dFVChodGltLCBUSU1fQ0hBTk5FTF8xKTsKKyAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNoYW5uZWxfMl9zdGF0ZSA9IFRJTV9DSEFOTkVMX1NUQVRFX0dFVChodGltLCBUSU1fQ0hBTk5FTF8yKTsKKyAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8xX3N0YXRlID0gVElNX0NIQU5ORUxfTl9TVEFURV9HRVQoaHRpbSwgVElNX0NIQU5ORUxfMSk7CisgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjb21wbGVtZW50YXJ5X2NoYW5uZWxfMl9zdGF0ZSA9IFRJTV9DSEFOTkVMX05fU1RBVEVfR0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIpOworCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fQ0NYTl9JTlNUQU5DRShodGltLT5JbnN0YW5jZSwgT3V0cHV0Q2hhbm5lbCkpOwogCi0gIC8qIEVuYWJsZSB0aGUgY29tcGxlbWVudGFyeSBPbmUgUHVsc2Ugb3V0cHV0ICovCisgIC8qIENoZWNrIHRoZSBUSU0gY2hhbm5lbHMgc3RhdGUgKi8KKyAgIGlmICgoY2hhbm5lbF8xX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgICAgIHx8IChjaGFubmVsXzJfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQorICAgICAgfHwgKGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8xX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgICAgIHx8IChjb21wbGVtZW50YXJ5X2NoYW5uZWxfMl9zdGF0ZSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpKQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgfQorCisgIC8qIFNldCB0aGUgVElNIGNoYW5uZWxzIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8yLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworCisgIC8qIEVuYWJsZSB0aGUgY29tcGxlbWVudGFyeSBPbmUgUHVsc2Ugb3V0cHV0IGNoYW5uZWwgYW5kIHRoZSBJbnB1dCBDYXB0dXJlIGNoYW5uZWwgKi8KICAgVElNX0NDeE5DaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBPdXRwdXRDaGFubmVsLCBUSU1fQ0N4Tl9FTkFCTEUpOworICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgaW5wdXRfY2hhbm5lbCwgVElNX0NDeF9FTkFCTEUpOwogCiAgIC8qIEVuYWJsZSB0aGUgTWFpbiBPdXRwdXQgKi8KICAgX19IQUxfVElNX01PRV9FTkFCTEUoaHRpbSk7CkBAIC0xMzI4LDggKzE1NTgsMTAgQEAKIC8qKgogICAqIEBicmllZiAgU3RvcHMgdGhlIFRJTSBPbmUgUHVsc2Ugc2lnbmFsIGdlbmVyYXRpb24gb24gdGhlIGNvbXBsZW1lbnRhcnkKICAgKiAgICAgICAgIG91dHB1dC4KKyAgKiBAbm90ZSBPdXRwdXRDaGFubmVsIG11c3QgbWF0Y2ggdGhlIHB1bHNlIG91dHB1dCBjaGFubmVsIGNob3NlbiB3aGVuIGNhbGxpbmcgCisgICogICAgICAgQHJlZiBIQUxfVElNX09uZVB1bHNlX0NvbmZpZ0NoYW5uZWwoKS4gCiAgICogQHBhcmFtICBodGltIFRJTSBPbmUgUHVsc2UgaGFuZGxlCi0gICogQHBhcmFtICBPdXRwdXRDaGFubmVsIFRJTSBDaGFubmVsIHRvIGJlIGRpc2FibGVkCisgICogQHBhcmFtICBPdXRwdXRDaGFubmVsIHB1bHNlIG91dHB1dCBjaGFubmVsIHRvIGRpc2FibGUKICAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgogICAqICAgICAgICAgICAgQGFyZyBUSU1fQ0hBTk5FTF8xOiBUSU0gQ2hhbm5lbCAxIHNlbGVjdGVkCiAgICogICAgICAgICAgICBAYXJnIFRJTV9DSEFOTkVMXzI6IFRJTSBDaGFubmVsIDIgc2VsZWN0ZWQKQEAgLTEzMzcsMTIgKzE1NjksMTQgQEAKICAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIEhBTF9USU1FeF9PbmVQdWxzZU5fU3RvcChUSU1fSGFuZGxlVHlwZURlZiAqaHRpbSwgdWludDMyX3QgT3V0cHV0Q2hhbm5lbCkKIHsKKyAgdWludDMyX3QgaW5wdXRfY2hhbm5lbCA9IChPdXRwdXRDaGFubmVsID09IFRJTV9DSEFOTkVMXzEpID8gVElNX0NIQU5ORUxfMiA6IFRJTV9DSEFOTkVMXzE7CiAKICAgLyogQ2hlY2sgdGhlIHBhcmFtZXRlcnMgKi8KICAgYXNzZXJ0X3BhcmFtKElTX1RJTV9DQ1hOX0lOU1RBTkNFKGh0aW0tPkluc3RhbmNlLCBPdXRwdXRDaGFubmVsKSk7CiAKLSAgLyogRGlzYWJsZSB0aGUgY29tcGxlbWVudGFyeSBPbmUgUHVsc2Ugb3V0cHV0ICovCisgIC8qIERpc2FibGUgdGhlIGNvbXBsZW1lbnRhcnkgT25lIFB1bHNlIG91dHB1dCBjaGFubmVsIGFuZCB0aGUgSW5wdXQgQ2FwdHVyZSBjaGFubmVsICovCiAgIFRJTV9DQ3hOQ2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgT3V0cHV0Q2hhbm5lbCwgVElNX0NDeE5fRElTQUJMRSk7CisgIFRJTV9DQ3hDaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBpbnB1dF9jaGFubmVsLCBUSU1fQ0N4X0RJU0FCTEUpOwogCiAgIC8qIERpc2FibGUgdGhlIE1haW4gT3V0cHV0ICovCiAgIF9fSEFMX1RJTV9NT0VfRElTQUJMRShodGltKTsKQEAgLTEzNTAsNiArMTU4NCwxMiBAQAogICAvKiBEaXNhYmxlIHRoZSBQZXJpcGhlcmFsICovCiAgIF9fSEFMX1RJTV9ESVNBQkxFKGh0aW0pOwogCisgIC8qIFNldCB0aGUgVElNICBjaGFubmVscyBzdGF0ZSAqLworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgVElNX0NIQU5ORUxfU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisKICAgLyogUmV0dXJuIGZ1bmN0aW9uIHN0YXR1cyAqLwogICByZXR1cm4gSEFMX09LOwogfQpAQCAtMTM1Nyw4ICsxNTk3LDEwIEBACiAvKioKICAgKiBAYnJpZWYgIFN0YXJ0cyB0aGUgVElNIE9uZSBQdWxzZSBzaWduYWwgZ2VuZXJhdGlvbiBpbiBpbnRlcnJ1cHQgbW9kZSBvbiB0aGUKICAgKiAgICAgICAgIGNvbXBsZW1lbnRhcnkgY2hhbm5lbC4KKyAgKiBAbm90ZSBPdXRwdXRDaGFubmVsIG11c3QgbWF0Y2ggdGhlIHB1bHNlIG91dHB1dCBjaGFubmVsIGNob3NlbiB3aGVuIGNhbGxpbmcgCisgICogICAgICAgQHJlZiBIQUxfVElNX09uZVB1bHNlX0NvbmZpZ0NoYW5uZWwoKS4gCiAgICogQHBhcmFtICBodGltIFRJTSBPbmUgUHVsc2UgaGFuZGxlCi0gICogQHBhcmFtICBPdXRwdXRDaGFubmVsIFRJTSBDaGFubmVsIHRvIGJlIGVuYWJsZWQKKyAgKiBAcGFyYW0gIE91dHB1dENoYW5uZWwgcHVsc2Ugb3V0cHV0IGNoYW5uZWwgdG8gZW5hYmxlCiAgICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKICAgKiAgICAgICAgICAgIEBhcmcgVElNX0NIQU5ORUxfMTogVElNIENoYW5uZWwgMSBzZWxlY3RlZAogICAqICAgICAgICAgICAgQGFyZyBUSU1fQ0hBTk5FTF8yOiBUSU0gQ2hhbm5lbCAyIHNlbGVjdGVkCkBAIC0xMzY2LDE3ICsxNjA4LDM5IEBACiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBIQUxfVElNRXhfT25lUHVsc2VOX1N0YXJ0X0lUKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBPdXRwdXRDaGFubmVsKQogeworICB1aW50MzJfdCBpbnB1dF9jaGFubmVsID0gKE91dHB1dENoYW5uZWwgPT0gVElNX0NIQU5ORUxfMSkgPyBUSU1fQ0hBTk5FTF8yIDogVElNX0NIQU5ORUxfMTsKKyAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNoYW5uZWxfMV9zdGF0ZSA9IFRJTV9DSEFOTkVMX1NUQVRFX0dFVChodGltLCBUSU1fQ0hBTk5FTF8xKTsKKyAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNoYW5uZWxfMl9zdGF0ZSA9IFRJTV9DSEFOTkVMX1NUQVRFX0dFVChodGltLCBUSU1fQ0hBTk5FTF8yKTsKKyAgSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8xX3N0YXRlID0gVElNX0NIQU5ORUxfTl9TVEFURV9HRVQoaHRpbSwgVElNX0NIQU5ORUxfMSk7CisgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjb21wbGVtZW50YXJ5X2NoYW5uZWxfMl9zdGF0ZSA9IFRJTV9DSEFOTkVMX05fU1RBVEVfR0VUKGh0aW0sIFRJTV9DSEFOTkVMXzIpOworCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19USU1fQ0NYTl9JTlNUQU5DRShodGltLT5JbnN0YW5jZSwgT3V0cHV0Q2hhbm5lbCkpOwogCisgIC8qIENoZWNrIHRoZSBUSU0gY2hhbm5lbHMgc3RhdGUgKi8KKyAgIGlmICgoY2hhbm5lbF8xX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgICAgIHx8IChjaGFubmVsXzJfc3RhdGUgIT0gSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKQorICAgICAgfHwgKGNvbXBsZW1lbnRhcnlfY2hhbm5lbF8xX3N0YXRlICE9IEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSkKKyAgICAgIHx8IChjb21wbGVtZW50YXJ5X2NoYW5uZWxfMl9zdGF0ZSAhPSBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpKQorICB7CisgICAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgfQorCisgIC8qIFNldCB0aGUgVElNIGNoYW5uZWxzIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8yLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfQlVTWSk7CisgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9CVVNZKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX0JVU1kpOworCiAgIC8qIEVuYWJsZSB0aGUgVElNIENhcHR1cmUvQ29tcGFyZSAxIGludGVycnVwdCAqLwogICBfX0hBTF9USU1fRU5BQkxFX0lUKGh0aW0sIFRJTV9JVF9DQzEpOwogCiAgIC8qIEVuYWJsZSB0aGUgVElNIENhcHR1cmUvQ29tcGFyZSAyIGludGVycnVwdCAqLwogICBfX0hBTF9USU1fRU5BQkxFX0lUKGh0aW0sIFRJTV9JVF9DQzIpOwogCi0gIC8qIEVuYWJsZSB0aGUgY29tcGxlbWVudGFyeSBPbmUgUHVsc2Ugb3V0cHV0ICovCisgIC8qIEVuYWJsZSB0aGUgY29tcGxlbWVudGFyeSBPbmUgUHVsc2Ugb3V0cHV0IGNoYW5uZWwgYW5kIHRoZSBJbnB1dCBDYXB0dXJlIGNoYW5uZWwgKi8KICAgVElNX0NDeE5DaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBPdXRwdXRDaGFubmVsLCBUSU1fQ0N4Tl9FTkFCTEUpOworICBUSU1fQ0N4Q2hhbm5lbENtZChodGltLT5JbnN0YW5jZSwgaW5wdXRfY2hhbm5lbCwgVElNX0NDeF9FTkFCTEUpOwogCiAgIC8qIEVuYWJsZSB0aGUgTWFpbiBPdXRwdXQgKi8KICAgX19IQUxfVElNX01PRV9FTkFCTEUoaHRpbSk7CkBAIC0xMzg4LDggKzE2NTIsMTAgQEAKIC8qKgogICAqIEBicmllZiAgU3RvcHMgdGhlIFRJTSBPbmUgUHVsc2Ugc2lnbmFsIGdlbmVyYXRpb24gaW4gaW50ZXJydXB0IG1vZGUgb24gdGhlCiAgICogICAgICAgICBjb21wbGVtZW50YXJ5IGNoYW5uZWwuCisgICogQG5vdGUgT3V0cHV0Q2hhbm5lbCBtdXN0IG1hdGNoIHRoZSBwdWxzZSBvdXRwdXQgY2hhbm5lbCBjaG9zZW4gd2hlbiBjYWxsaW5nIAorICAqICAgICAgIEByZWYgSEFMX1RJTV9PbmVQdWxzZV9Db25maWdDaGFubmVsKCkuIAogICAqIEBwYXJhbSAgaHRpbSBUSU0gT25lIFB1bHNlIGhhbmRsZQotICAqIEBwYXJhbSAgT3V0cHV0Q2hhbm5lbCBUSU0gQ2hhbm5lbCB0byBiZSBkaXNhYmxlZAorICAqIEBwYXJhbSAgT3V0cHV0Q2hhbm5lbCBwdWxzZSBvdXRwdXQgY2hhbm5lbCB0byBkaXNhYmxlCiAgICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKICAgKiAgICAgICAgICAgIEBhcmcgVElNX0NIQU5ORUxfMTogVElNIENoYW5uZWwgMSBzZWxlY3RlZAogICAqICAgICAgICAgICAgQGFyZyBUSU1fQ0hBTk5FTF8yOiBUSU0gQ2hhbm5lbCAyIHNlbGVjdGVkCkBAIC0xMzk3LDYgKzE2NjMsOCBAQAogICAqLwogSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1RJTUV4X09uZVB1bHNlTl9TdG9wX0lUKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCB1aW50MzJfdCBPdXRwdXRDaGFubmVsKQogeworICB1aW50MzJfdCBpbnB1dF9jaGFubmVsID0gKE91dHB1dENoYW5uZWwgPT0gVElNX0NIQU5ORUxfMSkgPyBUSU1fQ0hBTk5FTF8yIDogVElNX0NIQU5ORUxfMTsKKwogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfVElNX0NDWE5fSU5TVEFOQ0UoaHRpbS0+SW5zdGFuY2UsIE91dHB1dENoYW5uZWwpKTsKIApAQCAtMTQwNiw4ICsxNjc0LDkgQEAKICAgLyogRGlzYWJsZSB0aGUgVElNIENhcHR1cmUvQ29tcGFyZSAyIGludGVycnVwdCAqLwogICBfX0hBTF9USU1fRElTQUJMRV9JVChodGltLCBUSU1fSVRfQ0MyKTsKIAotICAvKiBEaXNhYmxlIHRoZSBjb21wbGVtZW50YXJ5IE9uZSBQdWxzZSBvdXRwdXQgKi8KKyAgLyogRGlzYWJsZSB0aGUgY29tcGxlbWVudGFyeSBPbmUgUHVsc2Ugb3V0cHV0IGNoYW5uZWwgYW5kIHRoZSBJbnB1dCBDYXB0dXJlIGNoYW5uZWwgKi8KICAgVElNX0NDeE5DaGFubmVsQ21kKGh0aW0tPkluc3RhbmNlLCBPdXRwdXRDaGFubmVsLCBUSU1fQ0N4Tl9ESVNBQkxFKTsKKyAgVElNX0NDeENoYW5uZWxDbWQoaHRpbS0+SW5zdGFuY2UsIGlucHV0X2NoYW5uZWwsIFRJTV9DQ3hfRElTQUJMRSk7CiAKICAgLyogRGlzYWJsZSB0aGUgTWFpbiBPdXRwdXQgKi8KICAgX19IQUxfVElNX01PRV9ESVNBQkxFKGh0aW0pOwpAQCAtMTQxNSw2ICsxNjg0LDEyIEBACiAgIC8qIERpc2FibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgX19IQUxfVElNX0RJU0FCTEUoaHRpbSk7CiAKKyAgLyogU2V0IHRoZSBUSU0gIGNoYW5uZWxzIHN0YXRlICovCisgIFRJTV9DSEFOTkVMX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8xLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICBUSU1fQ0hBTk5FTF9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKwogICAvKiBSZXR1cm4gZnVuY3Rpb24gc3RhdHVzICovCiAgIHJldHVybiBIQUxfT0s7CiB9CkBAIC0xODM5LDEwICsyMTE0LDEwIEBACiAjaWYgZGVmaW5lZChERlNETTFfQ2hhbm5lbDApCiAgICAgICBpZiAoc0JyZWFrSW5wdXRDb25maWctPlNvdXJjZSAhPSBUSU1fQlJFQUtJTlBVVFNPVVJDRV9ERlNETTEpCiAjZW5kaWYgLyogREZTRE0xX0NoYW5uZWwwICovCi0gICAgICB7Ci0gICAgICAgIHRtcG9yeCAmPSB+Ymtpbl9wb2xhcml0eV9tYXNrOwotICAgICAgICB0bXBvcnggfD0gKHNCcmVha0lucHV0Q29uZmlnLT5Qb2xhcml0eSA8PCBia2luX3BvbGFyaXR5X2JpdHBvcykgJiBia2luX3BvbGFyaXR5X21hc2s7Ci0gICAgICB9CisgICAgICAgIHsKKyAgICAgICAgICB0bXBvcnggJj0gfmJraW5fcG9sYXJpdHlfbWFzazsKKyAgICAgICAgICB0bXBvcnggfD0gKHNCcmVha0lucHV0Q29uZmlnLT5Qb2xhcml0eSA8PCBia2luX3BvbGFyaXR5X2JpdHBvcykgJiBia2luX3BvbGFyaXR5X21hc2s7CisgICAgICAgIH0KIAogICAgICAgLyogU2V0IFRJTXhfQUYxICovCiAgICAgICBodGltLT5JbnN0YW5jZS0+QUYxID0gdG1wb3J4OwpAQCAtMTg2MSwxMCArMjEzNiwxMCBAQAogI2lmIGRlZmluZWQoREZTRE0xX0NoYW5uZWwwKQogICAgICAgaWYgKHNCcmVha0lucHV0Q29uZmlnLT5Tb3VyY2UgIT0gVElNX0JSRUFLSU5QVVRTT1VSQ0VfREZTRE0xKQogI2VuZGlmIC8qIERGU0RNMV9DaGFubmVsMCAqLwotICAgICAgewotICAgICAgICB0bXBvcnggJj0gfmJraW5fcG9sYXJpdHlfbWFzazsKLSAgICAgICAgdG1wb3J4IHw9IChzQnJlYWtJbnB1dENvbmZpZy0+UG9sYXJpdHkgPDwgYmtpbl9wb2xhcml0eV9iaXRwb3MpICYgYmtpbl9wb2xhcml0eV9tYXNrOwotICAgICAgfQorICAgICAgICB7CisgICAgICAgICAgdG1wb3J4ICY9IH5ia2luX3BvbGFyaXR5X21hc2s7CisgICAgICAgICAgdG1wb3J4IHw9IChzQnJlYWtJbnB1dENvbmZpZy0+UG9sYXJpdHkgPDwgYmtpbl9wb2xhcml0eV9iaXRwb3MpICYgYmtpbl9wb2xhcml0eV9tYXNrOworICAgICAgICB9CiAKICAgICAgIC8qIFNldCBUSU14X0FGMiAqLwogICAgICAgaHRpbS0+SW5zdGFuY2UtPkFGMiA9IHRtcG9yeDsKQEAgLTIwNjMsNiArMjMzOCwyNyBAQAogfQogCiAvKioKKyAgKiBAYnJpZWYgIFJldHVybiBhY3R1YWwgc3RhdGUgb2YgdGhlIFRJTSBjb21wbGVtZW50YXJ5IGNoYW5uZWwuCisgICogQHBhcmFtICBodGltIFRJTSBoYW5kbGUKKyAgKiBAcGFyYW0gIENoYW5uZWxOIFRJTSBDb21wbGVtZW50YXJ5IGNoYW5uZWwKKyAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAqICAgICAgICAgICAgQGFyZyBUSU1fQ0hBTk5FTF8xOiBUSU0gQ2hhbm5lbCAxCisgICogICAgICAgICAgICBAYXJnIFRJTV9DSEFOTkVMXzI6IFRJTSBDaGFubmVsIDIKKyAgKiAgICAgICAgICAgIEBhcmcgVElNX0NIQU5ORUxfMzogVElNIENoYW5uZWwgMworICAqIEByZXR2YWwgVElNIENvbXBsZW1lbnRhcnkgY2hhbm5lbCBzdGF0ZQorICAqLworSEFMX1RJTV9DaGFubmVsU3RhdGVUeXBlRGVmIEhBTF9USU1FeF9HZXRDaGFubmVsTlN0YXRlKFRJTV9IYW5kbGVUeXBlRGVmICpodGltLCAgdWludDMyX3QgQ2hhbm5lbE4pCit7CisgIEhBTF9USU1fQ2hhbm5lbFN0YXRlVHlwZURlZiBjaGFubmVsX3N0YXRlOworCisgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCisgIGFzc2VydF9wYXJhbShJU19USU1fQ0NYTl9JTlNUQU5DRShodGltLT5JbnN0YW5jZSwgQ2hhbm5lbE4pKTsKKworICBjaGFubmVsX3N0YXRlID0gVElNX0NIQU5ORUxfTl9TVEFURV9HRVQoaHRpbSwgQ2hhbm5lbE4pOworCisgIHJldHVybiBjaGFubmVsX3N0YXRlOworfQorLyoqCiAgICogQH0KICAgKi8KIApAQCAtMjExNSw2ICsyNDExLDEwMyBAQAogCiAKIC8qKgorICAqIEBicmllZiAgVElNIERNQSBEZWxheSBQdWxzZSBjb21wbGV0ZSBjYWxsYmFjayAoY29tcGxlbWVudGFyeSBjaGFubmVsKS4KKyAgKiBAcGFyYW0gIGhkbWEgcG9pbnRlciB0byBETUEgaGFuZGxlLgorICAqIEByZXR2YWwgTm9uZQorICAqLworc3RhdGljIHZvaWQgVElNX0RNQURlbGF5UHVsc2VOQ3BsdChETUFfSGFuZGxlVHlwZURlZiAqaGRtYSkKK3sKKyAgVElNX0hhbmRsZVR5cGVEZWYgKmh0aW0gPSAoVElNX0hhbmRsZVR5cGVEZWYgKikoKERNQV9IYW5kbGVUeXBlRGVmICopaGRtYSktPlBhcmVudDsKKworICBpZiAoaGRtYSA9PSBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MxXSkKKyAgeworICAgIGh0aW0tPkNoYW5uZWwgPSBIQUxfVElNX0FDVElWRV9DSEFOTkVMXzE7CisKKyAgICBpZiAoaGRtYS0+SW5pdC5Nb2RlID09IERNQV9OT1JNQUwpCisgICAgeworICAgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMSwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAoaGRtYSA9PSBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXSkKKyAgeworICAgIGh0aW0tPkNoYW5uZWwgPSBIQUxfVElNX0FDVElWRV9DSEFOTkVMXzI7CisKKyAgICBpZiAoaGRtYS0+SW5pdC5Nb2RlID09IERNQV9OT1JNQUwpCisgICAgeworICAgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAoaGRtYSA9PSBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MzXSkKKyAgeworICAgIGh0aW0tPkNoYW5uZWwgPSBIQUxfVElNX0FDVElWRV9DSEFOTkVMXzM7CisKKyAgICBpZiAoaGRtYS0+SW5pdC5Nb2RlID09IERNQV9OT1JNQUwpCisgICAgeworICAgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMywgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgICB9CisgIH0KKyAgZWxzZSBpZiAoaGRtYSA9PSBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0M0XSkKKyAgeworICAgIGh0aW0tPkNoYW5uZWwgPSBIQUxfVElNX0FDVElWRV9DSEFOTkVMXzQ7CisKKyAgICBpZiAoaGRtYS0+SW5pdC5Nb2RlID09IERNQV9OT1JNQUwpCisgICAgeworICAgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfNCwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgICB9CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogbm90aGluZyB0byBkbyAqLworICB9CisKKyNpZiAoVVNFX0hBTF9USU1fUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCisgIGh0aW0tPlBXTV9QdWxzZUZpbmlzaGVkQ2FsbGJhY2soaHRpbSk7CisjZWxzZQorICBIQUxfVElNX1BXTV9QdWxzZUZpbmlzaGVkQ2FsbGJhY2soaHRpbSk7CisjZW5kaWYgLyogVVNFX0hBTF9USU1fUkVHSVNURVJfQ0FMTEJBQ0tTICovCisKKyAgaHRpbS0+Q2hhbm5lbCA9IEhBTF9USU1fQUNUSVZFX0NIQU5ORUxfQ0xFQVJFRDsKK30KKworLyoqCisgICogQGJyaWVmICBUSU0gRE1BIGVycm9yIGNhbGxiYWNrIChjb21wbGVtZW50YXJ5IGNoYW5uZWwpCisgICogQHBhcmFtICBoZG1hIHBvaW50ZXIgdG8gRE1BIGhhbmRsZS4KKyAgKiBAcmV0dmFsIE5vbmUKKyAgKi8KK3N0YXRpYyB2b2lkIFRJTV9ETUFFcnJvckNDeE4oRE1BX0hhbmRsZVR5cGVEZWYgKmhkbWEpCit7CisgIFRJTV9IYW5kbGVUeXBlRGVmICpodGltID0gKFRJTV9IYW5kbGVUeXBlRGVmICopKChETUFfSGFuZGxlVHlwZURlZiAqKWhkbWEpLT5QYXJlbnQ7CisKKyAgaWYgKGhkbWEgPT0gaHRpbS0+aGRtYVtUSU1fRE1BX0lEX0NDMV0pCisgIHsKKyAgICBodGltLT5DaGFubmVsID0gSEFMX1RJTV9BQ1RJVkVfQ0hBTk5FTF8xOworICAgIFRJTV9DSEFOTkVMX05fU1RBVEVfU0VUKGh0aW0sIFRJTV9DSEFOTkVMXzEsIEhBTF9USU1fQ0hBTk5FTF9TVEFURV9SRUFEWSk7CisgIH0KKyAgZWxzZSBpZiAoaGRtYSA9PSBodGltLT5oZG1hW1RJTV9ETUFfSURfQ0MyXSkKKyAgeworICAgIGh0aW0tPkNoYW5uZWwgPSBIQUxfVElNX0FDVElWRV9DSEFOTkVMXzI7CisgICAgVElNX0NIQU5ORUxfTl9TVEFURV9TRVQoaHRpbSwgVElNX0NIQU5ORUxfMiwgSEFMX1RJTV9DSEFOTkVMX1NUQVRFX1JFQURZKTsKKyAgfQorICBlbHNlIGlmIChoZG1hID09IGh0aW0tPmhkbWFbVElNX0RNQV9JRF9DQzNdKQorICB7CisgICAgaHRpbS0+Q2hhbm5lbCA9IEhBTF9USU1fQUNUSVZFX0NIQU5ORUxfMzsKKyAgICBUSU1fQ0hBTk5FTF9OX1NUQVRFX1NFVChodGltLCBUSU1fQ0hBTk5FTF8zLCBIQUxfVElNX0NIQU5ORUxfU1RBVEVfUkVBRFkpOworICB9CisgIGVsc2UKKyAgeworICAgIC8qIG5vdGhpbmcgdG8gZG8gKi8KKyAgfQorCisjaWYgKFVTRV9IQUxfVElNX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQorICBodGltLT5FcnJvckNhbGxiYWNrKGh0aW0pOworI2Vsc2UKKyAgSEFMX1RJTV9FcnJvckNhbGxiYWNrKGh0aW0pOworI2VuZGlmIC8qIFVTRV9IQUxfVElNX1JFR0lTVEVSX0NBTExCQUNLUyAqLworCisgIGh0aW0tPkNoYW5uZWwgPSBIQUxfVElNX0FDVElWRV9DSEFOTkVMX0NMRUFSRUQ7Cit9CisKKy8qKgogICAqIEBicmllZiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgVElNIENhcHR1cmUgQ29tcGFyZSBDaGFubmVsIHhOLgogICAqIEBwYXJhbSAgVElNeCB0byBzZWxlY3QgdGhlIFRJTSBwZXJpcGhlcmFsCiAgICogQHBhcmFtICBDaGFubmVsIHNwZWNpZmllcyB0aGUgVElNIENoYW5uZWwKZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3RpbWViYXNlX3J0Y19hbGFybV90ZW1wbGF0ZS5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfdGltZWJhc2VfcnRjX2FsYXJtX3RlbXBsYXRlLmMKaW5kZXggNzA1NTZkMC4uNWQwNmZhNiAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfdGltZWJhc2VfcnRjX2FsYXJtX3RlbXBsYXRlLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfdGltZWJhc2VfcnRjX2FsYXJtX3RlbXBsYXRlLmMKQEAgLTYsNyArNiw3IEBACiAgICoKICAgKiAgICAgICAgICBUaGlzIGZpbGUgb3ZlcnJpZGUgdGhlIG5hdGl2ZSBIQUwgdGltZSBiYXNlIGZ1bmN0aW9ucyAoZGVmaW5lZCBhcyB3ZWFrKQogICAqICAgICAgICAgIHRvIHVzZSB0aGUgUlRDIEFMQVJNIGZvciB0aW1lIGJhc2UgZ2VuZXJhdGlvbjoKLSAgKiAgICAgICAgICAgKyBJbnRpYWxpemVzIHRoZSBSVEMgcGVyaXBoZXJhbCB0byBpbmNyZW1lbnQgdGhlIHNlY29uZHMgcmVnaXN0ZXJzIGVhY2ggMW1zCisgICogICAgICAgICAgICsgSW5pdGlhbGl6ZXMgdGhlIFJUQyBwZXJpcGhlcmFsIHRvIGluY3JlbWVudCB0aGUgc2Vjb25kcyByZWdpc3RlcnMgZWFjaCAxbXMKICAgKiAgICAgICAgICAgKyBUaGUgYWxhcm0gaXMgY29uZmlndXJlZCB0byBhc3NlcnQgYW4gaW50ZXJydXB0IHdoZW4gdGhlIFJUQyByZWFjaGVzIDFtcyAKICAgKiAgICAgICAgICAgKyBIQUxfSW5jVGljayBpcyBjYWxsZWQgYXQgZWFjaCBBbGFybSBldmVudCBhbmQgdGhlIHRpbWUgaXMgcmVzZXQgdG8gMDA6MDA6MDAKICAgKiAgICAgICAgICAgKyBIU0UgKGRlZmF1bHQpLCBMU0Ugb3IgTFNJIGNhbiBiZSBzZWxlY3RlZCBhcyBSVEMgY2xvY2sgc291cmNlICAKQEAgLTkyLDI3ICs5MiwyOCBAQAogICAqIEBwYXJhbSAgVGlja1ByaW9yaXR5IFRpY2sgaW50ZXJydXB0IHByaW9yaXR5LgogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgSEFMX0luaXRUaWNrICh1aW50MzJfdCBUaWNrUHJpb3JpdHkpCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfSW5pdFRpY2sodWludDMyX3QgVGlja1ByaW9yaXR5KQogewogICBfX0lPIHVpbnQzMl90IGNvdW50ZXIgPSAwVTsKIAogICBSQ0NfT3NjSW5pdFR5cGVEZWYgICAgICAgIFJDQ19Pc2NJbml0U3RydWN0OwogICBSQ0NfUGVyaXBoQ0xLSW5pdFR5cGVEZWYgIFBlcmlwaENsa0luaXRTdHJ1Y3Q7CisgIEhBTF9TdGF0dXNUeXBlRGVmICAgICBzdGF0dXM7CiAKICNpZmRlZiBSVENfQ0xPQ0tfU09VUkNFX0xTRQotICAvKiBDb25maWd1ZSBMU0UgYXMgUlRDIGNsb2NrIHNvdWNyZSAqLworICAvKiBDb25maWd1cmUgTFNFIGFzIFJUQyBjbG9jayBzb3VyY2UgKi8KICAgUkNDX09zY0luaXRTdHJ1Y3QuT3NjaWxsYXRvclR5cGUgPSBSQ0NfT1NDSUxMQVRPUlRZUEVfTFNFOwogICBSQ0NfT3NjSW5pdFN0cnVjdC5QTEwuUExMU3RhdGUgPSBSQ0NfUExMX05PTkU7CiAgIFJDQ19Pc2NJbml0U3RydWN0LkxTRVN0YXRlID0gUkNDX0xTRV9PTjsKICAgUGVyaXBoQ2xrSW5pdFN0cnVjdC5SVENDbG9ja1NlbGVjdGlvbiA9IFJDQ19SVENDTEtTT1VSQ0VfTFNFOwogI2VsaWYgZGVmaW5lZCAoUlRDX0NMT0NLX1NPVVJDRV9MU0kpCi0gIC8qIENvbmZpZ3VlIExTSSBhcyBSVEMgY2xvY2sgc291Y3JlICovCisgIC8qIENvbmZpZ3VyZSBMU0kgYXMgUlRDIGNsb2NrIHNvdXJjZSAqLwogICBSQ0NfT3NjSW5pdFN0cnVjdC5Pc2NpbGxhdG9yVHlwZSA9IFJDQ19PU0NJTExBVE9SVFlQRV9MU0k7CiAgIFJDQ19Pc2NJbml0U3RydWN0LlBMTC5QTExTdGF0ZSA9IFJDQ19QTExfTk9ORTsKICAgUkNDX09zY0luaXRTdHJ1Y3QuTFNJU3RhdGUgPSBSQ0NfTFNJX09OOwogICBQZXJpcGhDbGtJbml0U3RydWN0LlJUQ0Nsb2NrU2VsZWN0aW9uID0gUkNDX1JUQ0NMS1NPVVJDRV9MU0k7CiAjZWxpZiBkZWZpbmVkIChSVENfQ0xPQ0tfU09VUkNFX0hTRSkKLSAgLyogQ29uZmlndWUgSFNFIGFzIFJUQyBjbG9jayBzb3VjcmUgKi8KKyAgLyogQ29uZmlndXJlIEhTRSBhcyBSVEMgY2xvY2sgc291cmNlICovCiAgIFJDQ19Pc2NJbml0U3RydWN0Lk9zY2lsbGF0b3JUeXBlID0gUkNDX09TQ0lMTEFUT1JUWVBFX0hTRTsKICAgUkNDX09zY0luaXRTdHJ1Y3QuUExMLlBMTFN0YXRlID0gUkNDX1BMTF9OT05FOwogICBSQ0NfT3NjSW5pdFN0cnVjdC5IU0VTdGF0ZSA9IFJDQ19IU0VfT047CkBAIC0xMjIsOTIgKzEyMywxMTIgQEAKICNlcnJvciBQbGVhc2Ugc2VsZWN0IHRoZSBSVEMgQ2xvY2sgc291cmNlCiAjZW5kaWYgLyogUlRDX0NMT0NLX1NPVVJDRV9MU0UgKi8KIAotICBpZihIQUxfUkNDX09zY0NvbmZpZygmUkNDX09zY0luaXRTdHJ1Y3QpID09IEhBTF9PSykKKyAgc3RhdHVzID0gSEFMX1JDQ19Pc2NDb25maWcoJlJDQ19Pc2NJbml0U3RydWN0KTsKKyAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCiAgIHsKICAgICBQZXJpcGhDbGtJbml0U3RydWN0LlBlcmlwaENsb2NrU2VsZWN0aW9uID0gUkNDX1BFUklQSENMS19SVEM7Ci0gICAgaWYoSEFMX1JDQ0V4X1BlcmlwaENMS0NvbmZpZygmUGVyaXBoQ2xrSW5pdFN0cnVjdCkgPT0gSEFMX09LKQorICAgIHN0YXR1cyA9IEhBTF9SQ0NFeF9QZXJpcGhDTEtDb25maWcoJlBlcmlwaENsa0luaXRTdHJ1Y3QpOworICB9CisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQorICB7CisgICAgLyogRW5hYmxlIFJUQyBDbG9jayAqLworICAgIF9fSEFMX1JDQ19SVENfRU5BQkxFKCk7CisgICAgLyogVGhlIHRpbWUgYmFzZSBzaG91bGQgYmUgMW1zCisgICAgICAgVGltZSBiYXNlID0gKChSVENfQVNZTkNIX1BSRURJViArIDEpICogKFJUQ19TWU5DSF9QUkVESVYgKyAxKSkgLyBSVENfQ0xPQ0sKKyAgICAgICBIU0UgYXMgUlRDIGNsb2NrCisgICAgICAgICBUaW1lIGJhc2UgPSAoKDk5ICsgMSkgKiAoOSArIDEpKSAvIDFNSHoKKyAgICAgICAgICAgICAgICAgICA9IDFtcworICAgICAgIExTRSBhcyBSVEMgY2xvY2sKKyAgICAgICAgIFRpbWUgYmFzZSA9ICgoMzEgKyAxKSAqICgwICsgMSkpIC8gMzIuNzY4S0h6CisgICAgICAgICAgICAgICAgICAgPSB+MW1zCisgICAgICAgTFNJIGFzIFJUQyBjbG9jaworICAgICAgICAgaW1lIGJhc2UgPSAoKDMxICsgMSkgKiAoMCArIDEpKSAvIDMyS0h6CisgICAgICAgICAgICAgICAgICA9IDFtcworICAgICovCisgICAgaFJUQ19IYW5kbGUuSW5zdGFuY2UgPSBSVEM7CisgICAgaFJUQ19IYW5kbGUuSW5pdC5Ib3VyRm9ybWF0ID0gUlRDX0hPVVJGT1JNQVRfMjQ7CisgICAgaFJUQ19IYW5kbGUuSW5pdC5Bc3luY2hQcmVkaXYgPSBSVENfQVNZTkNIX1BSRURJVjsKKyAgICBoUlRDX0hhbmRsZS5Jbml0LlN5bmNoUHJlZGl2ID0gUlRDX1NZTkNIX1BSRURJVjsKKyAgICBoUlRDX0hhbmRsZS5Jbml0Lk91dFB1dCA9IFJUQ19PVVRQVVRfRElTQUJMRTsKKyAgICBoUlRDX0hhbmRsZS5Jbml0Lk91dFB1dFBvbGFyaXR5ID0gUlRDX09VVFBVVF9QT0xBUklUWV9ISUdIOworICAgIGhSVENfSGFuZGxlLkluaXQuT3V0UHV0VHlwZSA9IFJUQ19PVVRQVVRfVFlQRV9PUEVORFJBSU47CisgICAgc3RhdHVzID0gSEFMX1JUQ19Jbml0KCZoUlRDX0hhbmRsZSk7CisgIH0KKyAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCisgIHsKKyAgICAvKiBEaXNhYmxlIHRoZSB3cml0ZSBwcm90ZWN0aW9uIGZvciBSVEMgcmVnaXN0ZXJzICovCisgICAgX19IQUxfUlRDX1dSSVRFUFJPVEVDVElPTl9ESVNBQkxFKCZoUlRDX0hhbmRsZSk7CisKKyAgICAvKiBEaXNhYmxlIHRoZSBBbGFybSBBIGludGVycnVwdCAqLworICAgIF9fSEFMX1JUQ19BTEFSTUFfRElTQUJMRSgmaFJUQ19IYW5kbGUpOworCisgICAgLyogQ2xlYXIgZmxhZyBhbGFybSBBICovCisgICAgX19IQUxfUlRDX0FMQVJNX0NMRUFSX0ZMQUcoJmhSVENfSGFuZGxlLCBSVENfRkxBR19BTFJBRik7CisKKyAgICBjb3VudGVyID0gMFU7CisgICAgLyogV2FpdCB0aWxsIFJUQyBBTFJBV0YgZmxhZyBpcyBzZXQgYW5kIGlmIFRpbWUgb3V0IGlzIHJlYWNoZWQgZXhpdCAqLworICAgIHdoaWxlIChfX0hBTF9SVENfQUxBUk1fR0VUX0ZMQUcoJmhSVENfSGFuZGxlLCBSVENfRkxBR19BTFJBV0YpID09IFJFU0VUKQogICAgIHsKLSAgICAgIC8qIEVuYWJsZSBSVEMgQ2xvY2sgKi8KLSAgICAgIF9fSEFMX1JDQ19SVENfRU5BQkxFKCk7Ci0gICAgICAvKiBUaGUgdGltZSBiYXNlIHNob3VsZCBiZSAxbXMKLSAgICAgICAgIFRpbWUgYmFzZSA9ICgoUlRDX0FTWU5DSF9QUkVESVYgKyAxKSAqIChSVENfU1lOQ0hfUFJFRElWICsgMSkpIC8gUlRDX0NMT0NLIAotICAgICAgICAgSFNFIGFzIFJUQyBjbG9jayAKLSAgICAgICAgICAgVGltZSBiYXNlID0gKCg5OSArIDEpICogKDkgKyAxKSkgLyAxTUh6Ci0gICAgICAgICAgICAgICAgICAgICA9IDFtcwotICAgICAgICAgTFNFIGFzIFJUQyBjbG9jayAKLSAgICAgICAgICAgVGltZSBiYXNlID0gKCgzMSArIDEpICogKDAgKyAxKSkgLyAzMi43NjhLSHoKLSAgICAgICAgICAgICAgICAgICAgID0gfjFtcwotICAgICAgICAgTFNJIGFzIFJUQyBjbG9jayAKLSAgICAgICAgICAgVGltZSBiYXNlID0gKCgzMSArIDEpICogKDAgKyAxKSkgLyAzMktIegotICAgICAgICAgICAgICAgICAgICAgPSAxbXMKLSAgICAgICovCi0gICAgICBoUlRDX0hhbmRsZS5JbnN0YW5jZSA9IFJUQzsKLSAgICAgIGhSVENfSGFuZGxlLkluaXQuSG91ckZvcm1hdCA9IFJUQ19IT1VSRk9STUFUXzI0OwotICAgICAgaFJUQ19IYW5kbGUuSW5pdC5Bc3luY2hQcmVkaXYgPSBSVENfQVNZTkNIX1BSRURJVjsKLSAgICAgIGhSVENfSGFuZGxlLkluaXQuU3luY2hQcmVkaXYgPSBSVENfU1lOQ0hfUFJFRElWOwotICAgICAgaFJUQ19IYW5kbGUuSW5pdC5PdXRQdXQgPSBSVENfT1VUUFVUX0RJU0FCTEU7Ci0gICAgICBoUlRDX0hhbmRsZS5Jbml0Lk91dFB1dFBvbGFyaXR5ID0gUlRDX09VVFBVVF9QT0xBUklUWV9ISUdIOwotICAgICAgaFJUQ19IYW5kbGUuSW5pdC5PdXRQdXRUeXBlID0gUlRDX09VVFBVVF9UWVBFX09QRU5EUkFJTjsKLSAgICAgIEhBTF9SVENfSW5pdCgmaFJUQ19IYW5kbGUpOwotCi0gICAgICAvKiBEaXNhYmxlIHRoZSB3cml0ZSBwcm90ZWN0aW9uIGZvciBSVEMgcmVnaXN0ZXJzICovCi0gICAgICBfX0hBTF9SVENfV1JJVEVQUk9URUNUSU9OX0RJU0FCTEUoJmhSVENfSGFuZGxlKTsKLQotICAgICAgLyogRGlzYWJsZSB0aGUgQWxhcm0gQSBpbnRlcnJ1cHQgKi8KLSAgICAgIF9fSEFMX1JUQ19BTEFSTUFfRElTQUJMRSgmaFJUQ19IYW5kbGUpOwotCi0gICAgICAvKiBDbGVhciBmbGFnIGFsYXJtIEEgKi8KLSAgICAgIF9fSEFMX1JUQ19BTEFSTV9DTEVBUl9GTEFHKCZoUlRDX0hhbmRsZSwgUlRDX0ZMQUdfQUxSQUYpOwotCi0gICAgICBjb3VudGVyID0gMFU7Ci0gICAgICAvKiBXYWl0IHRpbGwgUlRDIEFMUkFXRiBmbGFnIGlzIHNldCBhbmQgaWYgVGltZSBvdXQgaXMgcmVhY2hlZCBleGl0ICovCi0gICAgICB3aGlsZShfX0hBTF9SVENfQUxBUk1fR0VUX0ZMQUcoJmhSVENfSGFuZGxlLCBSVENfRkxBR19BTFJBV0YpID09IFJFU0VUKQorICAgICAgaWYgKGNvdW50ZXIrKyA9PSAoU3lzdGVtQ29yZUNsb2NrIC8gNDhVKSkgLyogVGltZW91dCA9IH4gMXMgKi8KICAgICAgIHsKLSAgICAgICAgaWYoY291bnRlcisrID09IChTeXN0ZW1Db3JlQ2xvY2sgLzQ4VSkpIC8qIFRpbWVvdXQgPSB+IDFzICovCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwotICAgICAgICB9CisgICAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgIH0KLQotICAgICAgaFJUQ19IYW5kbGUuSW5zdGFuY2UtPkFMUk1BUiA9ICh1aW50MzJfdCkweDAxVTsKLQotICAgICAgLyogQ29uZmlndXJlIHRoZSBBbGFybSBzdGF0ZTogRW5hYmxlIEFsYXJtICovCi0gICAgICBfX0hBTF9SVENfQUxBUk1BX0VOQUJMRSgmaFJUQ19IYW5kbGUpOwotICAgICAgLyogQ29uZmlndXJlIHRoZSBBbGFybSBpbnRlcnJ1cHQgKi8KLSAgICAgIF9fSEFMX1JUQ19BTEFSTV9FTkFCTEVfSVQoJmhSVENfSGFuZGxlLCBSVENfSVRfQUxSQSk7Ci0KLSAgICAgIC8qIFJUQyBBbGFybSBJbnRlcnJ1cHQgQ29uZmlndXJhdGlvbjogRVhUSSBjb25maWd1cmF0aW9uICovCi0gICAgICBfX0hBTF9SVENfQUxBUk1fRVhUSV9FTkFCTEVfSVQoKTsKLSAgICAgIF9fSEFMX1JUQ19BTEFSTV9FWFRJX0VOQUJMRV9SSVNJTkdfRURHRSgpOwotCi0gICAgICAvKiBDaGVjayBpZiB0aGUgSW5pdGlhbGl6YXRpb24gbW9kZSBpcyBzZXQgKi8KLSAgICAgIGlmKChoUlRDX0hhbmRsZS5JbnN0YW5jZS0+SVNSICYgUlRDX0lTUl9JTklURikgPT0gKHVpbnQzMl90KVJFU0VUKQotICAgICAgewotICAgICAgICAvKiBTZXQgdGhlIEluaXRpYWxpemF0aW9uIG1vZGUgKi8KLSAgICAgICAgaFJUQ19IYW5kbGUuSW5zdGFuY2UtPklTUiA9ICh1aW50MzJfdClSVENfSU5JVF9NQVNLOwotICAgICAgICBjb3VudGVyID0gMFU7Ci0gICAgICAgIHdoaWxlKChoUlRDX0hhbmRsZS5JbnN0YW5jZS0+SVNSICYgUlRDX0lTUl9JTklURikgPT0gKHVpbnQzMl90KVJFU0VUKQotICAgICAgICB7Ci0gICAgICAgICAgaWYoY291bnRlcisrID09IChTeXN0ZW1Db3JlQ2xvY2sgLzQ4VSkpIC8qIFRpbWVvdXQgPSB+IDFzICovCi0gICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEhBTF9FUlJPUjsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGhSVENfSGFuZGxlLkluc3RhbmNlLT5EUiA9IDBVOwotICAgICAgaFJUQ19IYW5kbGUuSW5zdGFuY2UtPlRSID0gMFU7Ci0KLSAgICAgIGhSVENfSGFuZGxlLkluc3RhbmNlLT5JU1IgJj0gKHVpbnQzMl90KX5SVENfSVNSX0lOSVQ7Ci0KLSAgICAgIC8qIEVuYWJsZSB0aGUgd3JpdGUgcHJvdGVjdGlvbiBmb3IgUlRDIHJlZ2lzdGVycyAqLwotICAgICAgX19IQUxfUlRDX1dSSVRFUFJPVEVDVElPTl9FTkFCTEUoJmhSVENfSGFuZGxlKTsKLQotICAgICAgSEFMX05WSUNfU2V0UHJpb3JpdHkoUlRDX0FsYXJtX0lSUW4sIFRpY2tQcmlvcml0eSwgMFUpOwotICAgICAgSEFMX05WSUNfRW5hYmxlSVJRKFJUQ19BbGFybV9JUlFuKTsKLSAgICAgIHJldHVybiBIQUxfT0s7CiAgICAgfQogICB9Ci0gIHJldHVybiBIQUxfRVJST1I7CisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQorICB7CisgICAgaFJUQ19IYW5kbGUuSW5zdGFuY2UtPkFMUk1BUiA9ICh1aW50MzJfdCkweDAxVTsKKworICAgIC8qIENvbmZpZ3VyZSB0aGUgQWxhcm0gc3RhdGU6IEVuYWJsZSBBbGFybSAqLworICAgIF9fSEFMX1JUQ19BTEFSTUFfRU5BQkxFKCZoUlRDX0hhbmRsZSk7CisKKyAgICAvKiBDb25maWd1cmUgdGhlIEFsYXJtIGludGVycnVwdCAqLworICAgIF9fSEFMX1JUQ19BTEFSTV9FTkFCTEVfSVQoJmhSVENfSGFuZGxlLCBSVENfSVRfQUxSQSk7CisKKyAgICAvKiBSVEMgQWxhcm0gSW50ZXJydXB0IENvbmZpZ3VyYXRpb246IEVYVEkgY29uZmlndXJhdGlvbiAqLworICAgIF9fSEFMX1JUQ19BTEFSTV9FWFRJX0VOQUJMRV9JVCgpOworICAgIF9fSEFMX1JUQ19BTEFSTV9FWFRJX0VOQUJMRV9SSVNJTkdfRURHRSgpOworCisgICAgLyogQ2hlY2sgaWYgdGhlIEluaXRpYWxpemF0aW9uIG1vZGUgaXMgc2V0ICovCisgICAgaWYgKChoUlRDX0hhbmRsZS5JbnN0YW5jZS0+SVNSICYgUlRDX0lTUl9JTklURikgPT0gKHVpbnQzMl90KVJFU0VUKQorICAgIHsKKyAgICAgIC8qIFNldCB0aGUgSW5pdGlhbGl6YXRpb24gbW9kZSAqLworICAgICAgaFJUQ19IYW5kbGUuSW5zdGFuY2UtPklTUiA9ICh1aW50MzJfdClSVENfSU5JVF9NQVNLOworICAgICAgY291bnRlciA9IDBVOworICAgICAgd2hpbGUgKChoUlRDX0hhbmRsZS5JbnN0YW5jZS0+SVNSICYgUlRDX0lTUl9JTklURikgPT0gKHVpbnQzMl90KVJFU0VUKQorICAgICAgeworICAgICAgICBpZiAoY291bnRlcisrID09IChTeXN0ZW1Db3JlQ2xvY2sgLyA0OFUpKSAvKiBUaW1lb3V0ID0gfiAxcyAqLworICAgICAgICB7CisgICAgICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQorICB7CisgICAgaFJUQ19IYW5kbGUuSW5zdGFuY2UtPkRSID0gMFU7CisgICAgaFJUQ19IYW5kbGUuSW5zdGFuY2UtPlRSID0gMFU7CisKKyAgICBoUlRDX0hhbmRsZS5JbnN0YW5jZS0+SVNSICY9ICh1aW50MzJfdCl+UlRDX0lTUl9JTklUOworCisgICAgLyogRW5hYmxlIHRoZSB3cml0ZSBwcm90ZWN0aW9uIGZvciBSVEMgcmVnaXN0ZXJzICovCisgICAgX19IQUxfUlRDX1dSSVRFUFJPVEVDVElPTl9FTkFCTEUoJmhSVENfSGFuZGxlKTsKKworICAgIC8qIEVuYWJsZSB0aGUgUlRDIEFsYXJtIEludGVycnVwdCAqLworICAgIEhBTF9OVklDX0VuYWJsZUlSUShSVENfQWxhcm1fSVJRbik7CisKKyAgICAvKiBDb25maWd1cmUgdGhlIFN5c1RpY2sgSVJRIHByaW9yaXR5ICovCisgICAgaWYgKFRpY2tQcmlvcml0eSA8ICgxVUwgPDwgX19OVklDX1BSSU9fQklUUykpCisgICAgeworICAgICAgSEFMX05WSUNfU2V0UHJpb3JpdHkoUlRDX0FsYXJtX0lSUW4sIFRpY2tQcmlvcml0eSwgMFUpOworICAgICAgdXdUaWNrUHJpbyA9IFRpY2tQcmlvcml0eTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF90aW1lYmFzZV9ydGNfd2FrZXVwX3RlbXBsYXRlLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF90aW1lYmFzZV9ydGNfd2FrZXVwX3RlbXBsYXRlLmMKaW5kZXggZmUxMDkwNC4uYWY0Zjg5NiAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfdGltZWJhc2VfcnRjX3dha2V1cF90ZW1wbGF0ZS5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3RpbWViYXNlX3J0Y193YWtldXBfdGVtcGxhdGUuYwpAQCAtNiw3ICs2LDcgQEAKICAgKiAgICAKICAgKiAgICAgICAgICBUaGlzIGZpbGUgb3ZlcnJpZGVzIHRoZSBuYXRpdmUgSEFMIHRpbWUgYmFzZSBmdW5jdGlvbnMgKGRlZmluZWQgYXMgd2VhaykKICAgKiAgICAgICAgICB0byB1c2UgdGhlIFJUQyBXQUtFVVAgZm9yIHRoZSB0aW1lIGJhc2UgZ2VuZXJhdGlvbjoKLSAgKiAgICAgICAgICAgKyBJbnRpYWxpemVzIHRoZSBSVEMgcGVyaXBoZXJhbCBhbmQgY29uZmlndXJlcyB0aGUgd2FrZXVwIHRpbWVyIHRvIGJlCisgICogICAgICAgICAgICsgSW5pdGlhbGl6ZXMgdGhlIFJUQyBwZXJpcGhlcmFsIGFuZCBjb25maWd1cmVzIHRoZSB3YWtldXAgdGltZXIgdG8gYmUKICAgKiAgICAgICAgICAgICBpbmNyZW1lbnRlZCBlYWNoIDFtcwogICAqICAgICAgICAgICArIFRoZSB3YWtldXAgZmVhdHVyZSBpcyBjb25maWd1cmVkIHRvIGFzc2VydCBhbiBpbnRlcnJ1cHQgZWFjaCAxbXMgCiAgICogICAgICAgICAgICsgSEFMX0luY1RpY2sgaXMgY2FsbGVkIGluc2lkZSB0aGUgSEFMX1JUQ0V4X1dha2VVcFRpbWVyRXZlbnRDYWxsYmFjawpAQCAtMjIsNyArMjIsNyBAQAogICAgICAgIEhBTF9SVENfTU9EVUxFX0VOQUJMRUQgZGVmaW5lIGluIHN0bTMyZjd4eF9oYWxfY29uZi5oIAogCiAgICAgWy4uXQotICAgIChAKSBIQUwgUlRDIGFsYXJtIGFuZCBIQUwgUlRDIHdha2V1cCBkcml2ZXJzIGNhbsKSdCBiZSB1c2VkIHdpdGggbG93IHBvd2VyIG1vZGVzOgorICAgIChAKSBIQUwgUlRDIGFsYXJtIGFuZCBIQUwgUlRDIHdha2V1cCBkcml2ZXJzIGNhbid0IGJlIHVzZWQgd2l0aCBsb3cgcG93ZXIgbW9kZXM6CiAgICAgICAgIFRoZSB3YWtlIHVwIGNhcGFiaWxpdHkgb2YgdGhlIFJUQyBtYXkgYmUgaW50cnVzaXZlIGluIGNhc2Ugb2YgcHJpb3IgbG93IHBvd2VyIG1vZGUKICAgICAgICAgY29uZmlndXJhdGlvbiByZXF1aXJpbmcgZGlmZmVyZW50IHdha2UgdXAgc291cmNlcy4KICAgICAgICAgQXBwbGljYXRpb24vRXhhbXBsZSBiZWhhdmlvciBpcyBubyBtb3JlIGd1YXJhbnRlZWQgCkBAIC0xMDUsMjEgKzEwNSwyMiBAQAogCiAgIFJDQ19Pc2NJbml0VHlwZURlZiAgICAgICAgUkNDX09zY0luaXRTdHJ1Y3Q7CiAgIFJDQ19QZXJpcGhDTEtJbml0VHlwZURlZiAgUGVyaXBoQ2xrSW5pdFN0cnVjdDsKLQorICBIQUxfU3RhdHVzVHlwZURlZiAgICAgc3RhdHVzOworICAKICNpZmRlZiBSVENfQ0xPQ0tfU09VUkNFX0xTRQotICAvKiBDb25maWd1ZSBMU0UgYXMgUlRDIGNsb2NrIHNvdWNyZSAqLworICAvKiBDb25maWd1cmUgTFNFIGFzIFJUQyBjbG9jayBzb3VyY2UgKi8KICAgUkNDX09zY0luaXRTdHJ1Y3QuT3NjaWxsYXRvclR5cGUgPSBSQ0NfT1NDSUxMQVRPUlRZUEVfTFNFOwogICBSQ0NfT3NjSW5pdFN0cnVjdC5QTEwuUExMU3RhdGUgPSBSQ0NfUExMX05PTkU7CiAgIFJDQ19Pc2NJbml0U3RydWN0LkxTRVN0YXRlID0gUkNDX0xTRV9PTjsKICAgUGVyaXBoQ2xrSW5pdFN0cnVjdC5SVENDbG9ja1NlbGVjdGlvbiA9IFJDQ19SVENDTEtTT1VSQ0VfTFNFOwogI2VsaWYgZGVmaW5lZCAoUlRDX0NMT0NLX1NPVVJDRV9MU0kpCi0gIC8qIENvbmZpZ3VlIExTSSBhcyBSVEMgY2xvY2sgc291Y3JlICovCisgIC8qIENvbmZpZ3VyZSBMU0kgYXMgUlRDIGNsb2NrIHNvdXJjZSAqLwogICBSQ0NfT3NjSW5pdFN0cnVjdC5Pc2NpbGxhdG9yVHlwZSA9IFJDQ19PU0NJTExBVE9SVFlQRV9MU0k7CiAgIFJDQ19Pc2NJbml0U3RydWN0LlBMTC5QTExTdGF0ZSA9IFJDQ19QTExfTk9ORTsKICAgUkNDX09zY0luaXRTdHJ1Y3QuTFNJU3RhdGUgPSBSQ0NfTFNJX09OOwogICBQZXJpcGhDbGtJbml0U3RydWN0LlJUQ0Nsb2NrU2VsZWN0aW9uID0gUkNDX1JUQ0NMS1NPVVJDRV9MU0k7CiAjZWxpZiBkZWZpbmVkIChSVENfQ0xPQ0tfU09VUkNFX0hTRSkKLSAgLyogQ29uZmlndWUgSFNFIGFzIFJUQyBjbG9jayBzb3VjcmUgKi8KKyAgLyogQ29uZmlndXJlIEhTRSBhcyBSVEMgY2xvY2sgc291cmNlICovCiAgIFJDQ19Pc2NJbml0U3RydWN0Lk9zY2lsbGF0b3JUeXBlID0gUkNDX09TQ0lMTEFUT1JUWVBFX0hTRTsKICAgUkNDX09zY0luaXRTdHJ1Y3QuUExMLlBMTFN0YXRlID0gUkNDX1BMTF9OT05FOwogICBSQ0NfT3NjSW5pdFN0cnVjdC5IU0VTdGF0ZSA9IFJDQ19IU0VfT047CkBAIC0xMjksODcgKzEzMCwxMDQgQEAKICNlcnJvciBQbGVhc2Ugc2VsZWN0IHRoZSBSVEMgQ2xvY2sgc291cmNlCiAjZW5kaWYgLyogUlRDX0NMT0NLX1NPVVJDRV9MU0UgKi8KIAotICBpZihIQUxfUkNDX09zY0NvbmZpZygmUkNDX09zY0luaXRTdHJ1Y3QpID09IEhBTF9PSykKLSAgeyAKKyAgc3RhdHVzID0gSEFMX1JDQ19Pc2NDb25maWcoJlJDQ19Pc2NJbml0U3RydWN0KTsKKyAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCisgIHsKICAgICBQZXJpcGhDbGtJbml0U3RydWN0LlBlcmlwaENsb2NrU2VsZWN0aW9uID0gUkNDX1BFUklQSENMS19SVEM7Ci0gICAgaWYoSEFMX1JDQ0V4X1BlcmlwaENMS0NvbmZpZygmUGVyaXBoQ2xrSW5pdFN0cnVjdCkgPT0gSEFMX09LKQorICAgIHN0YXR1cyA9IEhBTF9SQ0NFeF9QZXJpcGhDTEtDb25maWcoJlBlcmlwaENsa0luaXRTdHJ1Y3QpOworICB9CisgIGlmIChzdGF0dXMgPT0gSEFMX09LKQorICB7CisgICAgLyogRW5hYmxlIFJUQyBDbG9jayAqLworICAgIF9fSEFMX1JDQ19SVENfRU5BQkxFKCk7CisgICAgLyogVGhlIHRpbWUgYmFzZSBzaG91bGQgYmUgMW1zCisgICAgICAgVGltZSBiYXNlID0gKChSVENfQVNZTkNIX1BSRURJViArIDEpICogKFJUQ19TWU5DSF9QUkVESVYgKyAxKSkgLyBSVENfQ0xPQ0sKKyAgICAgICBIU0UgYXMgUlRDIGNsb2NrCisgICAgICAgICBUaW1lIGJhc2UgPSAoKDk5ICsgMSkgKiAoOSArIDEpKSAvIDFNaHoKKyAgICAgICAgICAgICAgICAgICA9IDFtcworICAgICAgIExTRSBhcyBSVEMgY2xvY2sKKyAgICAgICAgIFRpbWUgYmFzZSA9ICgoMzEgKyAxKSAqICgwICsgMSkpIC8gMzIuNzY4S2h6CisgICAgICAgICAgICAgICAgICAgPSB+MW1zCisgICAgICAgTFNJIGFzIFJUQyBjbG9jaworICAgICAgICAgVGltZSBiYXNlID0gKCgzMSArIDEpICogKDAgKyAxKSkgLyAzMktoegorICAgICAgICAgICAgICAgICAgID0gMW1zCisgICAgKi8KKyAgICBoUlRDX0hhbmRsZS5JbnN0YW5jZSA9IFJUQzsKKyAgICBoUlRDX0hhbmRsZS5Jbml0LkhvdXJGb3JtYXQgPSBSVENfSE9VUkZPUk1BVF8yNDsKKyAgICBoUlRDX0hhbmRsZS5Jbml0LkFzeW5jaFByZWRpdiA9IFJUQ19BU1lOQ0hfUFJFRElWOworICAgIGhSVENfSGFuZGxlLkluaXQuU3luY2hQcmVkaXYgPSBSVENfU1lOQ0hfUFJFRElWOworICAgIGhSVENfSGFuZGxlLkluaXQuT3V0UHV0ID0gUlRDX09VVFBVVF9ESVNBQkxFOworICAgIGhSVENfSGFuZGxlLkluaXQuT3V0UHV0UG9sYXJpdHkgPSBSVENfT1VUUFVUX1BPTEFSSVRZX0hJR0g7CisgICAgaFJUQ19IYW5kbGUuSW5pdC5PdXRQdXRUeXBlID0gUlRDX09VVFBVVF9UWVBFX09QRU5EUkFJTjsKKyAgICBzdGF0dXMgPSBIQUxfUlRDX0luaXQoJmhSVENfSGFuZGxlKTsKKyAgfQorICBpZiAoc3RhdHVzID09IEhBTF9PSykKKyAgeworICAgIC8qIERpc2FibGUgdGhlIHdyaXRlIHByb3RlY3Rpb24gZm9yIFJUQyByZWdpc3RlcnMgKi8KKyAgICBfX0hBTF9SVENfV1JJVEVQUk9URUNUSU9OX0RJU0FCTEUoJmhSVENfSGFuZGxlKTsKKworICAgIC8qIERpc2FibGUgdGhlIFdha2UtdXAgVGltZXIgKi8KKyAgICBfX0hBTF9SVENfV0FLRVVQVElNRVJfRElTQUJMRSgmaFJUQ19IYW5kbGUpOworCisgICAgLyogSW4gY2FzZSBvZiBpbnRlcnJ1cHQgbW9kZSBpcyB1c2VkLCB0aGUgaW50ZXJydXB0IHNvdXJjZSBtdXN0IGRpc2FibGVkICovIAorICAgIF9fSEFMX1JUQ19XQUtFVVBUSU1FUl9ESVNBQkxFX0lUKCZoUlRDX0hhbmRsZSwgUlRDX0lUX1dVVCk7CisKKyAgICAvKiBXYWl0IHRpbGwgUlRDIFdVVFdGIGZsYWcgaXMgc2V0ICAqLworICAgIHdoaWxlIChfX0hBTF9SVENfV0FLRVVQVElNRVJfR0VUX0ZMQUcoJmhSVENfSGFuZGxlLCBSVENfRkxBR19XVVRXRikgPT0gUkVTRVQpCiAgICAgewotICAgICAgLyogRW5hYmxlIFJUQyBDbG9jayAqLwotICAgICAgX19IQUxfUkNDX1JUQ19FTkFCTEUoKTsKLSAgICAgIC8qIFRoZSB0aW1lIGJhc2Ugc2hvdWxkIGJlIDFtcyAKLSAgICAgICAgIFRpbWUgYmFzZSA9ICgoUlRDX0FTWU5DSF9QUkVESVYgKyAxKSAqIChSVENfU1lOQ0hfUFJFRElWICsgMSkpIC8gUlRDX0NMT0NLIAotICAgICAgICAgSFNFIGFzIFJUQyBjbG9jayAKLSAgICAgICAgICAgVGltZSBiYXNlID0gKCg5OSArIDEpICogKDkgKyAxKSkgLyAxTWh6Ci0gICAgICAgICAgICAgICAgICAgICA9IDFtcwotICAgICAgICAgTFNFIGFzIFJUQyBjbG9jayAKLSAgICAgICAgICAgVGltZSBiYXNlID0gKCgzMSArIDEpICogKDAgKyAxKSkgLyAzMi43NjhLaHoKLSAgICAgICAgICAgICAgICAgICAgID0gfjFtcwotICAgICAgICAgTFNJIGFzIFJUQyBjbG9jayAKLSAgICAgICAgICAgVGltZSBiYXNlID0gKCgzMSArIDEpICogKDAgKyAxKSkgLyAzMktoegotICAgICAgICAgICAgICAgICAgICAgPSAxbXMKLSAgICAgICovCi0gICAgICBoUlRDX0hhbmRsZS5JbnN0YW5jZSA9IFJUQzsKLSAgICAgIGhSVENfSGFuZGxlLkluaXQuSG91ckZvcm1hdCA9IFJUQ19IT1VSRk9STUFUXzI0OwotICAgICAgaFJUQ19IYW5kbGUuSW5pdC5Bc3luY2hQcmVkaXYgPSBSVENfQVNZTkNIX1BSRURJVjsKLSAgICAgIGhSVENfSGFuZGxlLkluaXQuU3luY2hQcmVkaXYgPSBSVENfU1lOQ0hfUFJFRElWOwotICAgICAgaFJUQ19IYW5kbGUuSW5pdC5PdXRQdXQgPSBSVENfT1VUUFVUX0RJU0FCTEU7Ci0gICAgICBoUlRDX0hhbmRsZS5Jbml0Lk91dFB1dFBvbGFyaXR5ID0gUlRDX09VVFBVVF9QT0xBUklUWV9ISUdIOwotICAgICAgaFJUQ19IYW5kbGUuSW5pdC5PdXRQdXRUeXBlID0gUlRDX09VVFBVVF9UWVBFX09QRU5EUkFJTjsKLSAgICAgIEhBTF9SVENfSW5pdCgmaFJUQ19IYW5kbGUpOwotCi0gICAgICAvKiBEaXNhYmxlIHRoZSB3cml0ZSBwcm90ZWN0aW9uIGZvciBSVEMgcmVnaXN0ZXJzICovCi0gICAgICBfX0hBTF9SVENfV1JJVEVQUk9URUNUSU9OX0RJU0FCTEUoJmhSVENfSGFuZGxlKTsKLQotICAgICAgLyogRGlzYWJsZSB0aGUgV2FrZS11cCBUaW1lciAqLwotICAgICAgX19IQUxfUlRDX1dBS0VVUFRJTUVSX0RJU0FCTEUoJmhSVENfSGFuZGxlKTsKLQotICAgICAgLyogSW4gY2FzZSBvZiBpbnRlcnJ1cHQgbW9kZSBpcyB1c2VkLCB0aGUgaW50ZXJydXB0IHNvdXJjZSBtdXN0IGRpc2FibGVkICovIAotICAgICAgX19IQUxfUlRDX1dBS0VVUFRJTUVSX0RJU0FCTEVfSVQoJmhSVENfSGFuZGxlLFJUQ19JVF9XVVQpOwotCi0gICAgICAvKiBXYWl0IHRpbGwgUlRDIFdVVFdGIGZsYWcgaXMgc2V0ICAqLwotICAgICAgd2hpbGUoX19IQUxfUlRDX1dBS0VVUFRJTUVSX0dFVF9GTEFHKCZoUlRDX0hhbmRsZSwgUlRDX0ZMQUdfV1VUV0YpID09IFJFU0VUKQorICAgICAgaWYoY291bnRlcisrID09IChTeXN0ZW1Db3JlQ2xvY2sgLyA0OFUpKQogICAgICAgewotICAgICAgICBpZihjb3VudGVyKysgPT0gKFN5c3RlbUNvcmVDbG9jayAvNDhVKSkgCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwotICAgICAgICB9CisgICAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKICAgICAgIH0KLQotICAgICAgLyogQ2xlYXIgUFdSIHdha2UgdXAgRmxhZyAqLwotICAgICAgX19IQUxfUFdSX0NMRUFSX0ZMQUcoUFdSX0ZMQUdfV1UpOwotCi0gICAgICAvKiBDbGVhciBSVEMgV2FrZSBVcCB0aW1lciBGbGFnICovCi0gICAgICBfX0hBTF9SVENfV0FLRVVQVElNRVJfQ0xFQVJfRkxBRygmaFJUQ19IYW5kbGUsIFJUQ19GTEFHX1dVVEYpOwotCi0gICAgICAvKiBDb25maWd1cmUgdGhlIFdha2UtdXAgVGltZXIgY291bnRlciAqLwotICAgICAgaFJUQ19IYW5kbGUuSW5zdGFuY2UtPldVVFIgPSAodWludDMyX3QpMFU7Ci0KLSAgICAgIC8qIENsZWFyIHRoZSBXYWtlLXVwIFRpbWVyIGNsb2NrIHNvdXJjZSBiaXRzIGluIENSIHJlZ2lzdGVyICovCi0gICAgICBoUlRDX0hhbmRsZS5JbnN0YW5jZS0+Q1IgJj0gKHVpbnQzMl90KX5SVENfQ1JfV1VDS1NFTDsKLQotICAgICAgLyogQ29uZmlndXJlIHRoZSBjbG9jayBzb3VyY2UgKi8KLSAgICAgIGhSVENfSGFuZGxlLkluc3RhbmNlLT5DUiB8PSAodWludDMyX3QpUlRDX1dBS0VVUENMT0NLX0NLX1NQUkVfMTZCSVRTOwotCi0gICAgICAvKiBSVEMgV2FrZVVwVGltZXIgSW50ZXJydXB0IENvbmZpZ3VyYXRpb246IEVYVEkgY29uZmlndXJhdGlvbiAqLwotICAgICAgX19IQUxfUlRDX1dBS0VVUFRJTUVSX0VYVElfRU5BQkxFX0lUKCk7Ci0KLSAgICAgIF9fSEFMX1JUQ19XQUtFVVBUSU1FUl9FWFRJX0VOQUJMRV9SSVNJTkdfRURHRSgpOwotCi0gICAgICAvKiBDb25maWd1cmUgdGhlIEludGVycnVwdCBpbiB0aGUgUlRDX0NSIHJlZ2lzdGVyICovCi0gICAgICBfX0hBTF9SVENfV0FLRVVQVElNRVJfRU5BQkxFX0lUKCZoUlRDX0hhbmRsZSxSVENfSVRfV1VUKTsKLQotICAgICAgLyogRW5hYmxlIHRoZSBXYWtlLXVwIFRpbWVyICovCi0gICAgICBfX0hBTF9SVENfV0FLRVVQVElNRVJfRU5BQkxFKCZoUlRDX0hhbmRsZSk7Ci0KLSAgICAgIC8qIEVuYWJsZSB0aGUgd3JpdGUgcHJvdGVjdGlvbiBmb3IgUlRDIHJlZ2lzdGVycyAqLwotICAgICAgX19IQUxfUlRDX1dSSVRFUFJPVEVDVElPTl9FTkFCTEUoJmhSVENfSGFuZGxlKTsKLQotICAgICAgSEFMX05WSUNfU2V0UHJpb3JpdHkoUlRDX1dLVVBfSVJRbiwgVGlja1ByaW9yaXR5LCAwVSk7Ci0gICAgICBIQUxfTlZJQ19FbmFibGVJUlEoUlRDX1dLVVBfSVJRbik7IAotICAgICAgcmV0dXJuIEhBTF9PSzsKICAgICB9CiAgIH0KLSAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCisgIHsKKyAgICAvKiBDbGVhciBQV1Igd2FrZSB1cCBGbGFnICovCisgICAgX19IQUxfUFdSX0NMRUFSX0ZMQUcoUFdSX0ZMQUdfV1UpOworCisgICAgLyogQ2xlYXIgUlRDIFdha2UgVXAgdGltZXIgRmxhZyAqLworICAgIF9fSEFMX1JUQ19XQUtFVVBUSU1FUl9DTEVBUl9GTEFHKCZoUlRDX0hhbmRsZSwgUlRDX0ZMQUdfV1VURik7CisKKyAgICAvKiBDb25maWd1cmUgdGhlIFdha2UtdXAgVGltZXIgY291bnRlciAqLworICAgIGhSVENfSGFuZGxlLkluc3RhbmNlLT5XVVRSID0gKHVpbnQzMl90KTBVOworCisgICAgLyogQ2xlYXIgdGhlIFdha2UtdXAgVGltZXIgY2xvY2sgc291cmNlIGJpdHMgaW4gQ1IgcmVnaXN0ZXIgKi8KKyAgICBoUlRDX0hhbmRsZS5JbnN0YW5jZS0+Q1IgJj0gKHVpbnQzMl90KX5SVENfQ1JfV1VDS1NFTDsKKworICAgIC8qIENvbmZpZ3VyZSB0aGUgY2xvY2sgc291cmNlICovCisgICAgaFJUQ19IYW5kbGUuSW5zdGFuY2UtPkNSIHw9ICh1aW50MzJfdClSVENfV0FLRVVQQ0xPQ0tfQ0tfU1BSRV8xNkJJVFM7CisKKyAgICAvKiBSVEMgV2FrZVVwVGltZXIgSW50ZXJydXB0IENvbmZpZ3VyYXRpb246IEVYVEkgY29uZmlndXJhdGlvbiAqLworICAgIF9fSEFMX1JUQ19XQUtFVVBUSU1FUl9FWFRJX0VOQUJMRV9JVCgpOworCisgICAgX19IQUxfUlRDX1dBS0VVUFRJTUVSX0VYVElfRU5BQkxFX1JJU0lOR19FREdFKCk7CisKKyAgICAvKiBDb25maWd1cmUgdGhlIEludGVycnVwdCBpbiB0aGUgUlRDX0NSIHJlZ2lzdGVyICovCisgICAgX19IQUxfUlRDX1dBS0VVUFRJTUVSX0VOQUJMRV9JVCgmaFJUQ19IYW5kbGUsIFJUQ19JVF9XVVQpOworCisgICAgLyogRW5hYmxlIHRoZSBXYWtlLXVwIFRpbWVyICovCisgICAgX19IQUxfUlRDX1dBS0VVUFRJTUVSX0VOQUJMRSgmaFJUQ19IYW5kbGUpOworCisgICAgLyogRW5hYmxlIHRoZSB3cml0ZSBwcm90ZWN0aW9uIGZvciBSVEMgcmVnaXN0ZXJzICovCisgICAgX19IQUxfUlRDX1dSSVRFUFJPVEVDVElPTl9FTkFCTEUoJmhSVENfSGFuZGxlKTsKKworICAgIC8qIEVuYWJsZSB0aGUgUlRDIGdsb2JhbCBJbnRlcnJ1cHQgKi8KKyAgICBIQUxfTlZJQ19FbmFibGVJUlEoUlRDX1dLVVBfSVJRbik7CisKKyAgICAvKiBDb25maWd1cmUgdGhlIFN5c1RpY2sgSVJRIHByaW9yaXR5ICovCisgICAgaWYgKFRpY2tQcmlvcml0eSA8ICgxVUwgPDwgX19OVklDX1BSSU9fQklUUykpCisgICAgeworICAgICAgSEFMX05WSUNfU2V0UHJpb3JpdHkoUlRDX1dLVVBfSVJRbiwgVGlja1ByaW9yaXR5LCAwVSk7CisgICAgICB1d1RpY2tQcmlvID0gVGlja1ByaW9yaXR5OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOworICAgIH0KKyAgfQorCisgIHJldHVybiBzdGF0dXM7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfdGltZWJhc2VfdGltX3RlbXBsYXRlLmMgYi9TcmMvc3RtMzJmN3h4X2hhbF90aW1lYmFzZV90aW1fdGVtcGxhdGUuYwppbmRleCBlZDc3MjMyLi5jMjgyYmQ2IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF90aW1lYmFzZV90aW1fdGVtcGxhdGUuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF90aW1lYmFzZV90aW1fdGVtcGxhdGUuYwpAQCAtNiw3ICs2LDcgQEAKICAgKiAgICAKICAgKiAgICAgICAgICBUaGlzIGZpbGUgb3ZlcnJpZGVzIHRoZSBuYXRpdmUgSEFMIHRpbWUgYmFzZSBmdW5jdGlvbnMgKGRlZmluZWQgYXMgd2VhaykKICAgKiAgICAgICAgICB0aGUgVElNIHRpbWUgYmFzZToKLSAgKiAgICAgICAgICAgKyBJbnRpYWxpemVzIHRoZSBUSU0gcGVyaXBoZXJhbCBnZW5lcmF0ZSBhIFBlcmlvZCBlbGFwc2VkIEV2ZW50IGVhY2ggMW1zCisgICogICAgICAgICAgICsgSW5pdGlhbGl6ZXMgdGhlIFRJTSBwZXJpcGhlcmFsIGdlbmVyYXRlIGEgUGVyaW9kIGVsYXBzZWQgRXZlbnQgZWFjaCAxbXMKICAgKiAgICAgICAgICAgKyBIQUxfSW5jVGljayBpcyBjYWxsZWQgaW5zaWRlIEhBTF9USU1fUGVyaW9kRWxhcHNlZENhbGxiYWNrIGllIGVhY2ggMW1zCiAgICogCiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtNDYsNTAgKzQ2LDQ1IEBACiAvKioKICAgKiBAYnJpZWYgIFRoaXMgZnVuY3Rpb24gY29uZmlndXJlcyB0aGUgVElNNiBhcyBhIHRpbWUgYmFzZSBzb3VyY2UuIAogICAqICAgICAgICAgVGhlIHRpbWUgc291cmNlIGlzIGNvbmZpZ3VyZWQgdG8gaGF2ZSAxbXMgdGltZSBiYXNlIHdpdGggYSBkZWRpY2F0ZWQgCi0gICogICAgICAgICBUaWNrIGludGVycnVwdCBwcmlvcml0eS4gCisgICogICAgICAgICBUaWNrIGludGVycnVwdCBwcmlvcml0eS4KICAgKiBAbm90ZSAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkICBhdXRvbWF0aWNhbGx5IGF0IHRoZSBiZWdpbm5pbmcgb2YgcHJvZ3JhbSBhZnRlcgogICAqICAgICAgICAgcmVzZXQgYnkgSEFMX0luaXQoKSBvciBhdCBhbnkgdGltZSB3aGVuIGNsb2NrIGlzIGNvbmZpZ3VyZWQsIGJ5IEhBTF9SQ0NfQ2xvY2tDb25maWcoKS4gCiAgICogQHBhcmFtICBUaWNrUHJpb3JpdHkgVGljayBpbnRlcnJ1cHQgcHJpb3JpdHkuCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCi1IQUxfU3RhdHVzVHlwZURlZiBIQUxfSW5pdFRpY2sgKHVpbnQzMl90IFRpY2tQcmlvcml0eSkKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9Jbml0VGljayh1aW50MzJfdCBUaWNrUHJpb3JpdHkpCiB7CiAgIFJDQ19DbGtJbml0VHlwZURlZiAgICBjbGtjb25maWc7CiAgIHVpbnQzMl90ICAgICAgICAgICAgICB1d1RpbWNsb2NrLCB1d0FQQjFQcmVzY2FsZXIgPSAwVTsKICAgdWludDMyX3QgICAgICAgICAgICAgIHV3UHJlc2NhbGVyVmFsdWUgPSAwVTsKICAgdWludDMyX3QgICAgICAgICAgICAgIHBGTGF0ZW5jeTsKLSAgCi0gICAgLypDb25maWd1cmUgdGhlIFRJTTYgSVJRIHByaW9yaXR5ICovCi0gIEhBTF9OVklDX1NldFByaW9yaXR5KFRJTTZfREFDX0lSUW4sIFRpY2tQcmlvcml0eSAsMFUpOwotICAKLSAgLyogRW5hYmxlIHRoZSBUSU02IGdsb2JhbCBJbnRlcnJ1cHQgKi8KLSAgSEFMX05WSUNfRW5hYmxlSVJRKFRJTTZfREFDX0lSUW4pOwotICAKKyAgSEFMX1N0YXR1c1R5cGVEZWYgICAgIHN0YXR1czsKKwogICAvKiBFbmFibGUgVElNNiBjbG9jayAqLwogICBfX0hBTF9SQ0NfVElNNl9DTEtfRU5BQkxFKCk7Ci0gIAorCiAgIC8qIEdldCBjbG9jayBjb25maWd1cmF0aW9uICovCiAgIEhBTF9SQ0NfR2V0Q2xvY2tDb25maWcoJmNsa2NvbmZpZywgJnBGTGF0ZW5jeSk7Ci0gIAorCiAgIC8qIEdldCBBUEIxIHByZXNjYWxlciAqLwogICB1d0FQQjFQcmVzY2FsZXIgPSBjbGtjb25maWcuQVBCMUNMS0RpdmlkZXI7Ci0gIAorCiAgIC8qIENvbXB1dGUgVElNNiBjbG9jayAqLwotICBpZiAodXdBUEIxUHJlc2NhbGVyID09IFJDQ19IQ0xLX0RJVjEpIAorICBpZiAodXdBUEIxUHJlc2NhbGVyID09IFJDQ19IQ0xLX0RJVjEpCiAgIHsKICAgICB1d1RpbWNsb2NrID0gSEFMX1JDQ19HZXRQQ0xLMUZyZXEoKTsKICAgfQogICBlbHNlCiAgIHsKLSAgICB1d1RpbWNsb2NrID0gMipIQUxfUkNDX0dldFBDTEsxRnJlcSgpOworICAgIHV3VGltY2xvY2sgPSAyICogSEFMX1JDQ19HZXRQQ0xLMUZyZXEoKTsKICAgfQotICAKKwogICAvKiBDb21wdXRlIHRoZSBwcmVzY2FsZXIgdmFsdWUgdG8gaGF2ZSBUSU02IGNvdW50ZXIgY2xvY2sgZXF1YWwgdG8gMU1IeiAqLwogICB1d1ByZXNjYWxlclZhbHVlID0gKHVpbnQzMl90KSAoKHV3VGltY2xvY2sgLyAxMDAwMDAwVSkgLSAxVSk7Ci0gIAorCiAgIC8qIEluaXRpYWxpemUgVElNNiAqLwogICBUaW1IYW5kbGUuSW5zdGFuY2UgPSBUSU02OwotICAKKwogICAvKiBJbml0aWFsaXplIFRJTXggcGVyaXBoZXJhbCBhcyBmb2xsb3c6CiAgICsgUGVyaW9kID0gWyhUSU02Q0xLLzEwMDApIC0gMV0uIHRvIGhhdmUgYSAoMS8xMDAwKSBzIHRpbWUgYmFzZS4KICAgKyBQcmVzY2FsZXIgPSAodXdUaW1jbG9jay8xMDAwMDAwIC0gMSkgdG8gaGF2ZSBhIDFNSHogY291bnRlciBjbG9jay4KQEAgLTEwMSwxNCArOTYsMzAgQEAKICAgVGltSGFuZGxlLkluaXQuQ2xvY2tEaXZpc2lvbiA9IDA7CiAgIFRpbUhhbmRsZS5Jbml0LkNvdW50ZXJNb2RlID0gVElNX0NPVU5URVJNT0RFX1VQOwogICBUaW1IYW5kbGUuSW5pdC5BdXRvUmVsb2FkUHJlbG9hZCA9IFRJTV9BVVRPUkVMT0FEX1BSRUxPQURfRElTQUJMRTsKLSAgaWYoSEFMX1RJTV9CYXNlX0luaXQoJlRpbUhhbmRsZSkgPT0gSEFMX09LKQorICBzdGF0dXMgPSBIQUxfVElNX0Jhc2VfSW5pdCgmVGltSGFuZGxlKTsKKyAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCiAgIHsKICAgICAvKiBTdGFydCB0aGUgVElNIHRpbWUgQmFzZSBnZW5lcmF0aW9uIGluIGludGVycnVwdCBtb2RlICovCi0gICAgcmV0dXJuIEhBTF9USU1fQmFzZV9TdGFydF9JVCgmVGltSGFuZGxlKTsKKyAgICBzdGF0dXMgPSBIQUxfVElNX0Jhc2VfU3RhcnRfSVQoJlRpbUhhbmRsZSk7CisgICAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCisgICAgeworICAgICAgLyogRW5hYmxlIHRoZSBUSU02IGdsb2JhbCBJbnRlcnJ1cHQgKi8KKyAgICAgIEhBTF9OVklDX0VuYWJsZUlSUShUSU02X0RBQ19JUlFuKTsKKworICAgICAgaWYgKFRpY2tQcmlvcml0eSA8ICgxVUwgPDwgX19OVklDX1BSSU9fQklUUykpCisgICAgICB7CisgICAgICAgIC8qIEVuYWJsZSB0aGUgVElNNiBnbG9iYWwgSW50ZXJydXB0ICovCisgICAgICAgIEhBTF9OVklDX1NldFByaW9yaXR5KFRJTTZfREFDX0lSUW4sIFRpY2tQcmlvcml0eSwgMCk7CisgICAgICAgIHV3VGlja1ByaW8gPSBUaWNrUHJpb3JpdHk7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIHN0YXR1cyA9IEhBTF9FUlJPUjsKKyAgICAgIH0KKyAgICB9CiAgIH0KLSAgCiAgIC8qIFJldHVybiBmdW5jdGlvbiBzdGF0dXMgKi8KLSAgcmV0dXJuIEhBTF9FUlJPUjsKKyAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2hhbF91YXJ0LmMgYi9TcmMvc3RtMzJmN3h4X2hhbF91YXJ0LmMKaW5kZXggMGU1NTdkZS4uNTQ5OGNlNyAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9oYWxfdWFydC5jCisrKyBiL1NyYy9zdG0zMmY3eHhfaGFsX3VhcnQuYwpAQCAtMzksNyArMzksOCBAQAogICAgICAgICAgICAgKCsrKykgQ29uZmlndXJlIHRoZSBkZWNsYXJlZCBETUEgaGFuZGxlIHN0cnVjdHVyZSB3aXRoIHRoZSByZXF1aXJlZCBUeC9SeCBwYXJhbWV0ZXJzLgogICAgICAgICAgICAgKCsrKykgQ29uZmlndXJlIHRoZSBETUEgVHgvUnggY2hhbm5lbC4KICAgICAgICAgICAgICgrKyspIEFzc29jaWF0ZSB0aGUgaW5pdGlhbGl6ZWQgRE1BIGhhbmRsZSB0byB0aGUgVUFSVCBETUEgVHgvUnggaGFuZGxlLgotICAgICAgICAgICAgKCsrKykgQ29uZmlndXJlIHRoZSBwcmlvcml0eSBhbmQgZW5hYmxlIHRoZSBOVklDIGZvciB0aGUgdHJhbnNmZXIgY29tcGxldGUgaW50ZXJydXB0IG9uIHRoZSBETUEgVHgvUnggY2hhbm5lbC4KKyAgICAgICAgICAgICgrKyspIENvbmZpZ3VyZSB0aGUgcHJpb3JpdHkgYW5kIGVuYWJsZSB0aGUgTlZJQyBmb3IgdGhlIHRyYW5zZmVyIGNvbXBsZXRlCisgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHQgb24gdGhlIERNQSBUeC9SeCBjaGFubmVsLgogCiAgICAgKCMpIFByb2dyYW0gdGhlIEJhdWQgUmF0ZSwgV29yZCBMZW5ndGgsIFN0b3AgQml0LCBQYXJpdHksIEhhcmR3YXJlCiAgICAgICAgIGZsb3cgY29udHJvbCBhbmQgTW9kZSAoUmVjZWl2ZXIvVHJhbnNtaXR0ZXIpIGluIHRoZSBodWFydCBoYW5kbGUgSW5pdCBzdHJ1Y3R1cmUuCkBAIC04Niw4ICs4Nyw2IEBACiAgICAgKCspIEFib3J0VHJhbnNtaXRDcGx0Q2FsbGJhY2sgOiBBYm9ydCBUcmFuc21pdCBDb21wbGV0ZSBDYWxsYmFjay4KICAgICAoKykgQWJvcnRSZWNlaXZlQ3BsdENhbGxiYWNrICA6IEFib3J0IFJlY2VpdmUgQ29tcGxldGUgQ2FsbGJhY2suCiAgICAgKCspIFdha2V1cENhbGxiYWNrICAgICAgICAgICAgOiBXYWtldXAgQ2FsbGJhY2suCi0gICAgKCspIFJ4Rmlmb0Z1bGxDYWxsYmFjayAgICAgICAgOiBSeCBGaWZvIEZ1bGwgQ2FsbGJhY2suCi0gICAgKCspIFR4Rmlmb0VtcHR5Q2FsbGJhY2sgICAgICAgOiBUeCBGaWZvIEVtcHR5IENhbGxiYWNrLgogICAgICgrKSBNc3BJbml0Q2FsbGJhY2sgICAgICAgICAgIDogVUFSVCBNc3BJbml0LgogICAgICgrKSBNc3BEZUluaXRDYWxsYmFjayAgICAgICAgIDogVUFSVCBNc3BEZUluaXQuCiAgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUsIHRoZSBDYWxsYmFjayBJRApAQCAtMTA4LDEyICsxMDcsMTQgQEAKICAgICAoKykgQWJvcnRUcmFuc21pdENwbHRDYWxsYmFjayA6IEFib3J0IFRyYW5zbWl0IENvbXBsZXRlIENhbGxiYWNrLgogICAgICgrKSBBYm9ydFJlY2VpdmVDcGx0Q2FsbGJhY2sgIDogQWJvcnQgUmVjZWl2ZSBDb21wbGV0ZSBDYWxsYmFjay4KICAgICAoKykgV2FrZXVwQ2FsbGJhY2sgICAgICAgICAgICA6IFdha2V1cCBDYWxsYmFjay4KLSAgICAoKykgUnhGaWZvRnVsbENhbGxiYWNrICAgICAgICA6IFJ4IEZpZm8gRnVsbCBDYWxsYmFjay4KLSAgICAoKykgVHhGaWZvRW1wdHlDYWxsYmFjayAgICAgICA6IFR4IEZpZm8gRW1wdHkgQ2FsbGJhY2suCiAgICAgKCspIE1zcEluaXRDYWxsYmFjayAgICAgICAgICAgOiBVQVJUIE1zcEluaXQuCiAgICAgKCspIE1zcERlSW5pdENhbGxiYWNrICAgICAgICAgOiBVQVJUIE1zcERlSW5pdC4KIAogICAgIFsuLl0KKyAgICBGb3Igc3BlY2lmaWMgY2FsbGJhY2sgUnhFdmVudENhbGxiYWNrLCB1c2UgZGVkaWNhdGVkIHJlZ2lzdHJhdGlvbi9yZXNldCBmdW5jdGlvbnM6CisgICAgcmVzcGVjdGl2ZWx5IEByZWYgSEFMX1VBUlRfUmVnaXN0ZXJSeEV2ZW50Q2FsbGJhY2soKSAsIEByZWYgSEFMX1VBUlRfVW5SZWdpc3RlclJ4RXZlbnRDYWxsYmFjaygpLgorCisgICAgWy4uXQogICAgIEJ5IGRlZmF1bHQsIGFmdGVyIHRoZSBAcmVmIEhBTF9VQVJUX0luaXQoKSBhbmQgd2hlbiB0aGUgc3RhdGUgaXMgSEFMX1VBUlRfU1RBVEVfUkVTRVQKICAgICBhbGwgY2FsbGJhY2tzIGFyZSBzZXQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb25zOgogICAgIGV4YW1wbGVzIEByZWYgSEFMX1VBUlRfVHhDcGx0Q2FsbGJhY2soKSwgQHJlZiBIQUxfVUFSVF9SeEhhbGZDcGx0Q2FsbGJhY2soKS4KQEAgLTE3MiwxNSArMTczLDE1IEBACiAvKiogQGRlZmdyb3VwIFVBUlRfUHJpdmF0ZV9Db25zdGFudHMgVUFSVCBQcml2YXRlIENvbnN0YW50cwogICAqIEB7CiAgICovCi0jZGVmaW5lIFVTQVJUX0NSMV9GSUVMRFMgICgodWludDMyX3QpKFVTQVJUX0NSMV9NIHwgVVNBUlRfQ1IxX1BDRSB8IFVTQVJUX0NSMV9QUyB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfQ1IxX1RFIHwgVVNBUlRfQ1IxX1JFIHwgVVNBUlRfQ1IxX09WRVI4ICkpIC8qITwgVUFSVCBvciBVU0FSVCBDUjEgZmllbGRzIG9mIHBhcmFtZXRlcnMgc2V0IGJ5IFVBUlRfU2V0Q29uZmlnIEFQSSAqLworI2RlZmluZSBVU0FSVF9DUjFfRklFTERTICAoKHVpbnQzMl90KShVU0FSVF9DUjFfTSB8IFVTQVJUX0NSMV9QQ0UgfCBVU0FSVF9DUjFfUFMgfCBVU0FSVF9DUjFfVEUgfCBVU0FSVF9DUjFfUkUgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQVJUX0NSMV9PVkVSOCkpIC8qITwgVUFSVCBvciBVU0FSVCBDUjEgZmllbGRzIG9mIHBhcmFtZXRlcnMgc2V0IGJ5IFVBUlRfU2V0Q29uZmlnIEFQSSAqLwogCi0jZGVmaW5lIFVTQVJUX0NSM19GSUVMRFMgICgodWludDMyX3QpKFVTQVJUX0NSM19SVFNFIHwgVVNBUlRfQ1IzX0NUU0UgfCBVU0FSVF9DUjNfT05FQklUKSkgIC8qITwgVUFSVCBvciBVU0FSVCBDUjMgZmllbGRzIG9mIHBhcmFtZXRlcnMgc2V0IGJ5IFVBUlRfU2V0Q29uZmlnIEFQSSAqLworI2RlZmluZSBVU0FSVF9DUjNfRklFTERTICAoKHVpbnQzMl90KShVU0FSVF9DUjNfUlRTRSB8IFVTQVJUX0NSM19DVFNFIHxcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNBUlRfQ1IzX09ORUJJVCkpIC8qITwgVUFSVCBvciBVU0FSVCBDUjMgZmllbGRzIG9mIHBhcmFtZXRlcnMgc2V0IGJ5IFVBUlRfU2V0Q29uZmlnIEFQSSAqLwogCiAKICNkZWZpbmUgVUFSVF9CUlJfTUlOICAgIDB4MTBVICAgICAgICAvKiBVQVJUIEJSUiBtaW5pbXVtIGF1dGhvcml6ZWQgdmFsdWUgKi8KICNkZWZpbmUgVUFSVF9CUlJfTUFYICAgIDB4MDAwMEZGRkZVICAvKiBVQVJUIEJSUiBtYXhpbXVtIGF1dGhvcml6ZWQgdmFsdWUgKi8KLQogLyoqCiAgICogQH0KICAgKi8KQEAgLTIxMiw2ICsyMTMsNyBAQAogICAqIEB9CiAgICovCiAKKwogLyogRXhwb3J0ZWQgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogLyoqIEBkZWZncm91cCBVQVJUX0V4cG9ydGVkX0Z1bmN0aW9ucyBVQVJUIEV4cG9ydGVkIEZ1bmN0aW9ucwpAQCAtNjM1LDYgKzYzNyw3IEBACiAgIGh1YXJ0LT5FcnJvckNvZGUgPSBIQUxfVUFSVF9FUlJPUl9OT05FOwogICBodWFydC0+Z1N0YXRlID0gSEFMX1VBUlRfU1RBVEVfUkVTRVQ7CiAgIGh1YXJ0LT5SeFN0YXRlID0gSEFMX1VBUlRfU1RBVEVfUkVTRVQ7CisgIGh1YXJ0LT5SZWNlcHRpb25UeXBlID0gSEFMX1VBUlRfUkVDRVBUSU9OX1NUQU5EQVJEOwogCiAgIF9fSEFMX1VOTE9DSyhodWFydCk7CiAKQEAgLTY4Nyw4ICs2OTAsNiBAQAogICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX1VBUlRfQUJPUlRfVFJBTlNNSVRfQ09NUExFVEVfQ0JfSUQgQWJvcnQgVHJhbnNtaXQgQ29tcGxldGUgQ2FsbGJhY2sgSUQKICAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9VQVJUX0FCT1JUX1JFQ0VJVkVfQ09NUExFVEVfQ0JfSUQgQWJvcnQgUmVjZWl2ZSBDb21wbGV0ZSBDYWxsYmFjayBJRAogICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX1VBUlRfV0FLRVVQX0NCX0lEIFdha2V1cCBDYWxsYmFjayBJRAotICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX1VBUlRfUlhfRklGT19GVUxMX0NCX0lEIFJ4IEZpZm8gRnVsbCBDYWxsYmFjayBJRAotICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX1VBUlRfVFhfRklGT19FTVBUWV9DQl9JRCBUeCBGaWZvIEVtcHR5IENhbGxiYWNrIElECiAgICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfVUFSVF9NU1BJTklUX0NCX0lEIE1zcEluaXQgQ2FsbGJhY2sgSUQKICAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9VQVJUX01TUERFSU5JVF9DQl9JRCBNc3BEZUluaXQgQ2FsbGJhY2sgSUQKICAgKiBAcGFyYW0gIHBDYWxsYmFjayBwb2ludGVyIHRvIHRoZSBDYWxsYmFjayBmdW5jdGlvbgpAQCAtNzQ0LDEwICs3NDUsMTQgQEAKICAgICAgICAgaHVhcnQtPkFib3J0UmVjZWl2ZUNwbHRDYWxsYmFjayA9IHBDYWxsYmFjazsKICAgICAgICAgYnJlYWs7CiAKKyNpZiBkZWZpbmVkKFVTQVJUX0NSMV9VRVNNKQorI2lmIGRlZmluZWQoVVNBUlRfQ1IzX1dVRklFKQogICAgICAgY2FzZSBIQUxfVUFSVF9XQUtFVVBfQ0JfSUQgOgogICAgICAgICBodWFydC0+V2FrZXVwQ2FsbGJhY2sgPSBwQ2FsbGJhY2s7CiAgICAgICAgIGJyZWFrOwogCisjZW5kaWYgLyogVVNBUlRfQ1IzX1dVRklFICovCisjZW5kaWYgLyogVVNBUlRfQ1IxX1VFU00gKi8KIAogICAgICAgY2FzZSBIQUxfVUFSVF9NU1BJTklUX0NCX0lEIDoKICAgICAgICAgaHVhcnQtPk1zcEluaXRDYWxsYmFjayA9IHBDYWxsYmFjazsKQEAgLTgxMCw4ICs4MTUsNiBAQAogICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX1VBUlRfQUJPUlRfVFJBTlNNSVRfQ09NUExFVEVfQ0JfSUQgQWJvcnQgVHJhbnNtaXQgQ29tcGxldGUgQ2FsbGJhY2sgSUQKICAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9VQVJUX0FCT1JUX1JFQ0VJVkVfQ09NUExFVEVfQ0JfSUQgQWJvcnQgUmVjZWl2ZSBDb21wbGV0ZSBDYWxsYmFjayBJRAogICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX1VBUlRfV0FLRVVQX0NCX0lEIFdha2V1cCBDYWxsYmFjayBJRAotICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX1VBUlRfUlhfRklGT19GVUxMX0NCX0lEIFJ4IEZpZm8gRnVsbCBDYWxsYmFjayBJRAotICAqICAgICAgICAgICBAYXJnIEByZWYgSEFMX1VBUlRfVFhfRklGT19FTVBUWV9DQl9JRCBUeCBGaWZvIEVtcHR5IENhbGxiYWNrIElECiAgICogICAgICAgICAgIEBhcmcgQHJlZiBIQUxfVUFSVF9NU1BJTklUX0NCX0lEIE1zcEluaXQgQ2FsbGJhY2sgSUQKICAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9VQVJUX01TUERFSU5JVF9DQl9JRCBNc3BEZUluaXQgQ2FsbGJhY2sgSUQKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKQEAgLTgyNyw0OSArODMwLDUzIEBACiAgICAgc3dpdGNoIChDYWxsYmFja0lEKQogICAgIHsKICAgICAgIGNhc2UgSEFMX1VBUlRfVFhfSEFMRkNPTVBMRVRFX0NCX0lEIDoKLSAgICAgICAgaHVhcnQtPlR4SGFsZkNwbHRDYWxsYmFjayA9IEhBTF9VQVJUX1R4SGFsZkNwbHRDYWxsYmFjazsgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayAgVHhIYWxmQ3BsdENhbGxiYWNrICAgICAgICovCisgICAgICAgIGh1YXJ0LT5UeEhhbGZDcGx0Q2FsbGJhY2sgPSBIQUxfVUFSVF9UeEhhbGZDcGx0Q2FsbGJhY2s7ICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgIFR4SGFsZkNwbHRDYWxsYmFjayAgICAqLwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVUFSVF9UWF9DT01QTEVURV9DQl9JRCA6Ci0gICAgICAgIGh1YXJ0LT5UeENwbHRDYWxsYmFjayA9IEhBTF9VQVJUX1R4Q3BsdENhbGxiYWNrOyAgICAgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgVHhDcGx0Q2FsbGJhY2sgICAgICAgICAgICAqLworICAgICAgICBodWFydC0+VHhDcGx0Q2FsbGJhY2sgPSBIQUxfVUFSVF9UeENwbHRDYWxsYmFjazsgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIFR4Q3BsdENhbGxiYWNrICAgICAgICAgKi8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1VBUlRfUlhfSEFMRkNPTVBMRVRFX0NCX0lEIDoKLSAgICAgICAgaHVhcnQtPlJ4SGFsZkNwbHRDYWxsYmFjayA9IEhBTF9VQVJUX1J4SGFsZkNwbHRDYWxsYmFjazsgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBSeEhhbGZDcGx0Q2FsbGJhY2sgICAgICAgICovCisgICAgICAgIGh1YXJ0LT5SeEhhbGZDcGx0Q2FsbGJhY2sgPSBIQUxfVUFSVF9SeEhhbGZDcGx0Q2FsbGJhY2s7ICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgUnhIYWxmQ3BsdENhbGxiYWNrICAgICAqLwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVUFSVF9SWF9DT01QTEVURV9DQl9JRCA6Ci0gICAgICAgIGh1YXJ0LT5SeENwbHRDYWxsYmFjayA9IEhBTF9VQVJUX1J4Q3BsdENhbGxiYWNrOyAgICAgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgUnhDcGx0Q2FsbGJhY2sgICAgICAgICAgICAqLworICAgICAgICBodWFydC0+UnhDcGx0Q2FsbGJhY2sgPSBIQUxfVUFSVF9SeENwbHRDYWxsYmFjazsgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIFJ4Q3BsdENhbGxiYWNrICAgICAgICAgKi8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1VBUlRfRVJST1JfQ0JfSUQgOgotICAgICAgICBodWFydC0+RXJyb3JDYWxsYmFjayA9IEhBTF9VQVJUX0Vycm9yQ2FsbGJhY2s7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEVycm9yQ2FsbGJhY2sgICAgICAgICAgICAgKi8KKyAgICAgICAgaHVhcnQtPkVycm9yQ2FsbGJhY2sgPSBIQUxfVUFSVF9FcnJvckNhbGxiYWNrOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBFcnJvckNhbGxiYWNrICAgICAgICAgICovCiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9VQVJUX0FCT1JUX0NPTVBMRVRFX0NCX0lEIDoKLSAgICAgICAgaHVhcnQtPkFib3J0Q3BsdENhbGxiYWNrID0gSEFMX1VBUlRfQWJvcnRDcGx0Q2FsbGJhY2s7ICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBBYm9ydENwbHRDYWxsYmFjayAgICAgICAgICovCisgICAgICAgIGh1YXJ0LT5BYm9ydENwbHRDYWxsYmFjayA9IEhBTF9VQVJUX0Fib3J0Q3BsdENhbGxiYWNrOyAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgQWJvcnRDcGx0Q2FsbGJhY2sgICAgICAqLwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVUFSVF9BQk9SVF9UUkFOU01JVF9DT01QTEVURV9DQl9JRCA6Ci0gICAgICAgIGh1YXJ0LT5BYm9ydFRyYW5zbWl0Q3BsdENhbGxiYWNrID0gSEFMX1VBUlRfQWJvcnRUcmFuc21pdENwbHRDYWxsYmFjazsgLyogTGVnYWN5IHdlYWsgQWJvcnRUcmFuc21pdENwbHRDYWxsYmFjayAqLworICAgICAgICBodWFydC0+QWJvcnRUcmFuc21pdENwbHRDYWxsYmFjayA9IEhBTF9VQVJUX0Fib3J0VHJhbnNtaXRDcGx0Q2FsbGJhY2s7IC8qIExlZ2FjeSB3ZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWJvcnRUcmFuc21pdENwbHRDYWxsYmFjayAgICAgICAgICAqLwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVUFSVF9BQk9SVF9SRUNFSVZFX0NPTVBMRVRFX0NCX0lEIDoKLSAgICAgICAgaHVhcnQtPkFib3J0UmVjZWl2ZUNwbHRDYWxsYmFjayA9IEhBTF9VQVJUX0Fib3J0UmVjZWl2ZUNwbHRDYWxsYmFjazsgICAvKiBMZWdhY3kgd2VhayBBYm9ydFJlY2VpdmVDcGx0Q2FsbGJhY2sgICovCisgICAgICAgIGh1YXJ0LT5BYm9ydFJlY2VpdmVDcGx0Q2FsbGJhY2sgPSBIQUxfVUFSVF9BYm9ydFJlY2VpdmVDcGx0Q2FsbGJhY2s7ICAgLyogTGVnYWN5IHdlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBYm9ydFJlY2VpdmVDcGx0Q2FsbGJhY2sgICAgICAgICAgICovCiAgICAgICAgIGJyZWFrOwogCiAjaWYgZGVmaW5lZChVU0FSVF9DUjFfVUVTTSkKKyNpZiBkZWZpbmVkKFVTQVJUX0NSM19XVUZJRSkKICAgICAgIGNhc2UgSEFMX1VBUlRfV0FLRVVQX0NCX0lEIDoKLSAgICAgICAgaHVhcnQtPldha2V1cENhbGxiYWNrID0gSEFMX1VBUlRFeF9XYWtldXBDYWxsYmFjazsgICAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBXYWtldXBDYWxsYmFjayAgICAgICAgICAgICovCisgICAgICAgIGh1YXJ0LT5XYWtldXBDYWxsYmFjayA9IEhBTF9VQVJURXhfV2FrZXVwQ2FsbGJhY2s7ICAgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgV2FrZXVwQ2FsbGJhY2sgICAgICAgICAqLwogICAgICAgICBicmVhazsKIAorI2VuZGlmIC8qIFVTQVJUX0NSM19XVUZJRSAqLwogI2VuZGlmIC8qIFVTQVJUX0NSMV9VRVNNICovCiAgICAgICBjYXNlIEhBTF9VQVJUX01TUElOSVRfQ0JfSUQgOgotICAgICAgICBodWFydC0+TXNwSW5pdENhbGxiYWNrID0gSEFMX1VBUlRfTXNwSW5pdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE1zcEluaXRDYWxsYmFjayAgICAgICAgICAgKi8KKyAgICAgICAgaHVhcnQtPk1zcEluaXRDYWxsYmFjayA9IEhBTF9VQVJUX01zcEluaXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBNc3BJbml0Q2FsbGJhY2sgICAgICAgICovCiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9VQVJUX01TUERFSU5JVF9DQl9JRCA6Ci0gICAgICAgIGh1YXJ0LT5Nc3BEZUluaXRDYWxsYmFjayA9IEhBTF9VQVJUX01zcERlSW5pdDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgTXNwRGVJbml0Q2FsbGJhY2sgICAgICAgICAqLworICAgICAgICBodWFydC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfVUFSVF9Nc3BEZUluaXQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIE1zcERlSW5pdENhbGxiYWNrICAgICAgKi8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGRlZmF1bHQgOgpAQCAtOTA5LDYgKzkxNiw3NCBAQAogCiAgIHJldHVybiBzdGF0dXM7CiB9CisKKy8qKgorICAqIEBicmllZiAgUmVnaXN0ZXIgYSBVc2VyIFVBUlQgUnggRXZlbnQgQ2FsbGJhY2sKKyAgKiAgICAgICAgIFRvIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgd2VhayBwcmVkZWZpbmVkIGNhbGxiYWNrCisgICogQHBhcmFtICBodWFydCAgICAgVWFydCBoYW5kbGUKKyAgKiBAcGFyYW0gIHBDYWxsYmFjayBQb2ludGVyIHRvIHRoZSBSeCBFdmVudCBDYWxsYmFjayBmdW5jdGlvbgorICAqIEByZXR2YWwgSEFMIHN0YXR1cworICAqLworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VBUlRfUmVnaXN0ZXJSeEV2ZW50Q2FsbGJhY2soVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCwgcFVBUlRfUnhFdmVudENhbGxiYWNrVHlwZURlZiBwQ2FsbGJhY2spCit7CisgIEhBTF9TdGF0dXNUeXBlRGVmIHN0YXR1cyA9IEhBTF9PSzsKKworICBpZiAocENhbGxiYWNrID09IE5VTEwpCisgIHsKKyAgICBodWFydC0+RXJyb3JDb2RlIHw9IEhBTF9VQVJUX0VSUk9SX0lOVkFMSURfQ0FMTEJBQ0s7CisKKyAgICByZXR1cm4gSEFMX0VSUk9SOworICB9CisKKyAgLyogUHJvY2VzcyBsb2NrZWQgKi8KKyAgX19IQUxfTE9DSyhodWFydCk7CisKKyAgaWYgKGh1YXJ0LT5nU3RhdGUgPT0gSEFMX1VBUlRfU1RBVEVfUkVBRFkpCisgIHsKKyAgICBodWFydC0+UnhFdmVudENhbGxiYWNrID0gcENhbGxiYWNrOworICB9CisgIGVsc2UKKyAgeworICAgIGh1YXJ0LT5FcnJvckNvZGUgfD0gSEFMX1VBUlRfRVJST1JfSU5WQUxJRF9DQUxMQkFDSzsKKworICAgIHN0YXR1cyA9ICBIQUxfRVJST1I7CisgIH0KKworICAvKiBSZWxlYXNlIExvY2sgKi8KKyAgX19IQUxfVU5MT0NLKGh1YXJ0KTsKKworICByZXR1cm4gc3RhdHVzOworfQorCisvKioKKyAgKiBAYnJpZWYgIFVuUmVnaXN0ZXIgdGhlIFVBUlQgUnggRXZlbnQgQ2FsbGJhY2sKKyAgKiAgICAgICAgIFVBUlQgUnggRXZlbnQgQ2FsbGJhY2sgaXMgcmVkaXJlY3RlZCB0byB0aGUgd2VhayBIQUxfVUFSVEV4X1J4RXZlbnRDYWxsYmFjaygpIHByZWRlZmluZWQgY2FsbGJhY2sKKyAgKiBAcGFyYW0gIGh1YXJ0ICAgICBVYXJ0IGhhbmRsZQorICAqIEByZXR2YWwgSEFMIHN0YXR1cworICAqLworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VBUlRfVW5SZWdpc3RlclJ4RXZlbnRDYWxsYmFjayhVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0KQoreworICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXMgPSBIQUxfT0s7CisKKyAgLyogUHJvY2VzcyBsb2NrZWQgKi8KKyAgX19IQUxfTE9DSyhodWFydCk7CisKKyAgaWYgKGh1YXJ0LT5nU3RhdGUgPT0gSEFMX1VBUlRfU1RBVEVfUkVBRFkpCisgIHsKKyAgICBodWFydC0+UnhFdmVudENhbGxiYWNrID0gSEFMX1VBUlRFeF9SeEV2ZW50Q2FsbGJhY2s7IC8qIExlZ2FjeSB3ZWFrIFVBUlQgUnggRXZlbnQgQ2FsbGJhY2sgICovCisgIH0KKyAgZWxzZQorICB7CisgICAgaHVhcnQtPkVycm9yQ29kZSB8PSBIQUxfVUFSVF9FUlJPUl9JTlZBTElEX0NBTExCQUNLOworCisgICAgc3RhdHVzID0gIEhBTF9FUlJPUjsKKyAgfQorCisgIC8qIFJlbGVhc2UgTG9jayAqLworICBfX0hBTF9VTkxPQ0soaHVhcnQpOworICByZXR1cm4gc3RhdHVzOworfQorCiAjZW5kaWYgLyogVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogCiAvKioKQEAgLTk3Myw2ICsxMDQ4LDEwIEBACiAgICAgICAgICgrKSBIQUxfVUFSVF9BYm9ydENwbHRDYWxsYmFjaygpCiAgICAgICAgICgrKSBIQUxfVUFSVF9BYm9ydFRyYW5zbWl0Q3BsdENhbGxiYWNrKCkKICAgICAgICAgKCspIEhBTF9VQVJUX0Fib3J0UmVjZWl2ZUNwbHRDYWxsYmFjaygpCisKKyAgICAoIykgQSBSeCBFdmVudCBSZWNlcHRpb24gQ2FsbGJhY2sgKFJ4IGV2ZW50IG5vdGlmaWNhdGlvbikgaXMgYXZhaWxhYmxlIGZvciBOb25fQmxvY2tpbmcgbW9kZXMgb2YgZW5oYW5jZWQKKyAgICAgICAgcmVjZXB0aW9uIHNlcnZpY2VzOgorICAgICAgICAoKykgSEFMX1VBUlRFeF9SeEV2ZW50Q2FsbGJhY2soKQogI2lmIGRlZmluZWQoVVNBUlRfQ1IxX1VFU00pCiAKICAgICAoIykgV2FrZXVwIGZyb20gU3RvcCBtb2RlIENhbGxiYWNrOgpAQCAtOTgyLDEzICsxMDYxLDE2IEBACiAgICAgKCMpIEluIE5vbi1CbG9ja2luZyBtb2RlIHRyYW5zZmVycywgcG9zc2libGUgZXJyb3JzIGFyZSBzcGxpdCBpbnRvIDIgY2F0ZWdvcmllcy4KICAgICAgICAgRXJyb3JzIGFyZSBoYW5kbGVkIGFzIGZvbGxvd3MgOgogICAgICAgICgrKSBFcnJvciBpcyBjb25zaWRlcmVkIGFzIFJlY292ZXJhYmxlIGFuZCBub24gYmxvY2tpbmcgOiBUcmFuc2ZlciBjb3VsZCBnbyB0aWxsIGVuZCwgYnV0IGVycm9yIHNldmVyaXR5IGlzCi0gICAgICAgICAgIHRvIGJlIGV2YWx1YXRlZCBieSB1c2VyIDogdGhpcyBjb25jZXJucyBGcmFtZSBFcnJvciwgUGFyaXR5IEVycm9yIG9yIE5vaXNlIEVycm9yIGluIEludGVycnVwdCBtb2RlIHJlY2VwdGlvbiAuCi0gICAgICAgICAgIFJlY2VpdmVkIGNoYXJhY3RlciBpcyB0aGVuIHJldHJpZXZlZCBhbmQgc3RvcmVkIGluIFJ4IGJ1ZmZlciwgRXJyb3IgY29kZSBpcyBzZXQgdG8gYWxsb3cgdXNlciB0byBpZGVudGlmeSBlcnJvciB0eXBlLAotICAgICAgICAgICBhbmQgSEFMX1VBUlRfRXJyb3JDYWxsYmFjaygpIHVzZXIgY2FsbGJhY2sgaXMgZXhlY3V0ZWQuIFRyYW5zZmVyIGlzIGtlcHQgb25nb2luZyBvbiBVQVJUIHNpZGUuCisgICAgICAgICAgIHRvIGJlIGV2YWx1YXRlZCBieSB1c2VyIDogdGhpcyBjb25jZXJucyBGcmFtZSBFcnJvciwgUGFyaXR5IEVycm9yIG9yIE5vaXNlIEVycm9yCisgICAgICAgICAgIGluIEludGVycnVwdCBtb2RlIHJlY2VwdGlvbiAuCisgICAgICAgICAgIFJlY2VpdmVkIGNoYXJhY3RlciBpcyB0aGVuIHJldHJpZXZlZCBhbmQgc3RvcmVkIGluIFJ4IGJ1ZmZlciwgRXJyb3IgY29kZSBpcyBzZXQgdG8gYWxsb3cgdXNlcgorICAgICAgICAgICB0byBpZGVudGlmeSBlcnJvciB0eXBlLCBhbmQgSEFMX1VBUlRfRXJyb3JDYWxsYmFjaygpIHVzZXIgY2FsbGJhY2sgaXMgZXhlY3V0ZWQuCisgICAgICAgICAgIFRyYW5zZmVyIGlzIGtlcHQgb25nb2luZyBvbiBVQVJUIHNpZGUuCiAgICAgICAgICAgIElmIHVzZXIgd2FudHMgdG8gYWJvcnQgaXQsIEFib3J0IHNlcnZpY2VzIHNob3VsZCBiZSBjYWxsZWQgYnkgdXNlci4KICAgICAgICAoKykgRXJyb3IgaXMgY29uc2lkZXJlZCBhcyBCbG9ja2luZyA6IFRyYW5zZmVyIGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQgcHJvcGVybHkgYW5kIGlzIGFib3J0ZWQuCiAgICAgICAgICAgIFRoaXMgY29uY2VybnMgT3ZlcnJ1biBFcnJvciBJbiBJbnRlcnJ1cHQgbW9kZSByZWNlcHRpb24gYW5kIGFsbCBlcnJvcnMgaW4gRE1BIG1vZGUuCi0gICAgICAgICAgIEVycm9yIGNvZGUgaXMgc2V0IHRvIGFsbG93IHVzZXIgdG8gaWRlbnRpZnkgZXJyb3IgdHlwZSwgYW5kIEhBTF9VQVJUX0Vycm9yQ2FsbGJhY2soKSB1c2VyIGNhbGxiYWNrIGlzIGV4ZWN1dGVkLgorICAgICAgICAgICBFcnJvciBjb2RlIGlzIHNldCB0byBhbGxvdyB1c2VyIHRvIGlkZW50aWZ5IGVycm9yIHR5cGUsIGFuZCBIQUxfVUFSVF9FcnJvckNhbGxiYWNrKCkKKyAgICAgICAgICAgdXNlciBjYWxsYmFjayBpcyBleGVjdXRlZC4KIAogICAgIC1ALSBJbiB0aGUgSGFsZiBkdXBsZXggY29tbXVuaWNhdGlvbiwgaXQgaXMgZm9yYmlkZGVuIHRvIHJ1biB0aGUgdHJhbnNtaXQKICAgICAgICAgYW5kIHJlY2VpdmUgcHJvY2VzcyBpbiBwYXJhbGxlbCwgdGhlIFVBUlQgc3RhdGUgSEFMX1VBUlRfU1RBVEVfQlVTWV9UWF9SWCBjYW4ndCBiZSB1c2VmdWwuCkBAIC0xMDI3LDcgKzExMDksNyBAQAogICAgIGh1YXJ0LT5FcnJvckNvZGUgPSBIQUxfVUFSVF9FUlJPUl9OT05FOwogICAgIGh1YXJ0LT5nU3RhdGUgPSBIQUxfVUFSVF9TVEFURV9CVVNZX1RYOwogCi0gICAgLyogSW5pdCB0aWNrc3RhcnQgZm9yIHRpbWVvdXQgbWFuYWdtZW50Ki8KKyAgICAvKiBJbml0IHRpY2tzdGFydCBmb3IgdGltZW91dCBtYW5hZ2VtZW50ICovCiAgICAgdGlja3N0YXJ0ID0gSEFMX0dldFRpY2soKTsKIAogICAgIGh1YXJ0LT5UeFhmZXJTaXplICA9IFNpemU7CkBAIC0xMTEyLDggKzExOTQsOSBAQAogCiAgICAgaHVhcnQtPkVycm9yQ29kZSA9IEhBTF9VQVJUX0VSUk9SX05PTkU7CiAgICAgaHVhcnQtPlJ4U3RhdGUgPSBIQUxfVUFSVF9TVEFURV9CVVNZX1JYOworICAgIGh1YXJ0LT5SZWNlcHRpb25UeXBlID0gSEFMX1VBUlRfUkVDRVBUSU9OX1NUQU5EQVJEOwogCi0gICAgLyogSW5pdCB0aWNrc3RhcnQgZm9yIHRpbWVvdXQgbWFuYWdtZW50Ki8KKyAgICAvKiBJbml0IHRpY2tzdGFydCBmb3IgdGltZW91dCBtYW5hZ2VtZW50ICovCiAgICAgdGlja3N0YXJ0ID0gSEFMX0dldFRpY2soKTsKIAogICAgIGh1YXJ0LT5SeFhmZXJTaXplICA9IFNpemU7CkBAIC0xMjQzLDM2ICsxMzI2LDE3IEBACiAKICAgICBfX0hBTF9MT0NLKGh1YXJ0KTsKIAotICAgIGh1YXJ0LT5wUnhCdWZmUHRyICA9IHBEYXRhOwotICAgIGh1YXJ0LT5SeFhmZXJTaXplICA9IFNpemU7Ci0gICAgaHVhcnQtPlJ4WGZlckNvdW50ID0gU2l6ZTsKLSAgICBodWFydC0+UnhJU1IgICAgICAgPSBOVUxMOworICAgIC8qIFNldCBSZWNlcHRpb24gdHlwZSB0byBTdGFuZGFyZCByZWNlcHRpb24gKi8KKyAgICBodWFydC0+UmVjZXB0aW9uVHlwZSA9IEhBTF9VQVJUX1JFQ0VQVElPTl9TVEFOREFSRDsKIAotICAgIC8qIENvbXB1dGF0aW9uIG9mIFVBUlQgbWFzayB0byBhcHBseSB0byBSRFIgcmVnaXN0ZXIgKi8KLSAgICBVQVJUX01BU0tfQ09NUFVUQVRJT04oaHVhcnQpOwotCi0gICAgaHVhcnQtPkVycm9yQ29kZSA9IEhBTF9VQVJUX0VSUk9SX05PTkU7Ci0gICAgaHVhcnQtPlJ4U3RhdGUgPSBIQUxfVUFSVF9TVEFURV9CVVNZX1JYOwotCi0gICAgLyogRW5hYmxlIHRoZSBVQVJUIEVycm9yIEludGVycnVwdDogKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikgKi8KLSAgICBTRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKLQotICAgIC8qIFNldCB0aGUgUnggSVNSIGZ1bmN0aW9uIHBvaW50ZXIgYWNjb3JkaW5nIHRvIHRoZSBkYXRhIHdvcmQgbGVuZ3RoICovCi0gICAgaWYgKChodWFydC0+SW5pdC5Xb3JkTGVuZ3RoID09IFVBUlRfV09SRExFTkdUSF85QikgJiYgKGh1YXJ0LT5Jbml0LlBhcml0eSA9PSBVQVJUX1BBUklUWV9OT05FKSkKKyAgICAvKiBDaGVjayB0aGF0IFVTQVJUIFJUT0VOIGJpdCBpcyBzZXQgKi8KKyAgICBpZiAoUkVBRF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjIsIFVTQVJUX0NSMl9SVE9FTikgIT0gMFUpCiAgICAgewotICAgICAgaHVhcnQtPlJ4SVNSID0gVUFSVF9SeElTUl8xNkJJVDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGh1YXJ0LT5SeElTUiA9IFVBUlRfUnhJU1JfOEJJVDsKKyAgICAgIC8qIEVuYWJsZSB0aGUgVUFSVCBSZWNlaXZlciBUaW1lb3V0IEludGVycnVwdCAqLworICAgICAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1JUT0lFKTsKICAgICB9CiAKLSAgICBfX0hBTF9VTkxPQ0soaHVhcnQpOwotCi0gICAgLyogRW5hYmxlIHRoZSBVQVJUIFBhcml0eSBFcnJvciBpbnRlcnJ1cHQgYW5kIERhdGEgUmVnaXN0ZXIgTm90IEVtcHR5IGludGVycnVwdCAqLwotICAgIFNFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9QRUlFIHwgVVNBUlRfQ1IxX1JYTkVJRSk7Ci0KLSAgICByZXR1cm4gSEFMX09LOworICAgIHJldHVybiAoVUFSVF9TdGFydF9SZWNlaXZlX0lUKGh1YXJ0LCBwRGF0YSwgU2l6ZSkpOwogICB9CiAgIGVsc2UKICAgewpAQCAtMTM3OCw1MyArMTQ0MiwxNyBAQAogCiAgICAgX19IQUxfTE9DSyhodWFydCk7CiAKLSAgICBodWFydC0+cFJ4QnVmZlB0ciA9IHBEYXRhOwotICAgIGh1YXJ0LT5SeFhmZXJTaXplID0gU2l6ZTsKKyAgICAvKiBTZXQgUmVjZXB0aW9uIHR5cGUgdG8gU3RhbmRhcmQgcmVjZXB0aW9uICovCisgICAgaHVhcnQtPlJlY2VwdGlvblR5cGUgPSBIQUxfVUFSVF9SRUNFUFRJT05fU1RBTkRBUkQ7CiAKLSAgICBodWFydC0+RXJyb3JDb2RlID0gSEFMX1VBUlRfRVJST1JfTk9ORTsKLSAgICBodWFydC0+UnhTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX0JVU1lfUlg7Ci0KLSAgICBpZiAoaHVhcnQtPmhkbWFyeCAhPSBOVUxMKQorICAgIC8qIENoZWNrIHRoYXQgVVNBUlQgUlRPRU4gYml0IGlzIHNldCAqLworICAgIGlmIChSRUFEX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMiwgVVNBUlRfQ1IyX1JUT0VOKSAhPSAwVSkKICAgICB7Ci0gICAgICAvKiBTZXQgdGhlIFVBUlQgRE1BIHRyYW5zZmVyIGNvbXBsZXRlIGNhbGxiYWNrICovCi0gICAgICBodWFydC0+aGRtYXJ4LT5YZmVyQ3BsdENhbGxiYWNrID0gVUFSVF9ETUFSZWNlaXZlQ3BsdDsKLQotICAgICAgLyogU2V0IHRoZSBVQVJUIERNQSBIYWxmIHRyYW5zZmVyIGNvbXBsZXRlIGNhbGxiYWNrICovCi0gICAgICBodWFydC0+aGRtYXJ4LT5YZmVySGFsZkNwbHRDYWxsYmFjayA9IFVBUlRfRE1BUnhIYWxmQ3BsdDsKLQotICAgICAgLyogU2V0IHRoZSBETUEgZXJyb3IgY2FsbGJhY2sgKi8KLSAgICAgIGh1YXJ0LT5oZG1hcngtPlhmZXJFcnJvckNhbGxiYWNrID0gVUFSVF9ETUFFcnJvcjsKLQotICAgICAgLyogU2V0IHRoZSBETUEgYWJvcnQgY2FsbGJhY2sgKi8KLSAgICAgIGh1YXJ0LT5oZG1hcngtPlhmZXJBYm9ydENhbGxiYWNrID0gTlVMTDsKLQotICAgICAgLyogRW5hYmxlIHRoZSBETUEgY2hhbm5lbCAqLwotICAgICAgaWYgKEhBTF9ETUFfU3RhcnRfSVQoaHVhcnQtPmhkbWFyeCwgKHVpbnQzMl90KSZodWFydC0+SW5zdGFuY2UtPlJEUiwgKHVpbnQzMl90KWh1YXJ0LT5wUnhCdWZmUHRyLCBTaXplKSAhPSBIQUxfT0spCi0gICAgICB7Ci0gICAgICAgIC8qIFNldCBlcnJvciBjb2RlIHRvIERNQSAqLwotICAgICAgICBodWFydC0+RXJyb3JDb2RlID0gSEFMX1VBUlRfRVJST1JfRE1BOwotCi0gICAgICAgIF9fSEFMX1VOTE9DSyhodWFydCk7Ci0KLSAgICAgICAgLyogUmVzdG9yZSBodWFydC0+Z1N0YXRlIHRvIHJlYWR5ICovCi0gICAgICAgIGh1YXJ0LT5nU3RhdGUgPSBIQUxfVUFSVF9TVEFURV9SRUFEWTsKLQotICAgICAgICByZXR1cm4gSEFMX0VSUk9SOwotICAgICAgfQorICAgICAgLyogRW5hYmxlIHRoZSBVQVJUIFJlY2VpdmVyIFRpbWVvdXQgSW50ZXJydXB0ICovCisgICAgICBTRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUlRPSUUpOwogICAgIH0KLSAgICBfX0hBTF9VTkxPQ0soaHVhcnQpOwogCi0gICAgLyogRW5hYmxlIHRoZSBVQVJUIFBhcml0eSBFcnJvciBJbnRlcnJ1cHQgKi8KLSAgICBTRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUEVJRSk7Ci0KLSAgICAvKiBFbmFibGUgdGhlIFVBUlQgRXJyb3IgSW50ZXJydXB0OiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKSAqLwotICAgIFNFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOwotCi0gICAgLyogRW5hYmxlIHRoZSBETUEgdHJhbnNmZXIgZm9yIHRoZSByZWNlaXZlciByZXF1ZXN0IGJ5IHNldHRpbmcgdGhlIERNQVIgYml0Ci0gICAgaW4gdGhlIFVBUlQgQ1IzIHJlZ2lzdGVyICovCi0gICAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVIpOwotCi0gICAgcmV0dXJuIEhBTF9PSzsKKyAgICByZXR1cm4gKFVBUlRfU3RhcnRfUmVjZWl2ZV9ETUEoaHVhcnQsIHBEYXRhLCBTaXplKSk7CiAgIH0KICAgZWxzZQogICB7CkBAIC0xNDg1LDcgKzE1MTMsNyBAQAogICAgIC8qIENsZWFyIHRoZSBPdmVycnVuIGZsYWcgYmVmb3JlIHJlc3VtaW5nIHRoZSBSeCB0cmFuc2ZlciAqLwogICAgIF9fSEFMX1VBUlRfQ0xFQVJfRkxBRyhodWFydCwgVUFSVF9DTEVBUl9PUkVGKTsKIAotICAgIC8qIFJlZW5hYmxlIFBFIGFuZCBFUlIgKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikgaW50ZXJydXB0cyAqLworICAgIC8qIFJlLWVuYWJsZSBQRSBhbmQgRVJSIChGcmFtZSBlcnJvciwgbm9pc2UgZXJyb3IsIG92ZXJydW4gZXJyb3IpIGludGVycnVwdHMgKi8KICAgICBTRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUEVJRSk7CiAgICAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CiAKQEAgLTE1ODQsNiArMTYxMiwxMiBAQAogICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfUlhORUlFIHwgVVNBUlRfQ1IxX1BFSUUgfCBVU0FSVF9DUjFfVFhFSUUgfCBVU0FSVF9DUjFfVENJRSkpOwogICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOwogCisgIC8qIElmIFJlY2VwdGlvbiB0aWxsIElETEUgZXZlbnQgd2FzIG9uZ29pbmcsIGRpc2FibGUgSURMRUlFIGludGVycnVwdCAqLworICBpZiAoaHVhcnQtPlJlY2VwdGlvblR5cGUgPT0gSEFMX1VBUlRfUkVDRVBUSU9OX1RPSURMRSkKKyAgeworICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgKFVTQVJUX0NSMV9JRExFSUUpKTsKKyAgfQorCiAgIC8qIERpc2FibGUgdGhlIFVBUlQgRE1BIFR4IHJlcXVlc3QgaWYgZW5hYmxlZCAqLwogICBpZiAoSEFMX0lTX0JJVF9TRVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFUKSkKICAgewpAQCAtMTY0OCw2ICsxNjgyLDcgQEAKICAgLyogUmVzdG9yZSBodWFydC0+Z1N0YXRlIGFuZCBodWFydC0+UnhTdGF0ZSB0byBSZWFkeSAqLwogICBodWFydC0+Z1N0YXRlICA9IEhBTF9VQVJUX1NUQVRFX1JFQURZOwogICBodWFydC0+UnhTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX1JFQURZOworICBodWFydC0+UmVjZXB0aW9uVHlwZSA9IEhBTF9VQVJUX1JFQ0VQVElPTl9TVEFOREFSRDsKIAogICBodWFydC0+RXJyb3JDb2RlID0gSEFMX1VBUlRfRVJST1JfTk9ORTsKIApAQCAtMTcyNCw2ICsxNzU5LDEyIEBACiAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgKFVTQVJUX0NSMV9SWE5FSUUgfCBVU0FSVF9DUjFfUEVJRSkpOwogICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOwogCisgIC8qIElmIFJlY2VwdGlvbiB0aWxsIElETEUgZXZlbnQgd2FzIG9uZ29pbmcsIGRpc2FibGUgSURMRUlFIGludGVycnVwdCAqLworICBpZiAoaHVhcnQtPlJlY2VwdGlvblR5cGUgPT0gSEFMX1VBUlRfUkVDRVBUSU9OX1RPSURMRSkKKyAgeworICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgKFVTQVJUX0NSMV9JRExFSUUpKTsKKyAgfQorCiAgIC8qIERpc2FibGUgdGhlIFVBUlQgRE1BIFJ4IHJlcXVlc3QgaWYgZW5hYmxlZCAqLwogICBpZiAoSEFMX0lTX0JJVF9TRVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFSKSkKICAgewpAQCAtMTc2MCw2ICsxODAxLDcgQEAKIAogICAvKiBSZXN0b3JlIGh1YXJ0LT5SeFN0YXRlIHRvIFJlYWR5ICovCiAgIGh1YXJ0LT5SeFN0YXRlID0gSEFMX1VBUlRfU1RBVEVfUkVBRFk7CisgIGh1YXJ0LT5SZWNlcHRpb25UeXBlID0gSEFMX1VBUlRfUkVDRVBUSU9OX1NUQU5EQVJEOwogCiAgIHJldHVybiBIQUxfT0s7CiB9CkBAIC0xNzg2LDYgKzE4MjgsMTIgQEAKICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1JYTkVJRSB8IFVTQVJUX0NSMV9QRUlFIHwgVVNBUlRfQ1IxX1RYRUlFIHwgVVNBUlRfQ1IxX1RDSUUpKTsKICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKIAorICAvKiBJZiBSZWNlcHRpb24gdGlsbCBJRExFIGV2ZW50IHdhcyBvbmdvaW5nLCBkaXNhYmxlIElETEVJRSBpbnRlcnJ1cHQgKi8KKyAgaWYgKGh1YXJ0LT5SZWNlcHRpb25UeXBlID09IEhBTF9VQVJUX1JFQ0VQVElPTl9UT0lETEUpCisgIHsKKyAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfSURMRUlFKSk7CisgIH0KKwogICAvKiBJZiBETUEgVHggYW5kL29yIERNQSBSeCBIYW5kbGVzIGFyZSBhc3NvY2lhdGVkIHRvIFVBUlQgSGFuZGxlLCBETUEgQWJvcnQgY29tcGxldGUgY2FsbGJhY2tzIHNob3VsZCBiZSBpbml0aWFsaXNlZAogICAgICBiZWZvcmUgYW55IGNhbGwgdG8gRE1BIEFib3J0IGZ1bmN0aW9ucyAqLwogICAvKiBETUEgVHggSGFuZGxlIGlzIHZhbGlkICovCkBAIC0xODg5LDYgKzE5MzcsNyBAQAogICAgIC8qIFJlc3RvcmUgaHVhcnQtPmdTdGF0ZSBhbmQgaHVhcnQtPlJ4U3RhdGUgdG8gUmVhZHkgKi8KICAgICBodWFydC0+Z1N0YXRlICA9IEhBTF9VQVJUX1NUQVRFX1JFQURZOwogICAgIGh1YXJ0LT5SeFN0YXRlID0gSEFMX1VBUlRfU1RBVEVfUkVBRFk7CisgICAgaHVhcnQtPlJlY2VwdGlvblR5cGUgPSBIQUxfVUFSVF9SRUNFUFRJT05fU1RBTkRBUkQ7CiAKICAgICAvKiBBcyBubyBETUEgdG8gYmUgYWJvcnRlZCwgY2FsbCBkaXJlY3RseSB1c2VyIEFib3J0IGNvbXBsZXRlIGNhbGxiYWNrICovCiAjaWYgKFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKQEAgLTIwMDcsNiArMjA1NiwxMiBAQAogICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfUlhORUlFIHwgVVNBUlRfQ1IxX1BFSUUpKTsKICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKIAorICAvKiBJZiBSZWNlcHRpb24gdGlsbCBJRExFIGV2ZW50IHdhcyBvbmdvaW5nLCBkaXNhYmxlIElETEVJRSBpbnRlcnJ1cHQgKi8KKyAgaWYgKGh1YXJ0LT5SZWNlcHRpb25UeXBlID09IEhBTF9VQVJUX1JFQ0VQVElPTl9UT0lETEUpCisgIHsKKyAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfSURMRUlFKSk7CisgIH0KKwogICAvKiBEaXNhYmxlIHRoZSBVQVJUIERNQSBSeCByZXF1ZXN0IGlmIGVuYWJsZWQgKi8KICAgaWYgKEhBTF9JU19CSVRfU0VUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRE1BUikpCiAgIHsKQEAgLTIwNDIsNiArMjA5Nyw3IEBACiAKICAgICAgIC8qIFJlc3RvcmUgaHVhcnQtPlJ4U3RhdGUgdG8gUmVhZHkgKi8KICAgICAgIGh1YXJ0LT5SeFN0YXRlID0gSEFMX1VBUlRfU1RBVEVfUkVBRFk7CisgICAgICBodWFydC0+UmVjZXB0aW9uVHlwZSA9IEhBTF9VQVJUX1JFQ0VQVElPTl9TVEFOREFSRDsKIAogICAgICAgLyogQXMgbm8gRE1BIHRvIGJlIGFib3J0ZWQsIGNhbGwgZGlyZWN0bHkgdXNlciBBYm9ydCBjb21wbGV0ZSBjYWxsYmFjayAqLwogI2lmIChVU0VfSEFMX1VBUlRfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCkBAIC0yMDY2LDYgKzIxMjIsNyBAQAogCiAgICAgLyogUmVzdG9yZSBodWFydC0+UnhTdGF0ZSB0byBSZWFkeSAqLwogICAgIGh1YXJ0LT5SeFN0YXRlID0gSEFMX1VBUlRfU1RBVEVfUkVBRFk7CisgICAgaHVhcnQtPlJlY2VwdGlvblR5cGUgPSBIQUxfVUFSVF9SRUNFUFRJT05fU1RBTkRBUkQ7CiAKICAgICAvKiBBcyBubyBETUEgdG8gYmUgYWJvcnRlZCwgY2FsbCBkaXJlY3RseSB1c2VyIEFib3J0IGNvbXBsZXRlIGNhbGxiYWNrICovCiAjaWYgKFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKQEAgLTIxMTMsNyArMjE3MCw3IEBACiAgIC8qIElmIHNvbWUgZXJyb3JzIG9jY3VyICovCiAgIGlmICgoZXJyb3JmbGFncyAhPSAwVSkKICAgICAgICYmICgoKGNyM2l0cyAmIFVTQVJUX0NSM19FSUUpICE9IDBVKQotICAgICAgICAgIHx8ICgoY3IxaXRzICYgKFVTQVJUX0NSMV9SWE5FSUUgfCBVU0FSVF9DUjFfUEVJRSkpICE9IDBVKSkpCisgICAgICAgICAgfHwgKChjcjFpdHMgJiAoVVNBUlRfQ1IxX1JYTkVJRSB8IFVTQVJUX0NSMV9QRUlFIHwgVVNBUlRfQ1IxX1JUT0lFKSkgIT0gMFUpKSkKICAgewogICAgIC8qIFVBUlQgcGFyaXR5IGVycm9yIGludGVycnVwdCBvY2N1cnJlZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICAgICBpZiAoKChpc3JmbGFncyAmIFVTQVJUX0lTUl9QRSkgIT0gMFUpICYmICgoY3IxaXRzICYgVVNBUlRfQ1IxX1BFSUUpICE9IDBVKSkKQEAgLTIyNDUsNyArMjMwMiw5NSBAQAogICAgIHJldHVybjsKIAogICB9IC8qIEVuZCBpZiBzb21lIGVycm9yIG9jY3VycyAqLworCisgIC8qIENoZWNrIGN1cnJlbnQgcmVjZXB0aW9uIE1vZGUgOgorICAgICBJZiBSZWNlcHRpb24gdGlsbCBJRExFIGV2ZW50IGhhcyBiZWVuIHNlbGVjdGVkIDogKi8KKyAgaWYgKChodWFydC0+UmVjZXB0aW9uVHlwZSA9PSBIQUxfVUFSVF9SRUNFUFRJT05fVE9JRExFKQorICAgICAgJiYgKChpc3JmbGFncyAmIFVTQVJUX0lTUl9JRExFKSAhPSAwVSkKKyAgICAgICYmICgoY3IxaXRzICYgVVNBUlRfSVNSX0lETEUpICE9IDBVKSkKKyAgeworICAgIF9fSEFMX1VBUlRfQ0xFQVJfRkxBRyhodWFydCwgVUFSVF9DTEVBUl9JRExFRik7CisKKyAgICAvKiBDaGVjayBpZiBETUEgbW9kZSBpcyBlbmFibGVkIGluIFVBUlQgKi8KKyAgICBpZiAoSEFMX0lTX0JJVF9TRVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19ETUFSKSkKKyAgICB7CisgICAgICAvKiBETUEgbW9kZSBlbmFibGVkICovCisgICAgICAvKiBDaGVjayByZWNlaXZlZCBsZW5ndGggOiBJZiBhbGwgZXhwZWN0ZWQgZGF0YSBhcmUgcmVjZWl2ZWQsIGRvIG5vdGhpbmcsCisgICAgICAgICAoRE1BIGNwbHQgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQpLgorICAgICAgICAgT3RoZXJ3aXNlLCBpZiBhdCBsZWFzdCBvbmUgZGF0YSBoYXMgYWxyZWFkeSBiZWVuIHJlY2VpdmVkLCBJRExFIGV2ZW50IGlzIHRvIGJlIG5vdGlmaWVkIHRvIHVzZXIgKi8KKyAgICAgIHVpbnQxNl90IG5iX3JlbWFpbmluZ19yeF9kYXRhID0gKHVpbnQxNl90KSBfX0hBTF9ETUFfR0VUX0NPVU5URVIoaHVhcnQtPmhkbWFyeCk7CisgICAgICBpZiAoKG5iX3JlbWFpbmluZ19yeF9kYXRhID4gMFUpCisgICAgICAgICAgJiYgKG5iX3JlbWFpbmluZ19yeF9kYXRhIDwgaHVhcnQtPlJ4WGZlclNpemUpKQorICAgICAgeworICAgICAgICAvKiBSZWNlcHRpb24gaXMgbm90IGNvbXBsZXRlICovCisgICAgICAgIGh1YXJ0LT5SeFhmZXJDb3VudCA9IG5iX3JlbWFpbmluZ19yeF9kYXRhOworCisgICAgICAgIC8qIEluIE5vcm1hbCBtb2RlLCBlbmQgRE1BIHhmZXIgYW5kIEhBTCBVQVJUIFJ4IHByb2Nlc3MqLworICAgICAgICBpZiAoaHVhcnQtPmhkbWFyeC0+SW5pdC5Nb2RlICE9IERNQV9DSVJDVUxBUikKKyAgICAgICAgeworICAgICAgICAgIC8qIERpc2FibGUgUEUgYW5kIEVSUiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKSBpbnRlcnJ1cHRzICovCisgICAgICAgICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUEVJRSk7CisgICAgICAgICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKKworICAgICAgICAgIC8qIERpc2FibGUgdGhlIERNQSB0cmFuc2ZlciBmb3IgdGhlIHJlY2VpdmVyIHJlcXVlc3QgYnkgcmVzZXR0aW5nIHRoZSBETUFSIGJpdAorICAgICAgICAgICAgIGluIHRoZSBVQVJUIENSMyByZWdpc3RlciAqLworICAgICAgICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVIpOworCisgICAgICAgICAgLyogQXQgZW5kIG9mIFJ4IHByb2Nlc3MsIHJlc3RvcmUgaHVhcnQtPlJ4U3RhdGUgdG8gUmVhZHkgKi8KKyAgICAgICAgICBodWFydC0+UnhTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX1JFQURZOworICAgICAgICAgIGh1YXJ0LT5SZWNlcHRpb25UeXBlID0gSEFMX1VBUlRfUkVDRVBUSU9OX1NUQU5EQVJEOworCisgICAgICAgICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfSURMRUlFKTsKKworICAgICAgICAgIC8qIExhc3QgYnl0ZXMgcmVjZWl2ZWQsIHNvIG5vIG5lZWQgYXMgdGhlIGFib3J0IGlzIGltbWVkaWF0ZSAqLworICAgICAgICAgICh2b2lkKUhBTF9ETUFfQWJvcnQoaHVhcnQtPmhkbWFyeCk7CisgICAgICAgIH0KKyNpZiAoVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQorICAgICAgICAvKkNhbGwgcmVnaXN0ZXJlZCBSeCBFdmVudCBjYWxsYmFjayovCisgICAgICAgIGh1YXJ0LT5SeEV2ZW50Q2FsbGJhY2soaHVhcnQsIChodWFydC0+UnhYZmVyU2l6ZSAtIGh1YXJ0LT5SeFhmZXJDb3VudCkpOworI2Vsc2UKKyAgICAgICAgLypDYWxsIGxlZ2FjeSB3ZWFrIFJ4IEV2ZW50IGNhbGxiYWNrKi8KKyAgICAgICAgSEFMX1VBUlRFeF9SeEV2ZW50Q2FsbGJhY2soaHVhcnQsIChodWFydC0+UnhYZmVyU2l6ZSAtIGh1YXJ0LT5SeFhmZXJDb3VudCkpOworI2VuZGlmIC8qIChVU0VfSEFMX1VBUlRfUkVHSVNURVJfQ0FMTEJBQ0tTKSAqLworICAgICAgfQorICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgLyogRE1BIG1vZGUgbm90IGVuYWJsZWQgKi8KKyAgICAgIC8qIENoZWNrIHJlY2VpdmVkIGxlbmd0aCA6IElmIGFsbCBleHBlY3RlZCBkYXRhIGFyZSByZWNlaXZlZCwgZG8gbm90aGluZy4KKyAgICAgICAgIE90aGVyd2lzZSwgaWYgYXQgbGVhc3Qgb25lIGRhdGEgaGFzIGFscmVhZHkgYmVlbiByZWNlaXZlZCwgSURMRSBldmVudCBpcyB0byBiZSBub3RpZmllZCB0byB1c2VyICovCisgICAgICB1aW50MTZfdCBuYl9yeF9kYXRhID0gaHVhcnQtPlJ4WGZlclNpemUgLSBodWFydC0+UnhYZmVyQ291bnQ7CisgICAgICBpZiAoKGh1YXJ0LT5SeFhmZXJDb3VudCA+IDBVKQorICAgICAgICAgICYmIChuYl9yeF9kYXRhID4gMFUpKQorICAgICAgeworICAgICAgICAvKiBEaXNhYmxlIHRoZSBVQVJUIFBhcml0eSBFcnJvciBJbnRlcnJ1cHQgYW5kIFJYTkUgaW50ZXJydXB0cyAqLworICAgICAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIChVU0FSVF9DUjFfUlhORUlFIHwgVVNBUlRfQ1IxX1BFSUUpKTsKKworICAgICAgICAvKiBEaXNhYmxlIHRoZSBVQVJUIEVycm9yIEludGVycnVwdDogKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikgKi8KKyAgICAgICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKKworICAgICAgICAvKiBSeCBwcm9jZXNzIGlzIGNvbXBsZXRlZCwgcmVzdG9yZSBodWFydC0+UnhTdGF0ZSB0byBSZWFkeSAqLworICAgICAgICBodWFydC0+UnhTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX1JFQURZOworICAgICAgICBodWFydC0+UmVjZXB0aW9uVHlwZSA9IEhBTF9VQVJUX1JFQ0VQVElPTl9TVEFOREFSRDsKKworICAgICAgICAvKiBDbGVhciBSeElTUiBmdW5jdGlvbiBwb2ludGVyICovCisgICAgICAgIGh1YXJ0LT5SeElTUiA9IE5VTEw7CisKKyAgICAgICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfSURMRUlFKTsKKyNpZiAoVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQorICAgICAgICAvKkNhbGwgcmVnaXN0ZXJlZCBSeCBjb21wbGV0ZSBjYWxsYmFjayovCisgICAgICAgIGh1YXJ0LT5SeEV2ZW50Q2FsbGJhY2soaHVhcnQsIG5iX3J4X2RhdGEpOworI2Vsc2UKKyAgICAgICAgLypDYWxsIGxlZ2FjeSB3ZWFrIFJ4IEV2ZW50IGNhbGxiYWNrKi8KKyAgICAgICAgSEFMX1VBUlRFeF9SeEV2ZW50Q2FsbGJhY2soaHVhcnQsIG5iX3J4X2RhdGEpOworI2VuZGlmIC8qIChVU0VfSEFMX1VBUlRfUkVHSVNURVJfQ0FMTEJBQ0tTKSAqLworICAgICAgfQorICAgICAgcmV0dXJuOworICAgIH0KKyAgfQogI2lmIGRlZmluZWQoVVNBUlRfQ1IxX1VFU00pCisjaWYgZGVmaW5lZChVU0FSVF9DUjNfV1VGSUUpCiAKICAgLyogVUFSVCB3YWtldXAgZnJvbSBTdG9wIG1vZGUgaW50ZXJydXB0IG9jY3VycmVkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgIGlmICgoKGlzcmZsYWdzICYgVVNBUlRfSVNSX1dVRikgIT0gMFUpICYmICgoY3IzaXRzICYgVVNBUlRfQ1IzX1dVRklFKSAhPSAwVSkpCkBAIC0yMjY0LDYgKzI0MDksNyBAQAogI2VuZGlmIC8qIFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KICAgICByZXR1cm47CiAgIH0KKyNlbmRpZiAvKiBVU0FSVF9DUjNfV1VGSUUgKi8KICNlbmRpZiAvKiBVU0FSVF9DUjFfVUVTTSAqLwogCiAgIC8qIFVBUlQgaW4gbW9kZSBUcmFuc21pdHRlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMjQwNiw2ICsyNTUyLDI0IEBACiAgICAqLwogfQogCisvKioKKyAgKiBAYnJpZWYgIFJlY2VwdGlvbiBFdmVudCBDYWxsYmFjayAoUnggZXZlbnQgbm90aWZpY2F0aW9uIGNhbGxlZCBhZnRlciB1c2Ugb2YgYWR2YW5jZWQgcmVjZXB0aW9uIHNlcnZpY2UpLgorICAqIEBwYXJhbSAgaHVhcnQgVUFSVCBoYW5kbGUKKyAgKiBAcGFyYW0gIFNpemUgIE51bWJlciBvZiBkYXRhIGF2YWlsYWJsZSBpbiBhcHBsaWNhdGlvbiByZWNlcHRpb24gYnVmZmVyIChpbmRpY2F0ZXMgYSBwb3NpdGlvbiBpbgorICAqICAgICAgICAgICAgICAgcmVjZXB0aW9uIGJ1ZmZlciB1bnRpbCB3aGljaCwgZGF0YSBhcmUgYXZhaWxhYmxlKQorICAqIEByZXR2YWwgTm9uZQorICAqLworX193ZWFrIHZvaWQgSEFMX1VBUlRFeF9SeEV2ZW50Q2FsbGJhY2soVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCwgdWludDE2X3QgU2l6ZSkKK3sKKyAgLyogUHJldmVudCB1bnVzZWQgYXJndW1lbnQocykgY29tcGlsYXRpb24gd2FybmluZyAqLworICBVTlVTRUQoaHVhcnQpOworICBVTlVTRUQoU2l6ZSk7CisKKyAgLyogTk9URSA6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgd2hlbiB0aGUgY2FsbGJhY2sgaXMgbmVlZGVkLAorICAgICAgICAgICAgdGhlIEhBTF9VQVJURXhfUnhFdmVudENhbGxiYWNrIGNhbiBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgdXNlciBmaWxlLgorICAgKi8KK30KKwogI2lmIGRlZmluZWQoVVNBUlRfQ1IxX1VFU00pCiAvKioKICAgKiBAYnJpZWYgVUFSVCB3YWtldXAgZnJvbSBTdG9wIG1vZGUgY2FsbGJhY2suCkBAIC0yNzI2LDggKzI4OTAsMTEgQEAKICAgaHVhcnQtPkFib3J0VHJhbnNtaXRDcGx0Q2FsbGJhY2sgPSBIQUxfVUFSVF9BYm9ydFRyYW5zbWl0Q3BsdENhbGxiYWNrOyAvKiBMZWdhY3kgd2VhayBBYm9ydFRyYW5zbWl0Q3BsdENhbGxiYWNrICovCiAgIGh1YXJ0LT5BYm9ydFJlY2VpdmVDcGx0Q2FsbGJhY2sgID0gSEFMX1VBUlRfQWJvcnRSZWNlaXZlQ3BsdENhbGxiYWNrOyAgLyogTGVnYWN5IHdlYWsgQWJvcnRSZWNlaXZlQ3BsdENhbGxiYWNrICAqLwogI2lmIGRlZmluZWQoVVNBUlRfQ1IxX1VFU00pCisjaWYgZGVmaW5lZChVU0FSVF9DUjNfV1VGSUUpCiAgIGh1YXJ0LT5XYWtldXBDYWxsYmFjayAgICAgICAgICAgID0gSEFMX1VBUlRFeF9XYWtldXBDYWxsYmFjazsgICAgICAgICAgLyogTGVnYWN5IHdlYWsgV2FrZXVwQ2FsbGJhY2sgICAgICAgICAgICAqLworI2VuZGlmIC8qIFVTQVJUX0NSM19XVUZJRSAqLwogI2VuZGlmIC8qIFVTQVJUX0NSMV9VRVNNICovCisgIGh1YXJ0LT5SeEV2ZW50Q2FsbGJhY2sgICAgICAgICAgID0gSEFMX1VBUlRFeF9SeEV2ZW50Q2FsbGJhY2s7ICAgICAgICAgLyogTGVnYWN5IHdlYWsgUnhFdmVudENhbGxiYWNrICAgICAgICAgICAqLwogCiB9CiAjZW5kaWYgLyogVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUyAqLwpAQCAtMjc0Miw3ICsyOTA5LDcgQEAKICAgdWludDMyX3QgdG1wcmVnOwogICB1aW50MTZfdCBicnJ0ZW1wOwogICBVQVJUX0Nsb2NrU291cmNlVHlwZURlZiBjbG9ja3NvdXJjZTsKLSAgdWludDMyX3QgdXNhcnRkaXYgICAgICAgICAgICAgICAgICAgPSAweDAwMDAwMDAwVTsKKyAgdWludDMyX3QgdXNhcnRkaXY7CiAgIEhBTF9TdGF0dXNUeXBlRGVmIHJldCAgICAgICAgICAgICAgID0gSEFMX09LOwogICB1aW50MzJfdCBwY2xrOwogCkBAIC0yNzkzLDM3ICsyOTYwLDM5IEBACiAgICAgewogICAgICAgY2FzZSBVQVJUX0NMT0NLU09VUkNFX1BDTEsxOgogICAgICAgICBwY2xrID0gSEFMX1JDQ19HZXRQQ0xLMUZyZXEoKTsKLSAgICAgICAgdXNhcnRkaXYgPSAodWludDE2X3QpKFVBUlRfRElWX1NBTVBMSU5HOChwY2xrLCBodWFydC0+SW5pdC5CYXVkUmF0ZSkpOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgVUFSVF9DTE9DS1NPVVJDRV9QQ0xLMjoKICAgICAgICAgcGNsayA9IEhBTF9SQ0NfR2V0UENMSzJGcmVxKCk7Ci0gICAgICAgIHVzYXJ0ZGl2ID0gKHVpbnQxNl90KShVQVJUX0RJVl9TQU1QTElORzgocGNsaywgaHVhcnQtPkluaXQuQmF1ZFJhdGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIFVBUlRfQ0xPQ0tTT1VSQ0VfSFNJOgotICAgICAgICB1c2FydGRpdiA9ICh1aW50MTZfdCkoVUFSVF9ESVZfU0FNUExJTkc4KEhTSV9WQUxVRSwgaHVhcnQtPkluaXQuQmF1ZFJhdGUpKTsKKyAgICAgICAgcGNsayA9ICh1aW50MzJfdCkgSFNJX1ZBTFVFOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgVUFSVF9DTE9DS1NPVVJDRV9TWVNDTEs6CiAgICAgICAgIHBjbGsgPSBIQUxfUkNDX0dldFN5c0Nsb2NrRnJlcSgpOwotICAgICAgICB1c2FydGRpdiA9ICh1aW50MTZfdCkoVUFSVF9ESVZfU0FNUExJTkc4KHBjbGssIGh1YXJ0LT5Jbml0LkJhdWRSYXRlKSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBVQVJUX0NMT0NLU09VUkNFX0xTRToKLSAgICAgICAgdXNhcnRkaXYgPSAodWludDE2X3QpKFVBUlRfRElWX1NBTVBMSU5HOChMU0VfVkFMVUUsIGh1YXJ0LT5Jbml0LkJhdWRSYXRlKSk7CisgICAgICAgIHBjbGsgPSAodWludDMyX3QpIExTRV9WQUxVRTsKICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OgorICAgICAgICBwY2xrID0gMFU7CiAgICAgICAgIHJldCA9IEhBTF9FUlJPUjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgLyogVVNBUlRESVYgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMGQxNiAqLwotICAgIGlmICgodXNhcnRkaXYgPj0gVUFSVF9CUlJfTUlOKSAmJiAodXNhcnRkaXYgPD0gVUFSVF9CUlJfTUFYKSkKKyAgICBpZiAocGNsayAhPSAwVSkKICAgICB7Ci0gICAgICBicnJ0ZW1wID0gKHVpbnQxNl90KSh1c2FydGRpdiAmIDB4RkZGMFUpOwotICAgICAgYnJydGVtcCB8PSAodWludDE2X3QpKCh1c2FydGRpdiAmICh1aW50MTZfdCkweDAwMEZVKSA+PiAxVSk7Ci0gICAgICBodWFydC0+SW5zdGFuY2UtPkJSUiA9IGJycnRlbXA7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICByZXQgPSBIQUxfRVJST1I7CisgICAgICB1c2FydGRpdiA9ICh1aW50MTZfdCkoVUFSVF9ESVZfU0FNUExJTkc4KHBjbGssIGh1YXJ0LT5Jbml0LkJhdWRSYXRlKSk7CisgICAgICBpZiAoKHVzYXJ0ZGl2ID49IFVBUlRfQlJSX01JTikgJiYgKHVzYXJ0ZGl2IDw9IFVBUlRfQlJSX01BWCkpCisgICAgICB7CisgICAgICAgIGJycnRlbXAgPSAodWludDE2X3QpKHVzYXJ0ZGl2ICYgMHhGRkYwVSk7CisgICAgICAgIGJycnRlbXAgfD0gKHVpbnQxNl90KSgodXNhcnRkaXYgJiAodWludDE2X3QpMHgwMDBGVSkgPj4gMVUpOworICAgICAgICBodWFydC0+SW5zdGFuY2UtPkJSUiA9IGJycnRlbXA7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIHJldCA9IEhBTF9FUlJPUjsKKyAgICAgIH0KICAgICB9CiAgIH0KICAgZWxzZQpAQCAtMjgzMiwzNSArMzAwMSwzNyBAQAogICAgIHsKICAgICAgIGNhc2UgVUFSVF9DTE9DS1NPVVJDRV9QQ0xLMToKICAgICAgICAgcGNsayA9IEhBTF9SQ0NfR2V0UENMSzFGcmVxKCk7Ci0gICAgICAgIHVzYXJ0ZGl2ID0gKHVpbnQxNl90KShVQVJUX0RJVl9TQU1QTElORzE2KHBjbGssIGh1YXJ0LT5Jbml0LkJhdWRSYXRlKSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBVQVJUX0NMT0NLU09VUkNFX1BDTEsyOgogICAgICAgICBwY2xrID0gSEFMX1JDQ19HZXRQQ0xLMkZyZXEoKTsKLSAgICAgICAgdXNhcnRkaXYgPSAodWludDE2X3QpKFVBUlRfRElWX1NBTVBMSU5HMTYocGNsaywgaHVhcnQtPkluaXQuQmF1ZFJhdGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIFVBUlRfQ0xPQ0tTT1VSQ0VfSFNJOgotICAgICAgICB1c2FydGRpdiA9ICh1aW50MTZfdCkoVUFSVF9ESVZfU0FNUExJTkcxNihIU0lfVkFMVUUsIGh1YXJ0LT5Jbml0LkJhdWRSYXRlKSk7CisgICAgICAgIHBjbGsgPSAodWludDMyX3QpIEhTSV9WQUxVRTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIFVBUlRfQ0xPQ0tTT1VSQ0VfU1lTQ0xLOgogICAgICAgICBwY2xrID0gSEFMX1JDQ19HZXRTeXNDbG9ja0ZyZXEoKTsKLSAgICAgICAgdXNhcnRkaXYgPSAodWludDE2X3QpKFVBUlRfRElWX1NBTVBMSU5HMTYocGNsaywgaHVhcnQtPkluaXQuQmF1ZFJhdGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIFVBUlRfQ0xPQ0tTT1VSQ0VfTFNFOgotICAgICAgICB1c2FydGRpdiA9ICh1aW50MTZfdCkoVUFSVF9ESVZfU0FNUExJTkcxNihMU0VfVkFMVUUsIGh1YXJ0LT5Jbml0LkJhdWRSYXRlKSk7CisgICAgICAgIHBjbGsgPSAodWludDMyX3QpIExTRV9WQUxVRTsKICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OgorICAgICAgICBwY2xrID0gMFU7CiAgICAgICAgIHJldCA9IEhBTF9FUlJPUjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgLyogVVNBUlRESVYgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMGQxNiAqLwotICAgIGlmICgodXNhcnRkaXYgPj0gVUFSVF9CUlJfTUlOKSAmJiAodXNhcnRkaXYgPD0gVUFSVF9CUlJfTUFYKSkKKyAgICBpZiAocGNsayAhPSAwVSkKICAgICB7Ci0gICAgICBodWFydC0+SW5zdGFuY2UtPkJSUiA9IHVzYXJ0ZGl2OwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgcmV0ID0gSEFMX0VSUk9SOworICAgICAgLyogVVNBUlRESVYgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMGQxNiAqLworICAgICAgdXNhcnRkaXYgPSAodWludDE2X3QpKFVBUlRfRElWX1NBTVBMSU5HMTYocGNsaywgaHVhcnQtPkluaXQuQmF1ZFJhdGUpKTsKKyAgICAgIGlmICgodXNhcnRkaXYgPj0gVUFSVF9CUlJfTUlOKSAmJiAodXNhcnRkaXYgPD0gVUFSVF9CUlJfTUFYKSkKKyAgICAgIHsKKyAgICAgICAgaHVhcnQtPkluc3RhbmNlLT5CUlIgPSB1c2FydGRpdjsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgcmV0ID0gSEFMX0VSUk9SOworICAgICAgfQogICAgIH0KICAgfQogCkBAIC0yOTU4LDcgKzMxMjksNyBAQAogICAvKiBJbml0aWFsaXplIHRoZSBVQVJUIEVycm9yQ29kZSAqLwogICBodWFydC0+RXJyb3JDb2RlID0gSEFMX1VBUlRfRVJST1JfTk9ORTsKIAotICAvKiBJbml0IHRpY2tzdGFydCBmb3IgdGltZW91dCBtYW5hZ21lbnQqLworICAvKiBJbml0IHRpY2tzdGFydCBmb3IgdGltZW91dCBtYW5hZ2VtZW50ICovCiAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CiAKICAgLyogQ2hlY2sgaWYgdGhlIFRyYW5zbWl0dGVyIGlzIGVuYWJsZWQgKi8KQEAgLTI5ODgsNiArMzE1OSw3IEBACiAgIC8qIEluaXRpYWxpemUgdGhlIFVBUlQgU3RhdGUgKi8KICAgaHVhcnQtPmdTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX1JFQURZOwogICBodWFydC0+UnhTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX1JFQURZOworICBodWFydC0+UmVjZXB0aW9uVHlwZSA9IEhBTF9VQVJUX1JFQ0VQVElPTl9TVEFOREFSRDsKIAogICBfX0hBTF9VTkxPQ0soaHVhcnQpOwogCkBAIC0zMDE0LDcgKzMxODYsOCBAQAogICAgIHsKICAgICAgIGlmICgoKEhBTF9HZXRUaWNrKCkgLSBUaWNrc3RhcnQpID4gVGltZW91dCkgfHwgKFRpbWVvdXQgPT0gMFUpKQogICAgICAgewotICAgICAgICAvKiBEaXNhYmxlIFRYRSwgUlhORSwgUEUgYW5kIEVSUiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKSBpbnRlcnJ1cHRzIGZvciB0aGUgaW50ZXJydXB0IHByb2Nlc3MgKi8KKyAgICAgICAgLyogRGlzYWJsZSBUWEUsIFJYTkUsIFBFIGFuZCBFUlIgKEZyYW1lIGVycm9yLCBub2lzZSBlcnJvciwgb3ZlcnJ1biBlcnJvcikKKyAgICAgICAgICAgaW50ZXJydXB0cyBmb3IgdGhlIGludGVycnVwdCBwcm9jZXNzICovCiAgICAgICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgKFVTQVJUX0NSMV9SWE5FSUUgfCBVU0FSVF9DUjFfUEVJRSB8IFVTQVJUX0NSMV9UWEVJRSkpOwogICAgICAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOwogCkBAIC0zMDMyLDE4ICszMjA1LDE5IEBACiAgICAgICAgIHsKICAgICAgICAgICAvKiBDbGVhciBSZWNlaXZlciBUaW1lb3V0IGZsYWcqLwogICAgICAgICAgIF9fSEFMX1VBUlRfQ0xFQVJfRkxBRyhodWFydCwgVUFSVF9DTEVBUl9SVE9GKTsKLSAgICAgICAgICAKLSAgICAgICAgICAvKiBEaXNhYmxlIFRYRSwgUlhORSwgUEUgYW5kIEVSUiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKSBpbnRlcnJ1cHRzIGZvciB0aGUgaW50ZXJydXB0IHByb2Nlc3MgKi8KKworICAgICAgICAgIC8qIERpc2FibGUgVFhFLCBSWE5FLCBQRSBhbmQgRVJSIChGcmFtZSBlcnJvciwgbm9pc2UgZXJyb3IsIG92ZXJydW4gZXJyb3IpCisgICAgICAgICAgICAgaW50ZXJydXB0cyBmb3IgdGhlIGludGVycnVwdCBwcm9jZXNzICovCiAgICAgICAgICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1JYTkVJRSB8IFVTQVJUX0NSMV9QRUlFIHwgVVNBUlRfQ1IxX1RYRUlFKSk7CiAgICAgICAgICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IzLCBVU0FSVF9DUjNfRUlFKTsKIAogICAgICAgICAgIGh1YXJ0LT5nU3RhdGUgPSBIQUxfVUFSVF9TVEFURV9SRUFEWTsKICAgICAgICAgICBodWFydC0+UnhTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX1JFQURZOwogICAgICAgICAgIGh1YXJ0LT5FcnJvckNvZGUgPSBIQUxfVUFSVF9FUlJPUl9SVE87Ci0gICAgICAgICAgCisKICAgICAgICAgICAvKiBQcm9jZXNzIFVubG9ja2VkICovCiAgICAgICAgICAgX19IQUxfVU5MT0NLKGh1YXJ0KTsKLSAgICAgICAgICAKKwogICAgICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKICAgICAgICAgfQogICAgICAgfQpAQCAtMzA1Miw2ICszMjI2LDExMiBAQAogICByZXR1cm4gSEFMX09LOwogfQogCisvKioKKyAgKiBAYnJpZWYgIFN0YXJ0IFJlY2VpdmUgb3BlcmF0aW9uIGluIGludGVycnVwdCBtb2RlLgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBjb3VsZCBiZSBjYWxsZWQgYnkgYWxsIEhBTCBVQVJUIEFQSSBwcm92aWRpbmcgcmVjZXB0aW9uIGluIEludGVycnVwdCBtb2RlLgorICAqIEBub3RlICAgV2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIHBhcmFtZXRlcnMgdmFsaWRpdHkgaXMgY29uc2lkZXJlZCBhcyBhbHJlYWR5IGNoZWNrZWQsCisgICogICAgICAgICBpLmUuIFJ4IFN0YXRlLCBidWZmZXIgYWRkcmVzcywgLi4uCisgICogICAgICAgICBVQVJUIEhhbmRsZSBpcyBhc3N1bWVkIGFzIExvY2tlZC4KKyAgKiBAcGFyYW0gIGh1YXJ0IFVBUlQgaGFuZGxlLgorICAqIEBwYXJhbSAgcERhdGEgUG9pbnRlciB0byBkYXRhIGJ1ZmZlciAodTggb3IgdTE2IGRhdGEgZWxlbWVudHMpLgorICAqIEBwYXJhbSAgU2l6ZSAgQW1vdW50IG9mIGRhdGEgZWxlbWVudHMgKHU4IG9yIHUxNikgdG8gYmUgcmVjZWl2ZWQuCisgICogQHJldHZhbCBIQUwgc3RhdHVzCisgICovCitIQUxfU3RhdHVzVHlwZURlZiBVQVJUX1N0YXJ0X1JlY2VpdmVfSVQoVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUpCit7CisgIGh1YXJ0LT5wUnhCdWZmUHRyICA9IHBEYXRhOworICBodWFydC0+UnhYZmVyU2l6ZSAgPSBTaXplOworICBodWFydC0+UnhYZmVyQ291bnQgPSBTaXplOworICBodWFydC0+UnhJU1IgICAgICAgPSBOVUxMOworCisgIC8qIENvbXB1dGF0aW9uIG9mIFVBUlQgbWFzayB0byBhcHBseSB0byBSRFIgcmVnaXN0ZXIgKi8KKyAgVUFSVF9NQVNLX0NPTVBVVEFUSU9OKGh1YXJ0KTsKKworICBodWFydC0+RXJyb3JDb2RlID0gSEFMX1VBUlRfRVJST1JfTk9ORTsKKyAgaHVhcnQtPlJ4U3RhdGUgPSBIQUxfVUFSVF9TVEFURV9CVVNZX1JYOworCisgIC8qIEVuYWJsZSB0aGUgVUFSVCBFcnJvciBJbnRlcnJ1cHQ6IChGcmFtZSBlcnJvciwgbm9pc2UgZXJyb3IsIG92ZXJydW4gZXJyb3IpICovCisgIFNFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOworCisgIC8qIFNldCB0aGUgUnggSVNSIGZ1bmN0aW9uIHBvaW50ZXIgYWNjb3JkaW5nIHRvIHRoZSBkYXRhIHdvcmQgbGVuZ3RoICovCisgIGlmICgoaHVhcnQtPkluaXQuV29yZExlbmd0aCA9PSBVQVJUX1dPUkRMRU5HVEhfOUIpICYmIChodWFydC0+SW5pdC5QYXJpdHkgPT0gVUFSVF9QQVJJVFlfTk9ORSkpCisgIHsKKyAgICBodWFydC0+UnhJU1IgPSBVQVJUX1J4SVNSXzE2QklUOworICB9CisgIGVsc2UKKyAgeworICAgIGh1YXJ0LT5SeElTUiA9IFVBUlRfUnhJU1JfOEJJVDsKKyAgfQorCisgIF9fSEFMX1VOTE9DSyhodWFydCk7CisKKyAgLyogRW5hYmxlIHRoZSBVQVJUIFBhcml0eSBFcnJvciBpbnRlcnJ1cHQgYW5kIERhdGEgUmVnaXN0ZXIgTm90IEVtcHR5IGludGVycnVwdCAqLworICBTRVRfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCBVU0FSVF9DUjFfUEVJRSB8IFVTQVJUX0NSMV9SWE5FSUUpOworICByZXR1cm4gSEFMX09LOworfQorCisvKioKKyAgKiBAYnJpZWYgIFN0YXJ0IFJlY2VpdmUgb3BlcmF0aW9uIGluIERNQSBtb2RlLgorICAqIEBub3RlICAgVGhpcyBmdW5jdGlvbiBjb3VsZCBiZSBjYWxsZWQgYnkgYWxsIEhBTCBVQVJUIEFQSSBwcm92aWRpbmcgcmVjZXB0aW9uIGluIERNQSBtb2RlLgorICAqIEBub3RlICAgV2hlbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIHBhcmFtZXRlcnMgdmFsaWRpdHkgaXMgY29uc2lkZXJlZCBhcyBhbHJlYWR5IGNoZWNrZWQsCisgICogICAgICAgICBpLmUuIFJ4IFN0YXRlLCBidWZmZXIgYWRkcmVzcywgLi4uCisgICogICAgICAgICBVQVJUIEhhbmRsZSBpcyBhc3N1bWVkIGFzIExvY2tlZC4KKyAgKiBAcGFyYW0gIGh1YXJ0IFVBUlQgaGFuZGxlLgorICAqIEBwYXJhbSAgcERhdGEgUG9pbnRlciB0byBkYXRhIGJ1ZmZlciAodTggb3IgdTE2IGRhdGEgZWxlbWVudHMpLgorICAqIEBwYXJhbSAgU2l6ZSAgQW1vdW50IG9mIGRhdGEgZWxlbWVudHMgKHU4IG9yIHUxNikgdG8gYmUgcmVjZWl2ZWQuCisgICogQHJldHZhbCBIQUwgc3RhdHVzCisgICovCitIQUxfU3RhdHVzVHlwZURlZiBVQVJUX1N0YXJ0X1JlY2VpdmVfRE1BKFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKQoreworICBodWFydC0+cFJ4QnVmZlB0ciA9IHBEYXRhOworICBodWFydC0+UnhYZmVyU2l6ZSA9IFNpemU7CisKKyAgaHVhcnQtPkVycm9yQ29kZSA9IEhBTF9VQVJUX0VSUk9SX05PTkU7CisgIGh1YXJ0LT5SeFN0YXRlID0gSEFMX1VBUlRfU1RBVEVfQlVTWV9SWDsKKworICBpZiAoaHVhcnQtPmhkbWFyeCAhPSBOVUxMKQorICB7CisgICAgLyogU2V0IHRoZSBVQVJUIERNQSB0cmFuc2ZlciBjb21wbGV0ZSBjYWxsYmFjayAqLworICAgIGh1YXJ0LT5oZG1hcngtPlhmZXJDcGx0Q2FsbGJhY2sgPSBVQVJUX0RNQVJlY2VpdmVDcGx0OworCisgICAgLyogU2V0IHRoZSBVQVJUIERNQSBIYWxmIHRyYW5zZmVyIGNvbXBsZXRlIGNhbGxiYWNrICovCisgICAgaHVhcnQtPmhkbWFyeC0+WGZlckhhbGZDcGx0Q2FsbGJhY2sgPSBVQVJUX0RNQVJ4SGFsZkNwbHQ7CisKKyAgICAvKiBTZXQgdGhlIERNQSBlcnJvciBjYWxsYmFjayAqLworICAgIGh1YXJ0LT5oZG1hcngtPlhmZXJFcnJvckNhbGxiYWNrID0gVUFSVF9ETUFFcnJvcjsKKworICAgIC8qIFNldCB0aGUgRE1BIGFib3J0IGNhbGxiYWNrICovCisgICAgaHVhcnQtPmhkbWFyeC0+WGZlckFib3J0Q2FsbGJhY2sgPSBOVUxMOworCisgICAgLyogRW5hYmxlIHRoZSBETUEgY2hhbm5lbCAqLworICAgIGlmIChIQUxfRE1BX1N0YXJ0X0lUKGh1YXJ0LT5oZG1hcngsICh1aW50MzJfdCkmaHVhcnQtPkluc3RhbmNlLT5SRFIsICh1aW50MzJfdClodWFydC0+cFJ4QnVmZlB0ciwgU2l6ZSkgIT0gSEFMX09LKQorICAgIHsKKyAgICAgIC8qIFNldCBlcnJvciBjb2RlIHRvIERNQSAqLworICAgICAgaHVhcnQtPkVycm9yQ29kZSA9IEhBTF9VQVJUX0VSUk9SX0RNQTsKKworICAgICAgX19IQUxfVU5MT0NLKGh1YXJ0KTsKKworICAgICAgLyogUmVzdG9yZSBodWFydC0+Z1N0YXRlIHRvIHJlYWR5ICovCisgICAgICBodWFydC0+Z1N0YXRlID0gSEFMX1VBUlRfU1RBVEVfUkVBRFk7CisKKyAgICAgIHJldHVybiBIQUxfRVJST1I7CisgICAgfQorICB9CisgIF9fSEFMX1VOTE9DSyhodWFydCk7CisKKyAgLyogRW5hYmxlIHRoZSBVQVJUIFBhcml0eSBFcnJvciBJbnRlcnJ1cHQgKi8KKyAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX1BFSUUpOworCisgIC8qIEVuYWJsZSB0aGUgVUFSVCBFcnJvciBJbnRlcnJ1cHQ6IChGcmFtZSBlcnJvciwgbm9pc2UgZXJyb3IsIG92ZXJydW4gZXJyb3IpICovCisgIFNFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjMsIFVTQVJUX0NSM19FSUUpOworCisgIC8qIEVuYWJsZSB0aGUgRE1BIHRyYW5zZmVyIGZvciB0aGUgcmVjZWl2ZXIgcmVxdWVzdCBieSBzZXR0aW5nIHRoZSBETUFSIGJpdAorICBpbiB0aGUgVUFSVCBDUjMgcmVnaXN0ZXIgKi8KKyAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0RNQVIpOworCisgIHJldHVybiBIQUxfT0s7Cit9CisKIAogLyoqCiAgICogQGJyaWVmICBFbmQgb25nb2luZyBUeCB0cmFuc2ZlciBvbiBVQVJUIHBlcmlwaGVyYWwgKGZvbGxvd2luZyBlcnJvciBkZXRlY3Rpb24gb3IgVHJhbnNtaXQgY29tcGxldGlvbikuCkBAIC0zMDc5LDggKzMzNTksMTUgQEAKICAgQ0xFQVJfQklUKGh1YXJ0LT5JbnN0YW5jZS0+Q1IxLCAoVVNBUlRfQ1IxX1JYTkVJRSB8IFVTQVJUX0NSMV9QRUlFKSk7CiAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CiAKKyAgLyogSW4gY2FzZSBvZiByZWNlcHRpb24gd2FpdGluZyBmb3IgSURMRSBldmVudCwgZGlzYWJsZSBhbHNvIHRoZSBJRExFIElFIGludGVycnVwdCBzb3VyY2UgKi8KKyAgaWYgKGh1YXJ0LT5SZWNlcHRpb25UeXBlID09IEhBTF9VQVJUX1JFQ0VQVElPTl9UT0lETEUpCisgIHsKKyAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9JRExFSUUpOworICB9CisKICAgLyogQXQgZW5kIG9mIFJ4IHByb2Nlc3MsIHJlc3RvcmUgaHVhcnQtPlJ4U3RhdGUgdG8gUmVhZHkgKi8KICAgaHVhcnQtPlJ4U3RhdGUgPSBIQUxfVUFSVF9TVEFURV9SRUFEWTsKKyAgaHVhcnQtPlJlY2VwdGlvblR5cGUgPSBIQUxfVUFSVF9SRUNFUFRJT05fU1RBTkRBUkQ7CiAKICAgLyogUmVzZXQgUnhJc3IgZnVuY3Rpb24gcG9pbnRlciAqLwogICBodWFydC0+UnhJU1IgPSBOVUxMOwpAQCAtMzE2MywxNSArMzQ1MCwzNyBAQAogCiAgICAgLyogQXQgZW5kIG9mIFJ4IHByb2Nlc3MsIHJlc3RvcmUgaHVhcnQtPlJ4U3RhdGUgdG8gUmVhZHkgKi8KICAgICBodWFydC0+UnhTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX1JFQURZOworCisgICAgLyogSWYgUmVjZXB0aW9uIHRpbGwgSURMRSBldmVudCBoYXMgYmVlbiBzZWxlY3RlZCwgRGlzYWJsZSBJRExFIEludGVycnVwdCAqLworICAgIGlmIChodWFydC0+UmVjZXB0aW9uVHlwZSA9PSBIQUxfVUFSVF9SRUNFUFRJT05fVE9JRExFKQorICAgIHsKKyAgICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX0lETEVJRSk7CisgICAgfQogICB9CiAKKyAgLyogQ2hlY2sgY3VycmVudCByZWNlcHRpb24gTW9kZSA6CisgICAgIElmIFJlY2VwdGlvbiB0aWxsIElETEUgZXZlbnQgaGFzIGJlZW4gc2VsZWN0ZWQgOiB1c2UgUnggRXZlbnQgY2FsbGJhY2sgKi8KKyAgaWYgKGh1YXJ0LT5SZWNlcHRpb25UeXBlID09IEhBTF9VQVJUX1JFQ0VQVElPTl9UT0lETEUpCisgIHsKICNpZiAoVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotICAvKkNhbGwgcmVnaXN0ZXJlZCBSeCBjb21wbGV0ZSBjYWxsYmFjayovCi0gIGh1YXJ0LT5SeENwbHRDYWxsYmFjayhodWFydCk7CisgICAgLypDYWxsIHJlZ2lzdGVyZWQgUnggRXZlbnQgY2FsbGJhY2sqLworICAgIGh1YXJ0LT5SeEV2ZW50Q2FsbGJhY2soaHVhcnQsIGh1YXJ0LT5SeFhmZXJTaXplKTsKICNlbHNlCi0gIC8qQ2FsbCBsZWdhY3kgd2VhayBSeCBjb21wbGV0ZSBjYWxsYmFjayovCi0gIEhBTF9VQVJUX1J4Q3BsdENhbGxiYWNrKGh1YXJ0KTsKKyAgICAvKkNhbGwgbGVnYWN5IHdlYWsgUnggRXZlbnQgY2FsbGJhY2sqLworICAgIEhBTF9VQVJURXhfUnhFdmVudENhbGxiYWNrKGh1YXJ0LCBodWFydC0+UnhYZmVyU2l6ZSk7CiAjZW5kaWYgLyogVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUyAqLworICB9CisgIGVsc2UKKyAgeworICAgIC8qIEluIG90aGVyIGNhc2VzIDogdXNlIFJ4IENvbXBsZXRlIGNhbGxiYWNrICovCisjaWYgKFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKKyAgICAvKkNhbGwgcmVnaXN0ZXJlZCBSeCBjb21wbGV0ZSBjYWxsYmFjayovCisgICAgaHVhcnQtPlJ4Q3BsdENhbGxiYWNrKGh1YXJ0KTsKKyNlbHNlCisgICAgLypDYWxsIGxlZ2FjeSB3ZWFrIFJ4IGNvbXBsZXRlIGNhbGxiYWNrKi8KKyAgICBIQUxfVUFSVF9SeENwbHRDYWxsYmFjayhodWFydCk7CisjZW5kaWYgLyogVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUyAqLworICB9CiB9CiAKIC8qKgpAQCAtMzE4MywxMyArMzQ5MiwyOSBAQAogewogICBVQVJUX0hhbmRsZVR5cGVEZWYgKmh1YXJ0ID0gKFVBUlRfSGFuZGxlVHlwZURlZiAqKShoZG1hLT5QYXJlbnQpOwogCisgIC8qIENoZWNrIGN1cnJlbnQgcmVjZXB0aW9uIE1vZGUgOgorICAgICBJZiBSZWNlcHRpb24gdGlsbCBJRExFIGV2ZW50IGhhcyBiZWVuIHNlbGVjdGVkIDogdXNlIFJ4IEV2ZW50IGNhbGxiYWNrICovCisgIGlmIChodWFydC0+UmVjZXB0aW9uVHlwZSA9PSBIQUxfVUFSVF9SRUNFUFRJT05fVE9JRExFKQorICB7CiAjaWYgKFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSAgLypDYWxsIHJlZ2lzdGVyZWQgUnggSGFsZiBjb21wbGV0ZSBjYWxsYmFjayovCi0gIGh1YXJ0LT5SeEhhbGZDcGx0Q2FsbGJhY2soaHVhcnQpOworICAgIC8qQ2FsbCByZWdpc3RlcmVkIFJ4IEV2ZW50IGNhbGxiYWNrKi8KKyAgICBodWFydC0+UnhFdmVudENhbGxiYWNrKGh1YXJ0LCBodWFydC0+UnhYZmVyU2l6ZSAvIDJVKTsKICNlbHNlCi0gIC8qQ2FsbCBsZWdhY3kgd2VhayBSeCBIYWxmIGNvbXBsZXRlIGNhbGxiYWNrKi8KLSAgSEFMX1VBUlRfUnhIYWxmQ3BsdENhbGxiYWNrKGh1YXJ0KTsKKyAgICAvKkNhbGwgbGVnYWN5IHdlYWsgUnggRXZlbnQgY2FsbGJhY2sqLworICAgIEhBTF9VQVJURXhfUnhFdmVudENhbGxiYWNrKGh1YXJ0LCBodWFydC0+UnhYZmVyU2l6ZSAvIDJVKTsKICNlbmRpZiAvKiBVU0VfSEFMX1VBUlRfUkVHSVNURVJfQ0FMTEJBQ0tTICovCisgIH0KKyAgZWxzZQorICB7CisgICAgLyogSW4gb3RoZXIgY2FzZXMgOiB1c2UgUnggSGFsZiBDb21wbGV0ZSBjYWxsYmFjayAqLworI2lmIChVU0VfSEFMX1VBUlRfUkVHSVNURVJfQ0FMTEJBQ0tTID09IDEpCisgICAgLypDYWxsIHJlZ2lzdGVyZWQgUnggSGFsZiBjb21wbGV0ZSBjYWxsYmFjayovCisgICAgaHVhcnQtPlJ4SGFsZkNwbHRDYWxsYmFjayhodWFydCk7CisjZWxzZQorICAgIC8qQ2FsbCBsZWdhY3kgd2VhayBSeCBIYWxmIGNvbXBsZXRlIGNhbGxiYWNrKi8KKyAgICBIQUxfVUFSVF9SeEhhbGZDcGx0Q2FsbGJhY2soaHVhcnQpOworI2VuZGlmIC8qIFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KKyAgfQogfQogCiAvKioKQEAgLTMyODksNiArMzYxNCw3IEBACiAgIC8qIFJlc3RvcmUgaHVhcnQtPmdTdGF0ZSBhbmQgaHVhcnQtPlJ4U3RhdGUgdG8gUmVhZHkgKi8KICAgaHVhcnQtPmdTdGF0ZSAgPSBIQUxfVUFSVF9TVEFURV9SRUFEWTsKICAgaHVhcnQtPlJ4U3RhdGUgPSBIQUxfVUFSVF9TVEFURV9SRUFEWTsKKyAgaHVhcnQtPlJlY2VwdGlvblR5cGUgPSBIQUxfVUFSVF9SRUNFUFRJT05fU1RBTkRBUkQ7CiAKICAgLyogQ2FsbCB1c2VyIEFib3J0IGNvbXBsZXRlIGNhbGxiYWNrICovCiAjaWYgKFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKQEAgLTMzNDAsNiArMzY2Niw3IEBACiAgIC8qIFJlc3RvcmUgaHVhcnQtPmdTdGF0ZSBhbmQgaHVhcnQtPlJ4U3RhdGUgdG8gUmVhZHkgKi8KICAgaHVhcnQtPmdTdGF0ZSAgPSBIQUxfVUFSVF9TVEFURV9SRUFEWTsKICAgaHVhcnQtPlJ4U3RhdGUgPSBIQUxfVUFSVF9TVEFURV9SRUFEWTsKKyAgaHVhcnQtPlJlY2VwdGlvblR5cGUgPSBIQUxfVUFSVF9SRUNFUFRJT05fU1RBTkRBUkQ7CiAKICAgLyogQ2FsbCB1c2VyIEFib3J0IGNvbXBsZXRlIGNhbGxiYWNrICovCiAjaWYgKFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKQEAgLTM0MDIsNiArMzcyOSw3IEBACiAKICAgLyogUmVzdG9yZSBodWFydC0+UnhTdGF0ZSB0byBSZWFkeSAqLwogICBodWFydC0+UnhTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX1JFQURZOworICBodWFydC0+UmVjZXB0aW9uVHlwZSA9IEhBTF9VQVJUX1JFQ0VQVElPTl9TVEFOREFSRDsKIAogICAvKiBDYWxsIHVzZXIgQWJvcnQgY29tcGxldGUgY2FsbGJhY2sgKi8KICNpZiAoVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQpAQCAtMzQxNCw3ICszNzQyLDcgQEAKIH0KIAogLyoqCi0gICogQGJyaWVmIFRYIGludGVycnJ1cHQgaGFuZGxlciBmb3IgNyBvciA4IGJpdHMgZGF0YSB3b3JkIGxlbmd0aCAuCisgICogQGJyaWVmIFRYIGludGVycnVwdCBoYW5kbGVyIGZvciA3IG9yIDggYml0cyBkYXRhIHdvcmQgbGVuZ3RoIC4KICAgKiBAbm90ZSAgIEZ1bmN0aW9uIGlzIGNhbGxlZCB1bmRlciBpbnRlcnJ1cHRpb24gb25seSwgb25jZQogICAqICAgICAgICAgaW50ZXJydXB0aW9ucyBoYXZlIGJlZW4gZW5hYmxlZCBieSBIQUxfVUFSVF9UcmFuc21pdF9JVCgpLgogICAqIEBwYXJhbSBodWFydCBVQVJUIGhhbmRsZS4KQEAgLTM0NDMsNyArMzc3MSw3IEBACiB9CiAKIC8qKgotICAqIEBicmllZiBUWCBpbnRlcnJydXB0IGhhbmRsZXIgZm9yIDkgYml0cyBkYXRhIHdvcmQgbGVuZ3RoLgorICAqIEBicmllZiBUWCBpbnRlcnJ1cHQgaGFuZGxlciBmb3IgOSBiaXRzIGRhdGEgd29yZCBsZW5ndGguCiAgICogQG5vdGUgICBGdW5jdGlvbiBpcyBjYWxsZWQgdW5kZXIgaW50ZXJydXB0aW9uIG9ubHksIG9uY2UKICAgKiAgICAgICAgIGludGVycnVwdGlvbnMgaGF2ZSBiZWVuIGVuYWJsZWQgYnkgSEFMX1VBUlRfVHJhbnNtaXRfSVQoKS4KICAgKiBAcGFyYW0gaHVhcnQgVUFSVCBoYW5kbGUuCkBAIC0zNTAyLDcgKzM4MzAsNyBAQAogfQogCiAvKioKLSAgKiBAYnJpZWYgUlggaW50ZXJycnVwdCBoYW5kbGVyIGZvciA3IG9yIDggYml0cyBkYXRhIHdvcmQgbGVuZ3RoIC4KKyAgKiBAYnJpZWYgUlggaW50ZXJydXB0IGhhbmRsZXIgZm9yIDcgb3IgOCBiaXRzIGRhdGEgd29yZCBsZW5ndGggLgogICAqIEBwYXJhbSBodWFydCBVQVJUIGhhbmRsZS4KICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KQEAgLTM1MzMsMTMgKzM4NjEsMzMgQEAKICAgICAgIC8qIENsZWFyIFJ4SVNSIGZ1bmN0aW9uIHBvaW50ZXIgKi8KICAgICAgIGh1YXJ0LT5SeElTUiA9IE5VTEw7CiAKKyAgICAgIC8qIENoZWNrIGN1cnJlbnQgcmVjZXB0aW9uIE1vZGUgOgorICAgICAgICAgSWYgUmVjZXB0aW9uIHRpbGwgSURMRSBldmVudCBoYXMgYmVlbiBzZWxlY3RlZCA6ICovCisgICAgICBpZiAoaHVhcnQtPlJlY2VwdGlvblR5cGUgPT0gSEFMX1VBUlRfUkVDRVBUSU9OX1RPSURMRSkKKyAgICAgIHsKKyAgICAgICAgLyogRGlzYWJsZSBJRExFIGludGVycnVwdCAqLworICAgICAgICBDTEVBUl9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9JRExFSUUpOworCiAjaWYgKFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKLSAgICAgIC8qQ2FsbCByZWdpc3RlcmVkIFJ4IGNvbXBsZXRlIGNhbGxiYWNrKi8KLSAgICAgIGh1YXJ0LT5SeENwbHRDYWxsYmFjayhodWFydCk7CisgICAgICAgIC8qQ2FsbCByZWdpc3RlcmVkIFJ4IEV2ZW50IGNhbGxiYWNrKi8KKyAgICAgICAgaHVhcnQtPlJ4RXZlbnRDYWxsYmFjayhodWFydCwgaHVhcnQtPlJ4WGZlclNpemUpOwogI2Vsc2UKLSAgICAgIC8qQ2FsbCBsZWdhY3kgd2VhayBSeCBjb21wbGV0ZSBjYWxsYmFjayovCi0gICAgICBIQUxfVUFSVF9SeENwbHRDYWxsYmFjayhodWFydCk7CisgICAgICAgIC8qQ2FsbCBsZWdhY3kgd2VhayBSeCBFdmVudCBjYWxsYmFjayovCisgICAgICAgIEhBTF9VQVJURXhfUnhFdmVudENhbGxiYWNrKGh1YXJ0LCBodWFydC0+UnhYZmVyU2l6ZSk7CisjZW5kaWYgLyogKFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MpICovCisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIFN0YW5kYXJkIHJlY2VwdGlvbiBBUEkgY2FsbGVkICovCisjaWYgKFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MgPT0gMSkKKyAgICAgICAgLypDYWxsIHJlZ2lzdGVyZWQgUnggY29tcGxldGUgY2FsbGJhY2sqLworICAgICAgICBodWFydC0+UnhDcGx0Q2FsbGJhY2soaHVhcnQpOworI2Vsc2UKKyAgICAgICAgLypDYWxsIGxlZ2FjeSB3ZWFrIFJ4IGNvbXBsZXRlIGNhbGxiYWNrKi8KKyAgICAgICAgSEFMX1VBUlRfUnhDcGx0Q2FsbGJhY2soaHVhcnQpOwogI2VuZGlmIC8qIFVTRV9IQUxfVUFSVF9SRUdJU1RFUl9DQUxMQkFDS1MgKi8KKyAgICAgIH0KKyAgICAgIGh1YXJ0LT5SZWNlcHRpb25UeXBlID0gSEFMX1VBUlRfUkVDRVBUSU9OX1NUQU5EQVJEOwogICAgIH0KICAgfQogICBlbHNlCkBAIC0zNTUwLDcgKzM4OTgsNyBAQAogfQogCiAvKioKLSAgKiBAYnJpZWYgUlggaW50ZXJycnVwdCBoYW5kbGVyIGZvciA5IGJpdHMgZGF0YSB3b3JkIGxlbmd0aCAuCisgICogQGJyaWVmIFJYIGludGVycnVwdCBoYW5kbGVyIGZvciA5IGJpdHMgZGF0YSB3b3JkIGxlbmd0aCAuCiAgICogQG5vdGUgICBGdW5jdGlvbiBpcyBjYWxsZWQgdW5kZXIgaW50ZXJydXB0aW9uIG9ubHksIG9uY2UKICAgKiAgICAgICAgIGludGVycnVwdGlvbnMgaGF2ZSBiZWVuIGVuYWJsZWQgYnkgSEFMX1VBUlRfUmVjZWl2ZV9JVCgpCiAgICogQHBhcmFtIGh1YXJ0IFVBUlQgaGFuZGxlLgpAQCAtMzU4NSwxMyArMzkzMywzMyBAQAogICAgICAgLyogQ2xlYXIgUnhJU1IgZnVuY3Rpb24gcG9pbnRlciAqLwogICAgICAgaHVhcnQtPlJ4SVNSID0gTlVMTDsKIAorICAgICAgLyogQ2hlY2sgY3VycmVudCByZWNlcHRpb24gTW9kZSA6CisgICAgICAgICBJZiBSZWNlcHRpb24gdGlsbCBJRExFIGV2ZW50IGhhcyBiZWVuIHNlbGVjdGVkIDogKi8KKyAgICAgIGlmIChodWFydC0+UmVjZXB0aW9uVHlwZSA9PSBIQUxfVUFSVF9SRUNFUFRJT05fVE9JRExFKQorICAgICAgeworICAgICAgICAvKiBEaXNhYmxlIElETEUgaW50ZXJydXB0ICovCisgICAgICAgIENMRUFSX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX0lETEVJRSk7CisKICNpZiAoVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQotICAgICAgLypDYWxsIHJlZ2lzdGVyZWQgUnggY29tcGxldGUgY2FsbGJhY2sqLwotICAgICAgaHVhcnQtPlJ4Q3BsdENhbGxiYWNrKGh1YXJ0KTsKKyAgICAgICAgLypDYWxsIHJlZ2lzdGVyZWQgUnggRXZlbnQgY2FsbGJhY2sqLworICAgICAgICBodWFydC0+UnhFdmVudENhbGxiYWNrKGh1YXJ0LCBodWFydC0+UnhYZmVyU2l6ZSk7CiAjZWxzZQotICAgICAgLypDYWxsIGxlZ2FjeSB3ZWFrIFJ4IGNvbXBsZXRlIGNhbGxiYWNrKi8KLSAgICAgIEhBTF9VQVJUX1J4Q3BsdENhbGxiYWNrKGh1YXJ0KTsKKyAgICAgICAgLypDYWxsIGxlZ2FjeSB3ZWFrIFJ4IEV2ZW50IGNhbGxiYWNrKi8KKyAgICAgICAgSEFMX1VBUlRFeF9SeEV2ZW50Q2FsbGJhY2soaHVhcnQsIGh1YXJ0LT5SeFhmZXJTaXplKTsKKyNlbmRpZiAvKiAoVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUykgKi8KKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgLyogU3RhbmRhcmQgcmVjZXB0aW9uIEFQSSBjYWxsZWQgKi8KKyNpZiAoVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUyA9PSAxKQorICAgICAgICAvKkNhbGwgcmVnaXN0ZXJlZCBSeCBjb21wbGV0ZSBjYWxsYmFjayovCisgICAgICAgIGh1YXJ0LT5SeENwbHRDYWxsYmFjayhodWFydCk7CisjZWxzZQorICAgICAgICAvKkNhbGwgbGVnYWN5IHdlYWsgUnggY29tcGxldGUgY2FsbGJhY2sqLworICAgICAgICBIQUxfVUFSVF9SeENwbHRDYWxsYmFjayhodWFydCk7CiAjZW5kaWYgLyogVVNFX0hBTF9VQVJUX1JFR0lTVEVSX0NBTExCQUNLUyAqLworICAgICAgfQorICAgICAgaHVhcnQtPlJlY2VwdGlvblR5cGUgPSBIQUxfVUFSVF9SRUNFUFRJT05fU1RBTkRBUkQ7CiAgICAgfQogICB9CiAgIGVsc2UKZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3VhcnRfZXguYyBiL1NyYy9zdG0zMmY3eHhfaGFsX3VhcnRfZXguYwppbmRleCBjZGM1MzVjLi43NTY1NGU2IDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2hhbF91YXJ0X2V4LmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfdWFydF9leC5jCkBAIC0yNDgsNiArMjQ4LDQxIEBACiAgICAgICgrKSBIQUxfVUFSVEV4X0Rpc2FibGVTdG9wTW9kZSgpIEFQSSBkaXNhYmxlcyB0aGUgYWJvdmUgZnVuY3Rpb25hbGl0eQogI2VuZGlmCiAKKyAgICBbLi5dIFRoaXMgc3Vic2VjdGlvbiBhbHNvIHByb3ZpZGVzIGEgc2V0IG9mIGFkZGl0aW9uYWwgZnVuY3Rpb25zIHByb3ZpZGluZyBlbmhhbmNlZCByZWNlcHRpb24KKyAgICBzZXJ2aWNlcyB0byB1c2VyLiAoRm9yIGV4YW1wbGUsIHRoZXNlIGZ1bmN0aW9ucyBhbGxvdyBhcHBsaWNhdGlvbiB0byBoYW5kbGUgdXNlIGNhc2VzCisgICAgd2hlcmUgbnVtYmVyIG9mIGRhdGEgdG8gYmUgcmVjZWl2ZWQgaXMgdW5rbm93bikuCisKKyAgICAoIykgQ29tcGFyZWQgdG8gc3RhbmRhcmQgcmVjZXB0aW9uIHNlcnZpY2VzIHdoaWNoIG9ubHkgY29uc2lkZXIgbnVtYmVyIG9mIHJlY2VpdmVkCisgICAgICAgIGRhdGEgZWxlbWVudHMgYXMgcmVjZXB0aW9uIGNvbXBsZXRpb24gY3JpdGVyaWEsIHRoZXNlIGZ1bmN0aW9ucyBhbHNvIGNvbnNpZGVyIGFkZGl0aW9uYWwgZXZlbnRzCisgICAgICAgIGFzIHRyaWdnZXJzIGZvciB1cGRhdGluZyByZWNlcHRpb24gc3RhdHVzIHRvIGNhbGxlciA6CisgICAgICAgKCspIERldGVjdGlvbiBvZiBpbmFjdGl2aXR5IHBlcmlvZCAoUlggbGluZSBoYXMgbm90IGJlZW4gYWN0aXZlIGZvciBhIGdpdmVuIHBlcmlvZCkuCisgICAgICAgICAgKCsrKSBSWCBpbmFjdGl2aXR5IGRldGVjdGVkIGJ5IElETEUgZXZlbnQsIGkuZS4gUlggbGluZSBoYXMgYmVlbiBpbiBpZGxlIHN0YXRlIChub3JtYWxseSBoaWdoIHN0YXRlKQorICAgICAgICAgICAgICAgZm9yIDEgZnJhbWUgdGltZSwgYWZ0ZXIgbGFzdCByZWNlaXZlZCBieXRlLgorICAgICAgICAgICgrKykgUlggaW5hY3Rpdml0eSBkZXRlY3RlZCBieSBSVE8sIGkuZS4gbGluZSBoYXMgYmVlbiBpbiBpZGxlIHN0YXRlCisgICAgICAgICAgICAgICBmb3IgYSBwcm9ncmFtbWFibGUgdGltZSwgYWZ0ZXIgbGFzdCByZWNlaXZlZCBieXRlLgorICAgICAgICgrKSBEZXRlY3Rpb24gdGhhdCBhIHNwZWNpZmljIGNoYXJhY3RlciBoYXMgYmVlbiByZWNlaXZlZC4KKworICAgICgjKSBUaGVyZSBhcmUgdHdvIG1vZGUgb2YgdHJhbnNmZXI6CisgICAgICAgKCspIEJsb2NraW5nIG1vZGU6IFRoZSByZWNlcHRpb24gaXMgcGVyZm9ybWVkIGluIHBvbGxpbmcgbW9kZSwgdW50aWwgZWl0aGVyIGV4cGVjdGVkIG51bWJlciBvZiBkYXRhIGlzIHJlY2VpdmVkLAorICAgICAgICAgICBvciB0aWxsIElETEUgZXZlbnQgb2NjdXJzLiBSZWNlcHRpb24gaXMgaGFuZGxlZCBvbmx5IGR1cmluZyBmdW5jdGlvbiBleGVjdXRpb24uCisgICAgICAgICAgIFdoZW4gZnVuY3Rpb24gZXhpdHMsIG5vIGRhdGEgcmVjZXB0aW9uIGNvdWxkIG9jY3VyLiBIQUwgc3RhdHVzIGFuZCBudW1iZXIgb2YgYWN0dWFsbHkgcmVjZWl2ZWQgZGF0YSBlbGVtZW50cywKKyAgICAgICAgICAgYXJlIHJldHVybmVkIGJ5IGZ1bmN0aW9uIGFmdGVyIGZpbmlzaGluZyB0cmFuc2Zlci4KKyAgICAgICAoKykgTm9uLUJsb2NraW5nIG1vZGU6IFRoZSByZWNlcHRpb24gaXMgcGVyZm9ybWVkIHVzaW5nIEludGVycnVwdHMgb3IgRE1BLgorICAgICAgICAgICBUaGVzZSBBUEkncyByZXR1cm4gdGhlIEhBTCBzdGF0dXMuCisgICAgICAgICAgIFRoZSBlbmQgb2YgdGhlIGRhdGEgcHJvY2Vzc2luZyB3aWxsIGJlIGluZGljYXRlZCB0aHJvdWdoIHRoZQorICAgICAgICAgICBkZWRpY2F0ZWQgVUFSVCBJUlEgd2hlbiB1c2luZyBJbnRlcnJ1cHQgbW9kZSBvciB0aGUgRE1BIElSUSB3aGVuIHVzaW5nIERNQSBtb2RlLgorICAgICAgICAgICBUaGUgSEFMX1VBUlRFeF9SeEV2ZW50Q2FsbGJhY2soKSB1c2VyIGNhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQgZHVyaW5nIFJlY2VpdmUgcHJvY2VzcworICAgICAgICAgICBUaGUgSEFMX1VBUlRfRXJyb3JDYWxsYmFjaygpdXNlciBjYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gYSByZWNlcHRpb24gZXJyb3IgaXMgZGV0ZWN0ZWQuCisKKyAgICAoIykgQmxvY2tpbmcgbW9kZSBBUEk6CisgICAgICAgICgrKSBIQUxfVUFSVEV4X1JlY2VpdmVUb0lkbGUoKQorCisgICAgKCMpIE5vbi1CbG9ja2luZyBtb2RlIEFQSSB3aXRoIEludGVycnVwdDoKKyAgICAgICAgKCspIEhBTF9VQVJURXhfUmVjZWl2ZVRvSWRsZV9JVCgpCisKKyAgICAoIykgTm9uLUJsb2NraW5nIG1vZGUgQVBJIHdpdGggRE1BOgorICAgICAgICAoKykgSEFMX1VBUlRFeF9SZWNlaXZlVG9JZGxlX0RNQSgpCisKIEBlbmR2ZXJiYXRpbQogICAqIEB7CiAgICovCkBAIC0zNjYsOCArNDAxLDEwIEBACiAgIC8qIERpc2FibGUgdGhlIFBlcmlwaGVyYWwgKi8KICAgX19IQUxfVUFSVF9ESVNBQkxFKGh1YXJ0KTsKIAorI2lmIGRlZmluZWQoVVNBUlRfQ1IzX1dVUykKICAgLyogU2V0IHRoZSB3YWtlLXVwIHNlbGVjdGlvbiBzY2hlbWUgKi8KICAgTU9ESUZZX1JFRyhodWFydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX1dVUywgV2FrZVVwU2VsZWN0aW9uLldha2VVcEV2ZW50KTsKKyNlbmRpZiAvKiBVU0FSVF9DUjNfV1VTICovCiAKICAgaWYgKFdha2VVcFNlbGVjdGlvbi5XYWtlVXBFdmVudCA9PSBVQVJUX1dBS0VVUF9PTl9BRERSRVNTKQogICB7CkBAIC0zNzcsNyArNDE0LDcgQEAKICAgLyogRW5hYmxlIHRoZSBQZXJpcGhlcmFsICovCiAgIF9fSEFMX1VBUlRfRU5BQkxFKGh1YXJ0KTsKIAotICAvKiBJbml0IHRpY2tzdGFydCBmb3IgdGltZW91dCBtYW5hZ21lbnQqLworICAvKiBJbml0IHRpY2tzdGFydCBmb3IgdGltZW91dCBtYW5hZ2VtZW50ICovCiAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CiAKICAgLyogV2FpdCB1bnRpbCBSRUFDSyBmbGFnIGlzIHNldCAqLwpAQCAtNDM4LDYgKzQ3NSwyNTUgQEAKIAogI2VuZGlmIC8qIFVTQVJUX0NSMV9VRVNNICovCiAvKioKKyAgKiBAYnJpZWYgUmVjZWl2ZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBibG9ja2luZyBtb2RlIHRpbGwgZWl0aGVyIHRoZSBleHBlY3RlZCBudW1iZXIgb2YgZGF0YQorICAqICAgICAgICBpcyByZWNlaXZlZCBvciBhbiBJRExFIGV2ZW50IG9jY3Vycy4KKyAgKiBAbm90ZSAgSEFMX09LIGlzIHJldHVybmVkIGlmIHJlY2VwdGlvbiBpcyBjb21wbGV0ZWQgKGV4cGVjdGVkIG51bWJlciBvZiBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkKQorICAqICAgICAgICBvciBpZiByZWNlcHRpb24gaXMgc3RvcHBlZCBhZnRlciBJRExFIGV2ZW50IChsZXNzIHRoYW4gdGhlIGV4cGVjdGVkIG51bWJlciBvZiBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkKQorICAqICAgICAgICBJbiB0aGlzIGNhc2UsIFJ4TGVuIG91dHB1dCBwYXJhbWV0ZXIgaW5kaWNhdGVzIG51bWJlciBvZiBkYXRhIGF2YWlsYWJsZSBpbiByZWNlcHRpb24gYnVmZmVyLgorICAqIEBub3RlICBXaGVuIFVBUlQgcGFyaXR5IGlzIG5vdCBlbmFibGVkIChQQ0UgPSAwKSwgYW5kIFdvcmQgTGVuZ3RoIGlzIGNvbmZpZ3VyZWQgdG8gOSBiaXRzIChNMS1NMCA9IDAxKSwKKyAgKiAgICAgICAgdGhlIHJlY2VpdmVkIGRhdGEgaXMgaGFuZGxlZCBhcyBhIHNldCBvZiB1aW50MTZfdC4gSW4gdGhpcyBjYXNlLCBTaXplIG11c3QgaW5kaWNhdGUgdGhlIG51bWJlcgorICAqICAgICAgICBvZiB1aW50MTZfdCBhdmFpbGFibGUgdGhyb3VnaCBwRGF0YS4KKyAgKiBAcGFyYW0gaHVhcnQgICBVQVJUIGhhbmRsZS4KKyAgKiBAcGFyYW0gcERhdGEgICBQb2ludGVyIHRvIGRhdGEgYnVmZmVyICh1aW50OF90IG9yIHVpbnQxNl90IGRhdGEgZWxlbWVudHMpLgorICAqIEBwYXJhbSBTaXplICAgIEFtb3VudCBvZiBkYXRhIGVsZW1lbnRzICh1aW50OF90IG9yIHVpbnQxNl90KSB0byBiZSByZWNlaXZlZC4KKyAgKiBAcGFyYW0gUnhMZW4gICBOdW1iZXIgb2YgZGF0YSBlbGVtZW50cyBmaW5hbGx5IHJlY2VpdmVkCisgICogICAgICAgICAgICAgICAgKGNvdWxkIGJlIGxvd2VyIHRoYW4gU2l6ZSwgaW4gY2FzZSByZWNlcHRpb24gZW5kcyBvbiBJRExFIGV2ZW50KQorICAqIEBwYXJhbSBUaW1lb3V0IFRpbWVvdXQgZHVyYXRpb24gZXhwcmVzc2VkIGluIG1zIChjb3ZlcnMgdGhlIHdob2xlIHJlY2VwdGlvbiBzZXF1ZW5jZSkuCisgICogQHJldHZhbCBIQUwgc3RhdHVzCisgICovCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfVUFSVEV4X1JlY2VpdmVUb0lkbGUoVUFSVF9IYW5kbGVUeXBlRGVmICpodWFydCwgdWludDhfdCAqcERhdGEsIHVpbnQxNl90IFNpemUsIHVpbnQxNl90ICpSeExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBUaW1lb3V0KQoreworICB1aW50OF90ICAqcGRhdGE4Yml0czsKKyAgdWludDE2X3QgKnBkYXRhMTZiaXRzOworICB1aW50MTZfdCB1aE1hc2s7CisgIHVpbnQzMl90IHRpY2tzdGFydDsKKworICAvKiBDaGVjayB0aGF0IGEgUnggcHJvY2VzcyBpcyBub3QgYWxyZWFkeSBvbmdvaW5nICovCisgIGlmIChodWFydC0+UnhTdGF0ZSA9PSBIQUxfVUFSVF9TVEFURV9SRUFEWSkKKyAgeworICAgIGlmICgocERhdGEgPT0gTlVMTCkgfHwgKFNpemUgPT0gMFUpKQorICAgIHsKKyAgICAgIHJldHVybiAgSEFMX0VSUk9SOworICAgIH0KKworICAgIF9fSEFMX0xPQ0soaHVhcnQpOworCisgICAgaHVhcnQtPkVycm9yQ29kZSA9IEhBTF9VQVJUX0VSUk9SX05PTkU7CisgICAgaHVhcnQtPlJ4U3RhdGUgPSBIQUxfVUFSVF9TVEFURV9CVVNZX1JYOworICAgIGh1YXJ0LT5SZWNlcHRpb25UeXBlID0gSEFMX1VBUlRfUkVDRVBUSU9OX1RPSURMRTsKKworICAgIC8qIEluaXQgdGlja3N0YXJ0IGZvciB0aW1lb3V0IG1hbmFnZW1lbnQgKi8KKyAgICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOworCisgICAgaHVhcnQtPlJ4WGZlclNpemUgID0gU2l6ZTsKKyAgICBodWFydC0+UnhYZmVyQ291bnQgPSBTaXplOworCisgICAgLyogQ29tcHV0YXRpb24gb2YgVUFSVCBtYXNrIHRvIGFwcGx5IHRvIFJEUiByZWdpc3RlciAqLworICAgIFVBUlRfTUFTS19DT01QVVRBVElPTihodWFydCk7CisgICAgdWhNYXNrID0gaHVhcnQtPk1hc2s7CisKKyAgICAvKiBJbiBjYXNlIG9mIDliaXRzL05vIFBhcml0eSB0cmFuc2ZlciwgcFJ4RGF0YSBuZWVkcyB0byBiZSBoYW5kbGVkIGFzIGEgdWludDE2X3QgcG9pbnRlciAqLworICAgIGlmICgoaHVhcnQtPkluaXQuV29yZExlbmd0aCA9PSBVQVJUX1dPUkRMRU5HVEhfOUIpICYmIChodWFydC0+SW5pdC5QYXJpdHkgPT0gVUFSVF9QQVJJVFlfTk9ORSkpCisgICAgeworICAgICAgcGRhdGE4Yml0cyAgPSBOVUxMOworICAgICAgcGRhdGExNmJpdHMgPSAodWludDE2X3QgKikgcERhdGE7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICBwZGF0YThiaXRzICA9IHBEYXRhOworICAgICAgcGRhdGExNmJpdHMgPSBOVUxMOworICAgIH0KKworICAgIF9fSEFMX1VOTE9DSyhodWFydCk7CisKKyAgICAvKiBJbml0aWFsaXplIG91dHB1dCBudW1iZXIgb2YgcmVjZWl2ZWQgZWxlbWVudHMgKi8KKyAgICAqUnhMZW4gPSAwVTsKKworICAgIC8qIGFzIGxvbmcgYXMgZGF0YSBoYXZlIHRvIGJlIHJlY2VpdmVkICovCisgICAgd2hpbGUgKGh1YXJ0LT5SeFhmZXJDb3VudCA+IDBVKQorICAgIHsKKyAgICAgIC8qIENoZWNrIGlmIElETEUgZmxhZyBpcyBzZXQgKi8KKyAgICAgIGlmIChfX0hBTF9VQVJUX0dFVF9GTEFHKGh1YXJ0LCBVQVJUX0ZMQUdfSURMRSkpCisgICAgICB7CisgICAgICAgIC8qIENsZWFyIElETEUgZmxhZyBpbiBJU1IgKi8KKyAgICAgICAgX19IQUxfVUFSVF9DTEVBUl9GTEFHKGh1YXJ0LCBVQVJUX0NMRUFSX0lETEVGKTsKKworICAgICAgICAvKiBJZiBTZXQsIGJ1dCBubyBkYXRhIGV2ZXIgcmVjZWl2ZWQsIGNsZWFyIGZsYWcgd2l0aG91dCBleGl0aW5nIGxvb3AgKi8KKyAgICAgICAgLyogSWYgU2V0LCBhbmQgZGF0YSBoYXMgYWxyZWFkeSBiZWVuIHJlY2VpdmVkLCB0aGlzIG1lYW5zIElkbGUgRXZlbnQgaXMgdmFsaWQgOiBFbmQgcmVjZXB0aW9uICovCisgICAgICAgIGlmICgqUnhMZW4gPiAwVSkKKyAgICAgICAgeworICAgICAgICAgIGh1YXJ0LT5SeFN0YXRlID0gSEFMX1VBUlRfU1RBVEVfUkVBRFk7CisKKyAgICAgICAgICByZXR1cm4gSEFMX09LOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8qIENoZWNrIGlmIFJYTkUgZmxhZyBpcyBzZXQgKi8KKyAgICAgIGlmIChfX0hBTF9VQVJUX0dFVF9GTEFHKGh1YXJ0LCBVQVJUX0ZMQUdfUlhORSkpCisgICAgICB7CisgICAgICAgIGlmIChwZGF0YThiaXRzID09IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAqcGRhdGExNmJpdHMgPSAodWludDE2X3QpKGh1YXJ0LT5JbnN0YW5jZS0+UkRSICYgdWhNYXNrKTsKKyAgICAgICAgICBwZGF0YTE2Yml0cysrOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICpwZGF0YThiaXRzID0gKHVpbnQ4X3QpKGh1YXJ0LT5JbnN0YW5jZS0+UkRSICYgKHVpbnQ4X3QpdWhNYXNrKTsKKyAgICAgICAgICBwZGF0YThiaXRzKys7CisgICAgICAgIH0KKyAgICAgICAgLyogSW5jcmVtZW50IG51bWJlciBvZiByZWNlaXZlZCBlbGVtZW50cyAqLworICAgICAgICAqUnhMZW4gKz0gMVU7CisgICAgICAgIGh1YXJ0LT5SeFhmZXJDb3VudC0tOworICAgICAgfQorCisgICAgICAvKiBDaGVjayBmb3IgdGhlIFRpbWVvdXQgKi8KKyAgICAgIGlmIChUaW1lb3V0ICE9IEhBTF9NQVhfREVMQVkpCisgICAgICB7CisgICAgICAgIGlmICgoKEhBTF9HZXRUaWNrKCkgLSB0aWNrc3RhcnQpID4gVGltZW91dCkgfHwgKFRpbWVvdXQgPT0gMFUpKQorICAgICAgICB7CisgICAgICAgICAgaHVhcnQtPlJ4U3RhdGUgPSBIQUxfVUFSVF9TVEFURV9SRUFEWTsKKworICAgICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIC8qIFNldCBudW1iZXIgb2YgcmVjZWl2ZWQgZWxlbWVudHMgaW4gb3V0cHV0IHBhcmFtZXRlciA6IFJ4TGVuICovCisgICAgKlJ4TGVuID0gaHVhcnQtPlJ4WGZlclNpemUgLSBodWFydC0+UnhYZmVyQ291bnQ7CisgICAgLyogQXQgZW5kIG9mIFJ4IHByb2Nlc3MsIHJlc3RvcmUgaHVhcnQtPlJ4U3RhdGUgdG8gUmVhZHkgKi8KKyAgICBodWFydC0+UnhTdGF0ZSA9IEhBTF9VQVJUX1NUQVRFX1JFQURZOworCisgICAgcmV0dXJuIEhBTF9PSzsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0JVU1k7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmIFJlY2VpdmUgYW4gYW1vdW50IG9mIGRhdGEgaW4gaW50ZXJydXB0IG1vZGUgdGlsbCBlaXRoZXIgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBkYXRhCisgICogICAgICAgIGlzIHJlY2VpdmVkIG9yIGFuIElETEUgZXZlbnQgb2NjdXJzLgorICAqIEBub3RlICBSZWNlcHRpb24gaXMgaW5pdGlhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FsbC4gRnVydGhlciBwcm9ncmVzcyBvZiByZWNlcHRpb24gaXMgYWNoaWV2ZWQgdGhhbmtzCisgICogICAgICAgIHRvIFVBUlQgaW50ZXJydXB0cyByYWlzZWQgYnkgUlhORSBhbmQgSURMRSBldmVudHMuIENhbGxiYWNrIGlzIGNhbGxlZCBhdCBlbmQgb2YgcmVjZXB0aW9uIGluZGljYXRpbmcKKyAgKiAgICAgICAgbnVtYmVyIG9mIHJlY2VpdmVkIGRhdGEgZWxlbWVudHMuCisgICogQG5vdGUgIFdoZW4gVUFSVCBwYXJpdHkgaXMgbm90IGVuYWJsZWQgKFBDRSA9IDApLCBhbmQgV29yZCBMZW5ndGggaXMgY29uZmlndXJlZCB0byA5IGJpdHMgKE0xLU0wID0gMDEpLAorICAqICAgICAgICB0aGUgcmVjZWl2ZWQgZGF0YSBpcyBoYW5kbGVkIGFzIGEgc2V0IG9mIHVpbnQxNl90LiBJbiB0aGlzIGNhc2UsIFNpemUgbXVzdCBpbmRpY2F0ZSB0aGUgbnVtYmVyCisgICogICAgICAgIG9mIHVpbnQxNl90IGF2YWlsYWJsZSB0aHJvdWdoIHBEYXRhLgorICAqIEBwYXJhbSBodWFydCBVQVJUIGhhbmRsZS4KKyAgKiBAcGFyYW0gcERhdGEgUG9pbnRlciB0byBkYXRhIGJ1ZmZlciAodWludDhfdCBvciB1aW50MTZfdCBkYXRhIGVsZW1lbnRzKS4KKyAgKiBAcGFyYW0gU2l6ZSAgQW1vdW50IG9mIGRhdGEgZWxlbWVudHMgKHVpbnQ4X3Qgb3IgdWludDE2X3QpIHRvIGJlIHJlY2VpdmVkLgorICAqIEByZXR2YWwgSEFMIHN0YXR1cworICAqLworSEFMX1N0YXR1c1R5cGVEZWYgSEFMX1VBUlRFeF9SZWNlaXZlVG9JZGxlX0lUKFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKQoreworICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXM7CisKKyAgLyogQ2hlY2sgdGhhdCBhIFJ4IHByb2Nlc3MgaXMgbm90IGFscmVhZHkgb25nb2luZyAqLworICBpZiAoaHVhcnQtPlJ4U3RhdGUgPT0gSEFMX1VBUlRfU1RBVEVfUkVBRFkpCisgIHsKKyAgICBpZiAoKHBEYXRhID09IE5VTEwpIHx8IChTaXplID09IDBVKSkKKyAgICB7CisgICAgICByZXR1cm4gSEFMX0VSUk9SOworICAgIH0KKworICAgIF9fSEFMX0xPQ0soaHVhcnQpOworCisgICAgLyogU2V0IFJlY2VwdGlvbiB0eXBlIHRvIHJlY2VwdGlvbiB0aWxsIElETEUgRXZlbnQqLworICAgIGh1YXJ0LT5SZWNlcHRpb25UeXBlID0gSEFMX1VBUlRfUkVDRVBUSU9OX1RPSURMRTsKKworICAgIHN0YXR1cyA9ICBVQVJUX1N0YXJ0X1JlY2VpdmVfSVQoaHVhcnQsIHBEYXRhLCBTaXplKTsKKworICAgIC8qIENoZWNrIFJ4IHByb2Nlc3MgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHN0YXJ0ZWQgKi8KKyAgICBpZiAoc3RhdHVzID09IEhBTF9PSykKKyAgICB7CisgICAgICBpZiAoaHVhcnQtPlJlY2VwdGlvblR5cGUgPT0gSEFMX1VBUlRfUkVDRVBUSU9OX1RPSURMRSkKKyAgICAgIHsKKyAgICAgICAgX19IQUxfVUFSVF9DTEVBUl9GTEFHKGh1YXJ0LCBVQVJUX0NMRUFSX0lETEVGKTsKKyAgICAgICAgU0VUX0JJVChodWFydC0+SW5zdGFuY2UtPkNSMSwgVVNBUlRfQ1IxX0lETEVJRSk7CisgICAgICB9CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIC8qIEluIGNhc2Ugb2YgZXJyb3JzIGFscmVhZHkgcGVuZGluZyB3aGVuIHJlY2VwdGlvbiBpcyBzdGFydGVkLAorICAgICAgICAgICBJbnRlcnJ1cHRzIG1heSBoYXZlIGFscmVhZHkgYmVlbiByYWlzZWQgYW5kIGxlYWQgdG8gcmVjZXB0aW9uIGFib3J0aW9uLgorICAgICAgICAgICAoT3ZlcnJ1biBlcnJvciBmb3IgaW5zdGFuY2UpLgorICAgICAgICAgICBJbiBzdWNoIGNhc2UgUmVjZXB0aW9uIFR5cGUgaGFzIGJlZW4gcmVzZXQgdG8gSEFMX1VBUlRfUkVDRVBUSU9OX1NUQU5EQVJELiAqLworICAgICAgICBzdGF0dXMgPSBIQUxfRVJST1I7CisgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKKyAgfQorICBlbHNlCisgIHsKKyAgICByZXR1cm4gSEFMX0JVU1k7CisgIH0KK30KKworLyoqCisgICogQGJyaWVmIFJlY2VpdmUgYW4gYW1vdW50IG9mIGRhdGEgaW4gRE1BIG1vZGUgdGlsbCBlaXRoZXIgdGhlIGV4cGVjdGVkIG51bWJlcgorICAqICAgICAgICBvZiBkYXRhIGlzIHJlY2VpdmVkIG9yIGFuIElETEUgZXZlbnQgb2NjdXJzLgorICAqIEBub3RlICBSZWNlcHRpb24gaXMgaW5pdGlhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FsbC4gRnVydGhlciBwcm9ncmVzcyBvZiByZWNlcHRpb24gaXMgYWNoaWV2ZWQgdGhhbmtzCisgICogICAgICAgIHRvIERNQSBzZXJ2aWNlcywgdHJhbnNmZXJyaW5nIGF1dG9tYXRpY2FsbHkgcmVjZWl2ZWQgZGF0YSBlbGVtZW50cyBpbiB1c2VyIHJlY2VwdGlvbiBidWZmZXIgYW5kCisgICogICAgICAgIGNhbGxpbmcgcmVnaXN0ZXJlZCBjYWxsYmFja3MgYXQgaGFsZi9lbmQgb2YgcmVjZXB0aW9uLiBVQVJUIElETEUgZXZlbnRzIGFyZSBhbHNvIHVzZWQgdG8gY29uc2lkZXIKKyAgKiAgICAgICAgcmVjZXB0aW9uIHBoYXNlIGFzIGVuZGVkLiBJbiBhbGwgY2FzZXMsIGNhbGxiYWNrIGV4ZWN1dGlvbiB3aWxsIGluZGljYXRlIG51bWJlciBvZiByZWNlaXZlZCBkYXRhIGVsZW1lbnRzLgorICAqIEBub3RlICBXaGVuIHRoZSBVQVJUIHBhcml0eSBpcyBlbmFibGVkIChQQ0UgPSAxKSwgdGhlIHJlY2VpdmVkIGRhdGEgY29udGFpbgorICAqICAgICAgICB0aGUgcGFyaXR5IGJpdCAoTVNCIHBvc2l0aW9uKS4KKyAgKiBAbm90ZSAgV2hlbiBVQVJUIHBhcml0eSBpcyBub3QgZW5hYmxlZCAoUENFID0gMCksIGFuZCBXb3JkIExlbmd0aCBpcyBjb25maWd1cmVkIHRvIDkgYml0cyAoTTEtTTAgPSAwMSksCisgICogICAgICAgIHRoZSByZWNlaXZlZCBkYXRhIGlzIGhhbmRsZWQgYXMgYSBzZXQgb2YgdWludDE2X3QuIEluIHRoaXMgY2FzZSwgU2l6ZSBtdXN0IGluZGljYXRlIHRoZSBudW1iZXIKKyAgKiAgICAgICAgb2YgdWludDE2X3QgYXZhaWxhYmxlIHRocm91Z2ggcERhdGEuCisgICogQHBhcmFtIGh1YXJ0IFVBUlQgaGFuZGxlLgorICAqIEBwYXJhbSBwRGF0YSBQb2ludGVyIHRvIGRhdGEgYnVmZmVyICh1aW50OF90IG9yIHVpbnQxNl90IGRhdGEgZWxlbWVudHMpLgorICAqIEBwYXJhbSBTaXplICBBbW91bnQgb2YgZGF0YSBlbGVtZW50cyAodWludDhfdCBvciB1aW50MTZfdCkgdG8gYmUgcmVjZWl2ZWQuCisgICogQHJldHZhbCBIQUwgc3RhdHVzCisgICovCitIQUxfU3RhdHVzVHlwZURlZiBIQUxfVUFSVEV4X1JlY2VpdmVUb0lkbGVfRE1BKFVBUlRfSGFuZGxlVHlwZURlZiAqaHVhcnQsIHVpbnQ4X3QgKnBEYXRhLCB1aW50MTZfdCBTaXplKQoreworICBIQUxfU3RhdHVzVHlwZURlZiBzdGF0dXM7CisKKyAgLyogQ2hlY2sgdGhhdCBhIFJ4IHByb2Nlc3MgaXMgbm90IGFscmVhZHkgb25nb2luZyAqLworICBpZiAoaHVhcnQtPlJ4U3RhdGUgPT0gSEFMX1VBUlRfU1RBVEVfUkVBRFkpCisgIHsKKyAgICBpZiAoKHBEYXRhID09IE5VTEwpIHx8IChTaXplID09IDBVKSkKKyAgICB7CisgICAgICByZXR1cm4gSEFMX0VSUk9SOworICAgIH0KKworICAgIF9fSEFMX0xPQ0soaHVhcnQpOworCisgICAgLyogU2V0IFJlY2VwdGlvbiB0eXBlIHRvIHJlY2VwdGlvbiB0aWxsIElETEUgRXZlbnQqLworICAgIGh1YXJ0LT5SZWNlcHRpb25UeXBlID0gSEFMX1VBUlRfUkVDRVBUSU9OX1RPSURMRTsKKworICAgIHN0YXR1cyA9ICBVQVJUX1N0YXJ0X1JlY2VpdmVfRE1BKGh1YXJ0LCBwRGF0YSwgU2l6ZSk7CisKKyAgICAvKiBDaGVjayBSeCBwcm9jZXNzIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBzdGFydGVkICovCisgICAgaWYgKHN0YXR1cyA9PSBIQUxfT0spCisgICAgeworICAgICAgaWYgKGh1YXJ0LT5SZWNlcHRpb25UeXBlID09IEhBTF9VQVJUX1JFQ0VQVElPTl9UT0lETEUpCisgICAgICB7CisgICAgICAgIF9fSEFMX1VBUlRfQ0xFQVJfRkxBRyhodWFydCwgVUFSVF9DTEVBUl9JRExFRik7CisgICAgICAgIFNFVF9CSVQoaHVhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9JRExFSUUpOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICAvKiBJbiBjYXNlIG9mIGVycm9ycyBhbHJlYWR5IHBlbmRpbmcgd2hlbiByZWNlcHRpb24gaXMgc3RhcnRlZCwKKyAgICAgICAgICAgSW50ZXJydXB0cyBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gcmFpc2VkIGFuZCBsZWFkIHRvIHJlY2VwdGlvbiBhYm9ydGlvbi4KKyAgICAgICAgICAgKE92ZXJydW4gZXJyb3IgZm9yIGluc3RhbmNlKS4KKyAgICAgICAgICAgSW4gc3VjaCBjYXNlIFJlY2VwdGlvbiBUeXBlIGhhcyBiZWVuIHJlc2V0IHRvIEhBTF9VQVJUX1JFQ0VQVElPTl9TVEFOREFSRC4gKi8KKyAgICAgICAgc3RhdHVzID0gSEFMX0VSUk9SOworICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBzdGF0dXM7CisgIH0KKyAgZWxzZQorICB7CisgICAgcmV0dXJuIEhBTF9CVVNZOworICB9Cit9CisKKy8qKgogICAqIEB9CiAgICovCiAKZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfaGFsX3VzYXJ0LmMgYi9TcmMvc3RtMzJmN3h4X2hhbF91c2FydC5jCmluZGV4IDkyZjI3YWIuLjFmYzU5MWUgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3VzYXJ0LmMKKysrIGIvU3JjL3N0bTMyZjd4eF9oYWxfdXNhcnQuYwpAQCAtMzksNyArMzksOCBAQAogICAgICAgICAgICAgKCsrKykgQ29uZmlndXJlIHRoZSBkZWNsYXJlZCBETUEgaGFuZGxlIHN0cnVjdHVyZSB3aXRoIHRoZSByZXF1aXJlZCBUeC9SeCBwYXJhbWV0ZXJzLgogICAgICAgICAgICAgKCsrKykgQ29uZmlndXJlIHRoZSBETUEgVHgvUnggY2hhbm5lbC4KICAgICAgICAgICAgICgrKyspIEFzc29jaWF0ZSB0aGUgaW5pdGlhbGl6ZWQgRE1BIGhhbmRsZSB0byB0aGUgVVNBUlQgRE1BIFR4L1J4IGhhbmRsZS4KLSAgICAgICAgICAgICgrKyspIENvbmZpZ3VyZSB0aGUgcHJpb3JpdHkgYW5kIGVuYWJsZSB0aGUgTlZJQyBmb3IgdGhlIHRyYW5zZmVyIGNvbXBsZXRlIGludGVycnVwdCBvbiB0aGUgRE1BIFR4L1J4IGNoYW5uZWwuCisgICAgICAgICAgICAoKysrKSBDb25maWd1cmUgdGhlIHByaW9yaXR5IGFuZCBlbmFibGUgdGhlIE5WSUMgZm9yIHRoZSB0cmFuc2ZlcgorICAgICAgICAgICAgICAgICAgY29tcGxldGUgaW50ZXJydXB0IG9uIHRoZSBETUEgVHgvUnggY2hhbm5lbC4KIAogICAgICAgKCMpIFByb2dyYW0gdGhlIEJhdWQgUmF0ZSwgV29yZCBMZW5ndGgsIFN0b3AgQml0LCBQYXJpdHksIGFuZCBNb2RlCiAgICAgICAgICAgKFJlY2VpdmVyL1RyYW5zbWl0dGVyKSBpbiB0aGUgaHVzYXJ0IGhhbmRsZSBJbml0IHN0cnVjdHVyZS4KQEAgLTUxMCw5ICs1MTEsOSBAQAogfQogCiAvKioKLSAgKiBAYnJpZWYgIFVucmVnaXN0ZXIgYW4gVUFSVCBDYWxsYmFjawotICAqICAgICAgICAgVUFSVCBjYWxsYWJhY2sgaXMgcmVkaXJlY3RlZCB0byB0aGUgd2VhayBwcmVkZWZpbmVkIGNhbGxiYWNrCi0gICogQHBhcmFtICBodXNhcnQgdWFydCBoYW5kbGUKKyAgKiBAYnJpZWYgIFVucmVnaXN0ZXIgYW4gVVNBUlQgQ2FsbGJhY2sKKyAgKiAgICAgICAgIFVTQVJUIGNhbGxhYmFjayBpcyByZWRpcmVjdGVkIHRvIHRoZSB3ZWFrIHByZWRlZmluZWQgY2FsbGJhY2sKKyAgKiBAcGFyYW0gIGh1c2FydCB1c2FydCBoYW5kbGUKICAgKiBAcGFyYW0gIENhbGxiYWNrSUQgSUQgb2YgdGhlIGNhbGxiYWNrIHRvIGJlIHVucmVnaXN0ZXJlZAogICAqICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKICAgKiAgICAgICAgICAgQGFyZyBAcmVmIEhBTF9VU0FSVF9UWF9IQUxGQ09NUExFVEVfQ0JfSUQgVHggSGFsZiBDb21wbGV0ZSBDYWxsYmFjayBJRApAQCAtNTM4LDQwICs1MzksNDAgQEAKICAgICBzd2l0Y2ggKENhbGxiYWNrSUQpCiAgICAgewogICAgICAgY2FzZSBIQUxfVVNBUlRfVFhfSEFMRkNPTVBMRVRFX0NCX0lEIDoKLSAgICAgICAgaHVzYXJ0LT5UeEhhbGZDcGx0Q2FsbGJhY2sgPSBIQUxfVVNBUlRfVHhIYWxmQ3BsdENhbGxiYWNrOyAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrICBUeEhhbGZDcGx0Q2FsbGJhY2sgICAgICAgKi8KKyAgICAgICAgaHVzYXJ0LT5UeEhhbGZDcGx0Q2FsbGJhY2sgPSBIQUxfVVNBUlRfVHhIYWxmQ3BsdENhbGxiYWNrOyAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrICBUeEhhbGZDcGx0Q2FsbGJhY2sgICovCiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9VU0FSVF9UWF9DT01QTEVURV9DQl9JRCA6Ci0gICAgICAgIGh1c2FydC0+VHhDcGx0Q2FsbGJhY2sgPSBIQUxfVVNBUlRfVHhDcGx0Q2FsbGJhY2s7ICAgICAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBUeENwbHRDYWxsYmFjayAgICAgICAgICAgICovCisgICAgICAgIGh1c2FydC0+VHhDcGx0Q2FsbGJhY2sgPSBIQUxfVVNBUlRfVHhDcGx0Q2FsbGJhY2s7ICAgICAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBUeENwbHRDYWxsYmFjayAgICAgICAqLwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVVNBUlRfUlhfSEFMRkNPTVBMRVRFX0NCX0lEIDoKLSAgICAgICAgaHVzYXJ0LT5SeEhhbGZDcGx0Q2FsbGJhY2sgPSBIQUxfVVNBUlRfUnhIYWxmQ3BsdENhbGxiYWNrOyAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIFJ4SGFsZkNwbHRDYWxsYmFjayAgICAgICAgKi8KKyAgICAgICAgaHVzYXJ0LT5SeEhhbGZDcGx0Q2FsbGJhY2sgPSBIQUxfVVNBUlRfUnhIYWxmQ3BsdENhbGxiYWNrOyAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIFJ4SGFsZkNwbHRDYWxsYmFjayAgICovCiAgICAgICAgIGJyZWFrOwogCiAgICAgICBjYXNlIEhBTF9VU0FSVF9SWF9DT01QTEVURV9DQl9JRCA6Ci0gICAgICAgIGh1c2FydC0+UnhDcGx0Q2FsbGJhY2sgPSBIQUxfVVNBUlRfUnhDcGx0Q2FsbGJhY2s7ICAgICAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBSeENwbHRDYWxsYmFjayAgICAgICAgICAgICovCisgICAgICAgIGh1c2FydC0+UnhDcGx0Q2FsbGJhY2sgPSBIQUxfVVNBUlRfUnhDcGx0Q2FsbGJhY2s7ICAgICAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBSeENwbHRDYWxsYmFjayAgICAgICAqLwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVVNBUlRfVFhfUlhfQ09NUExFVEVfQ0JfSUQgOgotICAgICAgICBodXNhcnQtPlR4UnhDcGx0Q2FsbGJhY2sgPSBIQUxfVVNBUlRfVHhSeENwbHRDYWxsYmFjazsgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgVHhSeENwbHRDYWxsYmFjayAgICAgICAgICAgICovCisgICAgICAgIGh1c2FydC0+VHhSeENwbHRDYWxsYmFjayA9IEhBTF9VU0FSVF9UeFJ4Q3BsdENhbGxiYWNrOyAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBUeFJ4Q3BsdENhbGxiYWNrICAgICAqLwogICAgICAgICBicmVhazsKIAogICAgICAgY2FzZSBIQUxfVVNBUlRfRVJST1JfQ0JfSUQgOgotICAgICAgICBodXNhcnQtPkVycm9yQ2FsbGJhY2sgPSBIQUxfVVNBUlRfRXJyb3JDYWxsYmFjazsgICAgICAgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgRXJyb3JDYWxsYmFjayAgICAgICAgICAgICAqLworICAgICAgICBodXNhcnQtPkVycm9yQ2FsbGJhY2sgPSBIQUxfVVNBUlRfRXJyb3JDYWxsYmFjazsgICAgICAgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgRXJyb3JDYWxsYmFjayAgICAgICAgKi8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1VTQVJUX0FCT1JUX0NPTVBMRVRFX0NCX0lEIDoKLSAgICAgICAgaHVzYXJ0LT5BYm9ydENwbHRDYWxsYmFjayA9IEhBTF9VU0FSVF9BYm9ydENwbHRDYWxsYmFjazsgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEFib3J0Q3BsdENhbGxiYWNrICAgICAgICAgKi8KKyAgICAgICAgaHVzYXJ0LT5BYm9ydENwbHRDYWxsYmFjayA9IEhBTF9VU0FSVF9BYm9ydENwbHRDYWxsYmFjazsgICAgICAgICAgICAgICAgIC8qIExlZ2FjeSB3ZWFrIEFib3J0Q3BsdENhbGxiYWNrICAgICovCiAgICAgICAgIGJyZWFrOwogCiAKICAgICAgIGNhc2UgSEFMX1VTQVJUX01TUElOSVRfQ0JfSUQgOgotICAgICAgICBodXNhcnQtPk1zcEluaXRDYWxsYmFjayA9IEhBTF9VU0FSVF9Nc3BJbml0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgTXNwSW5pdENhbGxiYWNrICAgICAgICAgICAqLworICAgICAgICBodXNhcnQtPk1zcEluaXRDYWxsYmFjayA9IEhBTF9VU0FSVF9Nc3BJbml0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTGVnYWN5IHdlYWsgTXNwSW5pdENhbGxiYWNrICAgICAgKi8KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgSEFMX1VTQVJUX01TUERFSU5JVF9DQl9JRCA6Ci0gICAgICAgIGh1c2FydC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfVVNBUlRfTXNwRGVJbml0OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBNc3BEZUluaXRDYWxsYmFjayAgICAgICAgICovCisgICAgICAgIGh1c2FydC0+TXNwRGVJbml0Q2FsbGJhY2sgPSBIQUxfVVNBUlRfTXNwRGVJbml0OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMZWdhY3kgd2VhayBNc3BEZUluaXRDYWxsYmFjayAgICAqLwogICAgICAgICBicmVhazsKIAogICAgICAgZGVmYXVsdCA6CkBAIC02OTAsMTMgKzY5MSwxNiBAQAogICAgICgjKSBJbiBOb24tQmxvY2tpbmcgbW9kZSB0cmFuc2ZlcnMsIHBvc3NpYmxlIGVycm9ycyBhcmUgc3BsaXQgaW50byAyIGNhdGVnb3JpZXMuCiAgICAgICAgIEVycm9ycyBhcmUgaGFuZGxlZCBhcyBmb2xsb3dzIDoKICAgICAgICAgKCsrKSBFcnJvciBpcyBjb25zaWRlcmVkIGFzIFJlY292ZXJhYmxlIGFuZCBub24gYmxvY2tpbmcgOiBUcmFuc2ZlciBjb3VsZCBnbyB0aWxsIGVuZCwgYnV0IGVycm9yIHNldmVyaXR5IGlzCi0gICAgICAgICAgICAgdG8gYmUgZXZhbHVhdGVkIGJ5IHVzZXIgOiB0aGlzIGNvbmNlcm5zIEZyYW1lIEVycm9yLCBQYXJpdHkgRXJyb3Igb3IgTm9pc2UgRXJyb3IgaW4gSW50ZXJydXB0IG1vZGUgcmVjZXB0aW9uIC4KLSAgICAgICAgICAgICBSZWNlaXZlZCBjaGFyYWN0ZXIgaXMgdGhlbiByZXRyaWV2ZWQgYW5kIHN0b3JlZCBpbiBSeCBidWZmZXIsIEVycm9yIGNvZGUgaXMgc2V0IHRvIGFsbG93IHVzZXIgdG8gaWRlbnRpZnkgZXJyb3IgdHlwZSwKLSAgICAgICAgICAgICBhbmQgSEFMX1VTQVJUX0Vycm9yQ2FsbGJhY2soKSB1c2VyIGNhbGxiYWNrIGlzIGV4ZWN1dGVkLiBUcmFuc2ZlciBpcyBrZXB0IG9uZ29pbmcgb24gVVNBUlQgc2lkZS4KKyAgICAgICAgICAgICB0byBiZSBldmFsdWF0ZWQgYnkgdXNlciA6IHRoaXMgY29uY2VybnMgRnJhbWUgRXJyb3IsCisgICAgICAgICAgICAgUGFyaXR5IEVycm9yIG9yIE5vaXNlIEVycm9yIGluIEludGVycnVwdCBtb2RlIHJlY2VwdGlvbiAuCisgICAgICAgICAgICAgUmVjZWl2ZWQgY2hhcmFjdGVyIGlzIHRoZW4gcmV0cmlldmVkIGFuZCBzdG9yZWQgaW4gUnggYnVmZmVyLCBFcnJvciBjb2RlIGlzIHNldCB0byBhbGxvdyB1c2VyIHRvIGlkZW50aWZ5CisgICAgICAgICAgICAgZXJyb3IgdHlwZSwgYW5kIEhBTF9VU0FSVF9FcnJvckNhbGxiYWNrKCkgdXNlciBjYWxsYmFjayBpcyBleGVjdXRlZC4KKyAgICAgICAgICAgICBUcmFuc2ZlciBpcyBrZXB0IG9uZ29pbmcgb24gVVNBUlQgc2lkZS4KICAgICAgICAgICAgICBJZiB1c2VyIHdhbnRzIHRvIGFib3J0IGl0LCBBYm9ydCBzZXJ2aWNlcyBzaG91bGQgYmUgY2FsbGVkIGJ5IHVzZXIuCiAgICAgICAgICgrKykgRXJyb3IgaXMgY29uc2lkZXJlZCBhcyBCbG9ja2luZyA6IFRyYW5zZmVyIGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQgcHJvcGVybHkgYW5kIGlzIGFib3J0ZWQuCiAgICAgICAgICAgICAgVGhpcyBjb25jZXJucyBPdmVycnVuIEVycm9yIEluIEludGVycnVwdCBtb2RlIHJlY2VwdGlvbiBhbmQgYWxsIGVycm9ycyBpbiBETUEgbW9kZS4KLSAgICAgICAgICAgICBFcnJvciBjb2RlIGlzIHNldCB0byBhbGxvdyB1c2VyIHRvIGlkZW50aWZ5IGVycm9yIHR5cGUsIGFuZCBIQUxfVVNBUlRfRXJyb3JDYWxsYmFjaygpIHVzZXIgY2FsbGJhY2sgaXMgZXhlY3V0ZWQuCisgICAgICAgICAgICAgRXJyb3IgY29kZSBpcyBzZXQgdG8gYWxsb3cgdXNlciB0byBpZGVudGlmeSBlcnJvciB0eXBlLAorICAgICAgICAgICAgIGFuZCBIQUxfVVNBUlRfRXJyb3JDYWxsYmFjaygpIHVzZXIgY2FsbGJhY2sgaXMgZXhlY3V0ZWQuCiAKIEBlbmR2ZXJiYXRpbQogICAqIEB7CkBAIC03MDQsNyArNzA4LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBTaW1wbGV4IHNlbmQgYW4gYW1vdW50IG9mIGRhdGEgaW4gYmxvY2tpbmcgbW9kZS4KLSAgKiBAbm90ZSAgIFdoZW4gVUFSVCBwYXJpdHkgaXMgbm90IGVuYWJsZWQgKFBDRSA9IDApLCBhbmQgV29yZCBMZW5ndGggaXMgY29uZmlndXJlZCB0byA5IGJpdHMgKE0xLU0wID0gMDEpLAorICAqIEBub3RlICAgV2hlbiBVU0FSVCBwYXJpdHkgaXMgbm90IGVuYWJsZWQgKFBDRSA9IDApLCBhbmQgV29yZCBMZW5ndGggaXMgY29uZmlndXJlZCB0byA5IGJpdHMgKE0xLU0wID0gMDEpLAogICAqICAgICAgICAgdGhlIHNlbnQgZGF0YSBpcyBoYW5kbGVkIGFzIGEgc2V0IG9mIHUxNi4gSW4gdGhpcyBjYXNlLCBTaXplIG11c3QgaW5kaWNhdGUgdGhlIG51bWJlcgogICAqICAgICAgICAgb2YgdTE2IHByb3ZpZGVkIHRocm91Z2ggcFR4RGF0YS4KICAgKiBAcGFyYW0gIGh1c2FydCBVU0FSVCBoYW5kbGUuCkBAIC03MzIsNyArNzM2LDcgQEAKICAgICBodXNhcnQtPkVycm9yQ29kZSA9IEhBTF9VU0FSVF9FUlJPUl9OT05FOwogICAgIGh1c2FydC0+U3RhdGUgPSBIQUxfVVNBUlRfU1RBVEVfQlVTWV9UWDsKIAotICAgIC8qIEluaXQgdGlja3N0YXJ0IGZvciB0aW1lb3V0IG1hbmFnbWVudCovCisgICAgLyogSW5pdCB0aWNrc3RhcnQgZm9yIHRpbWVvdXQgbWFuYWdlbWVudCAqLwogICAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CiAKICAgICBodXNhcnQtPlR4WGZlclNpemUgPSBTaXplOwpAQCAtODAxLDcgKzgwNSw3IEBACiAvKioKICAgKiBAYnJpZWYgUmVjZWl2ZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBibG9ja2luZyBtb2RlLgogICAqIEBub3RlICAgVG8gcmVjZWl2ZSBzeW5jaHJvbm91cyBkYXRhLCBkdW1teSBkYXRhIGFyZSBzaW11bHRhbmVvdXNseSB0cmFuc21pdHRlZC4KLSAgKiBAbm90ZSAgIFdoZW4gVUFSVCBwYXJpdHkgaXMgbm90IGVuYWJsZWQgKFBDRSA9IDApLCBhbmQgV29yZCBMZW5ndGggaXMgY29uZmlndXJlZCB0byA5IGJpdHMgKE0xLU0wID0gMDEpLAorICAqIEBub3RlICAgV2hlbiBVU0FSVCBwYXJpdHkgaXMgbm90IGVuYWJsZWQgKFBDRSA9IDApLCBhbmQgV29yZCBMZW5ndGggaXMgY29uZmlndXJlZCB0byA5IGJpdHMgKE0xLU0wID0gMDEpLAogICAqICAgICAgICAgdGhlIHJlY2VpdmVkIGRhdGEgaXMgaGFuZGxlZCBhcyBhIHNldCBvZiB1MTYuIEluIHRoaXMgY2FzZSwgU2l6ZSBtdXN0IGluZGljYXRlIHRoZSBudW1iZXIKICAgKiAgICAgICAgIG9mIHUxNiBhdmFpbGFibGUgdGhyb3VnaCBwUnhEYXRhLgogICAqIEBwYXJhbSBodXNhcnQgVVNBUlQgaGFuZGxlLgpAQCAtODMwLDcgKzgzNCw3IEBACiAgICAgaHVzYXJ0LT5FcnJvckNvZGUgPSBIQUxfVVNBUlRfRVJST1JfTk9ORTsKICAgICBodXNhcnQtPlN0YXRlID0gSEFMX1VTQVJUX1NUQVRFX0JVU1lfUlg7CiAKLSAgICAvKiBJbml0IHRpY2tzdGFydCBmb3IgdGltZW91dCBtYW5hZ21lbnQqLworICAgIC8qIEluaXQgdGlja3N0YXJ0IGZvciB0aW1lb3V0IG1hbmFnZW1lbnQgKi8KICAgICB0aWNrc3RhcnQgPSBIQUxfR2V0VGljaygpOwogCiAgICAgaHVzYXJ0LT5SeFhmZXJTaXplID0gU2l6ZTsKQEAgLTkwNSw3ICs5MDksNyBAQAogCiAvKioKICAgKiBAYnJpZWYgRnVsbC1EdXBsZXggU2VuZCBhbmQgUmVjZWl2ZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBibG9ja2luZyBtb2RlLgotICAqIEBub3RlICAgV2hlbiBVQVJUIHBhcml0eSBpcyBub3QgZW5hYmxlZCAoUENFID0gMCksIGFuZCBXb3JkIExlbmd0aCBpcyBjb25maWd1cmVkIHRvIDkgYml0cyAoTTEtTTAgPSAwMSksCisgICogQG5vdGUgICBXaGVuIFVTQVJUIHBhcml0eSBpcyBub3QgZW5hYmxlZCAoUENFID0gMCksIGFuZCBXb3JkIExlbmd0aCBpcyBjb25maWd1cmVkIHRvIDkgYml0cyAoTTEtTTAgPSAwMSksCiAgICogICAgICAgICB0aGUgc2VudCBkYXRhIGFuZCB0aGUgcmVjZWl2ZWQgZGF0YSBhcmUgaGFuZGxlZCBhcyBzZXRzIG9mIHUxNi4gSW4gdGhpcyBjYXNlLCBTaXplIG11c3QgaW5kaWNhdGUgdGhlIG51bWJlcgogICAqICAgICAgICAgb2YgdTE2IGF2YWlsYWJsZSB0aHJvdWdoIHBUeERhdGEgYW5kIHRocm91Z2ggcFJ4RGF0YS4KICAgKiBAcGFyYW0gIGh1c2FydCBVU0FSVCBoYW5kbGUuCkBAIC05MzksNyArOTQzLDcgQEAKICAgICBodXNhcnQtPkVycm9yQ29kZSA9IEhBTF9VU0FSVF9FUlJPUl9OT05FOwogICAgIGh1c2FydC0+U3RhdGUgPSBIQUxfVVNBUlRfU1RBVEVfQlVTWV9SWDsKIAotICAgIC8qIEluaXQgdGlja3N0YXJ0IGZvciB0aW1lb3V0IG1hbmFnbWVudCovCisgICAgLyogSW5pdCB0aWNrc3RhcnQgZm9yIHRpbWVvdXQgbWFuYWdlbWVudCAqLwogICAgIHRpY2tzdGFydCA9IEhBTF9HZXRUaWNrKCk7CiAKICAgICBodXNhcnQtPlJ4WGZlclNpemUgPSBTaXplOwpAQCAtMTA1NCw3ICsxMDU4LDcgQEAKIAogLyoqCiAgICogQGJyaWVmICBTZW5kIGFuIGFtb3VudCBvZiBkYXRhIGluIGludGVycnVwdCBtb2RlLgotICAqIEBub3RlICAgV2hlbiBVQVJUIHBhcml0eSBpcyBub3QgZW5hYmxlZCAoUENFID0gMCksIGFuZCBXb3JkIExlbmd0aCBpcyBjb25maWd1cmVkIHRvIDkgYml0cyAoTTEtTTAgPSAwMSksCisgICogQG5vdGUgICBXaGVuIFVTQVJUIHBhcml0eSBpcyBub3QgZW5hYmxlZCAoUENFID0gMCksIGFuZCBXb3JkIExlbmd0aCBpcyBjb25maWd1cmVkIHRvIDkgYml0cyAoTTEtTTAgPSAwMSksCiAgICogICAgICAgICB0aGUgc2VudCBkYXRhIGlzIGhhbmRsZWQgYXMgYSBzZXQgb2YgdTE2LiBJbiB0aGlzIGNhc2UsIFNpemUgbXVzdCBpbmRpY2F0ZSB0aGUgbnVtYmVyCiAgICogICAgICAgICBvZiB1MTYgcHJvdmlkZWQgdGhyb3VnaCBwVHhEYXRhLgogICAqIEBwYXJhbSAgaHVzYXJ0IFVTQVJUIGhhbmRsZS4KQEAgLTExMTcsNyArMTEyMSw3IEBACiAvKioKICAgKiBAYnJpZWYgUmVjZWl2ZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBpbnRlcnJ1cHQgbW9kZS4KICAgKiBAbm90ZSAgIFRvIHJlY2VpdmUgc3luY2hyb25vdXMgZGF0YSwgZHVtbXkgZGF0YSBhcmUgc2ltdWx0YW5lb3VzbHkgdHJhbnNtaXR0ZWQuCi0gICogQG5vdGUgICBXaGVuIFVBUlQgcGFyaXR5IGlzIG5vdCBlbmFibGVkIChQQ0UgPSAwKSwgYW5kIFdvcmQgTGVuZ3RoIGlzIGNvbmZpZ3VyZWQgdG8gOSBiaXRzIChNMS1NMCA9IDAxKSwKKyAgKiBAbm90ZSAgIFdoZW4gVVNBUlQgcGFyaXR5IGlzIG5vdCBlbmFibGVkIChQQ0UgPSAwKSwgYW5kIFdvcmQgTGVuZ3RoIGlzIGNvbmZpZ3VyZWQgdG8gOSBiaXRzIChNMS1NMCA9IDAxKSwKICAgKiAgICAgICAgIHRoZSByZWNlaXZlZCBkYXRhIGlzIGhhbmRsZWQgYXMgYSBzZXQgb2YgdTE2LiBJbiB0aGlzIGNhc2UsIFNpemUgbXVzdCBpbmRpY2F0ZSB0aGUgbnVtYmVyCiAgICogICAgICAgICBvZiB1MTYgYXZhaWxhYmxlIHRocm91Z2ggcFJ4RGF0YS4KICAgKiBAcGFyYW0gIGh1c2FydCBVU0FSVCBoYW5kbGUuCkBAIC0xMTg3LDcgKzExOTEsNyBAQAogCiAvKioKICAgKiBAYnJpZWYgRnVsbC1EdXBsZXggU2VuZCBhbmQgUmVjZWl2ZSBhbiBhbW91bnQgb2YgZGF0YSBpbiBpbnRlcnJ1cHQgbW9kZS4KLSAgKiBAbm90ZSAgIFdoZW4gVUFSVCBwYXJpdHkgaXMgbm90IGVuYWJsZWQgKFBDRSA9IDApLCBhbmQgV29yZCBMZW5ndGggaXMgY29uZmlndXJlZCB0byA5IGJpdHMgKE0xLU0wID0gMDEpLAorICAqIEBub3RlICAgV2hlbiBVU0FSVCBwYXJpdHkgaXMgbm90IGVuYWJsZWQgKFBDRSA9IDApLCBhbmQgV29yZCBMZW5ndGggaXMgY29uZmlndXJlZCB0byA5IGJpdHMgKE0xLU0wID0gMDEpLAogICAqICAgICAgICAgdGhlIHNlbnQgZGF0YSBhbmQgdGhlIHJlY2VpdmVkIGRhdGEgYXJlIGhhbmRsZWQgYXMgc2V0cyBvZiB1MTYuIEluIHRoaXMgY2FzZSwgU2l6ZSBtdXN0IGluZGljYXRlIHRoZSBudW1iZXIKICAgKiAgICAgICAgIG9mIHUxNiBhdmFpbGFibGUgdGhyb3VnaCBwVHhEYXRhIGFuZCB0aHJvdWdoIHBSeERhdGEuCiAgICogQHBhcmFtICBodXNhcnQgVVNBUlQgaGFuZGxlLgpAQCAtMTI1OCw3ICsxMjYyLDcgQEAKIAogLyoqCiAgICogQGJyaWVmIFNlbmQgYW4gYW1vdW50IG9mIGRhdGEgaW4gRE1BIG1vZGUuCi0gICogQG5vdGUgICBXaGVuIFVBUlQgcGFyaXR5IGlzIG5vdCBlbmFibGVkIChQQ0UgPSAwKSwgYW5kIFdvcmQgTGVuZ3RoIGlzIGNvbmZpZ3VyZWQgdG8gOSBiaXRzIChNMS1NMCA9IDAxKSwKKyAgKiBAbm90ZSAgIFdoZW4gVVNBUlQgcGFyaXR5IGlzIG5vdCBlbmFibGVkIChQQ0UgPSAwKSwgYW5kIFdvcmQgTGVuZ3RoIGlzIGNvbmZpZ3VyZWQgdG8gOSBiaXRzIChNMS1NMCA9IDAxKSwKICAgKiAgICAgICAgIHRoZSBzZW50IGRhdGEgaXMgaGFuZGxlZCBhcyBhIHNldCBvZiB1MTYuIEluIHRoaXMgY2FzZSwgU2l6ZSBtdXN0IGluZGljYXRlIHRoZSBudW1iZXIKICAgKiAgICAgICAgIG9mIHUxNiBwcm92aWRlZCB0aHJvdWdoIHBUeERhdGEuCiAgICogQHBhcmFtICBodXNhcnQgVVNBUlQgaGFuZGxlLgpAQCAtMTM0Myw3ICsxMzQ3LDcgQEAKICAgKiBAbm90ZSAgIFdoZW4gdGhlIFVTQVJUIHBhcml0eSBpcyBlbmFibGVkIChQQ0UgPSAxKSwgdGhlIHJlY2VpdmVkIGRhdGEgY29udGFpbgogICAqICAgICAgICAgdGhlIHBhcml0eSBiaXQgKE1TQiBwb3NpdGlvbikuCiAgICogQG5vdGUgICBUaGUgVVNBUlQgRE1BIHRyYW5zbWl0IGNoYW5uZWwgbXVzdCBiZSBjb25maWd1cmVkIGluIG9yZGVyIHRvIGdlbmVyYXRlIHRoZSBjbG9jayBmb3IgdGhlIHNsYXZlLgotICAqIEBub3RlICAgV2hlbiBVQVJUIHBhcml0eSBpcyBub3QgZW5hYmxlZCAoUENFID0gMCksIGFuZCBXb3JkIExlbmd0aCBpcyBjb25maWd1cmVkIHRvIDkgYml0cyAoTTEtTTAgPSAwMSksCisgICogQG5vdGUgICBXaGVuIFVTQVJUIHBhcml0eSBpcyBub3QgZW5hYmxlZCAoUENFID0gMCksIGFuZCBXb3JkIExlbmd0aCBpcyBjb25maWd1cmVkIHRvIDkgYml0cyAoTTEtTTAgPSAwMSksCiAgICogICAgICAgICB0aGUgcmVjZWl2ZWQgZGF0YSBpcyBoYW5kbGVkIGFzIGEgc2V0IG9mIHUxNi4gSW4gdGhpcyBjYXNlLCBTaXplIG11c3QgaW5kaWNhdGUgdGhlIG51bWJlcgogICAqICAgICAgICAgb2YgdTE2IGF2YWlsYWJsZSB0aHJvdWdoIHBSeERhdGEuCiAgICogQHBhcmFtICBodXNhcnQgVVNBUlQgaGFuZGxlLgpAQCAtMTQ1Nyw3ICsxNDYxLDcgQEAKIC8qKgogICAqIEBicmllZiBGdWxsLUR1cGxleCBUcmFuc21pdCBSZWNlaXZlIGFuIGFtb3VudCBvZiBkYXRhIGluIG5vbi1ibG9ja2luZyBtb2RlLgogICAqIEBub3RlICAgV2hlbiB0aGUgVVNBUlQgcGFyaXR5IGlzIGVuYWJsZWQgKFBDRSA9IDEpIHRoZSBkYXRhIHJlY2VpdmVkIGNvbnRhaW4gdGhlIHBhcml0eSBiaXQuCi0gICogQG5vdGUgICBXaGVuIFVBUlQgcGFyaXR5IGlzIG5vdCBlbmFibGVkIChQQ0UgPSAwKSwgYW5kIFdvcmQgTGVuZ3RoIGlzIGNvbmZpZ3VyZWQgdG8gOSBiaXRzIChNMS1NMCA9IDAxKSwKKyAgKiBAbm90ZSAgIFdoZW4gVVNBUlQgcGFyaXR5IGlzIG5vdCBlbmFibGVkIChQQ0UgPSAwKSwgYW5kIFdvcmQgTGVuZ3RoIGlzIGNvbmZpZ3VyZWQgdG8gOSBiaXRzIChNMS1NMCA9IDAxKSwKICAgKiAgICAgICAgIHRoZSBzZW50IGRhdGEgYW5kIHRoZSByZWNlaXZlZCBkYXRhIGFyZSBoYW5kbGVkIGFzIHNldHMgb2YgdTE2LiBJbiB0aGlzIGNhc2UsIFNpemUgbXVzdCBpbmRpY2F0ZSB0aGUgbnVtYmVyCiAgICogICAgICAgICBvZiB1MTYgYXZhaWxhYmxlIHRocm91Z2ggcFR4RGF0YSBhbmQgdGhyb3VnaCBwUnhEYXRhLgogICAqIEBwYXJhbSAgaHVzYXJ0IFVTQVJUIGhhbmRsZS4KQEAgLTE2NDgsNyArMTY1Miw3IEBACiAgICAgLyogQ2xlYXIgdGhlIE92ZXJydW4gZmxhZyBiZWZvcmUgcmVzdW1pbmcgdGhlIFJ4IHRyYW5zZmVyKi8KICAgICBfX0hBTF9VU0FSVF9DTEVBUl9GTEFHKGh1c2FydCwgVVNBUlRfQ0xFQVJfT1JFRik7CiAKLSAgICAvKiBSZWVuYWJsZSBQRSBhbmQgRVJSIChGcmFtZSBlcnJvciwgbm9pc2UgZXJyb3IsIG92ZXJydW4gZXJyb3IpIGludGVycnVwdHMgKi8KKyAgICAvKiBSZS1lbmFibGUgUEUgYW5kIEVSUiAoRnJhbWUgZXJyb3IsIG5vaXNlIGVycm9yLCBvdmVycnVuIGVycm9yKSBpbnRlcnJ1cHRzICovCiAgICAgU0VUX0JJVChodXNhcnQtPkluc3RhbmNlLT5DUjEsIFVTQVJUX0NSMV9QRUlFKTsKICAgICBTRVRfQklUKGh1c2FydC0+SW5zdGFuY2UtPkNSMywgVVNBUlRfQ1IzX0VJRSk7CiAKQEAgLTI3NjMsNyArMjc2Nyw3IEBACiAgIC8qIEluaXRpYWxpemUgdGhlIFVTQVJUIEVycm9yQ29kZSAqLwogICBodXNhcnQtPkVycm9yQ29kZSA9IEhBTF9VU0FSVF9FUlJPUl9OT05FOwogCi0gIC8qIEluaXQgdGlja3N0YXJ0IGZvciB0aW1lb3V0IG1hbmFnbWVudCovCisgIC8qIEluaXQgdGlja3N0YXJ0IGZvciB0aW1lb3V0IG1hbmFnZW1lbnQgKi8KICAgdGlja3N0YXJ0ID0gSEFMX0dldFRpY2soKTsKIAogICAvKiBDaGVjayBpZiB0aGUgVHJhbnNtaXR0ZXIgaXMgZW5hYmxlZCAqLwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9oYWxfd3dkZy5jIGIvU3JjL3N0bTMyZjd4eF9oYWxfd3dkZy5jCmluZGV4IDgyYWY1ZTIuLjRmM2E5ODUgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfaGFsX3d3ZGcuYworKysgYi9TcmMvc3RtMzJmN3h4X2hhbF93d2RnLmMKQEAgLTIxLDYgKzIxLDEzIEBACiAgICAgICAgIGJlZm9yZSB0aGUgY291bnRlciBoYXMgcmVhY2hlZCB0aGUgcmVmcmVzaCB3aW5kb3cgdmFsdWUuIFRoaXMKICAgICAgICAgaW1wbGllcyB0aGF0IHRoZSBjb3VudGVyIG11c3QgYmUgcmVmcmVzaGVkIGluIGEgbGltaXRlZCB3aW5kb3cuCiAgICAgKCspIE9uY2UgZW5hYmxlZCB0aGUgV1dERyBjYW5ub3QgYmUgZGlzYWJsZWQgZXhjZXB0IGJ5IGEgc3lzdGVtIHJlc2V0LgorICAgICgrKSBJZiByZXF1aXJlZCBieSBhcHBsaWNhdGlvbiwgYW4gRWFybHkgV2FrZXVwIEludGVycnVwdCBjYW4gYmUgdHJpZ2dlcmVkCisgICAgICAgIGluIG9yZGVyIHRvIGJlIHdhcm5lZCBiZWZvcmUgV1dERyBleHBpcmF0aW9uLiBUaGUgRWFybHkgV2FrZXVwIEludGVycnVwdAorICAgICAgICAoRVdJKSBjYW4gYmUgdXNlZCBpZiBzcGVjaWZpYyBzYWZldHkgb3BlcmF0aW9ucyBvciBkYXRhIGxvZ2dpbmcgbXVzdAorICAgICAgICBiZSBwZXJmb3JtZWQgYmVmb3JlIHRoZSBhY3R1YWwgcmVzZXQgaXMgZ2VuZXJhdGVkLiBXaGVuIHRoZSBkb3duY291bnRlcgorICAgICAgICByZWFjaGVzIDB4NDAsIGludGVycnVwdCBvY2N1cnMuIFRoaXMgbWVjaGFuaXNtIHJlcXVpcmVzIFdXREcgaW50ZXJydXB0CisgICAgICAgIGxpbmUgdG8gYmUgZW5hYmxlZCBpbiBOVklDLiBPbmNlIGVuYWJsZWQsIEVXSSBpbnRlcnJ1cHQgY2Fubm90IGJlCisgICAgICAgIGRpc2FibGVkIGV4Y2VwdCBieSBhIHN5c3RlbSByZXNldC4KICAgICAoKykgV1dER1JTVCBmbGFnIGluIFJDQyBDU1IgcmVnaXN0ZXIgY2FuIGJlIHVzZWQgdG8gaW5mb3JtIHdoZW4gYSBXV0RHCiAgICAgICAgIHJlc2V0IG9jY3Vycy4KICAgICAoKykgVGhlIFdXREcgY291bnRlciBpbnB1dCBjbG9jayBpcyBkZXJpdmVkIGZyb20gdGhlIEFQQiBjbG9jayBkaXZpZGVkCkBAIC0zMiwxMiArMzksMTIgQEAKICAgICAgICAgKCsrKSBtaW4gdGltZSAobVMpID0gMTAwMCAqIChDb3VudGVyIC0gV2luZG93KSAvIFdXREcgY2xvY2sKICAgICAgICAgKCsrKSBtYXggdGltZSAobVMpID0gMTAwMCAqIChDb3VudGVyIC0gMHg0MCkgLyBXV0RHIGNsb2NrCiAgICAgKCspIFR5cGljYWwgdmFsdWVzOgotICAgICAgICAoKyspIENvdW50ZXIgbWluIChUWzU7MF0gPSAweDAwKSBANTRNSHogKFBDTEsxKSB3aXRoIHplcm8gcHJlc2NhbGVyOgorICAgICAgICAoKyspIENvdW50ZXIgbWluIChUWzU7MF0gPSAweDAwKSBhdCA1NE1IeiAoUENMSzEpIHdpdGggemVybyBwcmVzY2FsZXI6CiAgICAgICAgICAgICAgbWF4IHRpbWVvdXQgYmVmb3JlIHJlc2V0OiBhcHByb3hpbWF0ZWx5IDc1Ljg1tXMKLSAgICAgICAgKCsrKSBDb3VudGVyIG1heCAoVFs1OzBdID0gMHgzRikgQDU0TUh6IChQQ0xLMSkgd2l0aCBwcmVzY2FsZXIgZGl2aWRpbmcgYnkgODoKKyAgICAgICAgKCsrKSBDb3VudGVyIG1heCAoVFs1OzBdID0gMHgzRikgYXQgNTRNSHogKFBDTEsxKSB3aXRoIHByZXNjYWxlcgorICAgICAgICAgICAgIGRpdmlkaW5nIGJ5IDg6CiAgICAgICAgICAgICAgbWF4IHRpbWVvdXQgYmVmb3JlIHJlc2V0OiBhcHByb3hpbWF0ZWx5IDM4LjgzbXMKIAotICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICMjIyMjIEhvdyB0byB1c2UgdGhpcyBkcml2ZXIgIyMjIyMKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKQEAgLTQ2LDE2ICs1MywxNiBAQAogCiAgIFsuLl0KICAgICAoKykgRW5hYmxlIFdXREcgQVBCMSBjbG9jayB1c2luZyBfX0hBTF9SQ0NfV1dER19DTEtfRU5BQkxFKCkuCi0gICAgKCspIFNldCB0aGUgV1dERyBwcmVzY2FsZXIsIHJlZnJlc2ggd2luZG93IGFuZCBjb3VudGVyIHZhbHVlCi0gICAgICAgIHVzaW5nIEhBTF9XV0RHX0luaXQoKSBmdW5jdGlvbi4KLSAgICAoKykgU3RhcnQgdGhlIFdXREcgdXNpbmcgSEFMX1dXREdfU3RhcnQoKSBmdW5jdGlvbi4KLSAgICAgICAgV2hlbiB0aGUgV1dERyBpcyBlbmFibGVkIHRoZSBjb3VudGVyIHZhbHVlIHNob3VsZCBiZSBjb25maWd1cmVkIHRvCi0gICAgICAgIGEgdmFsdWUgZ3JlYXRlciB0aGFuIDB4NDAgdG8gcHJldmVudCBnZW5lcmF0aW5nIGFuIGltbWVkaWF0ZSByZXNldC4KLSAgICAoKykgT3B0aW9uYWxseSB5b3UgY2FuIGVuYWJsZSB0aGUgRWFybHkgV2FrZXVwIEludGVycnVwdCAoRVdJKSB3aGljaCBpcwotICAgICAgICBnZW5lcmF0ZWQgd2hlbiB0aGUgY291bnRlciByZWFjaGVzIDB4NDAsIGFuZCB0aGVuIHN0YXJ0IHRoZSBXV0RHIHVzaW5nCi0gICAgICAgIEhBTF9XV0RHX1N0YXJ0X0lUKCkuIEF0IEVXSSBIQUxfV1dER19XYWtldXBDYWxsYmFjayBpcyBleGVjdXRlZCBhbmQgdXNlciBjYW4KLSAgICAgICAgYWRkIGhpcyBvd24gY29kZSBieSBjdXN0b21pemF0aW9uIG9mIGNhbGxiYWNrIEhBTF9XV0RHX1dha2V1cENhbGxiYWNrLgotICAgICAgICBPbmNlIGVuYWJsZWQsIEVXSSBpbnRlcnJ1cHQgY2Fubm90IGJlIGRpc2FibGVkIGV4Y2VwdCBieSBhIHN5c3RlbSByZXNldC4KKyAgICAoKykgQ29uZmlndXJlIHRoZSBXV0RHIHByZXNjYWxlciwgcmVmcmVzaCB3aW5kb3cgdmFsdWUsIGNvdW50ZXIgdmFsdWUgYW5kIGVhcmx5CisgICAgICAgIGludGVycnVwdCBzdGF0dXMgdXNpbmcgSEFMX1dXREdfSW5pdCgpIGZ1bmN0aW9uLiBUaGlzIHdpbGwgYXV0b21hdGljYWxseQorICAgICAgICBlbmFibGUgV1dERyBhbmQgc3RhcnQgaXRzIGRvd25jb3VudGVyLiBUaW1lIHJlZmVyZW5jZSBjYW4gYmUgdGFrZW4gZnJvbSAKKyAgICAgICAgZnVuY3Rpb24gZXhpdC4gQ2FyZSBtdXN0IGJlIHRha2VuIHRvIHByb3ZpZGUgYSBjb3VudGVyIHZhbHVlCisgICAgICAgIGdyZWF0ZXIgdGhhbiAweDQwIHRvIHByZXZlbnQgZ2VuZXJhdGlvbiBvZiBpbW1lZGlhdGUgcmVzZXQuCisgICAgKCspIElmIHRoZSBFYXJseSBXYWtldXAgSW50ZXJydXB0IChFV0kpIGZlYXR1cmUgaXMgZW5hYmxlZCwgYW4gaW50ZXJydXB0IGlzCisgICAgICAgIGdlbmVyYXRlZCB3aGVuIHRoZSBjb3VudGVyIHJlYWNoZXMgMHg0MC4gV2hlbiBIQUxfV1dER19JUlFIYW5kbGVyIGlzCisgICAgICAgIHRyaWdnZXJlZCBieSB0aGUgaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSwgZmxhZyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgY2xlYXJlZCBhbmQgSEFMX1dXREdfV2FrZXVwQ2FsbGJhY2sgdXNlciBjYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkLiBVc2VyCisgICAgICAgIGNhbiBhZGQgaGlzIG93biBjb2RlIGJ5IGN1c3RvbWl6YXRpb24gb2YgY2FsbGJhY2sgSEFMX1dXREdfV2FrZXVwQ2FsbGJhY2suCiAgICAgKCspIFRoZW4gdGhlIGFwcGxpY2F0aW9uIHByb2dyYW0gbXVzdCByZWZyZXNoIHRoZSBXV0RHIGNvdW50ZXIgYXQgcmVndWxhcgogICAgICAgICBpbnRlcnZhbHMgZHVyaW5nIG5vcm1hbCBvcGVyYXRpb24gdG8gcHJldmVudCBhbiBNQ1UgcmVzZXQsIHVzaW5nCiAgICAgICAgIEhBTF9XV0RHX1JlZnJlc2goKSBmdW5jdGlvbi4gVGhpcyBvcGVyYXRpb24gbXVzdCBvY2N1ciBvbmx5IHdoZW4KQEAgLTY1LDI4ICs3MiwyOCBAQAogICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKICAgWy4uXQotICAgIFRoZSBjb21waWxhdGlvbiBkZWZpbmUgIFVTRV9IQUxfV1dER19SRUdJU1RFUl9DQUxMQkFDS1Mgd2hlbiBzZXQgdG8gMSBhbGxvd3MKKyAgICBUaGUgY29tcGlsYXRpb24gZGVmaW5lIFVTRV9IQUxfV1dER19SRUdJU1RFUl9DQUxMQkFDS1Mgd2hlbiBzZXQgdG8gMSBhbGxvd3MKICAgICB0aGUgdXNlciB0byBjb25maWd1cmUgZHluYW1pY2FsbHkgdGhlIGRyaXZlciBjYWxsYmFja3MuIFVzZSBGdW5jdGlvbnMKLSAgICBAcmVmIEhBTF9XV0RHX1JlZ2lzdGVyQ2FsbGJhY2soKSB0byByZWdpc3RlciBhIHVzZXIgY2FsbGJhY2suCisgICAgSEFMX1dXREdfUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlZ2lzdGVyIGEgdXNlciBjYWxsYmFjay4KIAotICAgICgrKSBGdW5jdGlvbiBAcmVmIEhBTF9XV0RHX1JlZ2lzdGVyQ2FsbGJhY2soKSBhbGxvd3MgdG8gcmVnaXN0ZXIgZm9sbG93aW5nCisgICAgKCspIEZ1bmN0aW9uIEhBTF9XV0RHX1JlZ2lzdGVyQ2FsbGJhY2soKSBhbGxvd3MgdG8gcmVnaXN0ZXIgZm9sbG93aW5nCiAgICAgICAgIGNhbGxiYWNrczoKICAgICAgICAgKCsrKSBFd2lDYWxsYmFjayA6IGNhbGxiYWNrIGZvciBFYXJseSBXYWtlVXAgSW50ZXJydXB0LgogICAgICAgICAoKyspIE1zcEluaXRDYWxsYmFjayA6IFdXREcgTXNwSW5pdC4KICAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIGFzIHBhcmFtZXRlcnMgdGhlIEhBTCBwZXJpcGhlcmFsIGhhbmRsZSwgdGhlIENhbGxiYWNrIElECiAgICAgYW5kIGEgcG9pbnRlciB0byB0aGUgdXNlciBjYWxsYmFjayBmdW5jdGlvbi4KIAotICAgICgrKSBVc2UgZnVuY3Rpb24gQHJlZiBIQUxfV1dER19VblJlZ2lzdGVyQ2FsbGJhY2soKSB0byByZXNldCBhIGNhbGxiYWNrIHRvCi0gICAgdGhlIGRlZmF1bHQgd2VhayAoc3VyY2hhcmdlZCkgZnVuY3Rpb24uIEByZWYgSEFMX1dXREdfVW5SZWdpc3RlckNhbGxiYWNrKCkKKyAgICAoKykgVXNlIGZ1bmN0aW9uIEhBTF9XV0RHX1VuUmVnaXN0ZXJDYWxsYmFjaygpIHRvIHJlc2V0IGEgY2FsbGJhY2sgdG8KKyAgICB0aGUgZGVmYXVsdCB3ZWFrIChzdXJjaGFyZ2VkKSBmdW5jdGlvbi4gSEFMX1dXREdfVW5SZWdpc3RlckNhbGxiYWNrKCkKICAgICB0YWtlcyBhcyBwYXJhbWV0ZXJzIHRoZSBIQUwgcGVyaXBoZXJhbCBoYW5kbGUgYW5kIHRoZSBDYWxsYmFjayBJRC4KICAgICBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0byByZXNldCBmb2xsb3dpbmcgY2FsbGJhY2tzOgogICAgICAgICAoKyspIEV3aUNhbGxiYWNrIDogY2FsbGJhY2sgZm9yICBFYXJseSBXYWtlVXAgSW50ZXJydXB0LgogICAgICAgICAoKyspIE1zcEluaXRDYWxsYmFjayA6IFdXREcgTXNwSW5pdC4KIAogICAgIFsuLl0KLSAgICBXaGVuIGNhbGxpbmcgQHJlZiBIQUxfV1dER19Jbml0IGZ1bmN0aW9uLCBjYWxsYmFja3MgYXJlIHJlc2V0IHRvIHRoZQorICAgIFdoZW4gY2FsbGluZyBIQUxfV1dER19Jbml0IGZ1bmN0aW9uLCBjYWxsYmFja3MgYXJlIHJlc2V0IHRvIHRoZQogICAgIGNvcnJlc3BvbmRpbmcgbGVnYWN5IHdlYWsgKHN1cmNoYXJnZWQpIGZ1bmN0aW9uczoKLSAgICBAcmVmIEhBTF9XV0RHX0Vhcmx5V2FrZXVwQ2FsbGJhY2soKSBhbmQgSEFMX1dXREdfTXNwSW5pdCgpIG9ubHkgaWYgdGhleSBoYXZlCisgICAgSEFMX1dXREdfRWFybHlXYWtldXBDYWxsYmFjaygpIGFuZCBIQUxfV1dER19Nc3BJbml0KCkgb25seSBpZiB0aGV5IGhhdmUKICAgICBub3QgYmVlbiByZWdpc3RlcmVkIGJlZm9yZS4KIAogICAgIFsuLl0KQEAgLTk3LDcgKzEwNCw3IEBACiAgICAgKioqIFdXREcgSEFMIGRyaXZlciBtYWNyb3MgbGlzdCAqKioKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgIFsuLl0KLSAgICAgIEJlbG93IHRoZSBsaXN0IG9mIG1vc3QgdXNlZCBtYWNyb3MgaW4gV1dERyBIQUwgZHJpdmVyLgorICAgICAgQmVsb3cgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIG1hY3JvcyBpbiBXV0RHIEhBTCBkcml2ZXIuCiAgICAgICAoKykgX19IQUxfV1dER19FTkFCTEU6IEVuYWJsZSB0aGUgV1dERyBwZXJpcGhlcmFsCiAgICAgICAoKykgX19IQUxfV1dER19HRVRfRkxBRzogR2V0IHRoZSBzZWxlY3RlZCBXV0RHJ3MgZmxhZyBzdGF0dXMKICAgICAgICgrKSBfX0hBTF9XV0RHX0NMRUFSX0ZMQUc6IENsZWFyIHRoZSBXV0RHJ3MgcGVuZGluZyBmbGFncwpAQCAtMTk4LDcgKzIwNSw3IEBACiAjZWxzZQogICAvKiBJbml0IHRoZSBsb3cgbGV2ZWwgaGFyZHdhcmUgKi8KICAgSEFMX1dXREdfTXNwSW5pdChod3dkZyk7Ci0jZW5kaWYKKyNlbmRpZiAvKiBVU0VfSEFMX1dXREdfUkVHSVNURVJfQ0FMTEJBQ0tTICovCiAKICAgLyogU2V0IFdXREcgQ291bnRlciAqLwogICBXUklURV9SRUcoaHd3ZGctPkluc3RhbmNlLT5DUiwgKFdXREdfQ1JfV0RHQSB8IGh3d2RnLT5Jbml0LkNvdW50ZXIpKTsKQEAgLTI0Myw3ICsyNTAsOCBAQAogICAqIEBwYXJhbSAgcENhbGxiYWNrIHBvaW50ZXIgdG8gdGhlIENhbGxiYWNrIGZ1bmN0aW9uCiAgICogQHJldHZhbCBzdGF0dXMKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIEhBTF9XV0RHX1JlZ2lzdGVyQ2FsbGJhY2soV1dER19IYW5kbGVUeXBlRGVmICpod3dkZywgSEFMX1dXREdfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCwgcFdXREdfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKK0hBTF9TdGF0dXNUeXBlRGVmIEhBTF9XV0RHX1JlZ2lzdGVyQ2FsbGJhY2soV1dER19IYW5kbGVUeXBlRGVmICpod3dkZywgSEFMX1dXREdfQ2FsbGJhY2tJRFR5cGVEZWYgQ2FsbGJhY2tJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFdXREdfQ2FsbGJhY2tUeXBlRGVmIHBDYWxsYmFjaykKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgc3RhdHVzID0gSEFMX09LOwogCkBAIC0zMDQsNyArMzEyLDcgQEAKIAogICByZXR1cm4gc3RhdHVzOwogfQotI2VuZGlmCisjZW5kaWYgLyogVVNFX0hBTF9XV0RHX1JFR0lTVEVSX0NBTExCQUNLUyAqLwogCiAvKioKICAgKiBAfQpAQCAtMzcyLDcgKzM4MCw3IEBACiAjZWxzZQogICAgICAgLyogRWFybHkgV2FrZXVwIGNhbGxiYWNrICovCiAgICAgICBIQUxfV1dER19FYXJseVdha2V1cENhbGxiYWNrKGh3d2RnKTsKLSNlbmRpZgorI2VuZGlmIC8qIFVTRV9IQUxfV1dER19SRUdJU1RFUl9DQUxMQkFDS1MgKi8KICAgICB9CiAgIH0KIH0KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfbGxfYWRjLmMgYi9TcmMvc3RtMzJmN3h4X2xsX2FkYy5jCmluZGV4IGJlYzk0MjkuLjJiY2MyYzkgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfbGxfYWRjLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9sbF9hZGMuYwpAQCAtMzI4LDcgKzMyOCw3IEBACiAKICAgLyogTm90ZTogSGFyZHdhcmUgY29uc3RyYWludCAocmVmZXIgdG8gZGVzY3JpcHRpb24gb2YgZnVuY3Rpb25zICAgICAgICAgICAgICovCiAgIC8qICAgICAgICJMTF9BRENfU2V0Q29tbW9uWFhYKCkiIGFuZCAiTExfQURDX1NldE11bHRpWFhYKCkiKTogICAgICAgICAgICAgICAqLwotICAvKiAgICAgICBPbiB0aGlzIFNUTTMyIHNlcmllLCBzZXR0aW5nIG9mIHRoZXNlIGZlYXR1cmVzIGlzIGNvbmRpdGlvbmVkIHRvICAgKi8KKyAgLyogICAgICAgT24gdGhpcyBTVE0zMiBzZXJpZXMsIHNldHRpbmcgb2YgdGhlc2UgZmVhdHVyZXMgaXMgY29uZGl0aW9uZWQgdG8gICovCiAgIC8qICAgICAgIEFEQyBzdGF0ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAvKiAgICAgICBBbGwgQURDIGluc3RhbmNlcyBvZiB0aGUgQURDIGNvbW1vbiBncm91cCBtdXN0IGJlIGRpc2FibGVkLiAgICAgICAgKi8KICAgaWYoX19MTF9BRENfSVNfRU5BQkxFRF9BTExfQ09NTU9OX0lOU1RBTkNFKEFEQ3h5X0NPTU1PTikgPT0gMFUpCkBAIC02NzMsNyArNjczLDEyIEBACiAgIH0KICAgYXNzZXJ0X3BhcmFtKElTX0xMX0FEQ19SRUdfQ09OVElOVU9VU19NT0RFKEFEQ19SRUdfSW5pdFN0cnVjdC0+Q29udGludW91c01vZGUpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0xMX0FEQ19SRUdfRE1BX1RSQU5TRkVSKEFEQ19SRUdfSW5pdFN0cnVjdC0+RE1BVHJhbnNmZXIpKTsKLSAgCisKKyAgLyogQURDIGdyb3VwIHJlZ3VsYXIgY29udGludW91cyBtb2RlIGFuZCBkaXNjb250aW51b3VzIG1vZGUgICAgICAgICAgICAgICAgICovCisgIC8qIGNhbiBub3QgYmUgZW5hYmxlZCBzaW11bHRlbmFlb3VzbHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBhc3NlcnRfcGFyYW0oKEFEQ19SRUdfSW5pdFN0cnVjdC0+Q29udGludW91c01vZGUgPT0gTExfQURDX1JFR19DT05WX1NJTkdMRSkKKyAgICAgICAgICAgICAgIHx8IChBRENfUkVHX0luaXRTdHJ1Y3QtPlNlcXVlbmNlckRpc2NvbnQgPT0gTExfQURDX1JFR19TRVFfRElTQ09OVF9ESVNBQkxFKSk7CisKICAgLyogTm90ZTogSGFyZHdhcmUgY29uc3RyYWludCAocmVmZXIgdG8gZGVzY3JpcHRpb24gb2YgdGhpcyBmdW5jdGlvbik6ICAgICAgICovCiAgIC8qICAgICAgIEFEQyBpbnN0YW5jZSBtdXN0IGJlIGRpc2FibGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICBpZihMTF9BRENfSXNFbmFibGVkKEFEQ3gpID09IDBVKQpAQCAtNjg2LDcgKzY5MSw3IEBACiAgICAgLyogICAgLSBTZXQgQURDIGdyb3VwIHJlZ3VsYXIgY29udGludW91cyBtb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgIC8qICAgIC0gU2V0IEFEQyBncm91cCByZWd1bGFyIGNvbnZlcnNpb24gZGF0YSB0cmFuc2Zlcjogbm8gdHJhbnNmZXIgb3IgICAgKi8KICAgICAvKiAgICAgIHRyYW5zZmVyIGJ5IERNQSwgYW5kIERNQSByZXF1ZXN0cyBtb2RlICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgLyogTm90ZTogT24gdGhpcyBTVE0zMiBzZXJpZSwgQURDIHRyaWdnZXIgZWRnZSBpcyBzZXQgd2hlbiBzdGFydGluZyAgICAgICAqLworICAgIC8qIE5vdGU6IE9uIHRoaXMgU1RNMzIgc2VyaWVzLCBBREMgdHJpZ2dlciBlZGdlIGlzIHNldCB3aGVuIHN0YXJ0aW5nICAgICAgKi8KICAgICAvKiAgICAgICBBREMgY29udmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgLyogICAgICAgUmVmZXIgdG8gZnVuY3Rpb24gQHJlZiBMTF9BRENfUkVHX1N0YXJ0Q29udmVyc2lvbkV4dFRyaWcoKS4gICAgICAqLwogICAgIGlmKEFEQ19SRUdfSW5pdFN0cnVjdC0+U2VxdWVuY2VyTGVuZ3RoICE9IExMX0FEQ19SRUdfU0VRX1NDQU5fRElTQUJMRSkKQEAgLTc0OSw3ICs3NTQsNyBAQAogewogICAvKiBTZXQgQURDX1JFR19Jbml0U3RydWN0IGZpZWxkcyB0byBkZWZhdWx0IHZhbHVlcyAqLwogICAvKiBTZXQgZmllbGRzIG9mIEFEQyBncm91cCByZWd1bGFyICovCi0gIC8qIE5vdGU6IE9uIHRoaXMgU1RNMzIgc2VyaWUsIEFEQyB0cmlnZ2VyIGVkZ2UgaXMgc2V0IHdoZW4gc3RhcnRpbmcgICAgICAgICAqLworICAvKiBOb3RlOiBPbiB0aGlzIFNUTTMyIHNlcmllcywgQURDIHRyaWdnZXIgZWRnZSBpcyBzZXQgd2hlbiBzdGFydGluZyAgICAgICAgKi8KICAgLyogICAgICAgQURDIGNvbnZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgIC8qICAgICAgIFJlZmVyIHRvIGZ1bmN0aW9uIEByZWYgTExfQURDX1JFR19TdGFydENvbnZlcnNpb25FeHRUcmlnKCkuICAgICAgICAqLwogICBBRENfUkVHX0luaXRTdHJ1Y3QtPlRyaWdnZXJTb3VyY2UgICAgPSBMTF9BRENfUkVHX1RSSUdfU09GVFdBUkU7CkBAIC04MTYsNyArODIxLDcgQEAKICAgICAvKiAgICAtIFNldCBBREMgZ3JvdXAgaW5qZWN0ZWQgc2VxdWVuY2VyIGRpc2NvbnRpbnVvdXMgbW9kZSAgICAgICAgICAgICAgICovCiAgICAgLyogICAgLSBTZXQgQURDIGdyb3VwIGluamVjdGVkIGNvbnZlcnNpb24gdHJpZ2dlcjogaW5kZXBlbmRlbnQgb3IgICAgICAgICAqLwogICAgIC8qICAgICAgZnJvbSBBREMgZ3JvdXAgcmVndWxhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAvKiBOb3RlOiBPbiB0aGlzIFNUTTMyIHNlcmllLCBBREMgdHJpZ2dlciBlZGdlIGlzIHNldCB3aGVuIHN0YXJ0aW5nICAgICAgICovCisgICAgLyogTm90ZTogT24gdGhpcyBTVE0zMiBzZXJpZXMsIEFEQyB0cmlnZ2VyIGVkZ2UgaXMgc2V0IHdoZW4gc3RhcnRpbmcgICAgICAqLwogICAgIC8qICAgICAgIEFEQyBjb252ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAvKiAgICAgICBSZWZlciB0byBmdW5jdGlvbiBAcmVmIExMX0FEQ19JTkpfU3RhcnRDb252ZXJzaW9uRXh0VHJpZygpLiAgICAgICovCiAgICAgaWYoQURDX0lOSl9Jbml0U3RydWN0LT5TZXF1ZW5jZXJMZW5ndGggIT0gTExfQURDX1JFR19TRVFfU0NBTl9ESVNBQkxFKQpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9sbF9kYWMuYyBiL1NyYy9zdG0zMmY3eHhfbGxfZGFjLmMKaW5kZXggNTdiMWY4ZC4uZjNjOGY1YiAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9sbF9kYWMuYworKysgYi9TcmMvc3RtMzJmN3h4X2xsX2RhYy5jCkBAIC0yMywxMCArMjMsMTAgQEAKICNpbmNsdWRlICJzdG0zMmY3eHhfbGxfYnVzLmgiCiAKICNpZmRlZiBVU0VfRlVMTF9BU1NFUlQKLSAgI2luY2x1ZGUgInN0bTMyX2Fzc2VydC5oIgorI2luY2x1ZGUgInN0bTMyX2Fzc2VydC5oIgogI2Vsc2UKLSAgI2RlZmluZSBhc3NlcnRfcGFyYW0oZXhwcikgKCh2b2lkKTBVKQotI2VuZGlmCisjZGVmaW5lIGFzc2VydF9wYXJhbShleHByKSAoKHZvaWQpMFUpCisjZW5kaWYgLyogVVNFX0ZVTExfQVNTRVJUICovCiAKIC8qKiBAYWRkdG9ncm91cCBTVE0zMkY3eHhfTExfRHJpdmVyCiAgICogQHsKQEAgLTQ2LDcgKzQ2LDYgQEAKIC8qKiBAYWRkdG9ncm91cCBEQUNfTExfUHJpdmF0ZV9NYWNyb3MKICAgKiBAewogICAqLwotCiAjZGVmaW5lIElTX0xMX0RBQ19DSEFOTkVMKF9fREFDWF9fLCBfX0RBQ19DSEFOTkVMX18pICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICgoX19EQUNfQ0hBTk5FTF9fKSA9PSBMTF9EQUNfQ0hBTk5FTF8xKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC02NCw0MiArNjMsNDYgQEAKICAgIHx8ICgoX19UUklHR0VSX1NPVVJDRV9fKSA9PSBMTF9EQUNfVFJJR19FWFRfRVhUSV9MSU5FOSkgICAgICAgICAgICAgICAgICAgICBcCiAgICkKIAotI2RlZmluZSBJU19MTF9EQUNfV0FWRV9BVVRPX0dFTkVSX01PREUoX19XQVZFX0FVVE9fR0VORVJBVElPTl9NT0RFX18pICAgICAgICAgICBcCi0gICggICAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fTU9ERV9fKSA9PSBMTF9EQUNfV0FWRV9BVVRPX0dFTkVSQVRJT05fTk9ORSkgICAgIFwKLSAgIHx8ICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9NT0RFX18pID09IExMX0RBQ19XQVZFX0FVVE9fR0VORVJBVElPTl9OT0lTRSkgICAgXAotICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX01PREVfXykgPT0gTExfREFDX1dBVkVfQVVUT19HRU5FUkFUSU9OX1RSSUFOR0xFKSBcCisjZGVmaW5lIElTX0xMX0RBQ19XQVZFX0FVVE9fR0VORVJfTU9ERShfX1dBVkVfQVVUT19HRU5FUkFUSU9OX01PREVfXykgICAgICAgICAgICAgIFwKKyAgKCAgICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9NT0RFX18pID09IExMX0RBQ19XQVZFX0FVVE9fR0VORVJBVElPTl9OT05FKSAgICAgICAgXAorICAgICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX01PREVfXykgPT0gTExfREFDX1dBVkVfQVVUT19HRU5FUkFUSU9OX05PSVNFKSAgICBcCisgICAgICB8fCAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fTU9ERV9fKSA9PSBMTF9EQUNfV0FWRV9BVVRPX0dFTkVSQVRJT05fVFJJQU5HTEUpIFwKICAgKQogCi0jZGVmaW5lIElTX0xMX0RBQ19XQVZFX0FVVE9fR0VORVJfQ09ORklHKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pICAgICAgXAotICAoICAgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX0NPTkZJR19fKSA9PSBMTF9EQUNfTk9JU0VfTEZTUl9VTk1BU0tfQklUMCkgICAgIFwKLSAgIHx8ICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgPT0gTExfREFDX05PSVNFX0xGU1JfVU5NQVNLX0JJVFMxXzApICBcCi0gICB8fCAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pID09IExMX0RBQ19OT0lTRV9MRlNSX1VOTUFTS19CSVRTMl8wKSAgXAotICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX0NPTkZJR19fKSA9PSBMTF9EQUNfTk9JU0VfTEZTUl9VTk1BU0tfQklUUzNfMCkgIFwKLSAgIHx8ICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgPT0gTExfREFDX05PSVNFX0xGU1JfVU5NQVNLX0JJVFM0XzApICBcCi0gICB8fCAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pID09IExMX0RBQ19OT0lTRV9MRlNSX1VOTUFTS19CSVRTNV8wKSAgXAotICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX0NPTkZJR19fKSA9PSBMTF9EQUNfTk9JU0VfTEZTUl9VTk1BU0tfQklUUzZfMCkgIFwKLSAgIHx8ICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgPT0gTExfREFDX05PSVNFX0xGU1JfVU5NQVNLX0JJVFM3XzApICBcCi0gICB8fCAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pID09IExMX0RBQ19OT0lTRV9MRlNSX1VOTUFTS19CSVRTOF8wKSAgXAotICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX0NPTkZJR19fKSA9PSBMTF9EQUNfTk9JU0VfTEZTUl9VTk1BU0tfQklUUzlfMCkgIFwKLSAgIHx8ICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgPT0gTExfREFDX05PSVNFX0xGU1JfVU5NQVNLX0JJVFMxMF8wKSBcCi0gICB8fCAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pID09IExMX0RBQ19OT0lTRV9MRlNSX1VOTUFTS19CSVRTMTFfMCkgXAotICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX0NPTkZJR19fKSA9PSBMTF9EQUNfVFJJQU5HTEVfQU1QTElUVURFXzEpICAgICAgIFwKLSAgIHx8ICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgPT0gTExfREFDX1RSSUFOR0xFX0FNUExJVFVERV8zKSAgICAgICBcCi0gICB8fCAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pID09IExMX0RBQ19UUklBTkdMRV9BTVBMSVRVREVfNykgICAgICAgXAotICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX0NPTkZJR19fKSA9PSBMTF9EQUNfVFJJQU5HTEVfQU1QTElUVURFXzE1KSAgICAgIFwKLSAgIHx8ICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgPT0gTExfREFDX1RSSUFOR0xFX0FNUExJVFVERV8zMSkgICAgICBcCi0gICB8fCAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pID09IExMX0RBQ19UUklBTkdMRV9BTVBMSVRVREVfNjMpICAgICAgXAotICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX0NPTkZJR19fKSA9PSBMTF9EQUNfVFJJQU5HTEVfQU1QTElUVURFXzEyNykgICAgIFwKLSAgIHx8ICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgPT0gTExfREFDX1RSSUFOR0xFX0FNUExJVFVERV8yNTUpICAgICBcCi0gICB8fCAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pID09IExMX0RBQ19UUklBTkdMRV9BTVBMSVRVREVfNTExKSAgICAgXAotICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX0NPTkZJR19fKSA9PSBMTF9EQUNfVFJJQU5HTEVfQU1QTElUVURFXzEwMjMpICAgIFwKLSAgIHx8ICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgPT0gTExfREFDX1RSSUFOR0xFX0FNUExJVFVERV8yMDQ3KSAgICBcCi0gICB8fCAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pID09IExMX0RBQ19UUklBTkdMRV9BTVBMSVRVREVfNDA5NSkgICAgXAorI2RlZmluZSBJU19MTF9EQUNfV0FWRV9BVVRPX0dFTkVSX0NPTkZJRyhfX1dBVkVfQVVUT19HRU5FUkFUSU9OX01PREVfXywgX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgIFwKKyAgKCAoKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX01PREVfXykgPT0gTExfREFDX1dBVkVfQVVUT19HRU5FUkFUSU9OX05PSVNFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICYmICggICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgPT0gTExfREFDX05PSVNFX0xGU1JfVU5NQVNLX0JJVDApICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICB8fCAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pID09IExMX0RBQ19OT0lTRV9MRlNSX1VOTUFTS19CSVRTMV8wKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX0NPTkZJR19fKSA9PSBMTF9EQUNfTk9JU0VfTEZTUl9VTk1BU0tfQklUUzJfMCkgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgIHx8ICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgPT0gTExfREFDX05PSVNFX0xGU1JfVU5NQVNLX0JJVFMzXzApICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICB8fCAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pID09IExMX0RBQ19OT0lTRV9MRlNSX1VOTUFTS19CSVRTNF8wKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX0NPTkZJR19fKSA9PSBMTF9EQUNfTk9JU0VfTEZTUl9VTk1BU0tfQklUUzVfMCkgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgIHx8ICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgPT0gTExfREFDX05PSVNFX0xGU1JfVU5NQVNLX0JJVFM2XzApICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICB8fCAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pID09IExMX0RBQ19OT0lTRV9MRlNSX1VOTUFTS19CSVRTN18wKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX0NPTkZJR19fKSA9PSBMTF9EQUNfTk9JU0VfTEZTUl9VTk1BU0tfQklUUzhfMCkgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgIHx8ICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgPT0gTExfREFDX05PSVNFX0xGU1JfVU5NQVNLX0JJVFM5XzApICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICB8fCAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pID09IExMX0RBQ19OT0lTRV9MRlNSX1VOTUFTS19CSVRTMTBfMCkgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX0NPTkZJR19fKSA9PSBMTF9EQUNfTk9JU0VfTEZTUl9VTk1BU0tfQklUUzExXzApKSAgICAgICAgICAgICAgICAgICBcCisgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHx8KCgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9NT0RFX18pID09IExMX0RBQ19XQVZFX0FVVE9fR0VORVJBVElPTl9UUklBTkdMRSkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAmJiAoICAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pID09IExMX0RBQ19UUklBTkdMRV9BTVBMSVRVREVfMSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX0NPTkZJR19fKSA9PSBMTF9EQUNfVFJJQU5HTEVfQU1QTElUVURFXzMpICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgIHx8ICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgPT0gTExfREFDX1RSSUFOR0xFX0FNUExJVFVERV83KSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICB8fCAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pID09IExMX0RBQ19UUklBTkdMRV9BTVBMSVRVREVfMTUpICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX0NPTkZJR19fKSA9PSBMTF9EQUNfVFJJQU5HTEVfQU1QTElUVURFXzMxKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgIHx8ICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgPT0gTExfREFDX1RSSUFOR0xFX0FNUExJVFVERV82MykgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICB8fCAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pID09IExMX0RBQ19UUklBTkdMRV9BTVBMSVRVREVfMTI3KSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX0NPTkZJR19fKSA9PSBMTF9EQUNfVFJJQU5HTEVfQU1QTElUVURFXzI1NSkgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgIHx8ICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgPT0gTExfREFDX1RSSUFOR0xFX0FNUExJVFVERV81MTEpICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICB8fCAoKF9fV0FWRV9BVVRPX0dFTkVSQVRJT05fQ09ORklHX18pID09IExMX0RBQ19UUklBTkdMRV9BTVBMSVRVREVfMTAyMykgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgfHwgKChfX1dBVkVfQVVUT19HRU5FUkFUSU9OX0NPTkZJR19fKSA9PSBMTF9EQUNfVFJJQU5HTEVfQU1QTElUVURFXzIwNDcpICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgIHx8ICgoX19XQVZFX0FVVE9fR0VORVJBVElPTl9DT05GSUdfXykgPT0gTExfREFDX1RSSUFOR0xFX0FNUExJVFVERV80MDk1KSkgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICkKIAogI2RlZmluZSBJU19MTF9EQUNfT1VUUFVUX0JVRkZFUihfX09VVFBVVF9CVUZGRVJfXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgKCAgICgoX19PVVRQVVRfQlVGRkVSX18pID09IExMX0RBQ19PVVRQVVRfQlVGRkVSX0VOQUJMRSkgICAgICAgICAgICAgICAgICAgICBcCi0gICB8fCAoKF9fT1VUUFVUX0JVRkZFUl9fKSA9PSBMTF9EQUNfT1VUUFVUX0JVRkZFUl9ESVNBQkxFKSAgICAgICAgICAgICAgICAgICAgXAorICAgICAgfHwgKChfX09VVFBVVF9CVUZGRVJfXykgPT0gTExfREFDX09VVFBVVF9CVUZGRVJfRElTQUJMRSkgICAgICAgICAgICAgICAgIFwKICAgKQogCiAvKioKQEAgLTEzMCwyMCArMTMzLDMyIEBACiB7CiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19EQUNfQUxMX0lOU1RBTkNFKERBQ3gpKTsKLSAgCi0gIC8qIEZvcmNlIHJlc2V0IG9mIERBQzEgY2xvY2sgKi8KKworICAvKiBGb3JjZSByZXNldCBvZiBEQUMgY2xvY2sgKi8KICAgTExfQVBCMV9HUlAxX0ZvcmNlUmVzZXQoTExfQVBCMV9HUlAxX1BFUklQSF9EQUMxKTsKLSAgCi0gIC8qIFJlbGVhc2UgcmVzZXQgb2YgREFDMSBjbG9jayAqLworCisgIC8qIFJlbGVhc2UgcmVzZXQgb2YgREFDIGNsb2NrICovCiAgIExMX0FQQjFfR1JQMV9SZWxlYXNlUmVzZXQoTExfQVBCMV9HUlAxX1BFUklQSF9EQUMxKTsKKwogICByZXR1cm4gU1VDQ0VTUzsKIH0KIAogLyoqCi0gICogQGJyaWVmICBJbml0aWFsaXplIHNvbWUgZmVhdHVyZXMgb2YgREFDIGluc3RhbmNlLgorICAqIEBicmllZiAgSW5pdGlhbGl6ZSBzb21lIGZlYXR1cmVzIG9mIERBQyBjaGFubmVsLgorICAqIEBub3RlICAgQHJlZiBMTF9EQUNfSW5pdCgpIGFpbXMgdG8gZWFzZSBiYXNpYyBjb25maWd1cmF0aW9uIG9mIGEgREFDIGNoYW5uZWwuCisgICogICAgICAgICBMZWF2aW5nIGl0IHJlYWR5IHRvIGJlIGVuYWJsZWQgYW5kIG91dHB1dDoKKyAgKiAgICAgICAgIGEgbGV2ZWwgYnkgY2FsbGluZyBvbmUgb2YKKyAgKiAgICAgICAgICAgQHJlZiBMTF9EQUNfQ29udmVydERhdGExMlJpZ2h0QWxpZ25lZAorICAqICAgICAgICAgICBAcmVmIExMX0RBQ19Db252ZXJ0RGF0YTEyTGVmdEFsaWduZWQKKyAgKiAgICAgICAgICAgQHJlZiBMTF9EQUNfQ29udmVydERhdGE4UmlnaHRBbGlnbmVkCisgICogICAgICAgICBvciBvbmUgb2YgdGhlIHN1cHBvcnRlZCBhdXRvZ2VuZXJhdGVkIHdhdmUuCisgICogQG5vdGUgICBUaGlzIGZ1bmN0aW9uIGFsbG93cyBjb25maWd1cmF0aW9uIG9mOgorICAqICAgICAgICAgIC0gT3V0cHV0IG1vZGUKKyAgKiAgICAgICAgICAtIFRyaWdnZXIKKyAgKiAgICAgICAgICAtIFdhdmUgZ2VuZXJhdGlvbgogICAqIEBub3RlICAgVGhlIHNldHRpbmcgb2YgdGhlc2UgcGFyYW1ldGVycyBieSBmdW5jdGlvbiBAcmVmIExMX0RBQ19Jbml0KCkKICAgKiAgICAgICAgIGlzIGNvbmRpdGlvbmVkIHRvIERBQyBzdGF0ZToKLSAgKiAgICAgICAgIERBQyBpbnN0YW5jZSBtdXN0IGJlIGRpc2FibGVkLgorICAqICAgICAgICAgREFDIGNoYW5uZWwgbXVzdCBiZSBkaXNhYmxlZC4KICAgKiBAcGFyYW0gIERBQ3ggREFDIGluc3RhbmNlCiAgICogQHBhcmFtICBEQUNfQ2hhbm5lbCBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgogICAqICAgICAgICAgQGFyZyBAcmVmIExMX0RBQ19DSEFOTkVMXzEKQEAgLTE1Niw3ICsxNzEsNyBAQAogRXJyb3JTdGF0dXMgTExfREFDX0luaXQoREFDX1R5cGVEZWYgKkRBQ3gsIHVpbnQzMl90IERBQ19DaGFubmVsLCBMTF9EQUNfSW5pdFR5cGVEZWYgKkRBQ19Jbml0U3RydWN0KQogewogICBFcnJvclN0YXR1cyBzdGF0dXMgPSBTVUNDRVNTOwotICAKKwogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfREFDX0FMTF9JTlNUQU5DRShEQUN4KSk7CiAgIGFzc2VydF9wYXJhbShJU19MTF9EQUNfQ0hBTk5FTChEQUN4LCBEQUNfQ2hhbm5lbCkpOwpAQCAtMTY1LDI3ICsxODAsMjkgQEAKICAgYXNzZXJ0X3BhcmFtKElTX0xMX0RBQ19XQVZFX0FVVE9fR0VORVJfTU9ERShEQUNfSW5pdFN0cnVjdC0+V2F2ZUF1dG9HZW5lcmF0aW9uKSk7CiAgIGlmIChEQUNfSW5pdFN0cnVjdC0+V2F2ZUF1dG9HZW5lcmF0aW9uICE9IExMX0RBQ19XQVZFX0FVVE9fR0VORVJBVElPTl9OT05FKQogICB7Ci0gICAgYXNzZXJ0X3BhcmFtKElTX0xMX0RBQ19XQVZFX0FVVE9fR0VORVJfQ09ORklHKERBQ19Jbml0U3RydWN0LT5XYXZlQXV0b0dlbmVyYXRpb25Db25maWcpKTsKKyAgICBhc3NlcnRfcGFyYW0oSVNfTExfREFDX1dBVkVfQVVUT19HRU5FUl9DT05GSUcoREFDX0luaXRTdHJ1Y3QtPldhdmVBdXRvR2VuZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFDX0luaXRTdHJ1Y3QtPldhdmVBdXRvR2VuZXJhdGlvbkNvbmZpZykpOwogICB9Ci0gIAorCiAgIC8qIE5vdGU6IEhhcmR3YXJlIGNvbnN0cmFpbnQgKHJlZmVyIHRvIGRlc2NyaXB0aW9uIG9mIHRoaXMgZnVuY3Rpb24pICAgICAgICAqLwogICAvKiAgICAgICBEQUMgaW5zdGFuY2UgbXVzdCBiZSBkaXNhYmxlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgaWYoTExfREFDX0lzRW5hYmxlZChEQUN4LCBEQUNfQ2hhbm5lbCkgPT0gMFUpCisgIGlmIChMTF9EQUNfSXNFbmFibGVkKERBQ3gsIERBQ19DaGFubmVsKSA9PSAwVUwpCiAgIHsKICAgICAvKiBDb25maWd1cmF0aW9uIG9mIERBQyBjaGFubmVsOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgLyogIC0gVHJpZ2dlclNvdXJjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgIC8qICAtIFdhdmVBdXRvR2VuZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAvKiAgLSBPdXRwdXRCdWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgLyogIC0gT3V0cHV0TW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgIGlmIChEQUNfSW5pdFN0cnVjdC0+V2F2ZUF1dG9HZW5lcmF0aW9uICE9IExMX0RBQ19XQVZFX0FVVE9fR0VORVJBVElPTl9OT05FKQogICAgIHsKICAgICAgIE1PRElGWV9SRUcoREFDeC0+Q1IsCi0gICAgICAgICAgICAgICAgICggIERBQ19DUl9UU0VMMQorICAgICAgICAgICAgICAgICAoREFDX0NSX1RTRUwxCiAgICAgICAgICAgICAgICAgICB8IERBQ19DUl9XQVZFMQogICAgICAgICAgICAgICAgICAgfCBEQUNfQ1JfTUFNUDEKICAgICAgICAgICAgICAgICAgIHwgREFDX0NSX0JPRkYxCiAgICAgICAgICAgICAgICAgICkgPDwgKERBQ19DaGFubmVsICYgREFDX0NSX0NIWF9CSVRPRkZTRVRfTUFTSykKLSAgICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgICAgICggIERBQ19Jbml0U3RydWN0LT5UcmlnZ2VyU291cmNlCisgICAgICAgICAgICAgICAgICwKKyAgICAgICAgICAgICAgICAgKERBQ19Jbml0U3RydWN0LT5UcmlnZ2VyU291cmNlCiAgICAgICAgICAgICAgICAgICB8IERBQ19Jbml0U3RydWN0LT5XYXZlQXV0b0dlbmVyYXRpb24KICAgICAgICAgICAgICAgICAgIHwgREFDX0luaXRTdHJ1Y3QtPldhdmVBdXRvR2VuZXJhdGlvbkNvbmZpZwogICAgICAgICAgICAgICAgICAgfCBEQUNfSW5pdFN0cnVjdC0+T3V0cHV0QnVmZmVyCkBAIC0xOTUsMTIgKzIxMiwxMiBAQAogICAgIGVsc2UKICAgICB7CiAgICAgICBNT0RJRllfUkVHKERBQ3gtPkNSLAotICAgICAgICAgICAgICAgICAoICBEQUNfQ1JfVFNFTDEKKyAgICAgICAgICAgICAgICAgKERBQ19DUl9UU0VMMQogICAgICAgICAgICAgICAgICAgfCBEQUNfQ1JfV0FWRTEKICAgICAgICAgICAgICAgICAgIHwgREFDX0NSX0JPRkYxCiAgICAgICAgICAgICAgICAgICkgPDwgKERBQ19DaGFubmVsICYgREFDX0NSX0NIWF9CSVRPRkZTRVRfTUFTSykKLSAgICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgICAgICggIERBQ19Jbml0U3RydWN0LT5UcmlnZ2VyU291cmNlCisgICAgICAgICAgICAgICAgICwKKyAgICAgICAgICAgICAgICAgKERBQ19Jbml0U3RydWN0LT5UcmlnZ2VyU291cmNlCiAgICAgICAgICAgICAgICAgICB8IExMX0RBQ19XQVZFX0FVVE9fR0VORVJBVElPTl9OT05FCiAgICAgICAgICAgICAgICAgICB8IERBQ19Jbml0U3RydWN0LT5PdXRwdXRCdWZmZXIKICAgICAgICAgICAgICAgICAgKSA8PCAoREFDX0NoYW5uZWwgJiBEQUNfQ1JfQ0hYX0JJVE9GRlNFVF9NQVNLKQpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9sbF9kbWEyZC5jIGIvU3JjL3N0bTMyZjd4eF9sbF9kbWEyZC5jCmluZGV4IDllM2FlNzcuLjM0YjcxMWMgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfbGxfZG1hMmQuYworKysgYi9TcmMvc3RtMzJmN3h4X2xsX2RtYTJkLmMKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJzdG0zMl9hc3NlcnQuaCIKICNlbHNlCiAjZGVmaW5lIGFzc2VydF9wYXJhbShleHByKSAoKHZvaWQpMFUpCi0jZW5kaWYKKyNlbmRpZiAgLyogVVNFX0ZVTExfQVNTRVJUICovCiAKIC8qKiBAYWRkdG9ncm91cCBTVE0zMkY3eHhfTExfRHJpdmVyCiAgICogQHsKQEAgLTE2Nyw5ICsxNjcsMTIgQEAKIEVycm9yU3RhdHVzIExMX0RNQTJEX0luaXQoRE1BMkRfVHlwZURlZiAqRE1BMkR4LCBMTF9ETUEyRF9Jbml0VHlwZURlZiAqRE1BMkRfSW5pdFN0cnVjdCkKIHsKICAgRXJyb3JTdGF0dXMgc3RhdHVzID0gRVJST1I7Ci0gIExMX0RNQTJEX0NvbG9yVHlwZURlZiBETUEyRF9Db2xvclN0cnVjdDsKLSAgdWludDMyX3QgdG1wLCB0bXAxLCB0bXAyOwotICB1aW50MzJfdCByZWdNYXNrLCByZWdWYWx1ZTsKKyAgTExfRE1BMkRfQ29sb3JUeXBlRGVmIGRtYTJkX2NvbG9yc3RydWN0OworICB1aW50MzJfdCB0bXA7CisgIHVpbnQzMl90IHRtcDE7CisgIHVpbnQzMl90IHRtcDI7CisgIHVpbnQzMl90IHJlZ01hc2s7CisgIHVpbnQzMl90IHJlZ1ZhbHVlOwogCiAgIC8qIENoZWNrIHRoZSBwYXJhbWV0ZXJzICovCiAgIGFzc2VydF9wYXJhbShJU19ETUEyRF9BTExfSU5TVEFOQ0UoRE1BMkR4KSk7CkBAIC0yMTksMTIgKzIyMiwxMiBAQAogICAgIExMX0RNQTJEX1NldE91dHB1dE1lbUFkZHIoRE1BMkR4LCBETUEyRF9Jbml0U3RydWN0LT5PdXRwdXRNZW1vcnlBZGRyZXNzKTsKIAogICAgIC8qIERNQTJEIE9DT0xSIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSAgICBETUEyRF9Db2xvclN0cnVjdC5Db2xvck1vZGUgICA9IERNQTJEX0luaXRTdHJ1Y3QtPkNvbG9yTW9kZTsKLSAgICBETUEyRF9Db2xvclN0cnVjdC5PdXRwdXRCbHVlICA9IERNQTJEX0luaXRTdHJ1Y3QtPk91dHB1dEJsdWU7Ci0gICAgRE1BMkRfQ29sb3JTdHJ1Y3QuT3V0cHV0R3JlZW4gPSBETUEyRF9Jbml0U3RydWN0LT5PdXRwdXRHcmVlbjsKLSAgICBETUEyRF9Db2xvclN0cnVjdC5PdXRwdXRSZWQgICA9IERNQTJEX0luaXRTdHJ1Y3QtPk91dHB1dFJlZDsKLSAgICBETUEyRF9Db2xvclN0cnVjdC5PdXRwdXRBbHBoYSA9IERNQTJEX0luaXRTdHJ1Y3QtPk91dHB1dEFscGhhOwotICAgIExMX0RNQTJEX0NvbmZpZ091dHB1dENvbG9yKERNQTJEeCwgJkRNQTJEX0NvbG9yU3RydWN0KTsKKyAgICBkbWEyZF9jb2xvcnN0cnVjdC5Db2xvck1vZGUgICA9IERNQTJEX0luaXRTdHJ1Y3QtPkNvbG9yTW9kZTsKKyAgICBkbWEyZF9jb2xvcnN0cnVjdC5PdXRwdXRCbHVlICA9IERNQTJEX0luaXRTdHJ1Y3QtPk91dHB1dEJsdWU7CisgICAgZG1hMmRfY29sb3JzdHJ1Y3QuT3V0cHV0R3JlZW4gPSBETUEyRF9Jbml0U3RydWN0LT5PdXRwdXRHcmVlbjsKKyAgICBkbWEyZF9jb2xvcnN0cnVjdC5PdXRwdXRSZWQgICA9IERNQTJEX0luaXRTdHJ1Y3QtPk91dHB1dFJlZDsKKyAgICBkbWEyZF9jb2xvcnN0cnVjdC5PdXRwdXRBbHBoYSA9IERNQTJEX0luaXRTdHJ1Y3QtPk91dHB1dEFscGhhOworICAgIExMX0RNQTJEX0NvbmZpZ091dHB1dENvbG9yKERNQTJEeCwgJmRtYTJkX2NvbG9yc3RydWN0KTsKIAogICAgIHN0YXR1cyA9IFNVQ0NFU1M7CiAgIH0KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfbGxfZm1jLmMgYi9TcmMvc3RtMzJmN3h4X2xsX2ZtYy5jCmluZGV4IDc5YzM0NzkuLjY4MGNjZjQgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfbGxfZm1jLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9sbF9mbWMuYwpAQCAtOTY5LDkgKzk2OSw3IEBACiAgICogQHJldHZhbCBIQUwgc3RhdGUKICAgKi8gIAogSEFMX1N0YXR1c1R5cGVEZWYgRk1DX1NEUkFNX1NlbmRDb21tYW5kKEZNQ19TRFJBTV9UeXBlRGVmICpEZXZpY2UsIEZNQ19TRFJBTV9Db21tYW5kVHlwZURlZiAqQ29tbWFuZCwgdWludDMyX3QgVGltZW91dCkKLXsKLSAgX19JTyB1aW50MzJfdCB0bXByID0gMDsKLSAgCit7IAogICAvKiBDaGVjayB0aGUgcGFyYW1ldGVycyAqLwogICBhc3NlcnRfcGFyYW0oSVNfRk1DX1NEUkFNX0RFVklDRShEZXZpY2UpKTsKICAgYXNzZXJ0X3BhcmFtKElTX0ZNQ19DT01NQU5EX01PREUoQ29tbWFuZC0+Q29tbWFuZE1vZGUpKTsKQEAgLTk4MCwxMyArOTc4LDEwIEBACiAgIGFzc2VydF9wYXJhbShJU19GTUNfTU9ERV9SRUdJU1RFUihDb21tYW5kLT5Nb2RlUmVnaXN0ZXJEZWZpbml0aW9uKSk7ICAKIAogICAvKiBTZXQgY29tbWFuZCByZWdpc3RlciAqLwotICB0bXByID0gKHVpbnQzMl90KSgoQ29tbWFuZC0+Q29tbWFuZE1vZGUpICAgICAgICAgICAgICAgICAgfFwKLSAgICAgICAgICAgICAgICAgICAgKENvbW1hbmQtPkNvbW1hbmRUYXJnZXQpICAgICAgICAgICAgICAgIHxcCi0gICAgICAgICAgICAgICAgICAgICgoKENvbW1hbmQtPkF1dG9SZWZyZXNoTnVtYmVyKS0xKSA8PCA1KSB8XAotICAgICAgICAgICAgICAgICAgICAoKENvbW1hbmQtPk1vZGVSZWdpc3RlckRlZmluaXRpb24pIDw8IDkpCi0gICAgICAgICAgICAgICAgICAgICk7Ci0gICAgCi0gIERldmljZS0+U0RDTVIgPSB0bXByOworICBNT0RJRllfUkVHKERldmljZS0+U0RDTVIsIChGTUNfU0RDTVJfTU9ERSB8IEZNQ19TRENNUl9DVEIyIHwgRk1DX1NEQ01SX0NUQjEgfCAKKyAgICAgICAgICAgICBGTUNfU0RDTVJfTlJGUyB8IEZNQ19TRENNUl9NUkQpLCAoKENvbW1hbmQtPkNvbW1hbmRNb2RlKSB8IAorICAgICAgICAgICAgIChDb21tYW5kLT5Db21tYW5kVGFyZ2V0KSB8ICgoKENvbW1hbmQtPkF1dG9SZWZyZXNoTnVtYmVyKSAtIDFVKSA8PCBGTUNfU0RDTVJfTlJGU19Qb3MpIHwKKyAgICAgICAgICAgICAoKENvbW1hbmQtPk1vZGVSZWdpc3RlckRlZmluaXRpb24pIDw8IEZNQ19TRENNUl9NUkRfUG9zKSkpOwogICAKICAgcmV0dXJuIEhBTF9PSzsgIAogfQpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9sbF9scHRpbS5jIGIvU3JjL3N0bTMyZjd4eF9sbF9scHRpbS5jCmluZGV4IDYzYzhhNTUuLjZjNTg1NDQgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfbGxfbHB0aW0uYworKysgYi9TcmMvc3RtMzJmN3h4X2xsX2xwdGltLmMKQEAgLTQ4LDIyICs0OCwyMiBAQAogICAqIEB7CiAgICovCiAjZGVmaW5lIElTX0xMX0xQVElNX0NMT0NLX1NPVVJDRShfX1ZBTFVFX18pICgoKF9fVkFMVUVfXykgPT0gTExfTFBUSU1fQ0xLX1NPVVJDRV9JTlRFUk5BTCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0xQVElNX0NMS19TT1VSQ0VfRVhURVJOQUwpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0xQVElNX0NMS19TT1VSQ0VfRVhURVJOQUwpKQogCiAjZGVmaW5lIElTX0xMX0xQVElNX0NMT0NLX1BSRVNDQUxFUihfX1ZBTFVFX18pICgoKF9fVkFMVUVfXykgPT0gTExfTFBUSU1fUFJFU0NBTEVSX0RJVjEpICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0xQVElNX1BSRVNDQUxFUl9ESVYyKSAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9MUFRJTV9QUkVTQ0FMRVJfRElWNCkgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfTFBUSU1fUFJFU0NBTEVSX0RJVjgpICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0xQVElNX1BSRVNDQUxFUl9ESVYxNikgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9MUFRJTV9QUkVTQ0FMRVJfRElWMzIpICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfTFBUSU1fUFJFU0NBTEVSX0RJVjY0KSAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0xQVElNX1BSRVNDQUxFUl9ESVYxMjgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0xQVElNX1BSRVNDQUxFUl9ESVYyKSAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9MUFRJTV9QUkVTQ0FMRVJfRElWNCkgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfTFBUSU1fUFJFU0NBTEVSX0RJVjgpICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0xQVElNX1BSRVNDQUxFUl9ESVYxNikgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9MUFRJTV9QUkVTQ0FMRVJfRElWMzIpICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfTFBUSU1fUFJFU0NBTEVSX0RJVjY0KSAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0xQVElNX1BSRVNDQUxFUl9ESVYxMjgpKQogCiAjZGVmaW5lIElTX0xMX0xQVElNX1dBVkVGT1JNKF9fVkFMVUVfXykgKCgoX19WQUxVRV9fKSA9PSBMTF9MUFRJTV9PVVRQVVRfV0FWRUZPUk1fUFdNKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9MUFRJTV9PVVRQVVRfV0FWRUZPUk1fU0VUT05DRSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9MUFRJTV9PVVRQVVRfV0FWRUZPUk1fU0VUT05DRSkpCiAKICNkZWZpbmUgSVNfTExfTFBUSU1fT1VUUFVUX1BPTEFSSVRZKF9fVkFMVUVfXykgKCgoX19WQUxVRV9fKSA9PSBMTF9MUFRJTV9PVVRQVVRfUE9MQVJJVFlfUkVHVUxBUikgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0xQVElNX09VVFBVVF9QT0xBUklUWV9JTlZFUlNFKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9MUFRJTV9PVVRQVVRfUE9MQVJJVFlfSU5WRVJTRSkpCiAvKioKICAgKiBAfQogICAqLwpAQCAtMjQwLDggKzI0MCw3IEBACiAgICAgICBkbwogICAgICAgewogICAgICAgICByY2NfY2xvY2suU1lTQ0xLX0ZyZXF1ZW5jeS0tOyAvKiBVc2VkIGZvciB0aW1lb3V0ICovCi0gICAgICB9Ci0gICAgICB3aGlsZSAoKChMTF9MUFRJTV9Jc0FjdGl2ZUZsYWdfQ01QT0soTFBUSU14KSAhPSAxVUwpKSAmJiAoKHJjY19jbG9jay5TWVNDTEtfRnJlcXVlbmN5KSA+IDBVTCkpOworICAgICAgfSB3aGlsZSAoKChMTF9MUFRJTV9Jc0FjdGl2ZUZsYWdfQ01QT0soTFBUSU14KSAhPSAxVUwpKSAmJiAoKHJjY19jbG9jay5TWVNDTEtfRnJlcXVlbmN5KSA+IDBVTCkpOwogCiAgICAgICBMTF9MUFRJTV9DbGVhckZsYWdfQ01QT0soTFBUSU14KTsKICAgICB9CmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2xsX3NkbW1jLmMgYi9TcmMvc3RtMzJmN3h4X2xsX3NkbW1jLmMKaW5kZXggM2NkNWIxZi4uYTY5YjI4YyAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9sbF9zZG1tYy5jCisrKyBiL1NyYy9zdG0zMmY3eHhfbGxfc2RtbWMuYwpAQCAtNTExLDcgKzUxMSw3IEBACiAgICovCiAKIC8qKgotICAqIEBicmllZiAgU2VuZCB0aGUgRGF0YSBCbG9jayBMZW5naHQgY29tbWFuZCBhbmQgY2hlY2sgdGhlIHJlc3BvbnNlCisgICogQGJyaWVmICBTZW5kIHRoZSBEYXRhIEJsb2NrIExlbmd0aCBjb21tYW5kIGFuZCBjaGVjayB0aGUgcmVzcG9uc2UKICAgKiBAcGFyYW0gIFNETU1DeDogUG9pbnRlciB0byBTRE1NQyByZWdpc3RlciBiYXNlIAogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwpAQCAtMTA5OSw3ICsxMDk5LDcgQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBDaGVja3Mgc3dpdGNoYWJsZSBmdW5jdGlvbiBhbmQgc3dpdGNoIGNhcmQgZnVuY3Rpb24uIFNETU1DX0NNRF9IU19TV0lUQ0ggY29tYW5kCisgICogQGJyaWVmICBDaGVja3Mgc3dpdGNoYWJsZSBmdW5jdGlvbiBhbmQgc3dpdGNoIGNhcmQgZnVuY3Rpb24uIFNETU1DX0NNRF9IU19TV0lUQ0ggY29tbWFuZAogICAqIEBwYXJhbSAgU0RNTUN4OiBQb2ludGVyIHRvIFNETU1DIHJlZ2lzdGVyIGJhc2UgCiAgICogQHBhcmFtZSBBcmd1bWVudDogQXJndW1lbnQgdXNlZCBmb3IgdGhlIGNvbW1hbmQKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKQEAgLTExNDIsNyArMTE0Miw3IEBACiB7CiAgIC8qIDggaXMgdGhlIG51bWJlciBvZiByZXF1aXJlZCBpbnN0cnVjdGlvbnMgY3ljbGVzIGZvciB0aGUgYmVsb3cgbG9vcCBzdGF0ZW1lbnQuCiAgIFRoZSBTRE1NQ19DTURUSU1FT1VUIGlzIGV4cHJlc3NlZCBpbiBtcyAqLwotICByZWdpc3RlciB1aW50MzJfdCBjb3VudCA9IFNETU1DX0NNRFRJTUVPVVQgKiAoU3lzdGVtQ29yZUNsb2NrIC8gOFUgLzEwMDBVKTsKKyAgdWludDMyX3QgY291bnQgPSBTRE1NQ19DTURUSU1FT1VUICogKFN5c3RlbUNvcmVDbG9jayAvIDhVIC8xMDAwVSk7CiAgIAogICBkbwogICB7CkBAIC0xMTcyLDcgKzExNzIsNyBAQAogICAKICAgLyogOCBpcyB0aGUgbnVtYmVyIG9mIHJlcXVpcmVkIGluc3RydWN0aW9ucyBjeWNsZXMgZm9yIHRoZSBiZWxvdyBsb29wIHN0YXRlbWVudC4KICAgVGhlIFRpbWVvdXQgaXMgZXhwcmVzc2VkIGluIG1zICovCi0gIHJlZ2lzdGVyIHVpbnQzMl90IGNvdW50ID0gVGltZW91dCAqIChTeXN0ZW1Db3JlQ2xvY2sgLyA4VSAvMTAwMFUpOworICB1aW50MzJfdCBjb3VudCA9IFRpbWVvdXQgKiAoU3lzdGVtQ29yZUNsb2NrIC8gOFUgLzEwMDBVKTsKICAgCiAgIGRvCiAgIHsKQEAgLTEzMDUsNyArMTMwNSw3IEBACiAgIHVpbnQzMl90IHN0YV9yZWc7CiAgIC8qIDggaXMgdGhlIG51bWJlciBvZiByZXF1aXJlZCBpbnN0cnVjdGlvbnMgY3ljbGVzIGZvciB0aGUgYmVsb3cgbG9vcCBzdGF0ZW1lbnQuCiAgIFRoZSBTRE1NQ19DTURUSU1FT1VUIGlzIGV4cHJlc3NlZCBpbiBtcyAqLwotICByZWdpc3RlciB1aW50MzJfdCBjb3VudCA9IFNETU1DX0NNRFRJTUVPVVQgKiAoU3lzdGVtQ29yZUNsb2NrIC8gOFUgLzEwMDBVKTsKKyAgdWludDMyX3QgY291bnQgPSBTRE1NQ19DTURUSU1FT1VUICogKFN5c3RlbUNvcmVDbG9jayAvIDhVIC8xMDAwVSk7CiAgIAogICBkbwogICB7CkBAIC0xMzQ5LDcgKzEzNDksNyBAQAogICB1aW50MzJfdCBzdGFfcmVnOwogICAvKiA4IGlzIHRoZSBudW1iZXIgb2YgcmVxdWlyZWQgaW5zdHJ1Y3Rpb25zIGN5Y2xlcyBmb3IgdGhlIGJlbG93IGxvb3Agc3RhdGVtZW50LgogICBUaGUgU0RNTUNfQ01EVElNRU9VVCBpcyBleHByZXNzZWQgaW4gbXMgKi8KLSAgcmVnaXN0ZXIgdWludDMyX3QgY291bnQgPSBTRE1NQ19DTURUSU1FT1VUICogKFN5c3RlbUNvcmVDbG9jayAvIDhVIC8xMDAwVSk7CisgIHVpbnQzMl90IGNvdW50ID0gU0RNTUNfQ01EVElNRU9VVCAqIChTeXN0ZW1Db3JlQ2xvY2sgLyA4VSAvMTAwMFUpOwogICAKICAgZG8KICAgewpAQCAtMTM5MSw3ICsxMzkxLDcgQEAKIAogICAvKiA4IGlzIHRoZSBudW1iZXIgb2YgcmVxdWlyZWQgaW5zdHJ1Y3Rpb25zIGN5Y2xlcyBmb3IgdGhlIGJlbG93IGxvb3Agc3RhdGVtZW50LgogICBUaGUgU0RNTUNfQ01EVElNRU9VVCBpcyBleHByZXNzZWQgaW4gbXMgKi8KLSAgcmVnaXN0ZXIgdWludDMyX3QgY291bnQgPSBTRE1NQ19DTURUSU1FT1VUICogKFN5c3RlbUNvcmVDbG9jayAvIDhVIC8xMDAwVSk7CisgIHVpbnQzMl90IGNvdW50ID0gU0RNTUNfQ01EVElNRU9VVCAqIChTeXN0ZW1Db3JlQ2xvY2sgLyA4VSAvMTAwMFUpOwogICAKICAgZG8KICAgewpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAKICAgdWludDMyX3Qgc3RhX3JlZzsKICAgLyogOCBpcyB0aGUgbnVtYmVyIG9mIHJlcXVpcmVkIGluc3RydWN0aW9ucyBjeWNsZXMgZm9yIHRoZSBiZWxvdyBsb29wIHN0YXRlbWVudC4KICAgVGhlIFNETU1DX0NNRFRJTUVPVVQgaXMgZXhwcmVzc2VkIGluIG1zICovCi0gIHJlZ2lzdGVyIHVpbnQzMl90IGNvdW50ID0gU0RNTUNfQ01EVElNRU9VVCAqIChTeXN0ZW1Db3JlQ2xvY2sgLyA4VSAvMTAwMFUpOworICB1aW50MzJfdCBjb3VudCA9IFNETU1DX0NNRFRJTUVPVVQgKiAoU3lzdGVtQ29yZUNsb2NrIC8gOFUgLzEwMDBVKTsKICAgCiAgIGRvCiAgIHsKQEAgLTE1MDQsNiArMTUwNCwzMiBAQAogfQogCiAvKioKKyAgKiBAYnJpZWYgIFNlbmQgdGhlIFNlbmQgRVhUX0NTRCBjb21tYW5kIGFuZCBjaGVjayB0aGUgcmVzcG9uc2UuCisgICogQHBhcmFtICBTRE1NQ3g6IFBvaW50ZXIgdG8gU0RNTUMgcmVnaXN0ZXIgYmFzZQorICAqIEBwYXJhbSAgQXJndW1lbnQ6IENvbW1hbmQgQXJndW1lbnQKKyAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKKyAgKi8KK3VpbnQzMl90IFNETU1DX0NtZFNlbmRFWFRDU0QoU0RNTUNfVHlwZURlZiAqU0RNTUN4LCB1aW50MzJfdCBBcmd1bWVudCkKK3sKKyAgU0RNTUNfQ21kSW5pdFR5cGVEZWYgIHNkbW1jX2NtZGluaXQ7CisgIHVpbnQzMl90IGVycm9yc3RhdGU7CisKKyAgLyogU2VuZCBDTUQ5IFNFTkRfQ1NEICovCisgIHNkbW1jX2NtZGluaXQuQXJndW1lbnQgICAgICAgICA9IEFyZ3VtZW50OworICBzZG1tY19jbWRpbml0LkNtZEluZGV4ICAgICAgICAgPSBTRE1NQ19DTURfSFNfU0VORF9FWFRfQ1NEOworICBzZG1tY19jbWRpbml0LlJlc3BvbnNlICAgICAgICAgPSBTRE1NQ19SRVNQT05TRV9TSE9SVDsKKyAgc2RtbWNfY21kaW5pdC5XYWl0Rm9ySW50ZXJydXB0ID0gU0RNTUNfV0FJVF9OTzsKKyAgc2RtbWNfY21kaW5pdC5DUFNNICAgICAgICAgICAgID0gU0RNTUNfQ1BTTV9FTkFCTEU7CisgICh2b2lkKVNETU1DX1NlbmRDb21tYW5kKFNETU1DeCwgJnNkbW1jX2NtZGluaXQpOworCisgIC8qIENoZWNrIGZvciBlcnJvciBjb25kaXRpb25zICovCisgIGVycm9yc3RhdGUgPSBTRE1NQ19HZXRDbWRSZXNwMShTRE1NQ3gsIFNETU1DX0NNRF9IU19TRU5EX0VYVF9DU0QsU0RNTUNfQ01EVElNRU9VVCk7CisKKyAgcmV0dXJuIGVycm9yc3RhdGU7Cit9CisKKworLyoqCiAgICogQH0KICAgKi8KIApkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9sbF9zcGkuYyBiL1NyYy9zdG0zMmY3eHhfbGxfc3BpLmMKaW5kZXggNjA0OTQ5NS4uNjY4ZTJkYyAxMDA2NDQKLS0tIGEvU3JjL3N0bTMyZjd4eF9sbF9zcGkuYworKysgYi9TcmMvc3RtMzJmN3h4X2xsX3NwaS5jCkBAIC02MCw1MiArNjAsNTIgQEAKIC8qKiBAZGVmZ3JvdXAgU1BJX0xMX1ByaXZhdGVfTWFjcm9zIFNQSSBQcml2YXRlIE1hY3JvcwogICAqIEB7CiAgICovCi0jZGVmaW5lIElTX0xMX1NQSV9UUkFOU0ZFUl9ESVJFQ1RJT04oX19WQUxVRV9fKSAoKChfX1ZBTFVFX18pID09IExMX1NQSV9GVUxMX0RVUExFWCkgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfU0lNUExFWF9SWCkgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX0hBTEZfRFVQTEVYX1JYKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9IQUxGX0RVUExFWF9UWCkpCisjZGVmaW5lIElTX0xMX1NQSV9UUkFOU0ZFUl9ESVJFQ1RJT04oX19WQUxVRV9fKSAoKChfX1ZBTFVFX18pID09IExMX1NQSV9GVUxMX0RVUExFWCkgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfU0lNUExFWF9SWCkgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX0hBTEZfRFVQTEVYX1JYKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9IQUxGX0RVUExFWF9UWCkpCiAKICNkZWZpbmUgSVNfTExfU1BJX01PREUoX19WQUxVRV9fKSAoKChfX1ZBTFVFX18pID09IExMX1NQSV9NT0RFX01BU1RFUikgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX01PREVfU0xBVkUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX01PREVfU0xBVkUpKQogCi0jZGVmaW5lIElTX0xMX1NQSV9EQVRBV0lEVEgoX19WQUxVRV9fKSAoKChfX1ZBTFVFX18pID09IExMX1NQSV9EQVRBV0lEVEhfNEJJVCkgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX0RBVEFXSURUSF81QklUKSAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfREFUQVdJRFRIXzZCSVQpICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9EQVRBV0lEVEhfN0JJVCkgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX0RBVEFXSURUSF84QklUKSAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfREFUQVdJRFRIXzlCSVQpICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9EQVRBV0lEVEhfMTBCSVQpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX0RBVEFXSURUSF8xMUJJVCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfREFUQVdJRFRIXzEyQklUKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9EQVRBV0lEVEhfMTNCSVQpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX0RBVEFXSURUSF8xNEJJVCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfREFUQVdJRFRIXzE1QklUKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9EQVRBV0lEVEhfMTZCSVQpKQorI2RlZmluZSBJU19MTF9TUElfREFUQVdJRFRIKF9fVkFMVUVfXykgKCgoX19WQUxVRV9fKSA9PSBMTF9TUElfREFUQVdJRFRIXzRCSVQpICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9EQVRBV0lEVEhfNUJJVCkgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX0RBVEFXSURUSF82QklUKSAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfREFUQVdJRFRIXzdCSVQpICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9EQVRBV0lEVEhfOEJJVCkgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX0RBVEFXSURUSF85QklUKSAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfREFUQVdJRFRIXzEwQklUKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9EQVRBV0lEVEhfMTFCSVQpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX0RBVEFXSURUSF8xMkJJVCkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfREFUQVdJRFRIXzEzQklUKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9EQVRBV0lEVEhfMTRCSVQpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX0RBVEFXSURUSF8xNUJJVCkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfREFUQVdJRFRIXzE2QklUKSkKIAogI2RlZmluZSBJU19MTF9TUElfUE9MQVJJVFkoX19WQUxVRV9fKSAoKChfX1ZBTFVFX18pID09IExMX1NQSV9QT0xBUklUWV9MT1cpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfUE9MQVJJVFlfSElHSCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX1BPTEFSSVRZX0hJR0gpKQogCiAjZGVmaW5lIElTX0xMX1NQSV9QSEFTRShfX1ZBTFVFX18pICgoKF9fVkFMVUVfXykgPT0gTExfU1BJX1BIQVNFXzFFREdFKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX1BIQVNFXzJFREdFKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfUEhBU0VfMkVER0UpKQogCi0jZGVmaW5lIElTX0xMX1NQSV9OU1MoX19WQUxVRV9fKSAoKChfX1ZBTFVFX18pID09IExMX1NQSV9OU1NfU09GVCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfTlNTX0hBUkRfSU5QVVQpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX05TU19IQVJEX09VVFBVVCkpCisjZGVmaW5lIElTX0xMX1NQSV9OU1MoX19WQUxVRV9fKSAoKChfX1ZBTFVFX18pID09IExMX1NQSV9OU1NfU09GVCkgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfTlNTX0hBUkRfSU5QVVQpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX05TU19IQVJEX09VVFBVVCkpCiAKLSNkZWZpbmUgSVNfTExfU1BJX0JBVURSQVRFKF9fVkFMVUVfXykgKCgoX19WQUxVRV9fKSA9PSBMTF9TUElfQkFVRFJBVEVQUkVTQ0FMRVJfRElWMikgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX0JBVURSQVRFUFJFU0NBTEVSX0RJVjQpICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9CQVVEUkFURVBSRVNDQUxFUl9ESVY4KSAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfQkFVRFJBVEVQUkVTQ0FMRVJfRElWMTYpICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX0JBVURSQVRFUFJFU0NBTEVSX0RJVjMyKSAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9CQVVEUkFURVBSRVNDQUxFUl9ESVY2NCkgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfQkFVRFJBVEVQUkVTQ0FMRVJfRElWMTI4KSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX0JBVURSQVRFUFJFU0NBTEVSX0RJVjI1NikpCisjZGVmaW5lIElTX0xMX1NQSV9CQVVEUkFURShfX1ZBTFVFX18pICgoKF9fVkFMVUVfXykgPT0gTExfU1BJX0JBVURSQVRFUFJFU0NBTEVSX0RJVjIpICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9CQVVEUkFURVBSRVNDQUxFUl9ESVY0KSAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfQkFVRFJBVEVQUkVTQ0FMRVJfRElWOCkgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX0JBVURSQVRFUFJFU0NBTEVSX0RJVjE2KSAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9CQVVEUkFURVBSRVNDQUxFUl9ESVYzMikgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfQkFVRFJBVEVQUkVTQ0FMRVJfRElWNjQpICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfU1BJX0JBVURSQVRFUFJFU0NBTEVSX0RJVjEyOCkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9CQVVEUkFURVBSRVNDQUxFUl9ESVYyNTYpKQogCiAjZGVmaW5lIElTX0xMX1NQSV9CSVRPUkRFUihfX1ZBTFVFX18pICgoKF9fVkFMVUVfXykgPT0gTExfU1BJX0xTQl9GSVJTVCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9NU0JfRklSU1QpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9NU0JfRklSU1QpKQogCiAjZGVmaW5lIElTX0xMX1NQSV9DUkNDQUxDVUxBVElPTihfX1ZBTFVFX18pICgoKF9fVkFMVUVfXykgPT0gTExfU1BJX0NSQ0NBTENVTEFUSU9OX0VOQUJMRSkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1NQSV9DUkNDQUxDVUxBVElPTl9ESVNBQkxFKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9TUElfQ1JDQ0FMQ1VMQVRJT05fRElTQUJMRSkpCiAKICNkZWZpbmUgSVNfTExfU1BJX0NSQ19QT0xZTk9NSUFMKF9fVkFMVUVfXykgKChfX1ZBTFVFX18pID49IDB4MVUpCiAKQEAgLTI2OSw2ICsyNjksMTIgQEAKICAgICAgICAgICAgICAgIFNQSV9DUjJfRFMgfCBTUElfQ1IyX1NTT0UsCiAgICAgICAgICAgICAgICBTUElfSW5pdFN0cnVjdC0+RGF0YVdpZHRoIHwgKFNQSV9Jbml0U3RydWN0LT5OU1MgPj4gMTZVKSk7CiAKKyAgICAvKiBTZXQgUnggRklGTyB0byBRdWFydGVyICgxIEJ5dGUpIGluIGNhc2Ugb2YgOCBCaXRzIG1vZGUuIE5vIERhdGFQYWNraW5nIGJ5IGRlZmF1bHQgKi8KKyAgICBpZiAoU1BJX0luaXRTdHJ1Y3QtPkRhdGFXaWR0aCA8IExMX1NQSV9EQVRBV0lEVEhfOUJJVCkKKyAgICB7CisgICAgICBMTF9TUElfU2V0UnhGSUZPVGhyZXNob2xkKFNQSXgsIExMX1NQSV9SWF9GSUZPX1RIX1FVQVJURVIpOworICAgIH0KKwogICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTUEl4IENSQ1BSIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAqIENvbmZpZ3VyZSBTUEl4IENSQ1BSIHdpdGggcGFyYW1ldGVyczoKICAgICAgKiAtIENSQ1BvbHk6ICAgICAgICAgICAgQ1JDUE9MWVsxNTowXSBiaXRzCkBAIC0zNDMsMzYgKzM0OSwzNiBAQAogICAqIEB7CiAgICovCiAKLSNkZWZpbmUgSVNfTExfSTJTX0RBVEFGT1JNQVQoX19WQUxVRV9fKSAgKCgoX19WQUxVRV9fKSA9PSBMTF9JMlNfREFUQUZPUk1BVF8xNkIpICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9JMlNfREFUQUZPUk1BVF8xNkJfRVhURU5ERUQpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9JMlNfREFUQUZPUk1BVF8yNEIpICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9JMlNfREFUQUZPUk1BVF8zMkIpKQorI2RlZmluZSBJU19MTF9JMlNfREFUQUZPUk1BVChfX1ZBTFVFX18pICAoKChfX1ZBTFVFX18pID09IExMX0kyU19EQVRBRk9STUFUXzE2QikgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0kyU19EQVRBRk9STUFUXzE2Ql9FWFRFTkRFRCkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0kyU19EQVRBRk9STUFUXzI0QikgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0kyU19EQVRBRk9STUFUXzMyQikpCiAKICNkZWZpbmUgSVNfTExfSTJTX0NQT0woX19WQUxVRV9fKSAgICAgICAgKCgoX19WQUxVRV9fKSA9PSBMTF9JMlNfUE9MQVJJVFlfTE9XKSAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0kyU19QT0xBUklUWV9ISUdIKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9JMlNfUE9MQVJJVFlfSElHSCkpCiAKLSNkZWZpbmUgSVNfTExfSTJTX1NUQU5EQVJEKF9fVkFMVUVfXykgICAgKCgoX19WQUxVRV9fKSA9PSBMTF9JMlNfU1RBTkRBUkRfUEhJTElQUykgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfSTJTX1NUQU5EQVJEX01TQikgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0kyU19TVEFOREFSRF9MU0IpICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9JMlNfU1RBTkRBUkRfUENNX1NIT1JUKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfSTJTX1NUQU5EQVJEX1BDTV9MT05HKSkKKyNkZWZpbmUgSVNfTExfSTJTX1NUQU5EQVJEKF9fVkFMVUVfXykgICAgKCgoX19WQUxVRV9fKSA9PSBMTF9JMlNfU1RBTkRBUkRfUEhJTElQUykgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfSTJTX1NUQU5EQVJEX01TQikgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0kyU19TVEFOREFSRF9MU0IpICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9JMlNfU1RBTkRBUkRfUENNX1NIT1JUKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfSTJTX1NUQU5EQVJEX1BDTV9MT05HKSkKIAotI2RlZmluZSBJU19MTF9JMlNfTU9ERShfX1ZBTFVFX18pICAgICAgICAoKChfX1ZBTFVFX18pID09IExMX0kyU19NT0RFX1NMQVZFX1RYKSAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0kyU19NT0RFX1NMQVZFX1JYKSAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0kyU19NT0RFX01BU1RFUl9UWCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0kyU19NT0RFX01BU1RFUl9SWCkpCisjZGVmaW5lIElTX0xMX0kyU19NT0RFKF9fVkFMVUVfXykgICAgICAgICgoKF9fVkFMVUVfXykgPT0gTExfSTJTX01PREVfU0xBVkVfVFgpICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfSTJTX01PREVfU0xBVkVfUlgpICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfSTJTX01PREVfTUFTVEVSX1RYKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfSTJTX01PREVfTUFTVEVSX1JYKSkKIAogI2RlZmluZSBJU19MTF9JMlNfTUNMS19PVVRQVVQoX19WQUxVRV9fKSAoKChfX1ZBTFVFX18pID09IExMX0kyU19NQ0xLX09VVFBVVF9FTkFCTEUpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9JMlNfTUNMS19PVVRQVVRfRElTQUJMRSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoKF9fVkFMVUVfXykgPT0gTExfSTJTX01DTEtfT1VUUFVUX0RJU0FCTEUpKQogCi0jZGVmaW5lIElTX0xMX0kyU19BVURJT19GUkVRKF9fVkFMVUVfXykgKCgoKF9fVkFMVUVfXykgPj0gTExfSTJTX0FVRElPRlJFUV84SykgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKChfX1ZBTFVFX18pIDw9IExMX0kyU19BVURJT0ZSRVFfMTkySykpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9JMlNfQVVESU9GUkVRX0RFRkFVTFQpKQorI2RlZmluZSBJU19MTF9JMlNfQVVESU9fRlJFUShfX1ZBTFVFX18pICgoKChfX1ZBTFVFX18pID49IExMX0kyU19BVURJT0ZSRVFfOEspICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICgoX19WQUxVRV9fKSA8PSBMTF9JMlNfQVVESU9GUkVRXzE5MkspKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9JMlNfQVVESU9GUkVRX0RFRkFVTFQpKQogCiAjZGVmaW5lIElTX0xMX0kyU19QUkVTQ0FMRVJfTElORUFSKF9fVkFMVUVfXykgICgoX19WQUxVRV9fKSA+PSAweDJVKQogCiAjZGVmaW5lIElTX0xMX0kyU19QUkVTQ0FMRVJfUEFSSVRZKF9fVkFMVUVfXykgKCgoX19WQUxVRV9fKSA9PSBMTF9JMlNfUFJFU0NBTEVSX1BBUklUWV9FVkVOKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX0kyU19QUkVTQ0FMRVJfUEFSSVRZX09ERCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoX19WQUxVRV9fKSA9PSBMTF9JMlNfUFJFU0NBTEVSX1BBUklUWV9PREQpKQogLyoqCiAgICogQH0KICAgKi8KQEAgLTQxMiw3ICs0MTgsOSBAQAogICAqLwogRXJyb3JTdGF0dXMgTExfSTJTX0luaXQoU1BJX1R5cGVEZWYgKlNQSXgsIExMX0kyU19Jbml0VHlwZURlZiAqSTJTX0luaXRTdHJ1Y3QpCiB7Ci0gIHVpbnQzMl90IGkyc2RpdiA9IDJVLCBpMnNvZGQgPSAwVSwgcGFja2V0bGVuZ3RoID0gMVU7CisgIHVpbnQzMl90IGkyc2RpdiA9IDJVOworICB1aW50MzJfdCBpMnNvZGQgPSAwVTsKKyAgdWludDMyX3QgcGFja2V0bGVuZ3RoID0gMVU7CiAgIHVpbnQzMl90IHRtcDsKICAgdWludDMyX3Qgc291cmNlY2xvY2s7CiAgIEVycm9yU3RhdHVzIHN0YXR1cyA9IEVSUk9SOwpkaWZmIC0tZ2l0IGEvU3JjL3N0bTMyZjd4eF9sbF91c2FydC5jIGIvU3JjL3N0bTMyZjd4eF9sbF91c2FydC5jCmluZGV4IGQ3ZjM2NzUuLmFiOTI0MzUgMTAwNjQ0Ci0tLSBhL1NyYy9zdG0zMmY3eHhfbGxfdXNhcnQuYworKysgYi9TcmMvc3RtMzJmN3h4X2xsX3VzYXJ0LmMKQEAgLTUzLDkgKzUzLDYgQEAKIC8qIF9fVkFMVUVfXyBJbiBjYXNlIG9mIG92ZXJzYW1wbGluZyBieSAxNiBhbmQgOCwgQlJSIGNvbnRlbnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMTZkLiAqLwogI2RlZmluZSBJU19MTF9VU0FSVF9CUlJfTUlOKF9fVkFMVUVfXykgKChfX1ZBTFVFX18pID49IDE2VSkKIAotLyogX19WQUxVRV9fIEJSUiBjb250ZW50IG11c3QgYmUgbG93ZXIgdGhhbiBvciBlcXVhbCB0byAweEZGRkYuICovCi0jZGVmaW5lIElTX0xMX1VTQVJUX0JSUl9NQVgoX19WQUxVRV9fKSAoKF9fVkFMVUVfXykgPD0gMHgwMDAwRkZGRlUpCi0KICNkZWZpbmUgSVNfTExfVVNBUlRfRElSRUNUSU9OKF9fVkFMVUVfXykgKCgoX19WQUxVRV9fKSA9PSBMTF9VU0FSVF9ESVJFQ1RJT05fTk9ORSkgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1VTQVJUX0RJUkVDVElPTl9SWCkgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChfX1ZBTFVFX18pID09IExMX1VTQVJUX0RJUkVDVElPTl9UWCkgXApAQCAtMTk4LDggKzE5NSw5IEBACiAvKioKICAgKiBAYnJpZWYgIEluaXRpYWxpemUgVVNBUlQgcmVnaXN0ZXJzIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkCiAgICogICAgICAgICBwYXJhbWV0ZXJzIGluIFVTQVJUX0luaXRTdHJ1Y3QuCi0gICogQG5vdGUgICBBcyBzb21lIGJpdHMgaW4gVVNBUlQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgY2FuIG9ubHkgYmUgd3JpdHRlbiB3aGVuIHRoZSBVU0FSVCBpcyBkaXNhYmxlZCAoVVNBUlRfQ1IxX1VFIGJpdCA9MCksCi0gICogICAgICAgICBVU0FSVCBQZXJpcGhlcmFsIHNob3VsZCBiZSBpbiBkaXNhYmxlZCBzdGF0ZSBwcmlvciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uIE90aGVyd2lzZSwgRVJST1IgcmVzdWx0IHdpbGwgYmUgcmV0dXJuZWQuCisgICogQG5vdGUgICBBcyBzb21lIGJpdHMgaW4gVVNBUlQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgY2FuIG9ubHkgYmUgd3JpdHRlbiB3aGVuCisgICogICAgICAgICB0aGUgVVNBUlQgaXMgZGlzYWJsZWQgKFVTQVJUX0NSMV9VRSBiaXQgPTApLCBVU0FSVCBQZXJpcGhlcmFsIHNob3VsZCBiZSBpbiBkaXNhYmxlZCBzdGF0ZSBwcmlvciBjYWxsaW5nCisgICogICAgICAgICB0aGlzIGZ1bmN0aW9uLiBPdGhlcndpc2UsIEVSUk9SIHJlc3VsdCB3aWxsIGJlIHJldHVybmVkLgogICAqIEBub3RlICAgQmF1ZCByYXRlIHZhbHVlIHN0b3JlZCBpbiBVU0FSVF9Jbml0U3RydWN0IEJhdWRSYXRlIGZpZWxkLCBzaG91bGQgYmUgdmFsaWQgKGRpZmZlcmVudCBmcm9tIDApLgogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCiAgICogQHBhcmFtICBVU0FSVF9Jbml0U3RydWN0IHBvaW50ZXIgdG8gYSBMTF9VU0FSVF9Jbml0VHlwZURlZiBzdHJ1Y3R1cmUKQEAgLTI0OSw3ICsyNDcsOCBAQAogCiAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFVTQVJUIENSMyBDb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAqIENvbmZpZ3VyZSBVU0FSVHggQ1IzIChIYXJkd2FyZSBGbG93IENvbnRyb2wpIHdpdGggcGFyYW1ldGVyczoKLSAgICAgKiAtIEhhcmR3YXJlRmxvd0NvbnRyb2w6IFVTQVJUX0NSM19SVFNFLCBVU0FSVF9DUjNfQ1RTRSBiaXRzIGFjY29yZGluZyB0byBVU0FSVF9Jbml0U3RydWN0LT5IYXJkd2FyZUZsb3dDb250cm9sIHZhbHVlLgorICAgICAqIC0gSGFyZHdhcmVGbG93Q29udHJvbDogVVNBUlRfQ1IzX1JUU0UsIFVTQVJUX0NSM19DVFNFIGJpdHMgYWNjb3JkaW5nIHRvCisgICAgICogICBVU0FSVF9Jbml0U3RydWN0LT5IYXJkd2FyZUZsb3dDb250cm9sIHZhbHVlLgogICAgICAqLwogICAgIExMX1VTQVJUX1NldEhXRmxvd0N0cmwoVVNBUlR4LCBVU0FSVF9Jbml0U3RydWN0LT5IYXJkd2FyZUZsb3dDb250cm9sKTsKIApAQCAtMzA4LDkgKzMwNyw2IEBACiAKICAgICAgIC8qIENoZWNrIEJSUiBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMTZkICovCiAgICAgICBhc3NlcnRfcGFyYW0oSVNfTExfVVNBUlRfQlJSX01JTihVU0FSVHgtPkJSUikpOwotCi0gICAgICAvKiBDaGVjayBCUlIgaXMgbG93ZXIgdGhhbiBvciBlcXVhbCB0byAweEZGRkYgKi8KLSAgICAgIGFzc2VydF9wYXJhbShJU19MTF9VU0FSVF9CUlJfTUFYKFVTQVJUeC0+QlJSKSk7CiAgICAgfQogICB9CiAgIC8qIEVuZGlmICg9PiBVU0FSVCBub3QgaW4gRGlzYWJsZWQgc3RhdGUgPT4gcmV0dXJuIEVSUk9SKSAqLwpAQCAtMzQwLDEzICszMzYsMTUgQEAKIC8qKgogICAqIEBicmllZiAgSW5pdGlhbGl6ZSBVU0FSVCBDbG9jayByZWxhdGVkIHNldHRpbmdzIGFjY29yZGluZyB0byB0aGUKICAgKiAgICAgICAgIHNwZWNpZmllZCBwYXJhbWV0ZXJzIGluIHRoZSBVU0FSVF9DbG9ja0luaXRTdHJ1Y3QuCi0gICogQG5vdGUgICBBcyBzb21lIGJpdHMgaW4gVVNBUlQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgY2FuIG9ubHkgYmUgd3JpdHRlbiB3aGVuIHRoZSBVU0FSVCBpcyBkaXNhYmxlZCAoVVNBUlRfQ1IxX1VFIGJpdCA9MCksCi0gICogICAgICAgICBVU0FSVCBQZXJpcGhlcmFsIHNob3VsZCBiZSBpbiBkaXNhYmxlZCBzdGF0ZSBwcmlvciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uIE90aGVyd2lzZSwgRVJST1IgcmVzdWx0IHdpbGwgYmUgcmV0dXJuZWQuCisgICogQG5vdGUgICBBcyBzb21lIGJpdHMgaW4gVVNBUlQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgY2FuIG9ubHkgYmUgd3JpdHRlbiB3aGVuCisgICogICAgICAgICB0aGUgVVNBUlQgaXMgZGlzYWJsZWQgKFVTQVJUX0NSMV9VRSBiaXQgPTApLCBVU0FSVCBQZXJpcGhlcmFsIHNob3VsZCBiZSBpbiBkaXNhYmxlZCBzdGF0ZSBwcmlvciBjYWxsaW5nCisgICogICAgICAgICB0aGlzIGZ1bmN0aW9uLiBPdGhlcndpc2UsIEVSUk9SIHJlc3VsdCB3aWxsIGJlIHJldHVybmVkLgogICAqIEBwYXJhbSAgVVNBUlR4IFVTQVJUIEluc3RhbmNlCiAgICogQHBhcmFtICBVU0FSVF9DbG9ja0luaXRTdHJ1Y3QgcG9pbnRlciB0byBhIEByZWYgTExfVVNBUlRfQ2xvY2tJbml0VHlwZURlZiBzdHJ1Y3R1cmUKICAgKiAgICAgICAgIHRoYXQgY29udGFpbnMgdGhlIENsb2NrIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgVVNBUlQgcGVyaXBoZXJhbC4KICAgKiBAcmV0dmFsIEFuIEVycm9yU3RhdHVzIGVudW1lcmF0aW9uIHZhbHVlOgotICAqICAgICAgICAgIC0gU1VDQ0VTUzogVVNBUlQgcmVnaXN0ZXJzIHJlbGF0ZWQgdG8gQ2xvY2sgc2V0dGluZ3MgYXJlIGluaXRpYWxpemVkIGFjY29yZGluZyB0byBVU0FSVF9DbG9ja0luaXRTdHJ1Y3QgY29udGVudAorICAqICAgICAgICAgIC0gU1VDQ0VTUzogVVNBUlQgcmVnaXN0ZXJzIHJlbGF0ZWQgdG8gQ2xvY2sgc2V0dGluZ3MgYXJlIGluaXRpYWxpemVkIGFjY29yZGluZworICAqICAgICAgICAgICAgICAgICAgICAgdG8gVVNBUlRfQ2xvY2tJbml0U3RydWN0IGNvbnRlbnQKICAgKiAgICAgICAgICAtIEVSUk9SOiBQcm9ibGVtIG9jY3VycmVkIGR1cmluZyBVU0FSVCBSZWdpc3RlcnMgaW5pdGlhbGl6YXRpb24KICAgKi8KIEVycm9yU3RhdHVzIExMX1VTQVJUX0Nsb2NrSW5pdChVU0FSVF9UeXBlRGVmICpVU0FSVHgsIExMX1VTQVJUX0Nsb2NrSW5pdFR5cGVEZWYgKlVTQVJUX0Nsb2NrSW5pdFN0cnVjdCkKQEAgLTM2MSw4ICszNTksNyBAQAogICAgICBDUnggcmVnaXN0ZXJzICovCiAgIGlmIChMTF9VU0FSVF9Jc0VuYWJsZWQoVVNBUlR4KSA9PSAwVSkKICAgewotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVU0FSVCBDUjIgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0gICAgLyogSWYgQ2xvY2sgc2lnbmFsIGhhcyB0byBiZSBvdXRwdXQgKi8KKyAgICAvKiBJZiBVU0FSVCBDbG9jayBzaWduYWwgaXMgZGlzYWJsZWQgKi8KICAgICBpZiAoVVNBUlRfQ2xvY2tJbml0U3RydWN0LT5DbG9ja091dHB1dCA9PSBMTF9VU0FSVF9DTE9DS19ESVNBQkxFKQogICAgIHsKICAgICAgIC8qIERlYWN0aXZhdGUgQ2xvY2sgc2lnbmFsIGRlbGl2ZXJ5IDoKQEAgLTQxMiw5ICs0MDksMTIgQEAKIHsKICAgLyogU2V0IExMX1VTQVJUX0Nsb2NrSW5pdFN0cnVjdCBmaWVsZHMgd2l0aCBkZWZhdWx0IHZhbHVlcyAqLwogICBVU0FSVF9DbG9ja0luaXRTdHJ1Y3QtPkNsb2NrT3V0cHV0ICAgICAgID0gTExfVVNBUlRfQ0xPQ0tfRElTQUJMRTsKLSAgVVNBUlRfQ2xvY2tJbml0U3RydWN0LT5DbG9ja1BvbGFyaXR5ICAgICA9IExMX1VTQVJUX1BPTEFSSVRZX0xPVzsgICAgICAgICAgICAvKiBOb3QgcmVsZXZhbnQgd2hlbiBDbG9ja091dHB1dCA9IExMX1VTQVJUX0NMT0NLX0RJU0FCTEUgKi8KLSAgVVNBUlRfQ2xvY2tJbml0U3RydWN0LT5DbG9ja1BoYXNlICAgICAgICA9IExMX1VTQVJUX1BIQVNFXzFFREdFOyAgICAgICAgICAgICAvKiBOb3QgcmVsZXZhbnQgd2hlbiBDbG9ja091dHB1dCA9IExMX1VTQVJUX0NMT0NLX0RJU0FCTEUgKi8KLSAgVVNBUlRfQ2xvY2tJbml0U3RydWN0LT5MYXN0Qml0Q2xvY2tQdWxzZSA9IExMX1VTQVJUX0xBU1RDTEtQVUxTRV9OT19PVVRQVVQ7ICAvKiBOb3QgcmVsZXZhbnQgd2hlbiBDbG9ja091dHB1dCA9IExMX1VTQVJUX0NMT0NLX0RJU0FCTEUgKi8KKyAgVVNBUlRfQ2xvY2tJbml0U3RydWN0LT5DbG9ja1BvbGFyaXR5ICAgICA9IExMX1VTQVJUX1BPTEFSSVRZX0xPVzsgICAgICAgICAgICAvKiBOb3QgcmVsZXZhbnQgd2hlbiBDbG9ja091dHB1dCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExfVVNBUlRfQ0xPQ0tfRElTQUJMRSAqLworICBVU0FSVF9DbG9ja0luaXRTdHJ1Y3QtPkNsb2NrUGhhc2UgICAgICAgID0gTExfVVNBUlRfUEhBU0VfMUVER0U7ICAgICAgICAgICAgIC8qIE5vdCByZWxldmFudCB3aGVuIENsb2NrT3V0cHV0ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTF9VU0FSVF9DTE9DS19ESVNBQkxFICovCisgIFVTQVJUX0Nsb2NrSW5pdFN0cnVjdC0+TGFzdEJpdENsb2NrUHVsc2UgPSBMTF9VU0FSVF9MQVNUQ0xLUFVMU0VfTk9fT1VUUFVUOyAgLyogTm90IHJlbGV2YW50IHdoZW4gQ2xvY2tPdXRwdXQgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMX1VTQVJUX0NMT0NLX0RJU0FCTEUgKi8KIH0KIAogLyoqCmRpZmYgLS1naXQgYS9TcmMvc3RtMzJmN3h4X2xsX3VzYi5jIGIvU3JjL3N0bTMyZjd4eF9sbF91c2IuYwppbmRleCBjYjU5YmFkLi4xN2Q0ZWQzIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2xsX3VzYi5jCisrKyBiL1NyYy9zdG0zMmY3eHhfbGxfdXNiLmMKQEAgLTY1LDggKzY1LDggQEAKICAgKi8KIAogLyoqIEBkZWZncm91cCBVU0JfTExfRXhwb3J0ZWRfRnVuY3Rpb25zX0dyb3VwMSBJbml0aWFsaXphdGlvbi9kZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMKLSAqICBAYnJpZWYgICAgSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24gZnVuY3Rpb25zCi0gKgorICAqICBAYnJpZWYgICAgSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24gZnVuY3Rpb25zCisgICoKIEB2ZXJiYXRpbQogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAjIyMjIyBJbml0aWFsaXphdGlvbi9kZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgIyMjIyMKQEAgLTExOSw3ICsxMTksNyBAQAogICAgIC8qIFNlbGVjdCB2YnVzIHNvdXJjZSAqLwogICAgIFVTQngtPkdVU0JDRkcgJj0gfihVU0JfT1RHX0dVU0JDRkdfVUxQSUVWQlVTRCB8IFVTQl9PVEdfR1VTQkNGR19VTFBJRVZCVVNJKTsKIAotICAgIC8qIFNlbGVjdCBVVE1JIEludGVyYWNlICovCisgICAgLyogU2VsZWN0IFVUTUkgSW50ZXJmYWNlICovCiAgICAgVVNCeC0+R1VTQkNGRyAmPSB+VVNCX09UR19HVVNCQ0ZHX1VMUElfVVRNSV9TRUw7CiAgICAgVVNCeC0+R0NDRkcgfD0gVVNCX09UR19HQ0NGR19QSFlIU0VOOwogCkBAIC0xNDIsNyArMTQyLDcgQEAKICAgICAvKiBTZWxlY3QgRlMgRW1iZWRkZWQgUEhZICovCiAgICAgVVNCeC0+R1VTQkNGRyB8PSBVU0JfT1RHX0dVU0JDRkdfUEhZU0VMOwogCi0gICAgLyogUmVzZXQgYWZ0ZXIgYSBQSFkgc2VsZWN0IGFuZCBzZXQgSG9zdCBtb2RlICovCisgICAgLyogUmVzZXQgYWZ0ZXIgYSBQSFkgc2VsZWN0ICovCiAgICAgcmV0ID0gVVNCX0NvcmVSZXNldChVU0J4KTsKIAogICAgIC8qIEFjdGl2YXRlIHRoZSBVU0IgVHJhbnNjZWl2ZXIgKi8KQEAgLTI1OSw3ICsyNTksNyBAQAogICAqICAgICAgICAgRGlzYWJsZSB0aGUgY29udHJvbGxlcidzIEdsb2JhbCBJbnQgaW4gdGhlIEFIQiBDb25maWcgcmVnCiAgICogQHBhcmFtICBVU0J4ICBTZWxlY3RlZCBkZXZpY2UKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKLSovCisgICovCiBIQUxfU3RhdHVzVHlwZURlZiBVU0JfRGlzYWJsZUdsb2JhbEludChVU0JfT1RHX0dsb2JhbFR5cGVEZWYgKlVTQngpCiB7CiAgIFVTQngtPkdBSEJDRkcgJj0gflVTQl9PVEdfR0FIQkNGR19HSU5UOwpAQCAtMjY3LDEzICsyNjcsMTIgQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBVU0JfU2V0Q3VycmVudE1vZGUgOiBTZXQgZnVuY3Rpb25hbCBtb2RlCisgICogQGJyaWVmICBVU0JfU2V0Q3VycmVudE1vZGUgU2V0IGZ1bmN0aW9uYWwgbW9kZQogICAqIEBwYXJhbSAgVVNCeCAgU2VsZWN0ZWQgZGV2aWNlCi0gICogQHBhcmFtICBtb2RlICAgY3VycmVudCBjb3JlIG1vZGUKKyAgKiBAcGFyYW0gIG1vZGUgIGN1cnJlbnQgY29yZSBtb2RlCiAgICogICAgICAgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIG9uZSBvZiB0aGVzZSB2YWx1ZXM6Ci0gICogICAgICAgICAgICBAYXJnIFVTQl9ERVZJQ0VfTU9ERTogUGVyaXBoZXJhbCBtb2RlCi0gICogICAgICAgICAgICBAYXJnIFVTQl9IT1NUX01PREU6IEhvc3QgbW9kZQotICAqICAgICAgICAgICAgQGFyZyBVU0JfRFJEX01PREU6IER1YWwgUm9sZSBEZXZpY2UgbW9kZQorICAqICAgICAgICAgICAgQGFyZyBVU0JfREVWSUNFX01PREUgUGVyaXBoZXJhbCBtb2RlCisgICogICAgICAgICAgICBAYXJnIFVTQl9IT1NUX01PREUgSG9zdCBtb2RlCiAgICogQHJldHZhbCBIQUwgc3RhdHVzCiAgICovCiBIQUxfU3RhdHVzVHlwZURlZiBVU0JfU2V0Q3VycmVudE1vZGUoVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4LCBVU0JfT1RHX01vZGVUeXBlRGVmIG1vZGUpCkBAIC0yOTgsNyArMjk3LDcgQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBVU0JfRGV2SW5pdCA6IEluaXRpYWxpemVzIHRoZSBVU0JfT1RHIGNvbnRyb2xsZXIgcmVnaXN0ZXJzCisgICogQGJyaWVmICBVU0JfRGV2SW5pdCBJbml0aWFsaXplcyB0aGUgVVNCX09URyBjb250cm9sbGVyIHJlZ2lzdGVycwogICAqICAgICAgICAgZm9yIGRldmljZSBtb2RlCiAgICogQHBhcmFtICBVU0J4ICBTZWxlY3RlZCBkZXZpY2UKICAgKiBAcGFyYW0gIGNmZyAgIHBvaW50ZXIgdG8gYSBVU0JfT1RHX0NmZ1R5cGVEZWYgc3RydWN0dXJlIHRoYXQgY29udGFpbnMKQEAgLTQ4NSw4ICs0ODQsNyBAQAogICAgIHsKICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKICAgICB9Ci0gIH0KLSAgd2hpbGUgKChVU0J4LT5HUlNUQ1RMICYgVVNCX09UR19HUlNUQ1RMX1RYRkZMU0gpID09IFVTQl9PVEdfR1JTVENUTF9UWEZGTFNIKTsKKyAgfSB3aGlsZSAoKFVTQngtPkdSU1RDVEwgJiBVU0JfT1RHX0dSU1RDVExfVFhGRkxTSCkgPT0gVVNCX09UR19HUlNUQ1RMX1RYRkZMU0gpOwogCiAgIHJldHVybiBIQUxfT0s7CiB9CkBAIC01MDgsOCArNTA2LDcgQEAKICAgICB7CiAgICAgICByZXR1cm4gSEFMX1RJTUVPVVQ7CiAgICAgfQotICB9Ci0gIHdoaWxlICgoVVNCeC0+R1JTVENUTCAmIFVTQl9PVEdfR1JTVENUTF9SWEZGTFNIKSA9PSBVU0JfT1RHX0dSU1RDVExfUlhGRkxTSCk7CisgIH0gd2hpbGUgKChVU0J4LT5HUlNUQ1RMICYgVVNCX09UR19HUlNUQ1RMX1JYRkZMU0gpID09IFVTQl9PVEdfR1JTVENUTF9SWEZGTFNIKTsKIAogICByZXR1cm4gSEFMX09LOwogfQpAQCAtNTM4LDggKzUzNSw4IEBACiAgICogQHBhcmFtICBVU0J4ICBTZWxlY3RlZCBkZXZpY2UKICAgKiBAcmV0dmFsIHNwZWVkICBkZXZpY2Ugc3BlZWQKICAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgb25lIG9mIHRoZXNlIHZhbHVlczoKLSAgKiAgICAgICAgICAgIEBhcmcgUENEX1NQRUVEX0hJR0g6IEhpZ2ggc3BlZWQgbW9kZQotICAqICAgICAgICAgICAgQGFyZyBQQ0RfU1BFRURfRlVMTDogRnVsbCBzcGVlZCBtb2RlCisgICogICAgICAgICAgICBAYXJnIFVTQkRfSFNfU1BFRUQ6IEhpZ2ggc3BlZWQgbW9kZQorICAqICAgICAgICAgICAgQGFyZyBVU0JEX0ZTX1NQRUVEOiBGdWxsIHNwZWVkIG1vZGUKICAgKi8KIHVpbnQ4X3QgVVNCX0dldERldlNwZWVkKFVTQl9PVEdfR2xvYmFsVHlwZURlZiAqVVNCeCkKIHsKQEAgLTk3OCw3ICs5NzUsOCBAQAogICAqICAgICAgICAgICAxIDogRE1BIGZlYXR1cmUgdXNlZAogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwotSEFMX1N0YXR1c1R5cGVEZWYgVVNCX1dyaXRlUGFja2V0KFVTQl9PVEdfR2xvYmFsVHlwZURlZiAqVVNCeCwgdWludDhfdCAqc3JjLCB1aW50OF90IGNoX2VwX251bSwgdWludDE2X3QgbGVuLCB1aW50OF90IGRtYSkKK0hBTF9TdGF0dXNUeXBlRGVmIFVTQl9Xcml0ZVBhY2tldChVU0JfT1RHX0dsb2JhbFR5cGVEZWYgKlVTQngsIHVpbnQ4X3QgKnNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGNoX2VwX251bSwgdWludDE2X3QgbGVuLCB1aW50OF90IGRtYSkKIHsKICAgdWludDMyX3QgVVNCeF9CQVNFID0gKHVpbnQzMl90KVVTQng7CiAgIHVpbnQzMl90ICpwU3JjID0gKHVpbnQzMl90ICopc3JjOwpAQCAtMTEzOCw3ICsxMTM2LDcgQEAKIH0KIAogLyoqCi0gICogQGJyaWVmICBVU0JfRGV2Q29ubmVjdCA6IENvbm5lY3QgdGhlIFVTQiBkZXZpY2UgYnkgZW5hYmxpbmcgdGhlIHB1bGwtdXAvcHVsbC1kb3duCisgICogQGJyaWVmICBVU0JfRGV2Q29ubmVjdCA6IENvbm5lY3QgdGhlIFVTQiBkZXZpY2UgYnkgZW5hYmxpbmcgUnB1CiAgICogQHBhcmFtICBVU0J4ICBTZWxlY3RlZCBkZXZpY2UKICAgKiBAcmV0dmFsIEhBTCBzdGF0dXMKICAgKi8KQEAgLTExNDYsMTQgKzExNDQsMTYgQEAKIHsKICAgdWludDMyX3QgVVNCeF9CQVNFID0gKHVpbnQzMl90KVVTQng7CiAKKyAgLyogSW4gY2FzZSBwaHkgaXMgc3RvcHBlZCwgZW5zdXJlIHRvIHVuZ2F0ZSBhbmQgcmVzdG9yZSB0aGUgcGh5IENMSyAqLworICBVU0J4X1BDR0NDVEwgJj0gfihVU0JfT1RHX1BDR0NDVExfU1RPUENMSyB8IFVTQl9PVEdfUENHQ0NUTF9HQVRFQ0xLKTsKKwogICBVU0J4X0RFVklDRS0+RENUTCAmPSB+VVNCX09UR19EQ1RMX1NESVM7Ci0gIEhBTF9EZWxheSgzVSk7CiAKICAgcmV0dXJuIEhBTF9PSzsKIH0KIAogLyoqCi0gICogQGJyaWVmICBVU0JfRGV2RGlzY29ubmVjdCA6IERpc2Nvbm5lY3QgdGhlIFVTQiBkZXZpY2UgYnkgZGlzYWJsaW5nIHRoZSBwdWxsLXVwL3B1bGwtZG93bgorICAqIEBicmllZiAgVVNCX0RldkRpc2Nvbm5lY3QgOiBEaXNjb25uZWN0IHRoZSBVU0IgZGV2aWNlIGJ5IGRpc2FibGluZyBScHUKICAgKiBAcGFyYW0gIFVTQnggIFNlbGVjdGVkIGRldmljZQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqLwpAQCAtMTE2MSw4ICsxMTYxLDEwIEBACiB7CiAgIHVpbnQzMl90IFVTQnhfQkFTRSA9ICh1aW50MzJfdClVU0J4OwogCisgIC8qIEluIGNhc2UgcGh5IGlzIHN0b3BwZWQsIGVuc3VyZSB0byB1bmdhdGUgYW5kIHJlc3RvcmUgdGhlIHBoeSBDTEsgKi8KKyAgVVNCeF9QQ0dDQ1RMICY9IH4oVVNCX09UR19QQ0dDQ1RMX1NUT1BDTEsgfCBVU0JfT1RHX1BDR0NDVExfR0FURUNMSyk7CisKICAgVVNCeF9ERVZJQ0UtPkRDVEwgfD0gVVNCX09UR19EQ1RMX1NESVM7Ci0gIEhBTF9EZWxheSgzVSk7CiAKICAgcmV0dXJuIEhBTF9PSzsKIH0KQEAgLTEyNTUsNyArMTI1Nyw3IEBACiAvKioKICAgKiBAYnJpZWYgIFVTQl9DbGVhckludGVycnVwdHM6IGNsZWFyIGEgVVNCIGludGVycnVwdAogICAqIEBwYXJhbSAgVVNCeCAgU2VsZWN0ZWQgZGV2aWNlCi0gICogQHBhcmFtICBpbnRlcnJ1cHQgIGludGVycnVwdCBmbGFnCisgICogQHBhcmFtICBpbnRlcnJ1cHQgIGZsYWcKICAgKiBAcmV0dmFsIE5vbmUKICAgKi8KIHZvaWQgIFVTQl9DbGVhckludGVycnVwdHMoVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4LCB1aW50MzJfdCBpbnRlcnJ1cHQpCkBAIC0xMzQ3LDggKzEzNDksNyBAQAogICAgIHsKICAgICAgIHJldHVybiBIQUxfVElNRU9VVDsKICAgICB9Ci0gIH0KLSAgd2hpbGUgKChVU0J4LT5HUlNUQ1RMICYgVVNCX09UR19HUlNUQ1RMX0FIQklETCkgPT0gMFUpOworICB9IHdoaWxlICgoVVNCeC0+R1JTVENUTCAmIFVTQl9PVEdfR1JTVENUTF9BSEJJREwpID09IDBVKTsKIAogICAvKiBDb3JlIFNvZnQgUmVzZXQgKi8KICAgY291bnQgPSAwVTsKQEAgLTEzNjAsOCArMTM2MSw3IEBACiAgICAgewogICAgICAgcmV0dXJuIEhBTF9USU1FT1VUOwogICAgIH0KLSAgfQotICB3aGlsZSAoKFVTQngtPkdSU1RDVEwgJiBVU0JfT1RHX0dSU1RDVExfQ1NSU1QpID09IFVTQl9PVEdfR1JTVENUTF9DU1JTVCk7CisgIH0gd2hpbGUgKChVU0J4LT5HUlNUQ1RMICYgVVNCX09UR19HUlNUQ1RMX0NTUlNUKSA9PSBVU0JfT1RHX0dSU1RDVExfQ1NSU1QpOwogCiAgIHJldHVybiBIQUxfT0s7CiB9CkBAIC0xNTU2LDcgKzE1NTYsNyBAQAogfQogCiAvKioKLSogQGJyaWVmICBVU0JfT1RHX1Jlc2V0UG9ydCA6IFJlc2V0IEhvc3QgUG9ydAorICAqIEBicmllZiAgVVNCX09UR19SZXNldFBvcnQgOiBSZXNldCBIb3N0IFBvcnQKICAgKiBAcGFyYW0gIFVTQnggIFNlbGVjdGVkIGRldmljZQogICAqIEByZXR2YWwgSEFMIHN0YXR1cwogICAqIEBub3RlICgxKVRoZSBhcHBsaWNhdGlvbiBtdXN0IHdhaXQgYXQgbGVhc3QgMTAgbXMKQEAgLTE1ODUsMTAgKzE1ODUsMTAgQEAKICAgKiBAYnJpZWYgIFVTQl9Ecml2ZVZidXMgOiBhY3RpdmF0ZSBvciBkZS1hY3RpdmF0ZSB2YnVzCiAgICogQHBhcmFtICBzdGF0ZSAgVkJVUyBzdGF0ZQogICAqICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBvbmUgb2YgdGhlc2UgdmFsdWVzOgotICAqICAgICAgICAgICAwIDogVkJVUyBBY3RpdmUKLSAgKiAgICAgICAgICAgMSA6IFZCVVMgSW5hY3RpdmUKKyAgKiAgICAgICAgICAgMCA6IERlYWN0aXZhdGUgVkJVUworICAqICAgICAgICAgICAxIDogQWN0aXZhdGUgVkJVUwogICAqIEByZXR2YWwgSEFMIHN0YXR1cwotKi8KKyAgKi8KIEhBTF9TdGF0dXNUeXBlRGVmIFVTQl9Ecml2ZVZidXMoVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4LCB1aW50OF90IHN0YXRlKQogewogICB1aW50MzJfdCBVU0J4X0JBU0UgPSAodWludDMyX3QpVVNCeDsKQEAgLTE2MzIsNyArMTYzMiw3IEBACiAgICogQGJyaWVmICBSZXR1cm4gSG9zdCBDdXJyZW50IEZyYW1lIG51bWJlcgogICAqIEBwYXJhbSAgVVNCeCAgU2VsZWN0ZWQgZGV2aWNlCiAgICogQHJldHZhbCBjdXJyZW50IGZyYW1lIG51bWJlcgotKi8KKyAgKi8KIHVpbnQzMl90IFVTQl9HZXRDdXJyZW50RnJhbWUoVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4KQogewogICB1aW50MzJfdCBVU0J4X0JBU0UgPSAodWludDMyX3QpVVNCeDsKQEAgLTE2NjEsMjAgKzE2NjEsMTcgQEAKICAgKiAgICAgICAgICAgIEBhcmcgRVBfVFlQRV9CVUxLOiBCdWxrIHR5cGUKICAgKiAgICAgICAgICAgIEBhcmcgRVBfVFlQRV9JTlRSOiBJbnRlcnJ1cHQgdHlwZQogICAqIEBwYXJhbSAgbXBzICBNYXggUGFja2V0IFNpemUKLSAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBmcm9tIDAgdG8zMksKKyAgKiAgICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gYmUgYSB2YWx1ZSBmcm9tIDAgdG8gMzJLCiAgICogQHJldHZhbCBIQUwgc3RhdGUKICAgKi8KLUhBTF9TdGF0dXNUeXBlRGVmIFVTQl9IQ19Jbml0KFVTQl9PVEdfR2xvYmFsVHlwZURlZiAqVVNCeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgY2hfbnVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBlcG51bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZGV2X2FkZHJlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHNwZWVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBlcF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgbXBzKQorSEFMX1N0YXR1c1R5cGVEZWYgVVNCX0hDX0luaXQoVVNCX09UR19HbG9iYWxUeXBlRGVmICpVU0J4LCB1aW50OF90IGNoX251bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgZXBudW0sIHVpbnQ4X3QgZGV2X2FkZHJlc3MsIHVpbnQ4X3Qgc3BlZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGVwX3R5cGUsIHVpbnQxNl90IG1wcykKIHsKICAgSEFMX1N0YXR1c1R5cGVEZWYgcmV0ID0gSEFMX09LOwogICB1aW50MzJfdCBVU0J4X0JBU0UgPSAodWludDMyX3QpVVNCeDsKICAgdWludDMyX3QgSENjaGFyRXBEaXIsIEhDY2hhckxvd1NwZWVkOworICB1aW50MzJfdCBIb3N0Q29yZVNwZWVkOwogCiAgIC8qIENsZWFyIG9sZCBpbnRlcnJ1cHQgY29uZGl0aW9ucyBmb3IgdGhpcyBob3N0IGNoYW5uZWwuICovCiAgIFVTQnhfSEMoKHVpbnQzMl90KWNoX251bSktPkhDSU5UID0gMHhGRkZGRkZGRlU7CkBAIC0xNjk5LDcgKzE2OTYsOCBAQAogICAgICAgewogICAgICAgICBpZiAoKFVTQngtPkNJRCAmICgweDFVIDw8IDgpKSAhPSAwVSkKICAgICAgICAgewotICAgICAgICAgIFVTQnhfSEMoKHVpbnQzMl90KWNoX251bSktPkhDSU5UTVNLIHw9IChVU0JfT1RHX0hDSU5UTVNLX05ZRVQgfCBVU0JfT1RHX0hDSU5UTVNLX0FDS00pOworICAgICAgICAgIFVTQnhfSEMoKHVpbnQzMl90KWNoX251bSktPkhDSU5UTVNLIHw9IFVTQl9PVEdfSENJTlRNU0tfTllFVCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVNCX09UR19IQ0lOVE1TS19BQ0tNOwogICAgICAgICB9CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTE3NTMsNyArMTc1MSwxMCBAQAogICAgIEhDY2hhckVwRGlyID0gMFU7CiAgIH0KIAotICBpZiAoc3BlZWQgPT0gSFBSVDBfUFJUU1BEX0xPV19TUEVFRCkKKyAgSG9zdENvcmVTcGVlZCA9IFVTQl9HZXRIb3N0U3BlZWQoVVNCeCk7CisKKyAgLyogTFMgZGV2aWNlIHBsdWdnZWQgdG8gSFVCICovCisgIGlmICgoc3BlZWQgPT0gSFBSVDBfUFJUU1BEX0xPV19TUEVFRCkgJiYgKEhvc3RDb3JlU3BlZWQgIT0gSFBSVDBfUFJUU1BEX0xPV19TUEVFRCkpCiAgIHsKICAgICBIQ2NoYXJMb3dTcGVlZCA9ICgweDFVIDw8IDE3KSAmIFVTQl9PVEdfSENDSEFSX0xTREVWOwogICB9CkBAIC0xNzg5LDcgKzE3OTAsNyBAQAogewogICB1aW50MzJfdCBVU0J4X0JBU0UgPSAodWludDMyX3QpVVNCeDsKICAgdWludDMyX3QgY2hfbnVtID0gKHVpbnQzMl90KWhjLT5jaF9udW07Ci0gIHN0YXRpYyBfX0lPIHVpbnQzMl90IHRtcHJlZyA9IDBVOworICBfX0lPIHVpbnQzMl90IHRtcHJlZzsKICAgdWludDhfdCAgaXNfb2RkZnJhbWU7CiAgIHVpbnQxNl90IGxlbl93b3JkczsKICAgdWludDE2X3QgbnVtX3BhY2tldHM7CkBAIC0xNzk3LDIwICsxNzk4LDIwIEBACiAKICAgaWYgKCgoVVNCeC0+Q0lEICYgKDB4MVUgPDwgOCkpICE9IDBVKSAmJiAoaGMtPnNwZWVkID09IFVTQkhfSFNfU1BFRUQpKQogICB7CisgICAgLyogaW4gRE1BIG1vZGUgaG9zdCBDb3JlIGF1dG9tYXRpY2FsbHkgaXNzdWVzIHBpbmcgIGluIGNhc2Ugb2YgTllFVC9OQUsgKi8KKyAgICBpZiAoKGRtYSA9PSAxVSkgJiYgKChoYy0+ZXBfdHlwZSA9PSBFUF9UWVBFX0NUUkwpIHx8IChoYy0+ZXBfdHlwZSA9PSBFUF9UWVBFX0JVTEspKSkKKyAgICB7CisgICAgICBVU0J4X0hDKCh1aW50MzJfdCljaF9udW0pLT5IQ0lOVE1TSyAmPSB+KFVTQl9PVEdfSENJTlRNU0tfTllFVCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQl9PVEdfSENJTlRNU0tfQUNLTSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQl9PVEdfSENJTlRNU0tfTkFLTSk7CisgICAgfQorCiAgICAgaWYgKChkbWEgPT0gMFUpICYmIChoYy0+ZG9fcGluZyA9PSAxVSkpCiAgICAgewogICAgICAgKHZvaWQpVVNCX0RvUGluZyhVU0J4LCBoYy0+Y2hfbnVtKTsKICAgICAgIHJldHVybiBIQUxfT0s7CiAgICAgfQotICAgIGVsc2UgaWYgKGRtYSA9PSAxVSkKLSAgICB7Ci0gICAgICBVU0J4X0hDKGNoX251bSktPkhDSU5UTVNLICY9IH4oVVNCX09UR19IQ0lOVE1TS19OWUVUIHwgVVNCX09UR19IQ0lOVE1TS19BQ0tNKTsKLSAgICAgIGhjLT5kb19waW5nID0gMFU7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAvKiAuLi4gKi8KLSAgICB9CisKICAgfQogCiAgIC8qIENvbXB1dGUgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBwYWNrZXRzIGFzc29jaWF0ZWQgdG8gdGhlIHRyYW5zZmVyICovCkBAIC0xODIxLDIwICsxODIyLDI5IEBACiAgICAgaWYgKG51bV9wYWNrZXRzID4gbWF4X2hjX3BrdF9jb3VudCkKICAgICB7CiAgICAgICBudW1fcGFja2V0cyA9IG1heF9oY19wa3RfY291bnQ7Ci0gICAgICBoYy0+eGZlcl9sZW4gPSAodWludDMyX3QpbnVtX3BhY2tldHMgKiBoYy0+bWF4X3BhY2tldDsKKyAgICAgIGhjLT5YZmVyU2l6ZSA9ICh1aW50MzJfdCludW1fcGFja2V0cyAqIGhjLT5tYXhfcGFja2V0OwogICAgIH0KICAgfQogICBlbHNlCiAgIHsKICAgICBudW1fcGFja2V0cyA9IDFVOwogICB9CisKKyAgLyoKKyAgICogRm9yIElOIGNoYW5uZWwgSENUU0laLlhmZXJTaXplIGlzIGV4cGVjdGVkIHRvIGJlIGFuIGludGVnZXIgbXVsdGlwbGUgb2YKKyAgICogbWF4X3BhY2tldCBzaXplLgorICAgKi8KICAgaWYgKGhjLT5lcF9pc19pbiAhPSAwVSkKICAgewotICAgIGhjLT54ZmVyX2xlbiA9ICh1aW50MzJfdCludW1fcGFja2V0cyAqIGhjLT5tYXhfcGFja2V0OworICAgIGhjLT5YZmVyU2l6ZSA9ICh1aW50MzJfdCludW1fcGFja2V0cyAqIGhjLT5tYXhfcGFja2V0OworICB9CisgIGVsc2UKKyAgeworICAgIGhjLT5YZmVyU2l6ZSA9IGhjLT54ZmVyX2xlbjsKICAgfQogCiAgIC8qIEluaXRpYWxpemUgdGhlIEhDVFNJWm4gcmVnaXN0ZXIgKi8KLSAgVVNCeF9IQyhjaF9udW0pLT5IQ1RTSVogPSAoaGMtPnhmZXJfbGVuICYgVVNCX09UR19IQ1RTSVpfWEZSU0laKSB8CisgIFVTQnhfSEMoY2hfbnVtKS0+SENUU0laID0gKGhjLT5YZmVyU2l6ZSAmIFVTQl9PVEdfSENUU0laX1hGUlNJWikgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQzMl90KW51bV9wYWNrZXRzIDw8IDE5KSAmIFVTQl9PVEdfSENUU0laX1BLVENOVCkgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQzMl90KWhjLT5kYXRhX3BpZCA8PCAyOSkgJiBVU0JfT1RHX0hDVFNJWl9EUElEKTsKIApAQCAtMTg2NCw0NSArMTg3NCw0NyBAQAogICB0bXByZWcgfD0gVVNCX09UR19IQ0NIQVJfQ0hFTkE7CiAgIFVTQnhfSEMoY2hfbnVtKS0+SENDSEFSID0gdG1wcmVnOwogCi0gIGlmIChkbWEgPT0gMFUpIC8qIFNsYXZlIG1vZGUgKi8KKyAgaWYgKGRtYSAhPSAwVSkgLyogZG1hIG1vZGUgKi8KICAgewotICAgIGlmICgoaGMtPmVwX2lzX2luID09IDBVKSAmJiAoaGMtPnhmZXJfbGVuID4gMFUpKQorICAgIHJldHVybiBIQUxfT0s7CisgIH0KKworICBpZiAoKGhjLT5lcF9pc19pbiA9PSAwVSkgJiYgKGhjLT54ZmVyX2xlbiA+IDBVKSkKKyAgeworICAgIHN3aXRjaCAoaGMtPmVwX3R5cGUpCiAgICAgewotICAgICAgc3dpdGNoIChoYy0+ZXBfdHlwZSkKLSAgICAgIHsKLSAgICAgICAgLyogTm9uIHBlcmlvZGljIHRyYW5zZmVyICovCi0gICAgICAgIGNhc2UgRVBfVFlQRV9DVFJMOgotICAgICAgICBjYXNlIEVQX1RZUEVfQlVMSzoKKyAgICAgIC8qIE5vbiBwZXJpb2RpYyB0cmFuc2ZlciAqLworICAgICAgY2FzZSBFUF9UWVBFX0NUUkw6CisgICAgICBjYXNlIEVQX1RZUEVfQlVMSzoKIAotICAgICAgICAgIGxlbl93b3JkcyA9ICh1aW50MTZfdCkoKGhjLT54ZmVyX2xlbiArIDNVKSAvIDRVKTsKKyAgICAgICAgbGVuX3dvcmRzID0gKHVpbnQxNl90KSgoaGMtPnhmZXJfbGVuICsgM1UpIC8gNFUpOwogCi0gICAgICAgICAgLyogY2hlY2sgaWYgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGluIEZJRk8gc3BhY2UgKi8KLSAgICAgICAgICBpZiAobGVuX3dvcmRzID4gKFVTQngtPkhOUFRYU1RTICYgMHhGRkZGVSkpCi0gICAgICAgICAgewotICAgICAgICAgICAgLyogbmVlZCB0byBwcm9jZXNzIGRhdGEgaW4gbnB0eGZlbXB0eSBpbnRlcnJ1cHQgKi8KLSAgICAgICAgICAgIFVTQngtPkdJTlRNU0sgfD0gVVNCX09UR19HSU5UTVNLX05QVFhGRU07Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOworICAgICAgICAvKiBjaGVjayBpZiB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaW4gRklGTyBzcGFjZSAqLworICAgICAgICBpZiAobGVuX3dvcmRzID4gKFVTQngtPkhOUFRYU1RTICYgMHhGRkZGVSkpCisgICAgICAgIHsKKyAgICAgICAgICAvKiBuZWVkIHRvIHByb2Nlc3MgZGF0YSBpbiBucHR4ZmVtcHR5IGludGVycnVwdCAqLworICAgICAgICAgIFVTQngtPkdJTlRNU0sgfD0gVVNCX09UR19HSU5UTVNLX05QVFhGRU07CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgLyogUGVyaW9kaWMgdHJhbnNmZXIgKi8KLSAgICAgICAgY2FzZSBFUF9UWVBFX0lOVFI6Ci0gICAgICAgIGNhc2UgRVBfVFlQRV9JU09DOgotICAgICAgICAgIGxlbl93b3JkcyA9ICh1aW50MTZfdCkoKGhjLT54ZmVyX2xlbiArIDNVKSAvIDRVKTsKLSAgICAgICAgICAvKiBjaGVjayBpZiB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaW4gRklGTyBzcGFjZSAqLwotICAgICAgICAgIGlmIChsZW5fd29yZHMgPiAoVVNCeF9IT1NULT5IUFRYU1RTICYgMHhGRkZGVSkpIC8qIHNwbGl0IHRoZSB0cmFuc2ZlciAqLwotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8qIG5lZWQgdG8gcHJvY2VzcyBkYXRhIGluIHB0eGZlbXB0eSBpbnRlcnJ1cHQgKi8KLSAgICAgICAgICAgIFVTQngtPkdJTlRNU0sgfD0gVVNCX09UR19HSU5UTVNLX1BUWEZFTTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7CisgICAgICAvKiBQZXJpb2RpYyB0cmFuc2ZlciAqLworICAgICAgY2FzZSBFUF9UWVBFX0lOVFI6CisgICAgICBjYXNlIEVQX1RZUEVfSVNPQzoKKyAgICAgICAgbGVuX3dvcmRzID0gKHVpbnQxNl90KSgoaGMtPnhmZXJfbGVuICsgM1UpIC8gNFUpOworICAgICAgICAvKiBjaGVjayBpZiB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaW4gRklGTyBzcGFjZSAqLworICAgICAgICBpZiAobGVuX3dvcmRzID4gKFVTQnhfSE9TVC0+SFBUWFNUUyAmIDB4RkZGRlUpKSAvKiBzcGxpdCB0aGUgdHJhbnNmZXIgKi8KKyAgICAgICAgeworICAgICAgICAgIC8qIG5lZWQgdG8gcHJvY2VzcyBkYXRhIGluIHB0eGZlbXB0eSBpbnRlcnJ1cHQgKi8KKyAgICAgICAgICBVU0J4LT5HSU5UTVNLIHw9IFVTQl9PVEdfR0lOVE1TS19QVFhGRU07CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgLyogV3JpdGUgcGFja2V0IGludG8gdGhlIFR4IEZJRk8uICovCi0gICAgICAodm9pZClVU0JfV3JpdGVQYWNrZXQoVVNCeCwgaGMtPnhmZXJfYnVmZiwgaGMtPmNoX251bSwgKHVpbnQxNl90KWhjLT54ZmVyX2xlbiwgMCk7CisgICAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKICAgICB9CisKKyAgICAvKiBXcml0ZSBwYWNrZXQgaW50byB0aGUgVHggRklGTy4gKi8KKyAgICAodm9pZClVU0JfV3JpdGVQYWNrZXQoVVNCeCwgaGMtPnhmZXJfYnVmZiwgaGMtPmNoX251bSwgKHVpbnQxNl90KWhjLT54ZmVyX2xlbiwgMCk7CiAgIH0KIAogICByZXR1cm4gSEFMX09LOwpAQCAtMTkzMywyOSArMTk0NSwzOCBAQAogICB1aW50MzJfdCBoY251bSA9ICh1aW50MzJfdCloY19udW07CiAgIHVpbnQzMl90IGNvdW50ID0gMFU7CiAgIHVpbnQzMl90IEhjRXBUeXBlID0gKFVTQnhfSEMoaGNudW0pLT5IQ0NIQVIgJiBVU0JfT1RHX0hDQ0hBUl9FUFRZUCkgPj4gMTg7CisgIHVpbnQzMl90IENoYW5uZWxFbmEgPSAoVVNCeF9IQyhoY251bSktPkhDQ0hBUiAmIFVTQl9PVEdfSENDSEFSX0NIRU5BKSA+PiAzMTsKKworICBpZiAoKChVU0J4LT5HQUhCQ0ZHICYgVVNCX09UR19HQUhCQ0ZHX0RNQUVOKSA9PSBVU0JfT1RHX0dBSEJDRkdfRE1BRU4pICYmCisgICAgICAoQ2hhbm5lbEVuYSA9PSAwVSkpCisgIHsKKyAgICByZXR1cm4gSEFMX09LOworICB9CiAKICAgLyogQ2hlY2sgZm9yIHNwYWNlIGluIHRoZSByZXF1ZXN0IHF1ZXVlIHRvIGlzc3VlIHRoZSBoYWx0LiAqLwogICBpZiAoKEhjRXBUeXBlID09IEhDQ0hBUl9DVFJMKSB8fCAoSGNFcFR5cGUgPT0gSENDSEFSX0JVTEspKQogICB7CiAgICAgVVNCeF9IQyhoY251bSktPkhDQ0hBUiB8PSBVU0JfT1RHX0hDQ0hBUl9DSERJUzsKIAotICAgIGlmICgoVVNCeC0+SE5QVFhTVFMgJiAoMHhGRlUgPDwgMTYpKSA9PSAwVSkKKyAgICBpZiAoKFVTQngtPkdBSEJDRkcgJiBVU0JfT1RHX0dBSEJDRkdfRE1BRU4pID09IDBVKQogICAgIHsKLSAgICAgIFVTQnhfSEMoaGNudW0pLT5IQ0NIQVIgJj0gflVTQl9PVEdfSENDSEFSX0NIRU5BOwotICAgICAgVVNCeF9IQyhoY251bSktPkhDQ0hBUiB8PSBVU0JfT1RHX0hDQ0hBUl9DSEVOQTsKLSAgICAgIFVTQnhfSEMoaGNudW0pLT5IQ0NIQVIgJj0gflVTQl9PVEdfSENDSEFSX0VQRElSOwotICAgICAgZG8KKyAgICAgIGlmICgoVVNCeC0+SE5QVFhTVFMgJiAoMHhGRlUgPDwgMTYpKSA9PSAwVSkKICAgICAgIHsKLSAgICAgICAgaWYgKCsrY291bnQgPiAxMDAwVSkKKyAgICAgICAgVVNCeF9IQyhoY251bSktPkhDQ0hBUiAmPSB+VVNCX09UR19IQ0NIQVJfQ0hFTkE7CisgICAgICAgIFVTQnhfSEMoaGNudW0pLT5IQ0NIQVIgfD0gVVNCX09UR19IQ0NIQVJfQ0hFTkE7CisgICAgICAgIFVTQnhfSEMoaGNudW0pLT5IQ0NIQVIgJj0gflVTQl9PVEdfSENDSEFSX0VQRElSOworICAgICAgICBkbwogICAgICAgICB7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgICBpZiAoKytjb3VudCA+IDEwMDBVKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoKFVTQnhfSEMoaGNudW0pLT5IQ0NIQVIgJiBVU0JfT1RHX0hDQ0hBUl9DSEVOQSkgPT0gVVNCX09UR19IQ0NIQVJfQ0hFTkEpOwogICAgICAgfQotICAgICAgd2hpbGUgKChVU0J4X0hDKGhjbnVtKS0+SENDSEFSICYgVVNCX09UR19IQ0NIQVJfQ0hFTkEpID09IFVTQl9PVEdfSENDSEFSX0NIRU5BKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIFVTQnhfSEMoaGNudW0pLT5IQ0NIQVIgfD0gVVNCX09UR19IQ0NIQVJfQ0hFTkE7CisgICAgICBlbHNlCisgICAgICB7CisgICAgICAgIFVTQnhfSEMoaGNudW0pLT5IQ0NIQVIgfD0gVVNCX09UR19IQ0NIQVJfQ0hFTkE7CisgICAgICB9CiAgICAgfQogICB9CiAgIGVsc2UKQEAgLTE5NzMsOCArMTk5NCw3IEBACiAgICAgICAgIHsKICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgfQotICAgICAgd2hpbGUgKChVU0J4X0hDKGhjbnVtKS0+SENDSEFSICYgVVNCX09UR19IQ0NIQVJfQ0hFTkEpID09IFVTQl9PVEdfSENDSEFSX0NIRU5BKTsKKyAgICAgIH0gd2hpbGUgKChVU0J4X0hDKGhjbnVtKS0+SENDSEFSICYgVVNCX09UR19IQ0NIQVJfQ0hFTkEpID09IFVTQl9PVEdfSENDSEFSX0NIRU5BKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTIwNTQsOCArMjA3NCw3IEBACiAgICAgICB7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQotICAgIH0KLSAgICB3aGlsZSAoKFVTQnhfSEMoaSktPkhDQ0hBUiAmIFVTQl9PVEdfSENDSEFSX0NIRU5BKSA9PSBVU0JfT1RHX0hDQ0hBUl9DSEVOQSk7CisgICAgfSB3aGlsZSAoKFVTQnhfSEMoaSktPkhDQ0hBUiAmIFVTQl9PVEdfSENDSEFSX0NIRU5BKSA9PSBVU0JfT1RHX0hDQ0hBUl9DSEVOQSk7CiAgIH0KIAogICAvKiBDbGVhciBhbnkgcGVuZGluZyBIb3N0IGludGVycnVwdHMgKi8KZGlmZiAtLWdpdCBhL1NyYy9zdG0zMmY3eHhfbGxfdXRpbHMuYyBiL1NyYy9zdG0zMmY3eHhfbGxfdXRpbHMuYwppbmRleCAwNzE3ZDg5Li40YWM1N2MwIDEwMDY0NAotLS0gYS9TcmMvc3RtMzJmN3h4X2xsX3V0aWxzLmMKKysrIGIvU3JjL3N0bTMyZjd4eF9sbF91dGlscy5jCkBAIC0xOTMsNyArMTkzLDYgQEAKICAgKi8KIHN0YXRpYyB1aW50MzJfdCAgICBVVElMU19HZXRQTExPdXRwdXRGcmVxdWVuY3kodWludDMyX3QgUExMX0lucHV0RnJlcXVlbmN5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTF9VVElMU19QTExJbml0VHlwZURlZiAqVVRJTFNfUExMSW5pdFN0cnVjdCk7Ci1zdGF0aWMgRXJyb3JTdGF0dXMgVVRJTFNfU2V0Rmxhc2hMYXRlbmN5KHVpbnQzMl90IEhDTEtfRnJlcXVlbmN5KTsKIHN0YXRpYyBFcnJvclN0YXR1cyBVVElMU19FbmFibGVQTExBbmRTd2l0Y2hTeXN0ZW0odWludDMyX3QgU1lTQ0xLX0ZyZXF1ZW5jeSwgTExfVVRJTFNfQ2xrSW5pdFR5cGVEZWYgKlVUSUxTX0Nsa0luaXRTdHJ1Y3QpOwogc3RhdGljIEVycm9yU3RhdHVzIFVUSUxTX1BMTF9Jc0J1c3kodm9pZCk7CiAvKioKQEAgLTMxNyw2ICszMTYsMTYxIEBACiB9CiAKIC8qKgorICAqIEBicmllZiAgVXBkYXRlIG51bWJlciBvZiBGbGFzaCB3YWl0IHN0YXRlcyBpbiBsaW5lIHdpdGggbmV3IGZyZXF1ZW5jeSBhbmQgY3VycmVudAorICAgICAgICAgICAgdm9sdGFnZSByYW5nZS4KKyAgKiBAbm90ZSAgIFRoaXMgRnVuY3Rpb24gc3VwcG9ydCBPTkxZIGRldmljZXMgd2l0aCBzdXBwbHkgdm9sdGFnZSAodm9sdGFnZSByYW5nZSkgYmV0d2VlbiAyLjdWIGFuZCAzLjZWCisgICogQHBhcmFtICBIQ0xLX0ZyZXF1ZW5jeSAgSENMSyBmcmVxdWVuY3kKKyAgKiBAcmV0dmFsIEFuIEVycm9yU3RhdHVzIGVudW1lcmF0aW9uIHZhbHVlOgorICAqICAgICAgICAgIC0gU1VDQ0VTUzogTGF0ZW5jeSBoYXMgYmVlbiBtb2RpZmllZAorICAqICAgICAgICAgIC0gRVJST1I6IExhdGVuY3kgY2Fubm90IGJlIG1vZGlmaWVkCisgICovCitFcnJvclN0YXR1cyBMTF9TZXRGbGFzaExhdGVuY3kodWludDMyX3QgSENMS19GcmVxdWVuY3kpCit7CisgIHVpbnQzMl90IHRpbWVvdXQ7CisgIHVpbnQzMl90IGdldGxhdGVuY3k7CisgIHVpbnQzMl90IGxhdGVuY3kgPSBMTF9GTEFTSF9MQVRFTkNZXzA7ICAvKiBkZWZhdWx0IHZhbHVlIDBXUyAqLworICBFcnJvclN0YXR1cyBzdGF0dXMgPSBTVUNDRVNTOworCisgIC8qIEZyZXF1ZW5jeSBjYW5ub3QgYmUgZXF1YWwgdG8gMCAqLworICBpZihIQ0xLX0ZyZXF1ZW5jeSA9PSAwVSkKKyAgeworICAgIHN0YXR1cyA9IEVSUk9SOworICB9CisgIGVsc2UKKyAgeworICAgIGlmKExMX1BXUl9HZXRSZWd1bFZvbHRhZ2VTY2FsaW5nKCkgPT0gTExfUFdSX1JFR1VfVk9MVEFHRV9TQ0FMRTEpCisgICAgeworICAgICAgaWYoTExfUFdSX0lzRW5hYmxlZE92ZXJEcml2ZU1vZGUoKSAhPSAwVSkKKyAgICAgICAgeworICAgICAgICAgIGlmKEhDTEtfRnJlcXVlbmN5ID4gVVRJTFNfU0NBTEUxX0xBVEVOQ1k3X0ZSRVEpCisgICAgICAgICAgeworICAgICAgICAgICAgLyogMjEwIDwgSENMSyA8PSAyMTYgPT4gN1dTICg4IENQVSBjeWNsZXMpICovCisgICAgICAgICAgICBsYXRlbmN5ID0gTExfRkxBU0hfTEFURU5DWV83OworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIC8qIChIQ0xLX0ZyZXF1ZW5jeSA+IFVUSUxTX1NDQUxFMV9MQVRFTkNZNl9GUkVRKSAqLworICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIDE4MCA8IEhDTEsgPD0gMjEwID0+IDZXUyAoNyBDUFUgY3ljbGVzKSAqLworICAgICAgICAgICAgbGF0ZW5jeSA9IExMX0ZMQVNIX0xBVEVOQ1lfNjsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIGlmKChIQ0xLX0ZyZXF1ZW5jeSA+IFVUSUxTX1NDQUxFMV9MQVRFTkNZNV9GUkVRKSAmJiAobGF0ZW5jeSA9PSBMTF9GTEFTSF9MQVRFTkNZXzApKQorICAgICAgeworICAgICAgICAvKiAxNTAgPCBIQ0xLIDw9IDE4MCA9PiA1V1MgKDYgQ1BVIGN5Y2xlcykgKi8KKyAgICAgICAgbGF0ZW5jeSA9IExMX0ZMQVNIX0xBVEVOQ1lfNTsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoKEhDTEtfRnJlcXVlbmN5ID4gVVRJTFNfU0NBTEUxX0xBVEVOQ1k0X0ZSRVEpICYmIChsYXRlbmN5ID09IExMX0ZMQVNIX0xBVEVOQ1lfMCkpCisgICAgICB7CisgICAgICAgIC8qIDEyMCA8IEhDTEsgPD0gMTUwID0+IDRXUyAoNSBDUFUgY3ljbGVzKSAqLworICAgICAgICBsYXRlbmN5ID0gTExfRkxBU0hfTEFURU5DWV80OworICAgICAgfQorICAgICAgZWxzZSBpZigoSENMS19GcmVxdWVuY3kgPiBVVElMU19TQ0FMRTFfTEFURU5DWTNfRlJFUSkgJiYgKGxhdGVuY3kgPT0gTExfRkxBU0hfTEFURU5DWV8wKSkKKyAgICAgIHsKKyAgICAgICAgLyogOTAgPCBIQ0xLIDw9IDEyMCA9PiAzV1MgKDQgQ1BVIGN5Y2xlcykgKi8KKyAgICAgICAgbGF0ZW5jeSA9IExMX0ZMQVNIX0xBVEVOQ1lfMzsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoKEhDTEtfRnJlcXVlbmN5ID4gVVRJTFNfU0NBTEUxX0xBVEVOQ1kyX0ZSRVEpICYmIChsYXRlbmN5ID09IExMX0ZMQVNIX0xBVEVOQ1lfMCkpCisgICAgICB7CisgICAgICAgIC8qIDYwIDwgSENMSyA8PSA5MCA9PiAyV1MgKDMgQ1BVIGN5Y2xlcykgKi8KKyAgICAgICAgbGF0ZW5jeSA9IExMX0ZMQVNIX0xBVEVOQ1lfMjsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgaWYoKEhDTEtfRnJlcXVlbmN5ID4gVVRJTFNfU0NBTEUxX0xBVEVOQ1kxX0ZSRVEpICYmIChsYXRlbmN5ID09IExMX0ZMQVNIX0xBVEVOQ1lfMCkpCisgICAgICAgIHsKKyAgICAgICAgICAvKiAzMCA8IEhDTEsgPD0gNjAgPT4gMVdTICgyIENQVSBjeWNsZXMpICovCisgICAgICAgICAgbGF0ZW5jeSA9IExMX0ZMQVNIX0xBVEVOQ1lfMTsKKyAgICAgICAgfQorICAgICAgICAvKiBlbHNlIEhDTEtfRnJlcXVlbmN5IDwgMzBNSHogZGVmYXVsdCBMTF9GTEFTSF9MQVRFTkNZXzAgMFdTICovCisgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYoTExfUFdSX0dldFJlZ3VsVm9sdGFnZVNjYWxpbmcoKSA9PSBMTF9QV1JfUkVHVV9WT0xUQUdFX1NDQUxFMikKKyAgICB7CisgICAgICBpZihIQ0xLX0ZyZXF1ZW5jeSA+IFVUSUxTX1NDQUxFMl9MQVRFTkNZNV9GUkVRKQorICAgICAgeworICAgICAgICAvKiAxNTAgPCBIQ0xLIDw9IDE2OCBPUiAxNTAgPCBIQ0xLIDw9IDE4MCAod2hlbiBPdmVyRHJpdmUgbW9kZSBpcyBlbmFibGUpID0+IDVXUyAoNiBDUFUgY3ljbGVzKSAqLworICAgICAgICBsYXRlbmN5ID0gTExfRkxBU0hfTEFURU5DWV81OworICAgICAgfQorICAgICAgZWxzZSBpZihIQ0xLX0ZyZXF1ZW5jeSA+IFVUSUxTX1NDQUxFMl9MQVRFTkNZNF9GUkVRKQorICAgICAgeworICAgICAgICAvKiAxMjAgPCBIQ0xLIDw9IDE1MCA9PiA0V1MgKDUgQ1BVIGN5Y2xlcykgKi8KKyAgICAgICAgbGF0ZW5jeSA9IExMX0ZMQVNIX0xBVEVOQ1lfNDsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoSENMS19GcmVxdWVuY3kgPiBVVElMU19TQ0FMRTJfTEFURU5DWTNfRlJFUSkKKyAgICAgIHsKKyAgICAgICAgLyogOTAgPCBIQ0xLIDw9IDEyMCA9PiAzV1MgKDQgQ1BVIGN5Y2xlcykgKi8KKyAgICAgICAgbGF0ZW5jeSA9IExMX0ZMQVNIX0xBVEVOQ1lfMzsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoSENMS19GcmVxdWVuY3kgPiBVVElMU19TQ0FMRTJfTEFURU5DWTJfRlJFUSkKKyAgICAgIHsKKyAgICAgICAgLyogNjAgPCBIQ0xLIDw9IDkwID0+IDJXUyAoMyBDUFUgY3ljbGVzKSAqLworICAgICAgICBsYXRlbmN5ID0gTExfRkxBU0hfTEFURU5DWV8yOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBpZihIQ0xLX0ZyZXF1ZW5jeSA+IFVUSUxTX1NDQUxFMl9MQVRFTkNZMV9GUkVRKQorICAgICAgICB7CisgICAgICAgICAgLyogMzAgPCBIQ0xLIDw9IDYwID0+IDFXUyAoMiBDUFUgY3ljbGVzKSAqLworICAgICAgICAgIGxhdGVuY3kgPSBMTF9GTEFTSF9MQVRFTkNZXzE7CisgICAgICAgIH0KKyAgICAgICAgLyogZWxzZSBIQ0xLX0ZyZXF1ZW5jeSA8IDI0TUh6IGRlZmF1bHQgTExfRkxBU0hfTEFURU5DWV8wIDBXUyAqLworICAgICAgfQorICAgIH0KKyAgICBlbHNlIC8qIFNjYWxlIDMgKi8KKyAgICB7CisgICAgICBpZihIQ0xLX0ZyZXF1ZW5jeSA+IFVUSUxTX1NDQUxFM19MQVRFTkNZNF9GUkVRKQorICAgICAgeworICAgICAgICAvKiAxMjAgPCBIQ0xLIDw9IDE0NCA9PiA0V1MgKDUgQ1BVIGN5Y2xlcykgKi8KKyAgICAgICAgbGF0ZW5jeSA9IExMX0ZMQVNIX0xBVEVOQ1lfNDsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoSENMS19GcmVxdWVuY3kgPiBVVElMU19TQ0FMRTNfTEFURU5DWTNfRlJFUSkKKyAgICAgIHsKKyAgICAgICAgLyogOTAgPCBIQ0xLIDw9IDEyMCA9PiAzV1MgKDQgQ1BVIGN5Y2xlcykgKi8KKyAgICAgICAgbGF0ZW5jeSA9IExMX0ZMQVNIX0xBVEVOQ1lfMzsKKyAgICAgIH0KKyAgICAgIGVsc2UgaWYoSENMS19GcmVxdWVuY3kgPiBVVElMU19TQ0FMRTNfTEFURU5DWTJfRlJFUSkKKyAgICAgIHsKKyAgICAgICAgLyogNjAgPCBIQ0xLIDw9IDkwID0+IDJXUyAoMyBDUFUgY3ljbGVzKSAqLworICAgICAgICBsYXRlbmN5ID0gTExfRkxBU0hfTEFURU5DWV8yOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBpZihIQ0xLX0ZyZXF1ZW5jeSA+IFVUSUxTX1NDQUxFM19MQVRFTkNZMV9GUkVRKQorICAgICAgICB7CisgICAgICAgICAgLyogMzAgPCBIQ0xLIDw9IDYwID0+IDFXUyAoMiBDUFUgY3ljbGVzKSAqLworICAgICAgICAgIGxhdGVuY3kgPSBMTF9GTEFTSF9MQVRFTkNZXzE7CisgICAgICAgIH0KKyAgICAgICAgLyogZWxzZSBIQ0xLX0ZyZXF1ZW5jeSA8IDIyTUh6IGRlZmF1bHQgTExfRkxBU0hfTEFURU5DWV8wIDBXUyAqLworICAgICAgfQorICAgIH0KKworICAgIGlmIChzdGF0dXMgIT0gRVJST1IpCisgICAgeworICAgICAgTExfRkxBU0hfU2V0TGF0ZW5jeShsYXRlbmN5KTsKKworICAgICAgLyogQ2hlY2sgdGhhdCB0aGUgbmV3IG51bWJlciBvZiB3YWl0IHN0YXRlcyBpcyB0YWtlbiBpbnRvIGFjY291bnQgdG8gYWNjZXNzIHRoZSBGbGFzaAorICAgICAgICAgICBtZW1vcnkgYnkgcmVhZGluZyB0aGUgRkxBU0hfQUNSIHJlZ2lzdGVyICovCisgICAgICB0aW1lb3V0ID0gMjsKKyAgICAgIGRvCisgICAgICB7CisgICAgICAvKiBXYWl0IGZvciBGbGFzaCBsYXRlbmN5IHRvIGJlIHVwZGF0ZWQgKi8KKyAgICAgIGdldGxhdGVuY3kgPSBMTF9GTEFTSF9HZXRMYXRlbmN5KCk7CisgICAgICB0aW1lb3V0LS07CisgICAgICB9IHdoaWxlICgoZ2V0bGF0ZW5jeSAhPSBsYXRlbmN5KSAmJiAodGltZW91dCA+IDApKTsKKworICAgICAgaWYoZ2V0bGF0ZW5jeSAhPSBsYXRlbmN5KQorICAgICAgeworICAgICAgICBzdGF0dXMgPSBFUlJPUjsKKyAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgIHsKKyAgICAgICAgc3RhdHVzID0gU1VDQ0VTUzsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgcmV0dXJuIHN0YXR1czsKK30KKworLyoqCiAgICogQGJyaWVmICBUaGlzIGZ1bmN0aW9uIGNvbmZpZ3VyZXMgc3lzdGVtIGNsb2NrIGF0IG1heGltdW0gZnJlcXVlbmN5IHdpdGggSFNJIGFzIGNsb2NrIHNvdXJjZSBvZiB0aGUgUExMCiAgICogQG5vdGUgICBUaGUgYXBwbGljYXRpb24gbmVlZCB0byBlbnN1cmUgdGhhdCBQTEwgaXMgZGlzYWJsZWQuCiAgICogQG5vdGUgICBGdW5jdGlvbiBpcyBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIGZvcm11bGE6CkBAIC00NTUsMTQ1ICs2MDksNiBAQAogICAqIEB7CiAgICovCiAvKioKLSAgKiBAYnJpZWYgIFVwZGF0ZSBudW1iZXIgb2YgRmxhc2ggd2FpdCBzdGF0ZXMgaW4gbGluZSB3aXRoIG5ldyBmcmVxdWVuY3kgYW5kIGN1cnJlbnQKLSAgICAgICAgICAgIHZvbHRhZ2UgcmFuZ2UuCi0gICogQG5vdGUgICBUaGlzIEZ1bmN0aW9uIHN1cHBvcnQgT05MWSBkZXZpY2VzIHdpdGggc3VwcGx5IHZvbHRhZ2UgKHZvbHRhZ2UgcmFuZ2UpIGJldHdlZW4gMi43ViBhbmQgMy42VgotICAqIEBwYXJhbSAgSENMS19GcmVxdWVuY3kgIEhDTEsgZnJlcXVlbmN5Ci0gICogQHJldHZhbCBBbiBFcnJvclN0YXR1cyBlbnVtZXJhdGlvbiB2YWx1ZToKLSAgKiAgICAgICAgICAtIFNVQ0NFU1M6IExhdGVuY3kgaGFzIGJlZW4gbW9kaWZpZWQKLSAgKiAgICAgICAgICAtIEVSUk9SOiBMYXRlbmN5IGNhbm5vdCBiZSBtb2RpZmllZAotICAqLwotc3RhdGljIEVycm9yU3RhdHVzIFVUSUxTX1NldEZsYXNoTGF0ZW5jeSh1aW50MzJfdCBIQ0xLX0ZyZXF1ZW5jeSkKLXsKLSAgRXJyb3JTdGF0dXMgc3RhdHVzID0gU1VDQ0VTUzsKLQotICB1aW50MzJfdCBsYXRlbmN5ID0gTExfRkxBU0hfTEFURU5DWV8wOyAgLyogZGVmYXVsdCB2YWx1ZSAwV1MgKi8KLQotICAvKiBGcmVxdWVuY3kgY2Fubm90IGJlIGVxdWFsIHRvIDAgKi8KLSAgaWYoSENMS19GcmVxdWVuY3kgPT0gMFUpCi0gIHsKLSAgICBzdGF0dXMgPSBFUlJPUjsKLSAgfQotICBlbHNlCi0gIHsKLSAgICBpZihMTF9QV1JfR2V0UmVndWxWb2x0YWdlU2NhbGluZygpID09IExMX1BXUl9SRUdVX1ZPTFRBR0VfU0NBTEUxKQotICAgIHsKLSAgICAgIGlmKExMX1BXUl9Jc0VuYWJsZWRPdmVyRHJpdmVNb2RlKCkgIT0gMFUpCi0gICAgICAgIHsKLSAgICAgICAgICBpZihIQ0xLX0ZyZXF1ZW5jeSA+IFVUSUxTX1NDQUxFMV9MQVRFTkNZN19GUkVRKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIC8qIDIxMCA8IEhDTEsgPD0gMjE2ID0+IDdXUyAoOCBDUFUgY3ljbGVzKSAqLwotICAgICAgICAgICAgbGF0ZW5jeSA9IExMX0ZMQVNIX0xBVEVOQ1lfNzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSAvKiAoSENMS19GcmVxdWVuY3kgPiBVVElMU19TQ0FMRTFfTEFURU5DWTZfRlJFUSkgKi8KLSAgICAgICAgICB7Ci0gICAgICAgICAgICAvKiAxODAgPCBIQ0xLIDw9IDIxMCA9PiA2V1MgKDcgQ1BVIGN5Y2xlcykgKi8KLSAgICAgICAgICAgIGxhdGVuY3kgPSBMTF9GTEFTSF9MQVRFTkNZXzY7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICBpZigoSENMS19GcmVxdWVuY3kgPiBVVElMU19TQ0FMRTFfTEFURU5DWTVfRlJFUSkgJiYgKGxhdGVuY3kgPT0gTExfRkxBU0hfTEFURU5DWV8wKSkKLSAgICAgIHsKLSAgICAgICAgLyogMTUwIDwgSENMSyA8PSAxODAgPT4gNVdTICg2IENQVSBjeWNsZXMpICovCi0gICAgICAgIGxhdGVuY3kgPSBMTF9GTEFTSF9MQVRFTkNZXzU7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKChIQ0xLX0ZyZXF1ZW5jeSA+IFVUSUxTX1NDQUxFMV9MQVRFTkNZNF9GUkVRKSAmJiAobGF0ZW5jeSA9PSBMTF9GTEFTSF9MQVRFTkNZXzApKQotICAgICAgewotICAgICAgICAvKiAxMjAgPCBIQ0xLIDw9IDE1MCA9PiA0V1MgKDUgQ1BVIGN5Y2xlcykgKi8KLSAgICAgICAgbGF0ZW5jeSA9IExMX0ZMQVNIX0xBVEVOQ1lfNDsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoKEhDTEtfRnJlcXVlbmN5ID4gVVRJTFNfU0NBTEUxX0xBVEVOQ1kzX0ZSRVEpICYmIChsYXRlbmN5ID09IExMX0ZMQVNIX0xBVEVOQ1lfMCkpCi0gICAgICB7Ci0gICAgICAgIC8qIDkwIDwgSENMSyA8PSAxMjAgPT4gM1dTICg0IENQVSBjeWNsZXMpICovCi0gICAgICAgIGxhdGVuY3kgPSBMTF9GTEFTSF9MQVRFTkNZXzM7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKChIQ0xLX0ZyZXF1ZW5jeSA+IFVUSUxTX1NDQUxFMV9MQVRFTkNZMl9GUkVRKSAmJiAobGF0ZW5jeSA9PSBMTF9GTEFTSF9MQVRFTkNZXzApKQotICAgICAgewotICAgICAgICAvKiA2MCA8IEhDTEsgPD0gOTAgPT4gMldTICgzIENQVSBjeWNsZXMpICovCi0gICAgICAgIGxhdGVuY3kgPSBMTF9GTEFTSF9MQVRFTkNZXzI7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIGlmKChIQ0xLX0ZyZXF1ZW5jeSA+IFVUSUxTX1NDQUxFMV9MQVRFTkNZMV9GUkVRKSAmJiAobGF0ZW5jeSA9PSBMTF9GTEFTSF9MQVRFTkNZXzApKQotICAgICAgICB7Ci0gICAgICAgICAgLyogMzAgPCBIQ0xLIDw9IDYwID0+IDFXUyAoMiBDUFUgY3ljbGVzKSAqLwotICAgICAgICAgIGxhdGVuY3kgPSBMTF9GTEFTSF9MQVRFTkNZXzE7Ci0gICAgICAgIH0KLSAgICAgICAgLyogZWxzZSBIQ0xLX0ZyZXF1ZW5jeSA8IDMwTUh6IGRlZmF1bHQgTExfRkxBU0hfTEFURU5DWV8wIDBXUyAqLwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmKExMX1BXUl9HZXRSZWd1bFZvbHRhZ2VTY2FsaW5nKCkgPT0gTExfUFdSX1JFR1VfVk9MVEFHRV9TQ0FMRTIpCi0gICAgewotICAgICAgaWYoSENMS19GcmVxdWVuY3kgPiBVVElMU19TQ0FMRTJfTEFURU5DWTVfRlJFUSkKLSAgICAgIHsKLSAgICAgICAgLyogMTUwIDwgSENMSyA8PSAxNjggT1IgMTUwIDwgSENMSyA8PSAxODAgKHdoZW4gT3ZlckRyaXZlIG1vZGUgaXMgZW5hYmxlKSA9PiA1V1MgKDYgQ1BVIGN5Y2xlcykgKi8KLSAgICAgICAgbGF0ZW5jeSA9IExMX0ZMQVNIX0xBVEVOQ1lfNTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoSENMS19GcmVxdWVuY3kgPiBVVElMU19TQ0FMRTJfTEFURU5DWTRfRlJFUSkKLSAgICAgIHsKLSAgICAgICAgLyogMTIwIDwgSENMSyA8PSAxNTAgPT4gNFdTICg1IENQVSBjeWNsZXMpICovCi0gICAgICAgIGxhdGVuY3kgPSBMTF9GTEFTSF9MQVRFTkNZXzQ7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKEhDTEtfRnJlcXVlbmN5ID4gVVRJTFNfU0NBTEUyX0xBVEVOQ1kzX0ZSRVEpCi0gICAgICB7Ci0gICAgICAgIC8qIDkwIDwgSENMSyA8PSAxMjAgPT4gM1dTICg0IENQVSBjeWNsZXMpICovCi0gICAgICAgIGxhdGVuY3kgPSBMTF9GTEFTSF9MQVRFTkNZXzM7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKEhDTEtfRnJlcXVlbmN5ID4gVVRJTFNfU0NBTEUyX0xBVEVOQ1kyX0ZSRVEpCi0gICAgICB7Ci0gICAgICAgIC8qIDYwIDwgSENMSyA8PSA5MCA9PiAyV1MgKDMgQ1BVIGN5Y2xlcykgKi8KLSAgICAgICAgbGF0ZW5jeSA9IExMX0ZMQVNIX0xBVEVOQ1lfMjsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgaWYoSENMS19GcmVxdWVuY3kgPiBVVElMU19TQ0FMRTJfTEFURU5DWTFfRlJFUSkKLSAgICAgICAgewotICAgICAgICAgIC8qIDMwIDwgSENMSyA8PSA2MCA9PiAxV1MgKDIgQ1BVIGN5Y2xlcykgKi8KLSAgICAgICAgICBsYXRlbmN5ID0gTExfRkxBU0hfTEFURU5DWV8xOwotICAgICAgICB9Ci0gICAgICAgIC8qIGVsc2UgSENMS19GcmVxdWVuY3kgPCAyNE1IeiBkZWZhdWx0IExMX0ZMQVNIX0xBVEVOQ1lfMCAwV1MgKi8KLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSAvKiBTY2FsZSAzICovCi0gICAgewotICAgICAgaWYoSENMS19GcmVxdWVuY3kgPiBVVElMU19TQ0FMRTNfTEFURU5DWTRfRlJFUSkKLSAgICAgIHsKLSAgICAgICAgLyogMTIwIDwgSENMSyA8PSAxNDQgPT4gNFdTICg1IENQVSBjeWNsZXMpICovCi0gICAgICAgIGxhdGVuY3kgPSBMTF9GTEFTSF9MQVRFTkNZXzQ7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKEhDTEtfRnJlcXVlbmN5ID4gVVRJTFNfU0NBTEUzX0xBVEVOQ1kzX0ZSRVEpCi0gICAgICB7Ci0gICAgICAgIC8qIDkwIDwgSENMSyA8PSAxMjAgPT4gM1dTICg0IENQVSBjeWNsZXMpICovCi0gICAgICAgIGxhdGVuY3kgPSBMTF9GTEFTSF9MQVRFTkNZXzM7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKEhDTEtfRnJlcXVlbmN5ID4gVVRJTFNfU0NBTEUzX0xBVEVOQ1kyX0ZSRVEpCi0gICAgICB7Ci0gICAgICAgIC8qIDYwIDwgSENMSyA8PSA5MCA9PiAyV1MgKDMgQ1BVIGN5Y2xlcykgKi8KLSAgICAgICAgbGF0ZW5jeSA9IExMX0ZMQVNIX0xBVEVOQ1lfMjsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgaWYoSENMS19GcmVxdWVuY3kgPiBVVElMU19TQ0FMRTNfTEFURU5DWTFfRlJFUSkKLSAgICAgICAgewotICAgICAgICAgIC8qIDMwIDwgSENMSyA8PSA2MCA9PiAxV1MgKDIgQ1BVIGN5Y2xlcykgKi8KLSAgICAgICAgICBsYXRlbmN5ID0gTExfRkxBU0hfTEFURU5DWV8xOwotICAgICAgICB9Ci0gICAgICAgIC8qIGVsc2UgSENMS19GcmVxdWVuY3kgPCAyMk1IeiBkZWZhdWx0IExMX0ZMQVNIX0xBVEVOQ1lfMCAwV1MgKi8KLSAgICAgIH0KLSAgICB9Ci0KLSAgICBMTF9GTEFTSF9TZXRMYXRlbmN5KGxhdGVuY3kpOwotCi0gICAgLyogQ2hlY2sgdGhhdCB0aGUgbmV3IG51bWJlciBvZiB3YWl0IHN0YXRlcyBpcyB0YWtlbiBpbnRvIGFjY291bnQgdG8gYWNjZXNzIHRoZSBGbGFzaAotICAgICAgIG1lbW9yeSBieSByZWFkaW5nIHRoZSBGTEFTSF9BQ1IgcmVnaXN0ZXIgKi8KLSAgICBpZihMTF9GTEFTSF9HZXRMYXRlbmN5KCkgIT0gbGF0ZW5jeSkKLSAgICB7Ci0gICAgICBzdGF0dXMgPSBFUlJPUjsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHN0YXR1czsKLX0KLQotLyoqCiAgICogQGJyaWVmICBGdW5jdGlvbiB0byBjaGVjayB0aGF0IFBMTCBjYW4gYmUgbW9kaWZpZWQKICAgKiBAcGFyYW0gIFBMTF9JbnB1dEZyZXF1ZW5jeSAgUExMIGlucHV0IGZyZXF1ZW5jeSAoaW4gSHopCiAgICogQHBhcmFtICBVVElMU19QTExJbml0U3RydWN0IHBvaW50ZXIgdG8gYSBAcmVmIExMX1VUSUxTX1BMTEluaXRUeXBlRGVmIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zCkBAIC02ODIsNyArNjk3LDcgQEAKICAgaWYoU3lzdGVtQ29yZUNsb2NrIDwgaGNsa19mcmVxdWVuY3kpCiAgIHsKICAgICAvKiBTZXQgRkxBU0ggbGF0ZW5jeSB0byBoaWdoZXN0IGxhdGVuY3kgKi8KLSAgICBzdGF0dXMgPSBVVElMU19TZXRGbGFzaExhdGVuY3koaGNsa19mcmVxdWVuY3kpOworICAgIHN0YXR1cyA9IExMX1NldEZsYXNoTGF0ZW5jeShoY2xrX2ZyZXF1ZW5jeSk7CiAgIH0KIAogICAvKiBVcGRhdGUgc3lzdGVtIGNsb2NrIGNvbmZpZ3VyYXRpb24gKi8KQEAgLTcxMiw3ICs3MjcsNyBAQAogICBpZihTeXN0ZW1Db3JlQ2xvY2sgPiBoY2xrX2ZyZXF1ZW5jeSkKICAgewogICAgIC8qIFNldCBGTEFTSCBsYXRlbmN5IHRvIGxvd2VzdCBsYXRlbmN5ICovCi0gICAgc3RhdHVzID0gVVRJTFNfU2V0Rmxhc2hMYXRlbmN5KGhjbGtfZnJlcXVlbmN5KTsKKyAgICBzdGF0dXMgPSBMTF9TZXRGbGFzaExhdGVuY3koaGNsa19mcmVxdWVuY3kpOwogICB9CiAKICAgLyogVXBkYXRlIFN5c3RlbUNvcmVDbG9jayB2YXJpYWJsZSAqLwo=