ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL21hcHMvZGJveDItZmxhc2guYyBiL2RyaXZlcnMvbXRkL21hcHMvZGJveDItZmxhc2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODUwYTI3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9tdGQvbWFwcy9kYm94Mi1mbGFzaC5jCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogJElkOiBkYm94Mi1mbGFzaC5jLHYgMS4xMyAyMDA0LzExLzA0IDEzOjI0OjE0IGdsZWl4bmVyIEV4cCAkCisgKgorICogRC1Cb3ggMiBmbGFzaCBkcml2ZXIKKyAqLworCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8bGludXgvbXRkL210ZC5oPgorI2luY2x1ZGUgPGxpbnV4L210ZC9tYXAuaD4KKyNpbmNsdWRlIDxsaW51eC9tdGQvcGFydGl0aW9ucy5oPgorI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisKKy8qIHBhcnRpdGlvbl9pbmZvIGdpdmVzIGRldGFpbHMgb24gdGhlIGxvZ2ljYWwgcGFydGl0aW9ucyB0aGF0IHRoZSBzcGxpdCB0aGUKKyAqIHNpbmdsZSBmbGFzaCBkZXZpY2UgaW50by4gSWYgdGhlIHNpemUgaWYgemVybyB3ZSB1c2UgdXAgdG8gdGhlIGVuZCBvZiB0aGUKKyAqIGRldmljZS4gKi8KK3N0YXRpYyBzdHJ1Y3QgbXRkX3BhcnRpdGlvbiBwYXJ0aXRpb25faW5mb1tdPSB7CisJeworCS5uYW1lCQk9ICJCUiBib290bG9hZGVyIiwKKwkuc2l6ZQkJPSAxMjggKiAxMDI0LCAKKwkub2Zmc2V0CQk9IDAsICAgICAgICAgICAgICAgICAgCisJLm1hc2tfZmxhZ3MJPSBNVERfV1JJVEVBQkxFCisJfSwKKwl7CisJLm5hbWUJCT0gIkZMRlMgKFUtQm9vdCkiLAorCS5zaXplCQk9IDEyOCAqIDEwMjQsIAorCS5vZmZzZXQJCT0gTVREUEFSVF9PRlNfQVBQRU5ELCAKKwkubWFza19mbGFncwk9IDAKKwl9LAorCXsKKwkubmFtZQkJPSAiUm9vdCAoU3F1YXNoRlMpIiwJCisJLnNpemUJCT0gNzA0MCAqIDEwMjQsIAorCS5vZmZzZXQJCT0gTVREUEFSVF9PRlNfQVBQRU5ELCAKKwkubWFza19mbGFncwk9IDAKKwl9LAorCXsKKwkubmFtZQkJPSAidmFyIChKRkZTMikiLAorCS5zaXplCQk9IDg5NiAqIDEwMjQsIAorCS5vZmZzZXQJCT0gTVREUEFSVF9PRlNfQVBQRU5ELCAKKwkubWFza19mbGFncwk9IDAKKwl9LAorCXsKKwkubmFtZQkJPSAiRmxhc2ggd2l0aG91dCBib290bG9hZGVyIiwJCisJLnNpemUJCT0gTVREUEFSVF9TSVpfRlVMTCwgCisJLm9mZnNldAkJPSAxMjggKiAxMDI0LCAKKwkubWFza19mbGFncwk9IDAKKwl9LAorCXsKKwkubmFtZQkJPSAiQ29tcGxldGUgRmxhc2giLAkKKwkuc2l6ZQkJPSBNVERQQVJUX1NJWl9GVUxMLCAKKwkub2Zmc2V0CQk9IDAsIAorCS5tYXNrX2ZsYWdzCT0gTVREX1dSSVRFQUJMRQorCX0KK307CisKKyNkZWZpbmUgTlVNX1BBUlRJVElPTlMgKHNpemVvZihwYXJ0aXRpb25faW5mbykgLyBzaXplb2YocGFydGl0aW9uX2luZm9bMF0pKQorCisjZGVmaW5lIFdJTkRPV19BRERSIDB4MTAwMDAwMDAKKyNkZWZpbmUgV0lORE9XX1NJWkUgMHg4MDAwMDAKKworc3RhdGljIHN0cnVjdCBtdGRfaW5mbyAqbXltdGQ7CisKKworc3RydWN0IG1hcF9pbmZvIGRib3gyX2ZsYXNoX21hcCA9IHsKKwkubmFtZQkJPSAiRC1Cb3ggMiBmbGFzaCBtZW1vcnkiLAorCS5zaXplCQk9IFdJTkRPV19TSVpFLAorCS5iYW5rd2lkdGgJPSA0LAorCS5waHlzCQk9IFdJTkRPV19BRERSLAorfTsKKworaW50IF9faW5pdCBpbml0X2Rib3gyX2ZsYXNoKHZvaWQpCit7CisgICAgICAgCXByaW50ayhLRVJOX05PVElDRSAiRC1Cb3ggMiBmbGFzaCBkcml2ZXIgKHNpemUtPjB4JVggbWVtLT4weCVYKVxuIiwgV0lORE9XX1NJWkUsIFdJTkRPV19BRERSKTsKKwlkYm94Ml9mbGFzaF9tYXAudmlydCA9IGlvcmVtYXAoV0lORE9XX0FERFIsIFdJTkRPV19TSVpFKTsKKworCWlmICghZGJveDJfZmxhc2hfbWFwLnZpcnQpIHsKKwkJcHJpbnRrKCJGYWlsZWQgdG8gaW9yZW1hcFxuIik7CisJCXJldHVybiAtRUlPOworCX0KKwlzaW1wbGVfbWFwX2luaXQoJmRib3gyX2ZsYXNoX21hcCk7CisKKwkvLyBQcm9iZSBmb3IgZHVhbCBJbnRlbCAyOEYzMjAgb3IgZHVhbCBBTUQKKwlteW10ZCA9IGRvX21hcF9wcm9iZSgiY2ZpX3Byb2JlIiwgJmRib3gyX2ZsYXNoX21hcCk7CisJaWYgKCFteW10ZCkgeworCSAgICAvLyBQcm9iZSBmb3Igc2luZ2xlIEludGVsIDI4RjY0MAorCSAgICBkYm94Ml9mbGFzaF9tYXAuYmFua3dpZHRoID0gMjsKKwkKKwkgICAgbXltdGQgPSBkb19tYXBfcHJvYmUoImNmaV9wcm9iZSIsICZkYm94Ml9mbGFzaF9tYXApOworCX0KKwkgICAgCisJaWYgKG15bXRkKSB7CisJCW15bXRkLT5vd25lciA9IFRISVNfTU9EVUxFOworCisgICAgICAgICAgICAgICAgLyogQ3JlYXRlIE1URCBkZXZpY2VzIGZvciBlYWNoIHBhcnRpdGlvbi4gKi8KKwkgICAgICAgIGFkZF9tdGRfcGFydGl0aW9ucyhteW10ZCwgcGFydGl0aW9uX2luZm8sIE5VTV9QQVJUSVRJT05TKTsKKwkJCisJCXJldHVybiAwOworCX0KKworCWlvdW5tYXAoKHZvaWQgKilkYm94Ml9mbGFzaF9tYXAudmlydCk7CisJcmV0dXJuIC1FTlhJTzsKK30KKworc3RhdGljIHZvaWQgX19leGl0IGNsZWFudXBfZGJveDJfZmxhc2godm9pZCkKK3sKKwlpZiAobXltdGQpIHsKKwkJZGVsX210ZF9wYXJ0aXRpb25zKG15bXRkKTsKKwkJbWFwX2Rlc3Ryb3kobXltdGQpOworCX0KKwlpZiAoZGJveDJfZmxhc2hfbWFwLnZpcnQpIHsKKwkJaW91bm1hcCgodm9pZCAqKWRib3gyX2ZsYXNoX21hcC52aXJ0KTsKKwkJZGJveDJfZmxhc2hfbWFwLnZpcnQgPSAwOworCX0KK30KKworbW9kdWxlX2luaXQoaW5pdF9kYm94Ml9mbGFzaCk7Cittb2R1bGVfZXhpdChjbGVhbnVwX2Rib3gyX2ZsYXNoKTsKKworCitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQVVUSE9SKCJL4XJpIERhdu3wc3NvbiA8a2RAZmxhZ2EuaXM+LCBCYXN0aWFuIEJsYW5rIDx3YWxkaUB0dXhib3gub3JnPiwgQWxleGFuZGVyIFdpbGQgPHdpbGRAdGUtZWxla3Ryb25pay5jb20+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIk1URCBtYXAgZHJpdmVyIGZvciBELUJveCAyIGJvYXJkIik7Cg==