ZGlmZiAtLWdpdCBhL3Rlc3RpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQvY29uc3RzLmluIGIvdGVzdGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC9jb25zdHMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVkMjM5YQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQvY29uc3RzLmluCkBAIC0wLDAgKzEsNzEgQEAKK3t7aGVhZGVyfX0KK3t7b2JqZWN0IDEgMH19IDw8CisgIC9UeXBlIC9DYXRhbG9nCisgIC9QYWdlcyAyIDAgUgorICAvT3BlbkFjdGlvbiAxMCAwIFIKKz4+CitlbmRvYmoKK3t7b2JqZWN0IDIgMH19IDw8CisgIC9UeXBlIC9QYWdlcworICAvQ291bnQgMQorICAvS2lkcyBbCisgICAgMyAwIFIKKyAgXQorPj4KK2VuZG9iagorJSBQYWdlIG51bWJlciAwLgore3tvYmplY3QgMyAwfX0gPDwKKyAgL1R5cGUgL1BhZ2UKKyAgL1BhcmVudCAyIDAgUgorICAvUmVzb3VyY2VzIDw8CisgICAgL0ZvbnQgPDwvRjEgMTUgMCBSPj4KKyAgPj4KKyAgL0NvbnRlbnRzIFsyMSAwIFJdCisgIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCis+PgorJSBPcGVuQWN0aW9uIGFjdGlvbgore3tvYmplY3QgMTAgMH19IDw8CisgIC9UeXBlIC9BY3Rpb24KKyAgL1MgL0phdmFTY3JpcHQKKyAgL0pTIDExIDAgUgorPj4KK2VuZG9iagorJSBKUyBwcm9ncmFtIHRvIGV4ZXh1dGUKK3t7b2JqZWN0IDExIDB9fSA8PAorPj4KK3N0cmVhbQorCitmdW5jdGlvbiBkb1Rlc3QobmFtZSwgcHJvcHMpIHsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7ICsraSkgeworICAgIHZhciBleHByID0gbmFtZSArICIuIiArIHByb3BzW2ldOworICAgIGFwcC5hbGVydChleHByICsgIiBpcyAiICsgZXZhbChleHByKSk7CisgIH0KK30KKwordHJ5IHsKKyAgZG9UZXN0KCJib3JkZXIiLCBbInMiLCAiYiIsICJkIiwgImkiLCAidSIsICJub25lc3VjaCJdKTsKKyAgZG9UZXN0KCJkaXNwbGF5IiwgWyJ2aXNpYmxlIiwgImhpZGRlbiIsICJub1ByaW50IiwgIm5vVmlldyIsICJub25lc3VjaCJdKTsKKyAgZG9UZXN0KCJmb250IiwgWyJUaW1lcyIsICJUaW1lc0IiLCAiVGltZXNJIiwgIlRpbWVzQkkiLCAiSGVsdiIsICJIZWx2QiIsCisgICAgICAgICAgICAgICAgICAiSGVsdkkiLCAiSGVsdkJJIiwgIkNvdXIiLCAiQ291ckIiLCAiQ291ckkiLCAiQ291ckJJIiwKKyAgICAgICAgICAgICAgICAgICJTeW1ib2wiLCAiWmFwZkQiLCAiTm9uZXN1Y2giXSk7CisKKyAgZG9UZXN0KCJoaWdobGlnaHQiLCBbIm4iLCAiaSIsICJwIiwgIm8iLCAibm9uZXN1Y2giXSk7CisgIGRvVGVzdCgicG9zaXRpb24iLCBbInRleHRPbmx5IiwgImljb25Pbmx5IiwgImljb25UZXh0ViIsICJ0ZXh0SWNvblYiLAorICAgICAgICAgICAgICAgICAgICAgICJpY29uVGV4dEgiLCAidGV4dEljb25IIiwgIm92ZXJsYXkiLCAibm9uZXN1Y2giXSk7CisKKyAgZG9UZXN0KCJzY2FsZUhvdyIsIFsicHJvcG9ydGlvbmFsIiwgImFuYW1vcnBoaWMiLCAibm9uZXN1Y2giXSk7CisgIGRvVGVzdCgic2NhbGVXaGVuIiwgWyJhbHdheXMiLCAibmV2ZXIiLCAidG9vQmlnIiwgInRvb1NtYWxsIiwgIm5vbmVzdWNoIl0pOworICBkb1Rlc3QoInN0eWxlIiwgWyJjaCIsICJjciIsICJkaSIsICJjaSIsICJzdCIsICJzcSIsICJub25lc3VjaCJdKTsKKyAgZG9UZXN0KCJ6b29tdHlwZSIsIFsibm9uZSIsICJmaXRQIiwgImZpdFciLCAiZml0SCIsICJmaXRWIiwgInByZWYiLCAicmVmVyIsCisgICAgICAgICAgICAgICAgICAgICAgIm5vbmVzdWNoIl0pOworfSBjYXRjaCAoZSkgeworICBhcHAuYWxlcnQoIkVSUk9SOiAiICsgZS50b1N0cmluZygpKTsKK30KK2VuZHN0cmVhbQorZW5kb2JqCit7e3hyZWZ9fQordHJhaWxlciA8PAorICAvUm9vdCAxIDAgUgorPj4KK3t7c3RhcnR4cmVmfX0KKyUlRU9GCmRpZmYgLS1naXQgYS90ZXN0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0L2NvbnN0cy5wZGYgYi90ZXN0aW5nL3Jlc291cmNlcy9qYXZhc2NyaXB0L2NvbnN0cy5wZGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU0MzZlNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQvY29uc3RzLnBkZgpAQCAtMCwwICsxLDg2IEBACislUERGLTEuNworJaDypPQKKzEgMCBvYmogPDwKKyAgL1R5cGUgL0NhdGFsb2cKKyAgL1BhZ2VzIDIgMCBSCisgIC9PcGVuQWN0aW9uIDEwIDAgUgorPj4KK2VuZG9iagorMiAwIG9iaiA8PAorICAvVHlwZSAvUGFnZXMKKyAgL0NvdW50IDEKKyAgL0tpZHMgWworICAgIDMgMCBSCisgIF0KKz4+CitlbmRvYmoKKyUgUGFnZSBudW1iZXIgMC4KKzMgMCBvYmogPDwKKyAgL1R5cGUgL1BhZ2UKKyAgL1BhcmVudCAyIDAgUgorICAvUmVzb3VyY2VzIDw8CisgICAgL0ZvbnQgPDwvRjEgMTUgMCBSPj4KKyAgPj4KKyAgL0NvbnRlbnRzIFsyMSAwIFJdCisgIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCis+PgorJSBPcGVuQWN0aW9uIGFjdGlvbgorMTAgMCBvYmogPDwKKyAgL1R5cGUgL0FjdGlvbgorICAvUyAvSmF2YVNjcmlwdAorICAvSlMgMTEgMCBSCis+PgorZW5kb2JqCislIEpTIHByb2dyYW0gdG8gZXhleHV0ZQorMTEgMCBvYmogPDwKKz4+CitzdHJlYW0KKworZnVuY3Rpb24gZG9UZXN0KG5hbWUsIHByb3BzKSB7CisgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyArK2kpIHsKKyAgICB2YXIgZXhwciA9IG5hbWUgKyAiLiIgKyBwcm9wc1tpXTsKKyAgICBhcHAuYWxlcnQoZXhwciArICIgaXMgIiArIGV2YWwoZXhwcikpOworICB9Cit9CisKK3RyeSB7CisgIGRvVGVzdCgiYm9yZGVyIiwgWyJzIiwgImIiLCAiZCIsICJpIiwgInUiLCAibm9uZXN1Y2giXSk7CisgIGRvVGVzdCgiZGlzcGxheSIsIFsidmlzaWJsZSIsICJoaWRkZW4iLCAibm9QcmludCIsICJub1ZpZXciLCAibm9uZXN1Y2giXSk7CisgIGRvVGVzdCgiZm9udCIsIFsiVGltZXMiLCAiVGltZXNCIiwgIlRpbWVzSSIsICJUaW1lc0JJIiwgIkhlbHYiLCAiSGVsdkIiLAorICAgICAgICAgICAgICAgICAgIkhlbHZJIiwgIkhlbHZCSSIsICJDb3VyIiwgIkNvdXJCIiwgIkNvdXJJIiwgIkNvdXJCSSIsCisgICAgICAgICAgICAgICAgICAiU3ltYm9sIiwgIlphcGZEIiwgIk5vbmVzdWNoIl0pOworCisgIGRvVGVzdCgiaGlnaGxpZ2h0IiwgWyJuIiwgImkiLCAicCIsICJvIiwgIm5vbmVzdWNoIl0pOworICBkb1Rlc3QoInBvc2l0aW9uIiwgWyJ0ZXh0T25seSIsICJpY29uT25seSIsICJpY29uVGV4dFYiLCAidGV4dEljb25WIiwKKyAgICAgICAgICAgICAgICAgICAgICAiaWNvblRleHRIIiwgInRleHRJY29uSCIsICJvdmVybGF5IiwgIm5vbmVzdWNoIl0pOworCisgIGRvVGVzdCgic2NhbGVIb3ciLCBbInByb3BvcnRpb25hbCIsICJhbmFtb3JwaGljIiwgIm5vbmVzdWNoIl0pOworICBkb1Rlc3QoInNjYWxlV2hlbiIsIFsiYWx3YXlzIiwgIm5ldmVyIiwgInRvb0JpZyIsICJ0b29TbWFsbCIsICJub25lc3VjaCJdKTsKKyAgZG9UZXN0KCJzdHlsZSIsIFsiY2giLCAiY3IiLCAiZGkiLCAiY2kiLCAic3QiLCAic3EiLCAibm9uZXN1Y2giXSk7CisgIGRvVGVzdCgiem9vbXR5cGUiLCBbIm5vbmUiLCAiZml0UCIsICJmaXRXIiwgImZpdEgiLCAiZml0ViIsICJwcmVmIiwgInJlZlciLAorICAgICAgICAgICAgICAgICAgICAgICJub25lc3VjaCJdKTsKK30gY2F0Y2ggKGUpIHsKKyAgYXBwLmFsZXJ0KCJFUlJPUjogIiArIGUudG9TdHJpbmcoKSk7Cit9CitlbmRzdHJlYW0KK2VuZG9iagoreHJlZgorMCAxMgorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAxNSAwMDAwMCBuIAorMDAwMDAwMDA4OSAwMDAwMCBuIAorMDAwMDAwMDE3NyAwMDAwMCBuIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDAwMCA2NTUzNSBmIAorMDAwMDAwMDMzNCAwMDAwMCBuIAorMDAwMDAwMDQyNiAwMDAwMCBuIAordHJhaWxlciA8PAorICAvUm9vdCAxIDAgUgorPj4KK3N0YXJ0eHJlZgorMTU1NQorJSVFT0YKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQvY29uc3RzX2V4cGVjdGVkLnR4dCBiL3Rlc3RpbmcvcmVzb3VyY2VzL2phdmFzY3JpcHQvY29uc3RzX2V4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzJkNDgwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9yZXNvdXJjZXMvamF2YXNjcmlwdC9jb25zdHNfZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNjIgQEAKK0FsZXJ0OiBib3JkZXIucyBpcyBzb2xpZAorQWxlcnQ6IGJvcmRlci5iIGlzIGJldmVsZWQKK0FsZXJ0OiBib3JkZXIuZCBpcyBkYXNoZWQKK0FsZXJ0OiBib3JkZXIuaSBpcyBpbnNldAorQWxlcnQ6IGJvcmRlci51IGlzIHVuZGVybGluZQorQWxlcnQ6IGJvcmRlci5ub25lc3VjaCBpcyB1bmRlZmluZWQKK0FsZXJ0OiBkaXNwbGF5LnZpc2libGUgaXMgMAorQWxlcnQ6IGRpc3BsYXkuaGlkZGVuIGlzIDEKK0FsZXJ0OiBkaXNwbGF5Lm5vUHJpbnQgaXMgMgorQWxlcnQ6IGRpc3BsYXkubm9WaWV3IGlzIDMKK0FsZXJ0OiBkaXNwbGF5Lm5vbmVzdWNoIGlzIHVuZGVmaW5lZAorQWxlcnQ6IGZvbnQuVGltZXMgaXMgVGltZXMtUm9tYW4KK0FsZXJ0OiBmb250LlRpbWVzQiBpcyBUaW1lcy1Cb2xkCitBbGVydDogZm9udC5UaW1lc0kgaXMgVGltZXMtSXRhbGljCitBbGVydDogZm9udC5UaW1lc0JJIGlzIFRpbWVzLUJvbGRJdGFsaWMKK0FsZXJ0OiBmb250LkhlbHYgaXMgSGVsdmV0aWNhCitBbGVydDogZm9udC5IZWx2QiBpcyBIZWx2ZXRpY2EtQm9sZAorQWxlcnQ6IGZvbnQuSGVsdkkgaXMgSGVsdmV0aWNhLU9ibGlxdWUKK0FsZXJ0OiBmb250LkhlbHZCSSBpcyBIZWx2ZXRpY2EtQm9sZE9ibGlxdWUKK0FsZXJ0OiBmb250LkNvdXIgaXMgQ291cmllcgorQWxlcnQ6IGZvbnQuQ291ckIgaXMgQ291cmllci1Cb2xkCitBbGVydDogZm9udC5Db3VySSBpcyBDb3VyaWVyLU9ibGlxdWUKK0FsZXJ0OiBmb250LkNvdXJCSSBpcyBDb3VyaWVyLUJvbGRPYmxpcXVlCitBbGVydDogZm9udC5TeW1ib2wgaXMgU3ltYm9sCitBbGVydDogZm9udC5aYXBmRCBpcyBaYXBmRGluZ2JhdHMKK0FsZXJ0OiBmb250Lk5vbmVzdWNoIGlzIHVuZGVmaW5lZAorQWxlcnQ6IGhpZ2hsaWdodC5uIGlzIG5vbmUKK0FsZXJ0OiBoaWdobGlnaHQuaSBpcyBpbnZlcnQKK0FsZXJ0OiBoaWdobGlnaHQucCBpcyBwdXNoCitBbGVydDogaGlnaGxpZ2h0Lm8gaXMgb3V0bGluZQorQWxlcnQ6IGhpZ2hsaWdodC5ub25lc3VjaCBpcyB1bmRlZmluZWQKK0FsZXJ0OiBwb3NpdGlvbi50ZXh0T25seSBpcyAwCitBbGVydDogcG9zaXRpb24uaWNvbk9ubHkgaXMgMQorQWxlcnQ6IHBvc2l0aW9uLmljb25UZXh0ViBpcyAyCitBbGVydDogcG9zaXRpb24udGV4dEljb25WIGlzIDMKK0FsZXJ0OiBwb3NpdGlvbi5pY29uVGV4dEggaXMgNAorQWxlcnQ6IHBvc2l0aW9uLnRleHRJY29uSCBpcyA1CitBbGVydDogcG9zaXRpb24ub3ZlcmxheSBpcyA2CitBbGVydDogcG9zaXRpb24ubm9uZXN1Y2ggaXMgdW5kZWZpbmVkCitBbGVydDogc2NhbGVIb3cucHJvcG9ydGlvbmFsIGlzIDAKK0FsZXJ0OiBzY2FsZUhvdy5hbmFtb3JwaGljIGlzIDEKK0FsZXJ0OiBzY2FsZUhvdy5ub25lc3VjaCBpcyB1bmRlZmluZWQKK0FsZXJ0OiBzY2FsZVdoZW4uYWx3YXlzIGlzIDAKK0FsZXJ0OiBzY2FsZVdoZW4ubmV2ZXIgaXMgMQorQWxlcnQ6IHNjYWxlV2hlbi50b29CaWcgaXMgMgorQWxlcnQ6IHNjYWxlV2hlbi50b29TbWFsbCBpcyAzCitBbGVydDogc2NhbGVXaGVuLm5vbmVzdWNoIGlzIHVuZGVmaW5lZAorQWxlcnQ6IHN0eWxlLmNoIGlzIGNoZWNrCitBbGVydDogc3R5bGUuY3IgaXMgY3Jvc3MKK0FsZXJ0OiBzdHlsZS5kaSBpcyBkaWFtb25kCitBbGVydDogc3R5bGUuY2kgaXMgY2lyY2xlCitBbGVydDogc3R5bGUuc3QgaXMgc3RhcgorQWxlcnQ6IHN0eWxlLnNxIGlzIHNxdWFyZQorQWxlcnQ6IHN0eWxlLm5vbmVzdWNoIGlzIHVuZGVmaW5lZAorQWxlcnQ6IHpvb210eXBlLm5vbmUgaXMgTm9WYXJ5CitBbGVydDogem9vbXR5cGUuZml0UCBpcyBGaXRQYWdlCitBbGVydDogem9vbXR5cGUuZml0VyBpcyBGaXRXaWR0aAorQWxlcnQ6IHpvb210eXBlLmZpdEggaXMgRml0SGVpZ2h0CitBbGVydDogem9vbXR5cGUuZml0ViBpcyBGaXRWaXNpYmxlV2lkdGgKK0FsZXJ0OiB6b29tdHlwZS5wcmVmIGlzIFByZWZlcnJlZAorQWxlcnQ6IHpvb210eXBlLnJlZlcgaXMgUmVmbG93V2lkdGgKK0FsZXJ0OiB6b29tdHlwZS5ub25lc3VjaCBpcyB1bmRlZmluZWQK