Name: series-workflowjgx2w Phase: Failed StartedAt: 2026-09-07 01:16:05 +0000 UTC FinishedAt: 2026-09-07 01:18:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgx2w[0] Phase: Succeeded StartedAt: 2026-09-07 01:16:05 +0000 UTC FinishedAt: 2026-09-07 01:17:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgx2w[0].run-triage Phase: Succeeded StartedAt: 2026-09-07 01:16:05 +0000 UTC FinishedAt: 2026-09-07 01:17:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvIGFuZCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkMTliMTYxZjMyZGNkMTg2NjhlM2Q5YjZiMjBhMGY5NDQyZjdjNWExXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAwMToxNzozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvY29uZmlnIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL2NvbmZpZ1xuaW5kZXggYTgyNWUwYjVjODhlNS4uZmE5MDQ3NWRjMzg4ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9jb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9jb25maWdcbkBAIC03LDYgJiM0Mzs3LDcgQEAgQ09ORklHX05FVF9JUEdSRT1tXG4gQ09ORklHX05FVF9JUEdSRV9ERU1VWD1tXG4gQ09ORklHX05GX0NPTk5UUkFDSz1tXG4gQ09ORklHX05GX0NPTk5UUkFDS19PVlM9eVxuJiM0MztDT05GSUdfTkZfQ1RfUFJPVE9fU0NUUD15XG4gQ09ORklHX09QRU5WU1dJVENIPW1cbiBDT05GSUdfUFNBTVBMRT1tXG4gQ09ORklHX1ZFVEg9eVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5zaFxuaW5kZXggYTMxZjdmYjY4ODJkYy4uZmIzN2I2YWIyZWMxZiAxMDA3NTVcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5zaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL29wZW52c3dpdGNoLnNoXG5AQCAtMzQsNiAmIzQzOzM0LDggQEAgdGVzdHM9XCYjMzQ7XG4gXHR0cnVuY1x0XHRcdFx0XHR0cnVuYzogb3V0cHV0IHRydW5jYXRpb25cbiBcdGljbXB2Nlx0XHRcdFx0XHRpY21wdjY6IElDTVB2NiBlY2hvIHR5cGUgbWF0Y2hcbiBcdHNjdHBfY29ubmVjdF92NFx0XHRcdFx0c2N0cDogU0NUUCBmbG93IGtleSBtYXRjaGluZ1xuJiM0MztcdHNjdHBfY29ubmVjdF92Nlx0XHRcdHNjdHA2OiBTQ1RQIGZsb3cga2V5IG1hdGNoaW5nIG92ZXIgSVB2NlxuJiM0MztcdHNjdHBfbmF0X2Nvbm5lY3RfdjRcdFx0c2N0cG5hdDQ6IFNDVFAgZmxvdyBrZXkgYWNyb3NzIGNvbm50cmFjayBOQVRcbiBcdHBzYW1wbGVcdFx0XHRcdFx0cHNhbXBsZTogU2FtcGxpbmcgcGFja2V0cyB3aXRoIHBzYW1wbGVcJiMzNDtcbiBcbiBpbmZvKCkge1xuQEAgLTcwMCw2ICYjNDM7NzAyLDEwMCBAQCB0ZXN0X3NjdHBfY29ubmVjdF92NCgpIHtcbiBcdHJldHVybiAwXG4gfVxuIFxuJiM0MzsjIHNjdHBfY29ubmVjdF92NiB0ZXN0XG4mIzQzOyMgLSBzY3RwKGRzdD00NDQzKSBtYXRjaGVzIGNsaWVudC10by1zZXJ2ZXIgSU5JVFxuJiM0MzsjIC0gc2N0cChzcmM9NDQ0MykgbWF0Y2hlcyBzZXJ2ZXItdG8tY2xpZW50IElOSVQtQUNLXG4mIzQzOyMgLSBpY21wdjYgTlMvTkEgZmxvd3MgZm9yd2FyZCBuZWlnaGJvdXIgZGlzY292ZXJ5XG4mIzQzOyMgLSByZW1vdmUgZmxvd3MgYW5kIHZlcmlmeSBjb25uZWN0aW9uIGZhaWxzLCByZWluc3RhbGwgYW5kIHJlY292ZXJcbiYjNDM7dGVzdF9zY3RwX2Nvbm5lY3RfdjYoKSB7XG4mIzQzO1x0bG9jYWwgdD1cJiMzNDt0ZXN0X3NjdHBfY29ubmVjdF92NlwmIzM0O1xuJiM0MztcdGxvY2FsIHY2PVwmIzM0O2V0aF90eXBlKDB4ODZkZCksaXB2Nihwcm90bz0xMzIpXCYjMzQ7XG4mIzQzO1x0bG9jYWwgcGF5bG9hZD1cJiMzNDtTQ1RQNl9EQVRBX09LXCYjMzQ7XG4mIzQzO1x0bG9jYWwgcnhmaWxlPVwmIzM0OyR7b3ZzX2Jhc2V9LyR7dH0vc2N0cC1yeC50eHRcJiMzNDtcbiYjNDM7XG4mIzQzO1x0bW9kcHJvYmUgLXEgc2N0cCAyXHUwMDNlL2Rldi9udWxsIHx8IHJldHVybiBcJiMzNDska3NmdF9za2lwXCYjMzQ7XG4mIzQzO1x0c29jYXQgLVYgMlx1MDAzZVx1MDAyNjEgfCBncmVwIC1xIFwmIzM0O2RlZmluZSBXSVRIX1NDVFBcJiMzNDsgfHwgcmV0dXJuIFwmIzM0OyRrc2Z0X3NraXBcJiMzNDtcbiYjNDM7XHRbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NiBdIHx8IHJldHVybiBcJiMzNDska3NmdF9za2lwXCYjMzQ7XG4mIzQzO1xuJiM0MztcdHNieF9hZGQgXCYjMzQ7JHRcJiMzNDsgfHwgcmV0dXJuICQ/XG4mIzQzO1x0b3ZzX2FkZF9kcCBcJiMzNDskdFwmIzM0OyBzY3RwNiB8fCByZXR1cm4gMVxuJiM0MztcbiYjNDM7XHRpbmZvIFwmIzM0O2NyZWF0ZSBuYW1lc3BhY2VzXCYjMzQ7XG4mIzQzO1x0Zm9yIG5zIGluIGNsaWVudCBzZXJ2ZXI7IGRvXG4mIzQzO1x0XHRvdnNfYWRkX25ldG5zX2FuZF92ZXRocyBcJiMzNDskdFwmIzM0OyBcJiMzNDtzY3RwNlwmIzM0OyBcJiMzNDskbnNcJiMzNDsgXFxcbiYjNDM7XHRcdCAgICBcJiMzNDske25zOjA6MX0wXCYjMzQ7IFwmIzM0OyR7bnM6MDoxfTFcJiMzNDsgfHwgcmV0dXJuIDFcbiYjNDM7XHRkb25lXG4mIzQzO1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgY2xpZW50IGlwIGFkZHIgYWRkIGZkMDA6OjEvNjQgZGV2IGMxIG5vZGFkXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBjbGllbnQgaXAgbGluayBzZXQgYzEgdXBcbiYjNDM7XHRpcCBuZXRucyBleGVjIHNlcnZlciBpcCBhZGRyIGFkZCBmZDAwOjoyLzY0IGRldiBzMSBub2RhZFxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgc2VydmVyIGlwIGxpbmsgc2V0IHMxIHVwXG4mIzQzO1xuJiM0MztcdCMgTlMvTkEgZm9yd2FyZGluZ1xuJiM0MztcdG92c19hZGRfZmxvdyBcJiMzNDskdFwmIzM0OyBzY3RwNiBcXFxuJiM0MztcdCAgICAmIzM5O2luX3BvcnQoMSksZXRoKCksZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTU4KSxpY21wdjYoKSYjMzk7IFxcXG4mIzQzO1x0ICAgICYjMzk7MiYjMzk7IHx8IHJldHVybiAxXG4mIzQzO1x0b3ZzX2FkZF9mbG93IFwmIzM0OyR0XCYjMzQ7IHNjdHA2IFxcXG4mIzQzO1x0ICAgICYjMzk7aW5fcG9ydCgyKSxldGgoKSxldGhfdHlwZSgweDg2ZGQpLGlwdjYocHJvdG89NTgpLGljbXB2NigpJiMzOTsgXFxcbiYjNDM7XHQgICAgJiMzOTsxJiMzOTsgfHwgcmV0dXJuIDFcbiYjNDM7XG4mIzQzO1x0IyBTQ1RQIHBvcnQgbWF0Y2hpbmc6IGRzdCBmb3IgcmVxdWVzdCwgc3JjIGZvciByZXBseVxuJiM0MztcdG92c19hZGRfZmxvdyBcJiMzNDskdFwmIzM0OyBzY3RwNiBcXFxuJiM0MztcdCAgICBcJiMzNDtpbl9wb3J0KDEpLGV0aCgpLCR2NixzY3RwKGRzdD00NDQzKVwmIzM0OyBcXFxuJiM0MztcdCAgICAmIzM5OzImIzM5OyB8fCByZXR1cm4gMVxuJiM0MztcdG92c19hZGRfZmxvdyBcJiMzNDskdFwmIzM0OyBzY3RwNiBcXFxuJiM0MztcdCAgICBcJiMzNDtpbl9wb3J0KDIpLGV0aCgpLCR2NixzY3RwKHNyYz00NDQzKVwmIzM0OyBcXFxuJiM0MztcdCAgICAmIzM5OzEmIzM5OyB8fCByZXR1cm4gMVxuJiM0MztcbiYjNDM7XHRvdnNfbmV0bnNfc3Bhd25fZGFlbW9uIFwmIzM0OyR0XCYjMzQ7IFwmIzM0O3NlcnZlclwmIzM0OyBcXFxuJiM0MztcdCAgICBzb2NhdCAtdSAtdCAxIFNDVFA2LUxJU1RFTjo0NDQzLGZvcmsgXFxcbiYjNDM7XHQgICAgT1BFTjpcJiMzNDskcnhmaWxlXCYjMzQ7LGNyZWF0LGFwcGVuZFxuJiM0MztcdG92c193YWl0IHNjdHBfZXBzX2hhcyBzZXJ2ZXIgNDQ0MyB8fCByZXR1cm4gMVxuJiM0MztcbiYjNDM7XHRpbmZvIFwmIzM0O3ZlcmlmeSBTQ1RQIGFzc29jaWF0aW9uIHdpdGggcG9ydC1rZXllZCBmbG93c1wmIzM0O1xuJiM0MztcdG92c19zYnggXCYjMzQ7JHRcJiMzNDsgaXAgbmV0bnMgZXhlYyBjbGllbnQgXFxcbiYjNDM7XHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFwmIzM0O1NDVFA2LUNPTk5FQ1Q6W2ZkMDA6OjJdOjQ0NDNcJiMzNDsgXHUwMDNjL2Rldi9udWxsIFxcXG4mIzQzO1x0ICAgIHx8IHJldHVybiAxXG4mIzQzO1xuJiM0MztcdGluZm8gXCYjMzQ7dmVyaWZ5IFNDVFAgREFUQSBjaHVuayBjcm9zc2VzIHRoZSBkYXRhcGF0aFwmIzM0O1xuJiM0MztcdG92c19zYnggXCYjMzQ7JHRcJiMzNDsgaXAgbmV0bnMgZXhlYyBjbGllbnQgXFxcbiYjNDM7XHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFwmIzM0O1NDVFA2LUNPTk5FQ1Q6W2ZkMDA6OjJdOjQ0NDNcJiMzNDsgXFxcbiYjNDM7XHQgICAgXHUwMDNjXHUwMDNjXHUwMDNjIFwmIzM0OyRwYXlsb2FkXCYjMzQ7IHx8IHJldHVybiAxXG4mIzQzO1x0b3ZzX3dhaXQgZ3JlcCAtcSBcJiMzNDskcGF5bG9hZFwmIzM0OyBcJiMzNDskcnhmaWxlXCYjMzQ7IFxcXG4mIzQzO1x0ICAgIHx8IHsgaW5mbyBcJiMzNDtzZXJ2ZXIgZGlkIG5vdCByZWNlaXZlIFNDVFAgREFUQSBwYXlsb2FkXCYjMzQ7XG4mIzQzO1x0ICAgICAgICAgcmV0dXJuIDE7IH1cbiYjNDM7XG4mIzQzO1x0b3ZzX2RlbF9mbG93cyBcJiMzNDskdFwmIzM0OyBzY3RwNlxuJiM0MztcbiYjNDM7XHRpbmZvIFwmIzM0O3ZlcmlmeSBjb25uZWN0aW9uIGZhaWxzIHdpdGhvdXQgZmxvd3NcJiMzNDtcbiYjNDM7XHRvdnNfYWRkX2Zsb3cgXCYjMzQ7JHRcJiMzNDsgc2N0cDYgXFxcbiYjNDM7XHQgICAgJiMzOTtpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4ODZkZCksaXB2Nihwcm90bz01OCksaWNtcHY2KCkmIzM5OyBcXFxuJiM0MztcdCAgICAmIzM5OzImIzM5OyB8fCByZXR1cm4gMVxuJiM0MztcdG92c19hZGRfZmxvdyBcJiMzNDskdFwmIzM0OyBzY3RwNiBcXFxuJiM0MztcdCAgICAmIzM5O2luX3BvcnQoMiksZXRoKCksZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTU4KSxpY21wdjYoKSYjMzk7IFxcXG4mIzQzO1x0ICAgICYjMzk7MSYjMzk7IHx8IHJldHVybiAxXG4mIzQzO1xuJiM0MztcdG92c19zYnggXCYjMzQ7JHRcJiMzNDsgaXAgbmV0bnMgZXhlYyBjbGllbnQgXFxcbiYjNDM7XHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFwmIzM0O1NDVFA2LUNPTk5FQ1Q6W2ZkMDA6OjJdOjQ0NDNcJiMzNDsgXHUwMDNjL2Rldi9udWxsIFxcXG4mIzQzO1x0ICAgIFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSBcXFxuJiM0MztcdCAgICBcdTAwMjZcdTAwMjYgeyBpbmZvIFwmIzM0O2Nvbm5lY3Rpb24gc2hvdWxkIGZhaWwgd2l0aG91dCBmbG93c1wmIzM0O1xuJiM0MztcdCAgICAgICAgIHJldHVybiAxOyB9XG4mIzQzO1xuJiM0MztcdGluZm8gXCYjMzQ7cmVpbnN0YWxsIGZsb3dzIGFuZCB2ZXJpZnkgcmVjb3ZlcnlcJiMzNDtcbiYjNDM7XHRvdnNfYWRkX2Zsb3cgXCYjMzQ7JHRcJiMzNDsgc2N0cDYgXFxcbiYjNDM7XHQgICAgXCYjMzQ7aW5fcG9ydCgxKSxldGgoKSwkdjYsc2N0cChkc3Q9NDQ0MylcJiMzNDsgXFxcbiYjNDM7XHQgICAgJiMzOTsyJiMzOTsgfHwgcmV0dXJuIDFcbiYjNDM7XHRvdnNfYWRkX2Zsb3cgXCYjMzQ7JHRcJiMzNDsgc2N0cDYgXFxcbiYjNDM7XHQgICAgXCYjMzQ7aW5fcG9ydCgyKSxldGgoKSwkdjYsc2N0cChzcmM9NDQ0MylcJiMzNDsgXFxcbiYjNDM7XHQgICAgJiMzOTsxJiMzOTsgfHwgcmV0dXJuIDFcbiYjNDM7XG4mIzQzO1x0b3ZzX3NieCBcJiMzNDskdFwmIzM0OyBpcCBuZXRucyBleGVjIGNsaWVudCBcXFxuJiM0MztcdCAgICB0aW1lb3V0IDMgc29jYXQgLXUgU1RESU4gXCYjMzQ7U0NUUDYtQ09OTkVDVDpbZmQwMDo6Ml06NDQ0M1wmIzM0OyBcdTAwM2MvZGV2L251bGwgXFxcbiYjNDM7XHQgICAgfHwgcmV0dXJuIDFcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDBcbiYjNDM7fVxuJiM0MztcbiAjIHBzYW1wbGUgdGVzdFxuICMgLSB1c2UgcHNhbXBsZSB0byBvYnNlcnZlIHBhY2tldHNcbiB0ZXN0X3BzYW1wbGUoKSB7XG5AQCAtMTA5MSw2ICYjNDM7MTE4Nyw5MiBAQCB0ZXN0X25hdF9jb25uZWN0X3Y0ICgpIHtcbiBcdHJldHVybiAwXG4gfVxuIFxuJiM0MzsjIHNjdHBfbmF0X2Nvbm5lY3RfdjQgdGVzdFxuJiM0MzsjICAtIFNDVFAgYXNzb2NpYXRpb24gY3Jvc3NlcyBhIGN0KGNvbW1pdCxuYXQoZHN0PWlwOnBvcnQpKSBETkFUXG4mIzQzOyMgIC0gcG9zdC1yZWNpcmMgZmxvd3MgbWF0Y2ggdGhlIHRyYW5zbGF0ZWQgYWRkcmVzcyBhbmQgcG9ydCwgc28gdGhlXG4mIzQzOyMgICAgU0NUUCBicmFuY2ggb2YgdGhlIHBvc3QtTkFUIGZsb3cga2V5IHVwZGF0ZSBpcyBsb2FkLWJlYXJpbmdcbiYjNDM7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0ICgpIHtcbiYjNDM7XHRsb2NhbCB0PVwmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwmIzM0O1xuJiM0MztcdGxvY2FsIHBheWxvYWQ9XCYjMzQ7U0NUUF9OQVRfREFUQV9PS1wmIzM0O1xuJiM0MztcdGxvY2FsIHJ4ZmlsZT1cJiMzNDske292c19iYXNlfS8ke3R9L3NjdHAtcngudHh0XCYjMzQ7XG4mIzQzO1xuJiM0MztcdG1vZHByb2JlIC1xIHNjdHAgMlx1MDAzZS9kZXYvbnVsbCB8fCByZXR1cm4gXCYjMzQ7JGtzZnRfc2tpcFwmIzM0O1xuJiM0MztcdHNvY2F0IC1WIDJcdTAwM2VcdTAwMjYxIHwgZ3JlcCAtcSBcJiMzNDtkZWZpbmUgV0lUSF9TQ1RQXCYjMzQ7IHx8IHJldHVybiBcJiMzNDska3NmdF9za2lwXCYjMzQ7XG4mIzQzO1x0IyBTQ1RQIGNvbm50cmFjayBpcyBjb21waWxlZCBpbnRvIG5mX2Nvbm50cmFjay5rbywgc28gY2hlY2sgdGhhdFxuJiM0MztcdCMgbG9hZGluZyBpdCBhY3R1YWxseSBleHBvc2VkIHRoZSBTQ1RQIGNvbm50cmFjayBzeXNjdGxzLlxuJiM0MztcdG1vZHByb2JlIC1xIG5mX2Nvbm50cmFjayAyXHUwMDNlL2Rldi9udWxsIHx8IHJldHVybiBcJiMzNDska3NmdF9za2lwXCYjMzQ7XG4mIzQzO1x0WyAtZSAvcHJvYy9zeXMvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2N0cF90aW1lb3V0X2VzdGFibGlzaGVkIF0gXFxcbiYjNDM7XHQgICAgfHwgeyBpbmZvIFwmIzM0O25vIFNDVFAgY29ubnRyYWNrIHN1cHBvcnQgLSBza2lwcGluZ1wmIzM0O1xuJiM0MztcdCAgICAgICAgIHJldHVybiBcJiMzNDska3NmdF9za2lwXCYjMzQ7OyB9XG4mIzQzO1xuJiM0MztcdHNieF9hZGQgXCYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCYjMzQ7IHx8IHJldHVybiAkP1xuJiM0MztcbiYjNDM7XHRvdnNfYWRkX2RwIFwmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwmIzM0OyBzY3RwbmF0NCB8fCByZXR1cm4gMVxuJiM0MztcdGluZm8gXCYjMzQ7Y3JlYXRlIG5hbWVzcGFjZXNcJiMzNDtcbiYjNDM7XHRmb3IgbnMgaW4gY2xpZW50IHNlcnZlcjsgZG9cbiYjNDM7XHRcdG92c19hZGRfbmV0bnNfYW5kX3ZldGhzIFwmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwmIzM0OyBcJiMzNDtzY3RwbmF0NFwmIzM0OyBcXFxuJiM0MztcdFx0ICAgIFwmIzM0OyRuc1wmIzM0OyBcJiMzNDske25zOjA6MX0wXCYjMzQ7IFwmIzM0OyR7bnM6MDoxfTFcJiMzNDsgfHwgcmV0dXJuIDFcbiYjNDM7XHRkb25lXG4mIzQzO1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgY2xpZW50IGlwIGFkZHIgYWRkIDE3Mi4zMS4xMTAuMTAvMjQgZGV2IGMxXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBjbGllbnQgaXAgbGluayBzZXQgYzEgdXBcbiYjNDM7XHRpcCBuZXRucyBleGVjIHNlcnZlciBpcCBhZGRyIGFkZCAxNzIuMzEuMTEwLjIwLzI0IGRldiBzMVxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgc2VydmVyIGlwIGxpbmsgc2V0IHMxIHVwXG4mIzQzO1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgY2xpZW50IGlwIHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAxNzIuMzEuMTEwLjIwXG4mIzQzO1xuJiM0MztcdCMgQ2hlY2sgaWYgdGhlIGN0IGFuZCBuYXQgYWN0aW9ucyBjYW4gYmUgY29uZmlndXJlZC5cbiYjNDM7XHRvdnNfYWRkX2Zsb3cgXCYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCYjMzQ7IHNjdHBuYXQ0IFxcXG4mIzQzO1x0XHQmIzM5O2luX3BvcnQoMSksZXRoKCksZXRoX3R5cGUoMHgwODAwKSxpcHY0KCkmIzM5OyBcXFxuJiM0MztcdFx0JiMzOTtjdChjb21taXQsbmF0KGRzdD0xNzIuMzEuMTEwLjIwOjU1NTUpKSxyZWNpcmMoMHgxKSYjMzk7IFx1MDAyNlx1MDAzZSAvZGV2L251bGxcbiYjNDM7XHRpZiBbICQ/ID09IDEgXTsgdGhlblxuJiM0MztcdFx0aW5mbyBcJiMzNDtubyBzdXBwb3J0IGZvciBjdC9uYXQgYWN0aW9ucyAtIHNraXBwaW5nXCYjMzQ7XG4mIzQzO1x0XHRvdnNfZXhpdF9zaWdcbiYjNDM7XHRcdHJldHVybiAka3NmdF9za2lwXG4mIzQzO1x0ZmlcbiYjNDM7XG4mIzQzO1x0b3ZzX2RlbF9mbG93cyBcJiMzNDt0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcJiMzNDsgc2N0cG5hdDRcbiYjNDM7XG4mIzQzO1x0b3ZzX2FkZF9mbG93IFwmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwmIzM0OyBzY3RwbmF0NCBcXFxuJiM0MztcdFx0JiMzOTtpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4MDgwNiksYXJwKCkmIzM5OyAmIzM5OzImIzM5OyB8fCByZXR1cm4gMVxuJiM0MztcdG92c19hZGRfZmxvdyBcJiMzNDt0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcJiMzNDsgc2N0cG5hdDQgXFxcbiYjNDM7XHRcdCYjMzk7aW5fcG9ydCgyKSxldGgoKSxldGhfdHlwZSgweDA4MDYpLGFycCgpJiMzOTsgJiMzOTsxJiMzOTsgfHwgcmV0dXJuIDFcbiYjNDM7XHRvdnNfYWRkX2Zsb3cgXCYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCYjMzQ7IHNjdHBuYXQ0IFxcXG4mIzQzO1x0XHRcJiMzNDtjdF9zdGF0ZSgtdHJrKSxpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NChkc3Q9MTkyLjE2OC4wLjIwKVwmIzM0OyBcXFxuJiM0MztcdFx0XCYjMzQ7Y3QoY29tbWl0LG5hdChkc3Q9MTcyLjMxLjExMC4yMDo1NTU1KSkscmVjaXJjKDB4MSlcJiMzNDsgfHwgcmV0dXJuIDFcbiYjNDM7XHRvdnNfYWRkX2Zsb3cgXCYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCYjMzQ7IHNjdHBuYXQ0IFxcXG4mIzQzO1x0XHRcJiMzNDtjdF9zdGF0ZSgtdHJrKSxpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NCgpXCYjMzQ7IFxcXG4mIzQzO1x0XHRcJiMzNDtjdChjb21taXQsbmF0KSxyZWNpcmMoMHgyKVwmIzM0OyB8fCByZXR1cm4gMVxuJiM0MztcbiYjNDM7XHRvdnNfYWRkX2Zsb3cgXCYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCYjMzQ7IHNjdHBuYXQ0IFxcXG4mIzQzO1x0XHRcJiMzNDtyZWNpcmNfaWQoMHgxKSxjdF9zdGF0ZSgmIzQzO3Ryay1pbnYpLGluX3BvcnQoMSksZXRoKCksZXRoX3R5cGUoMHgwODAwKSxpcHY0KGRzdD0xNzIuMzEuMTEwLjIwLHByb3RvPTEzMiksc2N0cChkc3Q9NTU1NSlcJiMzNDsgXFxcbiYjNDM7XHRcdFwmIzM0OzJcJiMzNDsgfHwgcmV0dXJuIDFcbiYjNDM7XHRvdnNfYWRkX2Zsb3cgXCYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCYjMzQ7IHNjdHBuYXQ0IFxcXG4mIzQzO1x0XHRcJiMzNDtyZWNpcmNfaWQoMHgyKSxjdF9zdGF0ZSgmIzQzO3Ryay1pbnYpLGluX3BvcnQoMiksZXRoKCksZXRoX3R5cGUoMHgwODAwKSxpcHY0KHNyYz0xOTIuMTY4LjAuMjAscHJvdG89MTMyKSxzY3RwKHNyYz00NDQzKVwmIzM0OyBcXFxuJiM0MztcdFx0XCYjMzQ7MVwmIzM0OyB8fCByZXR1cm4gMVxuJiM0MztcbiYjNDM7XHRvdnNfbmV0bnNfc3Bhd25fZGFlbW9uIFwmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwmIzM0OyBcJiMzNDtzZXJ2ZXJcJiMzNDsgXFxcbiYjNDM7XHRcdHNvY2F0IC11IC10IDEgU0NUUDQtTElTVEVOOjU1NTUsZm9yayBcXFxuJiM0MztcdFx0T1BFTjpcJiMzNDskcnhmaWxlXCYjMzQ7LGNyZWF0LGFwcGVuZFxuJiM0MztcdG92c193YWl0IHNjdHBfZXBzX2hhcyBzZXJ2ZXIgNTU1NSB8fCByZXR1cm4gMVxuJiM0MztcbiYjNDM7XHRpbmZvIFwmIzM0O3ZlcmlmeSBTQ1RQIGFzc29jaWF0aW9uIGFjcm9zcyBOQVRcJiMzNDtcbiYjNDM7XHRvdnNfc2J4IFwmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwmIzM0OyBpcCBuZXRucyBleGVjIGNsaWVudCBcXFxuJiM0MztcdCAgICB0aW1lb3V0IDMgc29jYXQgLXUgU1RESU4gXCYjMzQ7U0NUUDQtQ09OTkVDVDoxOTIuMTY4LjAuMjA6NDQ0M1wmIzM0OyBcXFxuJiM0MztcdCAgICBcdTAwM2MvZGV2L251bGwgfHwgcmV0dXJuIDFcbiYjNDM7XG4mIzQzO1x0aW5mbyBcJiMzNDt2ZXJpZnkgU0NUUCBEQVRBIGNodW5rIGNyb3NzZXMgTkFUXCYjMzQ7XG4mIzQzO1x0b3ZzX3NieCBcJiMzNDt0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcJiMzNDsgaXAgbmV0bnMgZXhlYyBjbGllbnQgXFxcbiYjNDM7XHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFwmIzM0O1NDVFA0LUNPTk5FQ1Q6MTkyLjE2OC4wLjIwOjQ0NDNcJiMzNDsgXFxcbiYjNDM7XHQgICAgXHUwMDNjXHUwMDNjXHUwMDNjIFwmIzM0OyRwYXlsb2FkXCYjMzQ7IHx8IHJldHVybiAxXG4mIzQzO1x0b3ZzX3dhaXQgZ3JlcCAtcSBcJiMzNDskcGF5bG9hZFwmIzM0OyBcJiMzNDskcnhmaWxlXCYjMzQ7IFxcXG4mIzQzO1x0ICAgIHx8IHsgaW5mbyBcJiMzNDtzZXJ2ZXIgZGlkIG5vdCByZWNlaXZlIFNDVFAgREFUQSBwYXlsb2FkXCYjMzQ7XG4mIzQzO1x0ICAgICAgICAgcmV0dXJuIDE7IH1cbiYjNDM7XG4mIzQzO1x0aW5mbyBcJiMzNDtkb25lLi4uXCYjMzQ7XG4mIzQzO1x0cmV0dXJuIDBcbiYjNDM7fVxuJiM0MztcbiAjIG5hdF9yZWxhdGVkX3Y0IHRlc3RcbiAjICAtIGNsaWVudC1cdTAwM2VzZXJ2ZXIgaXAgcGFja2V0cyBnbyB2aWEgU05BVFxuICMgIC0gY2xpZW50IHNvbGljaXRzIElDTVAgZGVzdGluYXRpb24gdW5yZWFjaGFibGUgcGFja2V0IGZyb20gc2VydmVyXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvIGFuZCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMTliMTYxZjMyZGNkMTg2NjhlM2Q5YjZiMjBhMGY5NDQyZjdjNWExCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAwMToxNzozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9jb25maWcgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvY29uZmlnCmluZGV4IGE4MjVlMGI1Yzg4ZTUuLmZhOTA0NzVkYzM4OGQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9jb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL2NvbmZpZwpAQCAtNyw2ICYjNDM7Nyw3IEBAIENPTkZJR19ORVRfSVBHUkU9bQogQ09ORklHX05FVF9JUEdSRV9ERU1VWD1tCiBDT05GSUdfTkZfQ09OTlRSQUNLPW0KIENPTkZJR19ORl9DT05OVFJBQ0tfT1ZTPXkKJiM0MztDT05GSUdfTkZfQ1RfUFJPVE9fU0NUUD15CiBDT05GSUdfT1BFTlZTV0lUQ0g9bQogQ09ORklHX1BTQU1QTEU9bQogQ09ORklHX1ZFVEg9eQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL29wZW52c3dpdGNoLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL29wZW52c3dpdGNoLnNoCmluZGV4IGEzMWY3ZmI2ODgyZGMuLmZiMzdiNmFiMmVjMWYgMTAwNzU1Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5zaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2guc2gKQEAgLTM0LDYgJiM0MzszNCw4IEBAIHRlc3RzPSYjMzQ7CiAJdHJ1bmMJCQkJCXRydW5jOiBvdXRwdXQgdHJ1bmNhdGlvbgogCWljbXB2NgkJCQkJaWNtcHY2OiBJQ01QdjYgZWNobyB0eXBlIG1hdGNoCiAJc2N0cF9jb25uZWN0X3Y0CQkJCXNjdHA6IFNDVFAgZmxvdyBrZXkgbWF0Y2hpbmcKJiM0MzsJc2N0cF9jb25uZWN0X3Y2CQkJc2N0cDY6IFNDVFAgZmxvdyBrZXkgbWF0Y2hpbmcgb3ZlciBJUHY2CiYjNDM7CXNjdHBfbmF0X2Nvbm5lY3RfdjQJCXNjdHBuYXQ0OiBTQ1RQIGZsb3cga2V5IGFjcm9zcyBjb25udHJhY2sgTkFUCiAJcHNhbXBsZQkJCQkJcHNhbXBsZTogU2FtcGxpbmcgcGFja2V0cyB3aXRoIHBzYW1wbGUmIzM0OwogCiBpbmZvKCkgewpAQCAtNzAwLDYgJiM0Mzs3MDIsMTAwIEBAIHRlc3Rfc2N0cF9jb25uZWN0X3Y0KCkgewogCXJldHVybiAwCiB9CiAKJiM0MzsjIHNjdHBfY29ubmVjdF92NiB0ZXN0CiYjNDM7IyAtIHNjdHAoZHN0PTQ0NDMpIG1hdGNoZXMgY2xpZW50LXRvLXNlcnZlciBJTklUCiYjNDM7IyAtIHNjdHAoc3JjPTQ0NDMpIG1hdGNoZXMgc2VydmVyLXRvLWNsaWVudCBJTklULUFDSwomIzQzOyMgLSBpY21wdjYgTlMvTkEgZmxvd3MgZm9yd2FyZCBuZWlnaGJvdXIgZGlzY292ZXJ5CiYjNDM7IyAtIHJlbW92ZSBmbG93cyBhbmQgdmVyaWZ5IGNvbm5lY3Rpb24gZmFpbHMsIHJlaW5zdGFsbCBhbmQgcmVjb3ZlcgomIzQzO3Rlc3Rfc2N0cF9jb25uZWN0X3Y2KCkgewomIzQzOwlsb2NhbCB0PSYjMzQ7dGVzdF9zY3RwX2Nvbm5lY3RfdjYmIzM0OwomIzQzOwlsb2NhbCB2Nj0mIzM0O2V0aF90eXBlKDB4ODZkZCksaXB2Nihwcm90bz0xMzIpJiMzNDsKJiM0MzsJbG9jYWwgcGF5bG9hZD0mIzM0O1NDVFA2X0RBVEFfT0smIzM0OwomIzQzOwlsb2NhbCByeGZpbGU9JiMzNDske292c19iYXNlfS8ke3R9L3NjdHAtcngudHh0JiMzNDsKJiM0MzsKJiM0MzsJbW9kcHJvYmUgLXEgc2N0cCAyJmd0Oy9kZXYvbnVsbCB8fCByZXR1cm4gJiMzNDska3NmdF9za2lwJiMzNDsKJiM0MzsJc29jYXQgLVYgMiZndDsmYW1wOzEgfCBncmVwIC1xICYjMzQ7ZGVmaW5lIFdJVEhfU0NUUCYjMzQ7IHx8IHJldHVybiAmIzM0OyRrc2Z0X3NraXAmIzM0OwomIzQzOwlbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NiBdIHx8IHJldHVybiAmIzM0OyRrc2Z0X3NraXAmIzM0OwomIzQzOwomIzQzOwlzYnhfYWRkICYjMzQ7JHQmIzM0OyB8fCByZXR1cm4gJD8KJiM0MzsJb3ZzX2FkZF9kcCAmIzM0OyR0JiMzNDsgc2N0cDYgfHwgcmV0dXJuIDEKJiM0MzsKJiM0MzsJaW5mbyAmIzM0O2NyZWF0ZSBuYW1lc3BhY2VzJiMzNDsKJiM0MzsJZm9yIG5zIGluIGNsaWVudCBzZXJ2ZXI7IGRvCiYjNDM7CQlvdnNfYWRkX25ldG5zX2FuZF92ZXRocyAmIzM0OyR0JiMzNDsgJiMzNDtzY3RwNiYjMzQ7ICYjMzQ7JG5zJiMzNDsgXAomIzQzOwkJICAgICYjMzQ7JHtuczowOjF9MCYjMzQ7ICYjMzQ7JHtuczowOjF9MSYjMzQ7IHx8IHJldHVybiAxCiYjNDM7CWRvbmUKJiM0MzsKJiM0MzsJaXAgbmV0bnMgZXhlYyBjbGllbnQgaXAgYWRkciBhZGQgZmQwMDo6MS82NCBkZXYgYzEgbm9kYWQKJiM0MzsJaXAgbmV0bnMgZXhlYyBjbGllbnQgaXAgbGluayBzZXQgYzEgdXAKJiM0MzsJaXAgbmV0bnMgZXhlYyBzZXJ2ZXIgaXAgYWRkciBhZGQgZmQwMDo6Mi82NCBkZXYgczEgbm9kYWQKJiM0MzsJaXAgbmV0bnMgZXhlYyBzZXJ2ZXIgaXAgbGluayBzZXQgczEgdXAKJiM0MzsKJiM0MzsJIyBOUy9OQSBmb3J3YXJkaW5nCiYjNDM7CW92c19hZGRfZmxvdyAmIzM0OyR0JiMzNDsgc2N0cDYgXAomIzQzOwkgICAgJiMzOTtpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4ODZkZCksaXB2Nihwcm90bz01OCksaWNtcHY2KCkmIzM5OyBcCiYjNDM7CSAgICAmIzM5OzImIzM5OyB8fCByZXR1cm4gMQomIzQzOwlvdnNfYWRkX2Zsb3cgJiMzNDskdCYjMzQ7IHNjdHA2IFwKJiM0MzsJICAgICYjMzk7aW5fcG9ydCgyKSxldGgoKSxldGhfdHlwZSgweDg2ZGQpLGlwdjYocHJvdG89NTgpLGljbXB2NigpJiMzOTsgXAomIzQzOwkgICAgJiMzOTsxJiMzOTsgfHwgcmV0dXJuIDEKJiM0MzsKJiM0MzsJIyBTQ1RQIHBvcnQgbWF0Y2hpbmc6IGRzdCBmb3IgcmVxdWVzdCwgc3JjIGZvciByZXBseQomIzQzOwlvdnNfYWRkX2Zsb3cgJiMzNDskdCYjMzQ7IHNjdHA2IFwKJiM0MzsJICAgICYjMzQ7aW5fcG9ydCgxKSxldGgoKSwkdjYsc2N0cChkc3Q9NDQ0MykmIzM0OyBcCiYjNDM7CSAgICAmIzM5OzImIzM5OyB8fCByZXR1cm4gMQomIzQzOwlvdnNfYWRkX2Zsb3cgJiMzNDskdCYjMzQ7IHNjdHA2IFwKJiM0MzsJICAgICYjMzQ7aW5fcG9ydCgyKSxldGgoKSwkdjYsc2N0cChzcmM9NDQ0MykmIzM0OyBcCiYjNDM7CSAgICAmIzM5OzEmIzM5OyB8fCByZXR1cm4gMQomIzQzOwomIzQzOwlvdnNfbmV0bnNfc3Bhd25fZGFlbW9uICYjMzQ7JHQmIzM0OyAmIzM0O3NlcnZlciYjMzQ7IFwKJiM0MzsJICAgIHNvY2F0IC11IC10IDEgU0NUUDYtTElTVEVOOjQ0NDMsZm9yayBcCiYjNDM7CSAgICBPUEVOOiYjMzQ7JHJ4ZmlsZSYjMzQ7LGNyZWF0LGFwcGVuZAomIzQzOwlvdnNfd2FpdCBzY3RwX2Vwc19oYXMgc2VydmVyIDQ0NDMgfHwgcmV0dXJuIDEKJiM0MzsKJiM0MzsJaW5mbyAmIzM0O3ZlcmlmeSBTQ1RQIGFzc29jaWF0aW9uIHdpdGggcG9ydC1rZXllZCBmbG93cyYjMzQ7CiYjNDM7CW92c19zYnggJiMzNDskdCYjMzQ7IGlwIG5ldG5zIGV4ZWMgY2xpZW50IFwKJiM0MzsJICAgIHRpbWVvdXQgMyBzb2NhdCAtdSBTVERJTiAmIzM0O1NDVFA2LUNPTk5FQ1Q6W2ZkMDA6OjJdOjQ0NDMmIzM0OyAmbHQ7L2Rldi9udWxsIFwKJiM0MzsJICAgIHx8IHJldHVybiAxCiYjNDM7CiYjNDM7CWluZm8gJiMzNDt2ZXJpZnkgU0NUUCBEQVRBIGNodW5rIGNyb3NzZXMgdGhlIGRhdGFwYXRoJiMzNDsKJiM0MzsJb3ZzX3NieCAmIzM0OyR0JiMzNDsgaXAgbmV0bnMgZXhlYyBjbGllbnQgXAomIzQzOwkgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOICYjMzQ7U0NUUDYtQ09OTkVDVDpbZmQwMDo6Ml06NDQ0MyYjMzQ7IFwKJiM0MzsJICAgICZsdDsmbHQ7Jmx0OyAmIzM0OyRwYXlsb2FkJiMzNDsgfHwgcmV0dXJuIDEKJiM0MzsJb3ZzX3dhaXQgZ3JlcCAtcSAmIzM0OyRwYXlsb2FkJiMzNDsgJiMzNDskcnhmaWxlJiMzNDsgXAomIzQzOwkgICAgfHwgeyBpbmZvICYjMzQ7c2VydmVyIGRpZCBub3QgcmVjZWl2ZSBTQ1RQIERBVEEgcGF5bG9hZCYjMzQ7CiYjNDM7CSAgICAgICAgIHJldHVybiAxOyB9CiYjNDM7CiYjNDM7CW92c19kZWxfZmxvd3MgJiMzNDskdCYjMzQ7IHNjdHA2CiYjNDM7CiYjNDM7CWluZm8gJiMzNDt2ZXJpZnkgY29ubmVjdGlvbiBmYWlscyB3aXRob3V0IGZsb3dzJiMzNDsKJiM0MzsJb3ZzX2FkZF9mbG93ICYjMzQ7JHQmIzM0OyBzY3RwNiBcCiYjNDM7CSAgICAmIzM5O2luX3BvcnQoMSksZXRoKCksZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTU4KSxpY21wdjYoKSYjMzk7IFwKJiM0MzsJICAgICYjMzk7MiYjMzk7IHx8IHJldHVybiAxCiYjNDM7CW92c19hZGRfZmxvdyAmIzM0OyR0JiMzNDsgc2N0cDYgXAomIzQzOwkgICAgJiMzOTtpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4ODZkZCksaXB2Nihwcm90bz01OCksaWNtcHY2KCkmIzM5OyBcCiYjNDM7CSAgICAmIzM5OzEmIzM5OyB8fCByZXR1cm4gMQomIzQzOwomIzQzOwlvdnNfc2J4ICYjMzQ7JHQmIzM0OyBpcCBuZXRucyBleGVjIGNsaWVudCBcCiYjNDM7CSAgICB0aW1lb3V0IDMgc29jYXQgLXUgU1RESU4gJiMzNDtTQ1RQNi1DT05ORUNUOltmZDAwOjoyXTo0NDQzJiMzNDsgJmx0Oy9kZXYvbnVsbCBcCiYjNDM7CSAgICAmZ3Q7L2Rldi9udWxsIDImZ3Q7JmFtcDsxIFwKJiM0MzsJICAgICZhbXA7JmFtcDsgeyBpbmZvICYjMzQ7Y29ubmVjdGlvbiBzaG91bGQgZmFpbCB3aXRob3V0IGZsb3dzJiMzNDsKJiM0MzsJICAgICAgICAgcmV0dXJuIDE7IH0KJiM0MzsKJiM0MzsJaW5mbyAmIzM0O3JlaW5zdGFsbCBmbG93cyBhbmQgdmVyaWZ5IHJlY292ZXJ5JiMzNDsKJiM0MzsJb3ZzX2FkZF9mbG93ICYjMzQ7JHQmIzM0OyBzY3RwNiBcCiYjNDM7CSAgICAmIzM0O2luX3BvcnQoMSksZXRoKCksJHY2LHNjdHAoZHN0PTQ0NDMpJiMzNDsgXAomIzQzOwkgICAgJiMzOTsyJiMzOTsgfHwgcmV0dXJuIDEKJiM0MzsJb3ZzX2FkZF9mbG93ICYjMzQ7JHQmIzM0OyBzY3RwNiBcCiYjNDM7CSAgICAmIzM0O2luX3BvcnQoMiksZXRoKCksJHY2LHNjdHAoc3JjPTQ0NDMpJiMzNDsgXAomIzQzOwkgICAgJiMzOTsxJiMzOTsgfHwgcmV0dXJuIDEKJiM0MzsKJiM0MzsJb3ZzX3NieCAmIzM0OyR0JiMzNDsgaXAgbmV0bnMgZXhlYyBjbGllbnQgXAomIzQzOwkgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOICYjMzQ7U0NUUDYtQ09OTkVDVDpbZmQwMDo6Ml06NDQ0MyYjMzQ7ICZsdDsvZGV2L251bGwgXAomIzQzOwkgICAgfHwgcmV0dXJuIDEKJiM0MzsKJiM0MzsJcmV0dXJuIDAKJiM0Mzt9CiYjNDM7CiAjIHBzYW1wbGUgdGVzdAogIyAtIHVzZSBwc2FtcGxlIHRvIG9ic2VydmUgcGFja2V0cwogdGVzdF9wc2FtcGxlKCkgewpAQCAtMTA5MSw2ICYjNDM7MTE4Nyw5MiBAQCB0ZXN0X25hdF9jb25uZWN0X3Y0ICgpIHsKIAlyZXR1cm4gMAogfQogCiYjNDM7IyBzY3RwX25hdF9jb25uZWN0X3Y0IHRlc3QKJiM0MzsjICAtIFNDVFAgYXNzb2NpYXRpb24gY3Jvc3NlcyBhIGN0KGNvbW1pdCxuYXQoZHN0PWlwOnBvcnQpKSBETkFUCiYjNDM7IyAgLSBwb3N0LXJlY2lyYyBmbG93cyBtYXRjaCB0aGUgdHJhbnNsYXRlZCBhZGRyZXNzIGFuZCBwb3J0LCBzbyB0aGUKJiM0MzsjICAgIFNDVFAgYnJhbmNoIG9mIHRoZSBwb3N0LU5BVCBmbG93IGtleSB1cGRhdGUgaXMgbG9hZC1iZWFyaW5nCiYjNDM7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0ICgpIHsKJiM0MzsJbG9jYWwgdD0mIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7CiYjNDM7CWxvY2FsIHBheWxvYWQ9JiMzNDtTQ1RQX05BVF9EQVRBX09LJiMzNDsKJiM0MzsJbG9jYWwgcnhmaWxlPSYjMzQ7JHtvdnNfYmFzZX0vJHt0fS9zY3RwLXJ4LnR4dCYjMzQ7CiYjNDM7CiYjNDM7CW1vZHByb2JlIC1xIHNjdHAgMiZndDsvZGV2L251bGwgfHwgcmV0dXJuICYjMzQ7JGtzZnRfc2tpcCYjMzQ7CiYjNDM7CXNvY2F0IC1WIDImZ3Q7JmFtcDsxIHwgZ3JlcCAtcSAmIzM0O2RlZmluZSBXSVRIX1NDVFAmIzM0OyB8fCByZXR1cm4gJiMzNDska3NmdF9za2lwJiMzNDsKJiM0MzsJIyBTQ1RQIGNvbm50cmFjayBpcyBjb21waWxlZCBpbnRvIG5mX2Nvbm50cmFjay5rbywgc28gY2hlY2sgdGhhdAomIzQzOwkjIGxvYWRpbmcgaXQgYWN0dWFsbHkgZXhwb3NlZCB0aGUgU0NUUCBjb25udHJhY2sgc3lzY3Rscy4KJiM0MzsJbW9kcHJvYmUgLXEgbmZfY29ubnRyYWNrIDImZ3Q7L2Rldi9udWxsIHx8IHJldHVybiAmIzM0OyRrc2Z0X3NraXAmIzM0OwomIzQzOwlbIC1lIC9wcm9jL3N5cy9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zY3RwX3RpbWVvdXRfZXN0YWJsaXNoZWQgXSBcCiYjNDM7CSAgICB8fCB7IGluZm8gJiMzNDtubyBTQ1RQIGNvbm50cmFjayBzdXBwb3J0IC0gc2tpcHBpbmcmIzM0OwomIzQzOwkgICAgICAgICByZXR1cm4gJiMzNDska3NmdF9za2lwJiMzNDs7IH0KJiM0MzsKJiM0MzsJc2J4X2FkZCAmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7IHx8IHJldHVybiAkPwomIzQzOwomIzQzOwlvdnNfYWRkX2RwICYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0JiMzNDsgc2N0cG5hdDQgfHwgcmV0dXJuIDEKJiM0MzsJaW5mbyAmIzM0O2NyZWF0ZSBuYW1lc3BhY2VzJiMzNDsKJiM0MzsJZm9yIG5zIGluIGNsaWVudCBzZXJ2ZXI7IGRvCiYjNDM7CQlvdnNfYWRkX25ldG5zX2FuZF92ZXRocyAmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7ICYjMzQ7c2N0cG5hdDQmIzM0OyBcCiYjNDM7CQkgICAgJiMzNDskbnMmIzM0OyAmIzM0OyR7bnM6MDoxfTAmIzM0OyAmIzM0OyR7bnM6MDoxfTEmIzM0OyB8fCByZXR1cm4gMQomIzQzOwlkb25lCiYjNDM7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgY2xpZW50IGlwIGFkZHIgYWRkIDE3Mi4zMS4xMTAuMTAvMjQgZGV2IGMxCiYjNDM7CWlwIG5ldG5zIGV4ZWMgY2xpZW50IGlwIGxpbmsgc2V0IGMxIHVwCiYjNDM7CWlwIG5ldG5zIGV4ZWMgc2VydmVyIGlwIGFkZHIgYWRkIDE3Mi4zMS4xMTAuMjAvMjQgZGV2IHMxCiYjNDM7CWlwIG5ldG5zIGV4ZWMgc2VydmVyIGlwIGxpbmsgc2V0IHMxIHVwCiYjNDM7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgY2xpZW50IGlwIHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAxNzIuMzEuMTEwLjIwCiYjNDM7CiYjNDM7CSMgQ2hlY2sgaWYgdGhlIGN0IGFuZCBuYXQgYWN0aW9ucyBjYW4gYmUgY29uZmlndXJlZC4KJiM0MzsJb3ZzX2FkZF9mbG93ICYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0JiMzNDsgc2N0cG5hdDQgXAomIzQzOwkJJiMzOTtpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NCgpJiMzOTsgXAomIzQzOwkJJiMzOTtjdChjb21taXQsbmF0KGRzdD0xNzIuMzEuMTEwLjIwOjU1NTUpKSxyZWNpcmMoMHgxKSYjMzk7ICZhbXA7Jmd0OyAvZGV2L251bGwKJiM0MzsJaWYgWyAkPyA9PSAxIF07IHRoZW4KJiM0MzsJCWluZm8gJiMzNDtubyBzdXBwb3J0IGZvciBjdC9uYXQgYWN0aW9ucyAtIHNraXBwaW5nJiMzNDsKJiM0MzsJCW92c19leGl0X3NpZwomIzQzOwkJcmV0dXJuICRrc2Z0X3NraXAKJiM0MzsJZmkKJiM0MzsKJiM0MzsJb3ZzX2RlbF9mbG93cyAmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7IHNjdHBuYXQ0CiYjNDM7CiYjNDM7CW92c19hZGRfZmxvdyAmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7IHNjdHBuYXQ0IFwKJiM0MzsJCSYjMzk7aW5fcG9ydCgxKSxldGgoKSxldGhfdHlwZSgweDA4MDYpLGFycCgpJiMzOTsgJiMzOTsyJiMzOTsgfHwgcmV0dXJuIDEKJiM0MzsJb3ZzX2FkZF9mbG93ICYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0JiMzNDsgc2N0cG5hdDQgXAomIzQzOwkJJiMzOTtpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4MDgwNiksYXJwKCkmIzM5OyAmIzM5OzEmIzM5OyB8fCByZXR1cm4gMQomIzQzOwlvdnNfYWRkX2Zsb3cgJiMzNDt0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjQmIzM0OyBzY3RwbmF0NCBcCiYjNDM7CQkmIzM0O2N0X3N0YXRlKC10cmspLGluX3BvcnQoMSksZXRoKCksZXRoX3R5cGUoMHgwODAwKSxpcHY0KGRzdD0xOTIuMTY4LjAuMjApJiMzNDsgXAomIzQzOwkJJiMzNDtjdChjb21taXQsbmF0KGRzdD0xNzIuMzEuMTEwLjIwOjU1NTUpKSxyZWNpcmMoMHgxKSYjMzQ7IHx8IHJldHVybiAxCiYjNDM7CW92c19hZGRfZmxvdyAmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7IHNjdHBuYXQ0IFwKJiM0MzsJCSYjMzQ7Y3Rfc3RhdGUoLXRyayksaW5fcG9ydCgyKSxldGgoKSxldGhfdHlwZSgweDA4MDApLGlwdjQoKSYjMzQ7IFwKJiM0MzsJCSYjMzQ7Y3QoY29tbWl0LG5hdCkscmVjaXJjKDB4MikmIzM0OyB8fCByZXR1cm4gMQomIzQzOwomIzQzOwlvdnNfYWRkX2Zsb3cgJiMzNDt0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjQmIzM0OyBzY3RwbmF0NCBcCiYjNDM7CQkmIzM0O3JlY2lyY19pZCgweDEpLGN0X3N0YXRlKCYjNDM7dHJrLWludiksaW5fcG9ydCgxKSxldGgoKSxldGhfdHlwZSgweDA4MDApLGlwdjQoZHN0PTE3Mi4zMS4xMTAuMjAscHJvdG89MTMyKSxzY3RwKGRzdD01NTU1KSYjMzQ7IFwKJiM0MzsJCSYjMzQ7MiYjMzQ7IHx8IHJldHVybiAxCiYjNDM7CW92c19hZGRfZmxvdyAmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7IHNjdHBuYXQ0IFwKJiM0MzsJCSYjMzQ7cmVjaXJjX2lkKDB4MiksY3Rfc3RhdGUoJiM0Mzt0cmstaW52KSxpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NChzcmM9MTkyLjE2OC4wLjIwLHByb3RvPTEzMiksc2N0cChzcmM9NDQ0MykmIzM0OyBcCiYjNDM7CQkmIzM0OzEmIzM0OyB8fCByZXR1cm4gMQomIzQzOwomIzQzOwlvdnNfbmV0bnNfc3Bhd25fZGFlbW9uICYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0JiMzNDsgJiMzNDtzZXJ2ZXImIzM0OyBcCiYjNDM7CQlzb2NhdCAtdSAtdCAxIFNDVFA0LUxJU1RFTjo1NTU1LGZvcmsgXAomIzQzOwkJT1BFTjomIzM0OyRyeGZpbGUmIzM0OyxjcmVhdCxhcHBlbmQKJiM0MzsJb3ZzX3dhaXQgc2N0cF9lcHNfaGFzIHNlcnZlciA1NTU1IHx8IHJldHVybiAxCiYjNDM7CiYjNDM7CWluZm8gJiMzNDt2ZXJpZnkgU0NUUCBhc3NvY2lhdGlvbiBhY3Jvc3MgTkFUJiMzNDsKJiM0MzsJb3ZzX3NieCAmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7IGlwIG5ldG5zIGV4ZWMgY2xpZW50IFwKJiM0MzsJICAgIHRpbWVvdXQgMyBzb2NhdCAtdSBTVERJTiAmIzM0O1NDVFA0LUNPTk5FQ1Q6MTkyLjE2OC4wLjIwOjQ0NDMmIzM0OyBcCiYjNDM7CSAgICAmbHQ7L2Rldi9udWxsIHx8IHJldHVybiAxCiYjNDM7CiYjNDM7CWluZm8gJiMzNDt2ZXJpZnkgU0NUUCBEQVRBIGNodW5rIGNyb3NzZXMgTkFUJiMzNDsKJiM0MzsJb3ZzX3NieCAmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7IGlwIG5ldG5zIGV4ZWMgY2xpZW50IFwKJiM0MzsJICAgIHRpbWVvdXQgMyBzb2NhdCAtdSBTVERJTiAmIzM0O1NDVFA0LUNPTk5FQ1Q6MTkyLjE2OC4wLjIwOjQ0NDMmIzM0OyBcCiYjNDM7CSAgICAmbHQ7Jmx0OyZsdDsgJiMzNDskcGF5bG9hZCYjMzQ7IHx8IHJldHVybiAxCiYjNDM7CW92c193YWl0IGdyZXAgLXEgJiMzNDskcGF5bG9hZCYjMzQ7ICYjMzQ7JHJ4ZmlsZSYjMzQ7IFwKJiM0MzsJICAgIHx8IHsgaW5mbyAmIzM0O3NlcnZlciBkaWQgbm90IHJlY2VpdmUgU0NUUCBEQVRBIHBheWxvYWQmIzM0OwomIzQzOwkgICAgICAgICByZXR1cm4gMTsgfQomIzQzOwomIzQzOwlpbmZvICYjMzQ7ZG9uZS4uLiYjMzQ7CiYjNDM7CXJldHVybiAwCiYjNDM7fQomIzQzOwogIyBuYXRfcmVsYXRlZF92NCB0ZXN0CiAjICAtIGNsaWVudC0mZ3Q7c2VydmVyIGlwIHBhY2tldHMgZ28gdmlhIFNOQVQKICMgIC0gY2xpZW50IHNvbGljaXRzIElDTVAgZGVzdGluYXRpb24gdW5yZWFjaGFibGUgcGFja2V0IGZyb20gc2VydmVyCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MTkKCQkJCQkJCW91dHB1dDogNjgKCQkJCQkJCXRob3VnaHRzOiAzNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhlIHBhdGNoIGFmZmVjdHMgdHdvIGZpbGVzOiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL2NvbmZpZ2AgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2guc2hgLiBCb3RoIGFyZSBuZXN0bGVkIG5lYXRseSB3aXRoaW4gdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvYCBkaXJlY3RvcnkuCgpOb3csIGFjY29yZGluZyB0byB0aGUgZ3VpZGVsaW5lcywgd2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyB3YXJyYW50cyBmdXp6aW5nLiBUaGUga2V5IGhlcmUgaXMgU2VjdGlvbiAyLiBXZSBvbmx5IG1hcmsgaXQgYXMgKm5vdCogd29ydGggZnV6emluZyBpZiBhbGwgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIHN0cmljdGx5IGxpbWl0ZWQgdG8gbm9uLWtlcm5lbCwgbm9uLWV4ZWN1dGFibGUgY2hhbmdlcy4gU3BlY2lmaWNhbGx5LCB0aGluayBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgc3BlbGxpbmcgZml4ZXMsIG9yIHVzZXItc3BhY2Ugc3R1ZmYgbGlrZSBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIHRoYXQgKmRvbiYjMzk7dCogaW1wYWN0IHRoZSBjb3JlIGtlcm5lbCBpbWFnZSBvciBtb2R1bGVzLgoKSSYjMzk7dmUgY2hlY2tlZCB0aGUgZGlmZiBjYXJlZnVsbHksIGFuZCB0aGVzZSBhcmUgdGhlIG9ubHkgdHdvIGZpbGVzIGxpc3RlZC4gTm8gQyBrZXJuZWwgY29kZSBoYXMgYmVlbiB0b3VjaGVkLCBub3RoaW5nIG91dHNpZGUgdGhhdCBgdG9vbHMvYCBwYXRoLiBJdCYjMzk7cyBhbGwgc3RheWluZyB3aXRoaW4gdGhvc2Ugc2VsZnRlc3RzLgoKVGhlcmVmb3JlLCB0aGUgdmVyZGljdCBpcyBjbGVhcjogYFdvcnRoRnV6emluZyA9IGZhbHNlYC4gTm8gbmVlZCB0byBhZGQgYW55dGhpbmcgdG8gYEZvY3VzU3ltYm9sc2Agb3IgYEVuYWJsZUNvbmZpZ3NgIHNpbmNlIHdlJiMzOTtyZSBub3QgZGVhbGluZyB3aXRoIGtlcm5lbCBjb2RlIHRoYXQgbmVlZHMgZnV6emluZy4KCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZXNlIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIGtlcm5lbCBzZWxmdGVzdHMgd2l0aGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IHN0cnVjdHVyZSBhbmQgZG9uJiMzOTt0IHRvdWNoIGFueSBjb3JlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBoYXZlIGFuIGltcGFjdCBvbiB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlLgoKVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2Ugc2VsZnRlc3RzIHVuZGVyIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC8gYW5kIGRvZXMgbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIG9yIGtlcm5lbCBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvIGFuZCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAxOjE3OjMzLjUxOTYzMDczMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTQ5ODA3NDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvIGFuZCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAxOjE3OjMzLjUxOTYzNjE4MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEwOTY3MzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDE5YjE2MWYzMmRjZDE4NjY4ZTNkOWI2YjIwYTBmOTQ0MmY3YzVhMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCA3IDAxOjE3OjMyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9jb25maWcgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvY29uZmlnXFxuaW5kZXggYTgyNWUwYjVjODhlNS4uZmE5MDQ3NWRjMzg4ZCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvY29uZmlnXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL2NvbmZpZ1xcbkBAIC03LDYgKzcsNyBAQCBDT05GSUdfTkVUX0lQR1JFPW1cXG4gQ09ORklHX05FVF9JUEdSRV9ERU1VWD1tXFxuIENPTkZJR19ORl9DT05OVFJBQ0s9bVxcbiBDT05GSUdfTkZfQ09OTlRSQUNLX09WUz15XFxuK0NPTkZJR19ORl9DVF9QUk9UT19TQ1RQPXlcXG4gQ09ORklHX09QRU5WU1dJVENIPW1cXG4gQ09ORklHX1BTQU1QTEU9bVxcbiBDT05GSUdfVkVUSD15XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5zaFxcbmluZGV4IGEzMWY3ZmI2ODgyZGMuLmZiMzdiNmFiMmVjMWYgMTAwNzU1XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL29wZW52c3dpdGNoLnNoXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL29wZW52c3dpdGNoLnNoXFxuQEAgLTM0LDYgKzM0LDggQEAgdGVzdHM9XFxcIlxcbiBcXHR0cnVuY1xcdFxcdFxcdFxcdFxcdHRydW5jOiBvdXRwdXQgdHJ1bmNhdGlvblxcbiBcXHRpY21wdjZcXHRcXHRcXHRcXHRcXHRpY21wdjY6IElDTVB2NiBlY2hvIHR5cGUgbWF0Y2hcXG4gXFx0c2N0cF9jb25uZWN0X3Y0XFx0XFx0XFx0XFx0c2N0cDogU0NUUCBmbG93IGtleSBtYXRjaGluZ1xcbitcXHRzY3RwX2Nvbm5lY3RfdjZcXHRcXHRcXHRzY3RwNjogU0NUUCBmbG93IGtleSBtYXRjaGluZyBvdmVyIElQdjZcXG4rXFx0c2N0cF9uYXRfY29ubmVjdF92NFxcdFxcdHNjdHBuYXQ0OiBTQ1RQIGZsb3cga2V5IGFjcm9zcyBjb25udHJhY2sgTkFUXFxuIFxcdHBzYW1wbGVcXHRcXHRcXHRcXHRcXHRwc2FtcGxlOiBTYW1wbGluZyBwYWNrZXRzIHdpdGggcHNhbXBsZVxcXCJcXG4gXFxuIGluZm8oKSB7XFxuQEAgLTcwMCw2ICs3MDIsMTAwIEBAIHRlc3Rfc2N0cF9jb25uZWN0X3Y0KCkge1xcbiBcXHRyZXR1cm4gMFxcbiB9XFxuIFxcbisjIHNjdHBfY29ubmVjdF92NiB0ZXN0XFxuKyMgLSBzY3RwKGRzdD00NDQzKSBtYXRjaGVzIGNsaWVudC10by1zZXJ2ZXIgSU5JVFxcbisjIC0gc2N0cChzcmM9NDQ0MykgbWF0Y2hlcyBzZXJ2ZXItdG8tY2xpZW50IElOSVQtQUNLXFxuKyMgLSBpY21wdjYgTlMvTkEgZmxvd3MgZm9yd2FyZCBuZWlnaGJvdXIgZGlzY292ZXJ5XFxuKyMgLSByZW1vdmUgZmxvd3MgYW5kIHZlcmlmeSBjb25uZWN0aW9uIGZhaWxzLCByZWluc3RhbGwgYW5kIHJlY292ZXJcXG4rdGVzdF9zY3RwX2Nvbm5lY3RfdjYoKSB7XFxuK1xcdGxvY2FsIHQ9XFxcInRlc3Rfc2N0cF9jb25uZWN0X3Y2XFxcIlxcbitcXHRsb2NhbCB2Nj1cXFwiZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTEzMilcXFwiXFxuK1xcdGxvY2FsIHBheWxvYWQ9XFxcIlNDVFA2X0RBVEFfT0tcXFwiXFxuK1xcdGxvY2FsIHJ4ZmlsZT1cXFwiJHtvdnNfYmFzZX0vJHt0fS9zY3RwLXJ4LnR4dFxcXCJcXG4rXFxuK1xcdG1vZHByb2JlIC1xIHNjdHAgMlxcdTAwM2UvZGV2L251bGwgfHwgcmV0dXJuIFxcXCIka3NmdF9za2lwXFxcIlxcbitcXHRzb2NhdCAtViAyXFx1MDAzZVxcdTAwMjYxIHwgZ3JlcCAtcSBcXFwiZGVmaW5lIFdJVEhfU0NUUFxcXCIgfHwgcmV0dXJuIFxcXCIka3NmdF9za2lwXFxcIlxcbitcXHRbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NiBdIHx8IHJldHVybiBcXFwiJGtzZnRfc2tpcFxcXCJcXG4rXFxuK1xcdHNieF9hZGQgXFxcIiR0XFxcIiB8fCByZXR1cm4gJD9cXG4rXFx0b3ZzX2FkZF9kcCBcXFwiJHRcXFwiIHNjdHA2IHx8IHJldHVybiAxXFxuK1xcbitcXHRpbmZvIFxcXCJjcmVhdGUgbmFtZXNwYWNlc1xcXCJcXG4rXFx0Zm9yIG5zIGluIGNsaWVudCBzZXJ2ZXI7IGRvXFxuK1xcdFxcdG92c19hZGRfbmV0bnNfYW5kX3ZldGhzIFxcXCIkdFxcXCIgXFxcInNjdHA2XFxcIiBcXFwiJG5zXFxcIiBcXFxcXFxuK1xcdFxcdCAgICBcXFwiJHtuczowOjF9MFxcXCIgXFxcIiR7bnM6MDoxfTFcXFwiIHx8IHJldHVybiAxXFxuK1xcdGRvbmVcXG4rXFxuK1xcdGlwIG5ldG5zIGV4ZWMgY2xpZW50IGlwIGFkZHIgYWRkIGZkMDA6OjEvNjQgZGV2IGMxIG5vZGFkXFxuK1xcdGlwIG5ldG5zIGV4ZWMgY2xpZW50IGlwIGxpbmsgc2V0IGMxIHVwXFxuK1xcdGlwIG5ldG5zIGV4ZWMgc2VydmVyIGlwIGFkZHIgYWRkIGZkMDA6OjIvNjQgZGV2IHMxIG5vZGFkXFxuK1xcdGlwIG5ldG5zIGV4ZWMgc2VydmVyIGlwIGxpbmsgc2V0IHMxIHVwXFxuK1xcbitcXHQjIE5TL05BIGZvcndhcmRpbmdcXG4rXFx0b3ZzX2FkZF9mbG93IFxcXCIkdFxcXCIgc2N0cDYgXFxcXFxcbitcXHQgICAgJ2luX3BvcnQoMSksZXRoKCksZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTU4KSxpY21wdjYoKScgXFxcXFxcbitcXHQgICAgJzInIHx8IHJldHVybiAxXFxuK1xcdG92c19hZGRfZmxvdyBcXFwiJHRcXFwiIHNjdHA2IFxcXFxcXG4rXFx0ICAgICdpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4ODZkZCksaXB2Nihwcm90bz01OCksaWNtcHY2KCknIFxcXFxcXG4rXFx0ICAgICcxJyB8fCByZXR1cm4gMVxcbitcXG4rXFx0IyBTQ1RQIHBvcnQgbWF0Y2hpbmc6IGRzdCBmb3IgcmVxdWVzdCwgc3JjIGZvciByZXBseVxcbitcXHRvdnNfYWRkX2Zsb3cgXFxcIiR0XFxcIiBzY3RwNiBcXFxcXFxuK1xcdCAgICBcXFwiaW5fcG9ydCgxKSxldGgoKSwkdjYsc2N0cChkc3Q9NDQ0MylcXFwiIFxcXFxcXG4rXFx0ICAgICcyJyB8fCByZXR1cm4gMVxcbitcXHRvdnNfYWRkX2Zsb3cgXFxcIiR0XFxcIiBzY3RwNiBcXFxcXFxuK1xcdCAgICBcXFwiaW5fcG9ydCgyKSxldGgoKSwkdjYsc2N0cChzcmM9NDQ0MylcXFwiIFxcXFxcXG4rXFx0ICAgICcxJyB8fCByZXR1cm4gMVxcbitcXG4rXFx0b3ZzX25ldG5zX3NwYXduX2RhZW1vbiBcXFwiJHRcXFwiIFxcXCJzZXJ2ZXJcXFwiIFxcXFxcXG4rXFx0ICAgIHNvY2F0IC11IC10IDEgU0NUUDYtTElTVEVOOjQ0NDMsZm9yayBcXFxcXFxuK1xcdCAgICBPUEVOOlxcXCIkcnhmaWxlXFxcIixjcmVhdCxhcHBlbmRcXG4rXFx0b3ZzX3dhaXQgc2N0cF9lcHNfaGFzIHNlcnZlciA0NDQzIHx8IHJldHVybiAxXFxuK1xcbitcXHRpbmZvIFxcXCJ2ZXJpZnkgU0NUUCBhc3NvY2lhdGlvbiB3aXRoIHBvcnQta2V5ZWQgZmxvd3NcXFwiXFxuK1xcdG92c19zYnggXFxcIiR0XFxcIiBpcCBuZXRucyBleGVjIGNsaWVudCBcXFxcXFxuK1xcdCAgICB0aW1lb3V0IDMgc29jYXQgLXUgU1RESU4gXFxcIlNDVFA2LUNPTk5FQ1Q6W2ZkMDA6OjJdOjQ0NDNcXFwiIFxcdTAwM2MvZGV2L251bGwgXFxcXFxcbitcXHQgICAgfHwgcmV0dXJuIDFcXG4rXFxuK1xcdGluZm8gXFxcInZlcmlmeSBTQ1RQIERBVEEgY2h1bmsgY3Jvc3NlcyB0aGUgZGF0YXBhdGhcXFwiXFxuK1xcdG92c19zYnggXFxcIiR0XFxcIiBpcCBuZXRucyBleGVjIGNsaWVudCBcXFxcXFxuK1xcdCAgICB0aW1lb3V0IDMgc29jYXQgLXUgU1RESU4gXFxcIlNDVFA2LUNPTk5FQ1Q6W2ZkMDA6OjJdOjQ0NDNcXFwiIFxcXFxcXG4rXFx0ICAgIFxcdTAwM2NcXHUwMDNjXFx1MDAzYyBcXFwiJHBheWxvYWRcXFwiIHx8IHJldHVybiAxXFxuK1xcdG92c193YWl0IGdyZXAgLXEgXFxcIiRwYXlsb2FkXFxcIiBcXFwiJHJ4ZmlsZVxcXCIgXFxcXFxcbitcXHQgICAgfHwgeyBpbmZvIFxcXCJzZXJ2ZXIgZGlkIG5vdCByZWNlaXZlIFNDVFAgREFUQSBwYXlsb2FkXFxcIlxcbitcXHQgICAgICAgICByZXR1cm4gMTsgfVxcbitcXG4rXFx0b3ZzX2RlbF9mbG93cyBcXFwiJHRcXFwiIHNjdHA2XFxuK1xcbitcXHRpbmZvIFxcXCJ2ZXJpZnkgY29ubmVjdGlvbiBmYWlscyB3aXRob3V0IGZsb3dzXFxcIlxcbitcXHRvdnNfYWRkX2Zsb3cgXFxcIiR0XFxcIiBzY3RwNiBcXFxcXFxuK1xcdCAgICAnaW5fcG9ydCgxKSxldGgoKSxldGhfdHlwZSgweDg2ZGQpLGlwdjYocHJvdG89NTgpLGljbXB2NigpJyBcXFxcXFxuK1xcdCAgICAnMicgfHwgcmV0dXJuIDFcXG4rXFx0b3ZzX2FkZF9mbG93IFxcXCIkdFxcXCIgc2N0cDYgXFxcXFxcbitcXHQgICAgJ2luX3BvcnQoMiksZXRoKCksZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTU4KSxpY21wdjYoKScgXFxcXFxcbitcXHQgICAgJzEnIHx8IHJldHVybiAxXFxuK1xcbitcXHRvdnNfc2J4IFxcXCIkdFxcXCIgaXAgbmV0bnMgZXhlYyBjbGllbnQgXFxcXFxcbitcXHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFxcXCJTQ1RQNi1DT05ORUNUOltmZDAwOjoyXTo0NDQzXFxcIiBcXHUwMDNjL2Rldi9udWxsIFxcXFxcXG4rXFx0ICAgIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MSBcXFxcXFxuK1xcdCAgICBcXHUwMDI2XFx1MDAyNiB7IGluZm8gXFxcImNvbm5lY3Rpb24gc2hvdWxkIGZhaWwgd2l0aG91dCBmbG93c1xcXCJcXG4rXFx0ICAgICAgICAgcmV0dXJuIDE7IH1cXG4rXFxuK1xcdGluZm8gXFxcInJlaW5zdGFsbCBmbG93cyBhbmQgdmVyaWZ5IHJlY292ZXJ5XFxcIlxcbitcXHRvdnNfYWRkX2Zsb3cgXFxcIiR0XFxcIiBzY3RwNiBcXFxcXFxuK1xcdCAgICBcXFwiaW5fcG9ydCgxKSxldGgoKSwkdjYsc2N0cChkc3Q9NDQ0MylcXFwiIFxcXFxcXG4rXFx0ICAgICcyJyB8fCByZXR1cm4gMVxcbitcXHRvdnNfYWRkX2Zsb3cgXFxcIiR0XFxcIiBzY3RwNiBcXFxcXFxuK1xcdCAgICBcXFwiaW5fcG9ydCgyKSxldGgoKSwkdjYsc2N0cChzcmM9NDQ0MylcXFwiIFxcXFxcXG4rXFx0ICAgICcxJyB8fCByZXR1cm4gMVxcbitcXG4rXFx0b3ZzX3NieCBcXFwiJHRcXFwiIGlwIG5ldG5zIGV4ZWMgY2xpZW50IFxcXFxcXG4rXFx0ICAgIHRpbWVvdXQgMyBzb2NhdCAtdSBTVERJTiBcXFwiU0NUUDYtQ09OTkVDVDpbZmQwMDo6Ml06NDQ0M1xcXCIgXFx1MDAzYy9kZXYvbnVsbCBcXFxcXFxuK1xcdCAgICB8fCByZXR1cm4gMVxcbitcXG4rXFx0cmV0dXJuIDBcXG4rfVxcbitcXG4gIyBwc2FtcGxlIHRlc3RcXG4gIyAtIHVzZSBwc2FtcGxlIHRvIG9ic2VydmUgcGFja2V0c1xcbiB0ZXN0X3BzYW1wbGUoKSB7XFxuQEAgLTEwOTEsNiArMTE4Nyw5MiBAQCB0ZXN0X25hdF9jb25uZWN0X3Y0ICgpIHtcXG4gXFx0cmV0dXJuIDBcXG4gfVxcbiBcXG4rIyBzY3RwX25hdF9jb25uZWN0X3Y0IHRlc3RcXG4rIyAgLSBTQ1RQIGFzc29jaWF0aW9uIGNyb3NzZXMgYSBjdChjb21taXQsbmF0KGRzdD1pcDpwb3J0KSkgRE5BVFxcbisjICAtIHBvc3QtcmVjaXJjIGZsb3dzIG1hdGNoIHRoZSB0cmFuc2xhdGVkIGFkZHJlc3MgYW5kIHBvcnQsIHNvIHRoZVxcbisjICAgIFNDVFAgYnJhbmNoIG9mIHRoZSBwb3N0LU5BVCBmbG93IGtleSB1cGRhdGUgaXMgbG9hZC1iZWFyaW5nXFxuK3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCAoKSB7XFxuK1xcdGxvY2FsIHQ9XFxcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFxcXCJcXG4rXFx0bG9jYWwgcGF5bG9hZD1cXFwiU0NUUF9OQVRfREFUQV9PS1xcXCJcXG4rXFx0bG9jYWwgcnhmaWxlPVxcXCIke292c19iYXNlfS8ke3R9L3NjdHAtcngudHh0XFxcIlxcbitcXG4rXFx0bW9kcHJvYmUgLXEgc2N0cCAyXFx1MDAzZS9kZXYvbnVsbCB8fCByZXR1cm4gXFxcIiRrc2Z0X3NraXBcXFwiXFxuK1xcdHNvY2F0IC1WIDJcXHUwMDNlXFx1MDAyNjEgfCBncmVwIC1xIFxcXCJkZWZpbmUgV0lUSF9TQ1RQXFxcIiB8fCByZXR1cm4gXFxcIiRrc2Z0X3NraXBcXFwiXFxuK1xcdCMgU0NUUCBjb25udHJhY2sgaXMgY29tcGlsZWQgaW50byBuZl9jb25udHJhY2sua28sIHNvIGNoZWNrIHRoYXRcXG4rXFx0IyBsb2FkaW5nIGl0IGFjdHVhbGx5IGV4cG9zZWQgdGhlIFNDVFAgY29ubnRyYWNrIHN5c2N0bHMuXFxuK1xcdG1vZHByb2JlIC1xIG5mX2Nvbm50cmFjayAyXFx1MDAzZS9kZXYvbnVsbCB8fCByZXR1cm4gXFxcIiRrc2Z0X3NraXBcXFwiXFxuK1xcdFsgLWUgL3Byb2Mvc3lzL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NjdHBfdGltZW91dF9lc3RhYmxpc2hlZCBdIFxcXFxcXG4rXFx0ICAgIHx8IHsgaW5mbyBcXFwibm8gU0NUUCBjb25udHJhY2sgc3VwcG9ydCAtIHNraXBwaW5nXFxcIlxcbitcXHQgICAgICAgICByZXR1cm4gXFxcIiRrc2Z0X3NraXBcXFwiOyB9XFxuK1xcbitcXHRzYnhfYWRkIFxcXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcXFwiIHx8IHJldHVybiAkP1xcbitcXG4rXFx0b3ZzX2FkZF9kcCBcXFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XFxcIiBzY3RwbmF0NCB8fCByZXR1cm4gMVxcbitcXHRpbmZvIFxcXCJjcmVhdGUgbmFtZXNwYWNlc1xcXCJcXG4rXFx0Zm9yIG5zIGluIGNsaWVudCBzZXJ2ZXI7IGRvXFxuK1xcdFxcdG92c19hZGRfbmV0bnNfYW5kX3ZldGhzIFxcXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcXFwiIFxcXCJzY3RwbmF0NFxcXCIgXFxcXFxcbitcXHRcXHQgICAgXFxcIiRuc1xcXCIgXFxcIiR7bnM6MDoxfTBcXFwiIFxcXCIke25zOjA6MX0xXFxcIiB8fCByZXR1cm4gMVxcbitcXHRkb25lXFxuK1xcbitcXHRpcCBuZXRucyBleGVjIGNsaWVudCBpcCBhZGRyIGFkZCAxNzIuMzEuMTEwLjEwLzI0IGRldiBjMVxcbitcXHRpcCBuZXRucyBleGVjIGNsaWVudCBpcCBsaW5rIHNldCBjMSB1cFxcbitcXHRpcCBuZXRucyBleGVjIHNlcnZlciBpcCBhZGRyIGFkZCAxNzIuMzEuMTEwLjIwLzI0IGRldiBzMVxcbitcXHRpcCBuZXRucyBleGVjIHNlcnZlciBpcCBsaW5rIHNldCBzMSB1cFxcbitcXG4rXFx0aXAgbmV0bnMgZXhlYyBjbGllbnQgaXAgcm91dGUgYWRkIGRlZmF1bHQgdmlhIDE3Mi4zMS4xMTAuMjBcXG4rXFxuK1xcdCMgQ2hlY2sgaWYgdGhlIGN0IGFuZCBuYXQgYWN0aW9ucyBjYW4gYmUgY29uZmlndXJlZC5cXG4rXFx0b3ZzX2FkZF9mbG93IFxcXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcXFwiIHNjdHBuYXQ0IFxcXFxcXG4rXFx0XFx0J2luX3BvcnQoMSksZXRoKCksZXRoX3R5cGUoMHgwODAwKSxpcHY0KCknIFxcXFxcXG4rXFx0XFx0J2N0KGNvbW1pdCxuYXQoZHN0PTE3Mi4zMS4xMTAuMjA6NTU1NSkpLHJlY2lyYygweDEpJyBcXHUwMDI2XFx1MDAzZSAvZGV2L251bGxcXG4rXFx0aWYgWyAkPyA9PSAxIF07IHRoZW5cXG4rXFx0XFx0aW5mbyBcXFwibm8gc3VwcG9ydCBmb3IgY3QvbmF0IGFjdGlvbnMgLSBza2lwcGluZ1xcXCJcXG4rXFx0XFx0b3ZzX2V4aXRfc2lnXFxuK1xcdFxcdHJldHVybiAka3NmdF9za2lwXFxuK1xcdGZpXFxuK1xcbitcXHRvdnNfZGVsX2Zsb3dzIFxcXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcXFwiIHNjdHBuYXQ0XFxuK1xcbitcXHRvdnNfYWRkX2Zsb3cgXFxcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFxcXCIgc2N0cG5hdDQgXFxcXFxcbitcXHRcXHQnaW5fcG9ydCgxKSxldGgoKSxldGhfdHlwZSgweDA4MDYpLGFycCgpJyAnMicgfHwgcmV0dXJuIDFcXG4rXFx0b3ZzX2FkZF9mbG93IFxcXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcXFwiIHNjdHBuYXQ0IFxcXFxcXG4rXFx0XFx0J2luX3BvcnQoMiksZXRoKCksZXRoX3R5cGUoMHgwODA2KSxhcnAoKScgJzEnIHx8IHJldHVybiAxXFxuK1xcdG92c19hZGRfZmxvdyBcXFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XFxcIiBzY3RwbmF0NCBcXFxcXFxuK1xcdFxcdFxcXCJjdF9zdGF0ZSgtdHJrKSxpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NChkc3Q9MTkyLjE2OC4wLjIwKVxcXCIgXFxcXFxcbitcXHRcXHRcXFwiY3QoY29tbWl0LG5hdChkc3Q9MTcyLjMxLjExMC4yMDo1NTU1KSkscmVjaXJjKDB4MSlcXFwiIHx8IHJldHVybiAxXFxuK1xcdG92c19hZGRfZmxvdyBcXFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XFxcIiBzY3RwbmF0NCBcXFxcXFxuK1xcdFxcdFxcXCJjdF9zdGF0ZSgtdHJrKSxpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NCgpXFxcIiBcXFxcXFxuK1xcdFxcdFxcXCJjdChjb21taXQsbmF0KSxyZWNpcmMoMHgyKVxcXCIgfHwgcmV0dXJuIDFcXG4rXFxuK1xcdG92c19hZGRfZmxvdyBcXFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XFxcIiBzY3RwbmF0NCBcXFxcXFxuK1xcdFxcdFxcXCJyZWNpcmNfaWQoMHgxKSxjdF9zdGF0ZSgrdHJrLWludiksaW5fcG9ydCgxKSxldGgoKSxldGhfdHlwZSgweDA4MDApLGlwdjQoZHN0PTE3Mi4zMS4xMTAuMjAscHJvdG89MTMyKSxzY3RwKGRzdD01NTU1KVxcXCIgXFxcXFxcbitcXHRcXHRcXFwiMlxcXCIgfHwgcmV0dXJuIDFcXG4rXFx0b3ZzX2FkZF9mbG93IFxcXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcXFwiIHNjdHBuYXQ0IFxcXFxcXG4rXFx0XFx0XFxcInJlY2lyY19pZCgweDIpLGN0X3N0YXRlKCt0cmstaW52KSxpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NChzcmM9MTkyLjE2OC4wLjIwLHByb3RvPTEzMiksc2N0cChzcmM9NDQ0MylcXFwiIFxcXFxcXG4rXFx0XFx0XFxcIjFcXFwiIHx8IHJldHVybiAxXFxuK1xcbitcXHRvdnNfbmV0bnNfc3Bhd25fZGFlbW9uIFxcXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcXFwiIFxcXCJzZXJ2ZXJcXFwiIFxcXFxcXG4rXFx0XFx0c29jYXQgLXUgLXQgMSBTQ1RQNC1MSVNURU46NTU1NSxmb3JrIFxcXFxcXG4rXFx0XFx0T1BFTjpcXFwiJHJ4ZmlsZVxcXCIsY3JlYXQsYXBwZW5kXFxuK1xcdG92c193YWl0IHNjdHBfZXBzX2hhcyBzZXJ2ZXIgNTU1NSB8fCByZXR1cm4gMVxcbitcXG4rXFx0aW5mbyBcXFwidmVyaWZ5IFNDVFAgYXNzb2NpYXRpb24gYWNyb3NzIE5BVFxcXCJcXG4rXFx0b3ZzX3NieCBcXFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XFxcIiBpcCBuZXRucyBleGVjIGNsaWVudCBcXFxcXFxuK1xcdCAgICB0aW1lb3V0IDMgc29jYXQgLXUgU1RESU4gXFxcIlNDVFA0LUNPTk5FQ1Q6MTkyLjE2OC4wLjIwOjQ0NDNcXFwiIFxcXFxcXG4rXFx0ICAgIFxcdTAwM2MvZGV2L251bGwgfHwgcmV0dXJuIDFcXG4rXFxuK1xcdGluZm8gXFxcInZlcmlmeSBTQ1RQIERBVEEgY2h1bmsgY3Jvc3NlcyBOQVRcXFwiXFxuK1xcdG92c19zYnggXFxcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFxcXCIgaXAgbmV0bnMgZXhlYyBjbGllbnQgXFxcXFxcbitcXHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFxcXCJTQ1RQNC1DT05ORUNUOjE5Mi4xNjguMC4yMDo0NDQzXFxcIiBcXFxcXFxuK1xcdCAgICBcXHUwMDNjXFx1MDAzY1xcdTAwM2MgXFxcIiRwYXlsb2FkXFxcIiB8fCByZXR1cm4gMVxcbitcXHRvdnNfd2FpdCBncmVwIC1xIFxcXCIkcGF5bG9hZFxcXCIgXFxcIiRyeGZpbGVcXFwiIFxcXFxcXG4rXFx0ICAgIHx8IHsgaW5mbyBcXFwic2VydmVyIGRpZCBub3QgcmVjZWl2ZSBTQ1RQIERBVEEgcGF5bG9hZFxcXCJcXG4rXFx0ICAgICAgICAgcmV0dXJuIDE7IH1cXG4rXFxuK1xcdGluZm8gXFxcImRvbmUuLi5cXFwiXFxuK1xcdHJldHVybiAwXFxuK31cXG4rXFxuICMgbmF0X3JlbGF0ZWRfdjQgdGVzdFxcbiAjICAtIGNsaWVudC1cXHUwMDNlc2VydmVyIGlwIHBhY2tldHMgZ28gdmlhIFNOQVRcXG4gIyAgLSBjbGllbnQgc29saWNpdHMgSUNNUCBkZXN0aW5hdGlvbiB1bnJlYWNoYWJsZSBwYWNrZXQgZnJvbSBzZXJ2ZXJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6MTc6MzQuMDMxNDMyMzcyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMDQzNzk4MjI4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvIGFuZCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDE5YjE2MWYzMmRjZDE4NjY4ZTNkOWI2YjIwYTBmOTQ0MmY3YzVhMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDcgMDE6MTc6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvY29uZmlnIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL2NvbmZpZ1xuaW5kZXggYTgyNWUwYjVjODhlNS4uZmE5MDQ3NWRjMzg4ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9jb25maWdcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9jb25maWdcbkBAIC03LDYgKzcsNyBAQCBDT05GSUdfTkVUX0lQR1JFPW1cbiBDT05GSUdfTkVUX0lQR1JFX0RFTVVYPW1cbiBDT05GSUdfTkZfQ09OTlRSQUNLPW1cbiBDT05GSUdfTkZfQ09OTlRSQUNLX09WUz15XG4rQ09ORklHX05GX0NUX1BST1RPX1NDVFA9eVxuIENPTkZJR19PUEVOVlNXSVRDSD1tXG4gQ09ORklHX1BTQU1QTEU9bVxuIENPTkZJR19WRVRIPXlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2guc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2guc2hcbmluZGV4IGEzMWY3ZmI2ODgyZGMuLmZiMzdiNmFiMmVjMWYgMTAwNzU1XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2guc2hcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5zaFxuQEAgLTM0LDYgKzM0LDggQEAgdGVzdHM9XCJcbiBcdHRydW5jXHRcdFx0XHRcdHRydW5jOiBvdXRwdXQgdHJ1bmNhdGlvblxuIFx0aWNtcHY2XHRcdFx0XHRcdGljbXB2NjogSUNNUHY2IGVjaG8gdHlwZSBtYXRjaFxuIFx0c2N0cF9jb25uZWN0X3Y0XHRcdFx0XHRzY3RwOiBTQ1RQIGZsb3cga2V5IG1hdGNoaW5nXG4rXHRzY3RwX2Nvbm5lY3RfdjZcdFx0XHRzY3RwNjogU0NUUCBmbG93IGtleSBtYXRjaGluZyBvdmVyIElQdjZcbitcdHNjdHBfbmF0X2Nvbm5lY3RfdjRcdFx0c2N0cG5hdDQ6IFNDVFAgZmxvdyBrZXkgYWNyb3NzIGNvbm50cmFjayBOQVRcbiBcdHBzYW1wbGVcdFx0XHRcdFx0cHNhbXBsZTogU2FtcGxpbmcgcGFja2V0cyB3aXRoIHBzYW1wbGVcIlxuIFxuIGluZm8oKSB7XG5AQCAtNzAwLDYgKzcwMiwxMDAgQEAgdGVzdF9zY3RwX2Nvbm5lY3RfdjQoKSB7XG4gXHRyZXR1cm4gMFxuIH1cbiBcbisjIHNjdHBfY29ubmVjdF92NiB0ZXN0XG4rIyAtIHNjdHAoZHN0PTQ0NDMpIG1hdGNoZXMgY2xpZW50LXRvLXNlcnZlciBJTklUXG4rIyAtIHNjdHAoc3JjPTQ0NDMpIG1hdGNoZXMgc2VydmVyLXRvLWNsaWVudCBJTklULUFDS1xuKyMgLSBpY21wdjYgTlMvTkEgZmxvd3MgZm9yd2FyZCBuZWlnaGJvdXIgZGlzY292ZXJ5XG4rIyAtIHJlbW92ZSBmbG93cyBhbmQgdmVyaWZ5IGNvbm5lY3Rpb24gZmFpbHMsIHJlaW5zdGFsbCBhbmQgcmVjb3ZlclxuK3Rlc3Rfc2N0cF9jb25uZWN0X3Y2KCkge1xuK1x0bG9jYWwgdD1cInRlc3Rfc2N0cF9jb25uZWN0X3Y2XCJcbitcdGxvY2FsIHY2PVwiZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTEzMilcIlxuK1x0bG9jYWwgcGF5bG9hZD1cIlNDVFA2X0RBVEFfT0tcIlxuK1x0bG9jYWwgcnhmaWxlPVwiJHtvdnNfYmFzZX0vJHt0fS9zY3RwLXJ4LnR4dFwiXG4rXG4rXHRtb2Rwcm9iZSAtcSBzY3RwIDJcdTAwM2UvZGV2L251bGwgfHwgcmV0dXJuIFwiJGtzZnRfc2tpcFwiXG4rXHRzb2NhdCAtViAyXHUwMDNlXHUwMDI2MSB8IGdyZXAgLXEgXCJkZWZpbmUgV0lUSF9TQ1RQXCIgfHwgcmV0dXJuIFwiJGtzZnRfc2tpcFwiXG4rXHRbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NiBdIHx8IHJldHVybiBcIiRrc2Z0X3NraXBcIlxuK1xuK1x0c2J4X2FkZCBcIiR0XCIgfHwgcmV0dXJuICQ/XG4rXHRvdnNfYWRkX2RwIFwiJHRcIiBzY3RwNiB8fCByZXR1cm4gMVxuK1xuK1x0aW5mbyBcImNyZWF0ZSBuYW1lc3BhY2VzXCJcbitcdGZvciBucyBpbiBjbGllbnQgc2VydmVyOyBkb1xuK1x0XHRvdnNfYWRkX25ldG5zX2FuZF92ZXRocyBcIiR0XCIgXCJzY3RwNlwiIFwiJG5zXCIgXFxcbitcdFx0ICAgIFwiJHtuczowOjF9MFwiIFwiJHtuczowOjF9MVwiIHx8IHJldHVybiAxXG4rXHRkb25lXG4rXG4rXHRpcCBuZXRucyBleGVjIGNsaWVudCBpcCBhZGRyIGFkZCBmZDAwOjoxLzY0IGRldiBjMSBub2RhZFxuK1x0aXAgbmV0bnMgZXhlYyBjbGllbnQgaXAgbGluayBzZXQgYzEgdXBcbitcdGlwIG5ldG5zIGV4ZWMgc2VydmVyIGlwIGFkZHIgYWRkIGZkMDA6OjIvNjQgZGV2IHMxIG5vZGFkXG4rXHRpcCBuZXRucyBleGVjIHNlcnZlciBpcCBsaW5rIHNldCBzMSB1cFxuK1xuK1x0IyBOUy9OQSBmb3J3YXJkaW5nXG4rXHRvdnNfYWRkX2Zsb3cgXCIkdFwiIHNjdHA2IFxcXG4rXHQgICAgJ2luX3BvcnQoMSksZXRoKCksZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTU4KSxpY21wdjYoKScgXFxcbitcdCAgICAnMicgfHwgcmV0dXJuIDFcbitcdG92c19hZGRfZmxvdyBcIiR0XCIgc2N0cDYgXFxcbitcdCAgICAnaW5fcG9ydCgyKSxldGgoKSxldGhfdHlwZSgweDg2ZGQpLGlwdjYocHJvdG89NTgpLGljbXB2NigpJyBcXFxuK1x0ICAgICcxJyB8fCByZXR1cm4gMVxuK1xuK1x0IyBTQ1RQIHBvcnQgbWF0Y2hpbmc6IGRzdCBmb3IgcmVxdWVzdCwgc3JjIGZvciByZXBseVxuK1x0b3ZzX2FkZF9mbG93IFwiJHRcIiBzY3RwNiBcXFxuK1x0ICAgIFwiaW5fcG9ydCgxKSxldGgoKSwkdjYsc2N0cChkc3Q9NDQ0MylcIiBcXFxuK1x0ICAgICcyJyB8fCByZXR1cm4gMVxuK1x0b3ZzX2FkZF9mbG93IFwiJHRcIiBzY3RwNiBcXFxuK1x0ICAgIFwiaW5fcG9ydCgyKSxldGgoKSwkdjYsc2N0cChzcmM9NDQ0MylcIiBcXFxuK1x0ICAgICcxJyB8fCByZXR1cm4gMVxuK1xuK1x0b3ZzX25ldG5zX3NwYXduX2RhZW1vbiBcIiR0XCIgXCJzZXJ2ZXJcIiBcXFxuK1x0ICAgIHNvY2F0IC11IC10IDEgU0NUUDYtTElTVEVOOjQ0NDMsZm9yayBcXFxuK1x0ICAgIE9QRU46XCIkcnhmaWxlXCIsY3JlYXQsYXBwZW5kXG4rXHRvdnNfd2FpdCBzY3RwX2Vwc19oYXMgc2VydmVyIDQ0NDMgfHwgcmV0dXJuIDFcbitcbitcdGluZm8gXCJ2ZXJpZnkgU0NUUCBhc3NvY2lhdGlvbiB3aXRoIHBvcnQta2V5ZWQgZmxvd3NcIlxuK1x0b3ZzX3NieCBcIiR0XCIgaXAgbmV0bnMgZXhlYyBjbGllbnQgXFxcbitcdCAgICB0aW1lb3V0IDMgc29jYXQgLXUgU1RESU4gXCJTQ1RQNi1DT05ORUNUOltmZDAwOjoyXTo0NDQzXCIgXHUwMDNjL2Rldi9udWxsIFxcXG4rXHQgICAgfHwgcmV0dXJuIDFcbitcbitcdGluZm8gXCJ2ZXJpZnkgU0NUUCBEQVRBIGNodW5rIGNyb3NzZXMgdGhlIGRhdGFwYXRoXCJcbitcdG92c19zYnggXCIkdFwiIGlwIG5ldG5zIGV4ZWMgY2xpZW50IFxcXG4rXHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFwiU0NUUDYtQ09OTkVDVDpbZmQwMDo6Ml06NDQ0M1wiIFxcXG4rXHQgICAgXHUwMDNjXHUwMDNjXHUwMDNjIFwiJHBheWxvYWRcIiB8fCByZXR1cm4gMVxuK1x0b3ZzX3dhaXQgZ3JlcCAtcSBcIiRwYXlsb2FkXCIgXCIkcnhmaWxlXCIgXFxcbitcdCAgICB8fCB7IGluZm8gXCJzZXJ2ZXIgZGlkIG5vdCByZWNlaXZlIFNDVFAgREFUQSBwYXlsb2FkXCJcbitcdCAgICAgICAgIHJldHVybiAxOyB9XG4rXG4rXHRvdnNfZGVsX2Zsb3dzIFwiJHRcIiBzY3RwNlxuK1xuK1x0aW5mbyBcInZlcmlmeSBjb25uZWN0aW9uIGZhaWxzIHdpdGhvdXQgZmxvd3NcIlxuK1x0b3ZzX2FkZF9mbG93IFwiJHRcIiBzY3RwNiBcXFxuK1x0ICAgICdpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4ODZkZCksaXB2Nihwcm90bz01OCksaWNtcHY2KCknIFxcXG4rXHQgICAgJzInIHx8IHJldHVybiAxXG4rXHRvdnNfYWRkX2Zsb3cgXCIkdFwiIHNjdHA2IFxcXG4rXHQgICAgJ2luX3BvcnQoMiksZXRoKCksZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTU4KSxpY21wdjYoKScgXFxcbitcdCAgICAnMScgfHwgcmV0dXJuIDFcbitcbitcdG92c19zYnggXCIkdFwiIGlwIG5ldG5zIGV4ZWMgY2xpZW50IFxcXG4rXHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFwiU0NUUDYtQ09OTkVDVDpbZmQwMDo6Ml06NDQ0M1wiIFx1MDAzYy9kZXYvbnVsbCBcXFxuK1x0ICAgIFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSBcXFxuK1x0ICAgIFx1MDAyNlx1MDAyNiB7IGluZm8gXCJjb25uZWN0aW9uIHNob3VsZCBmYWlsIHdpdGhvdXQgZmxvd3NcIlxuK1x0ICAgICAgICAgcmV0dXJuIDE7IH1cbitcbitcdGluZm8gXCJyZWluc3RhbGwgZmxvd3MgYW5kIHZlcmlmeSByZWNvdmVyeVwiXG4rXHRvdnNfYWRkX2Zsb3cgXCIkdFwiIHNjdHA2IFxcXG4rXHQgICAgXCJpbl9wb3J0KDEpLGV0aCgpLCR2NixzY3RwKGRzdD00NDQzKVwiIFxcXG4rXHQgICAgJzInIHx8IHJldHVybiAxXG4rXHRvdnNfYWRkX2Zsb3cgXCIkdFwiIHNjdHA2IFxcXG4rXHQgICAgXCJpbl9wb3J0KDIpLGV0aCgpLCR2NixzY3RwKHNyYz00NDQzKVwiIFxcXG4rXHQgICAgJzEnIHx8IHJldHVybiAxXG4rXG4rXHRvdnNfc2J4IFwiJHRcIiBpcCBuZXRucyBleGVjIGNsaWVudCBcXFxuK1x0ICAgIHRpbWVvdXQgMyBzb2NhdCAtdSBTVERJTiBcIlNDVFA2LUNPTk5FQ1Q6W2ZkMDA6OjJdOjQ0NDNcIiBcdTAwM2MvZGV2L251bGwgXFxcbitcdCAgICB8fCByZXR1cm4gMVxuK1xuK1x0cmV0dXJuIDBcbit9XG4rXG4gIyBwc2FtcGxlIHRlc3RcbiAjIC0gdXNlIHBzYW1wbGUgdG8gb2JzZXJ2ZSBwYWNrZXRzXG4gdGVzdF9wc2FtcGxlKCkge1xuQEAgLTEwOTEsNiArMTE4Nyw5MiBAQCB0ZXN0X25hdF9jb25uZWN0X3Y0ICgpIHtcbiBcdHJldHVybiAwXG4gfVxuIFxuKyMgc2N0cF9uYXRfY29ubmVjdF92NCB0ZXN0XG4rIyAgLSBTQ1RQIGFzc29jaWF0aW9uIGNyb3NzZXMgYSBjdChjb21taXQsbmF0KGRzdD1pcDpwb3J0KSkgRE5BVFxuKyMgIC0gcG9zdC1yZWNpcmMgZmxvd3MgbWF0Y2ggdGhlIHRyYW5zbGF0ZWQgYWRkcmVzcyBhbmQgcG9ydCwgc28gdGhlXG4rIyAgICBTQ1RQIGJyYW5jaCBvZiB0aGUgcG9zdC1OQVQgZmxvdyBrZXkgdXBkYXRlIGlzIGxvYWQtYmVhcmluZ1xuK3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCAoKSB7XG4rXHRsb2NhbCB0PVwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCJcbitcdGxvY2FsIHBheWxvYWQ9XCJTQ1RQX05BVF9EQVRBX09LXCJcbitcdGxvY2FsIHJ4ZmlsZT1cIiR7b3ZzX2Jhc2V9LyR7dH0vc2N0cC1yeC50eHRcIlxuK1xuK1x0bW9kcHJvYmUgLXEgc2N0cCAyXHUwMDNlL2Rldi9udWxsIHx8IHJldHVybiBcIiRrc2Z0X3NraXBcIlxuK1x0c29jYXQgLVYgMlx1MDAzZVx1MDAyNjEgfCBncmVwIC1xIFwiZGVmaW5lIFdJVEhfU0NUUFwiIHx8IHJldHVybiBcIiRrc2Z0X3NraXBcIlxuK1x0IyBTQ1RQIGNvbm50cmFjayBpcyBjb21waWxlZCBpbnRvIG5mX2Nvbm50cmFjay5rbywgc28gY2hlY2sgdGhhdFxuK1x0IyBsb2FkaW5nIGl0IGFjdHVhbGx5IGV4cG9zZWQgdGhlIFNDVFAgY29ubnRyYWNrIHN5c2N0bHMuXG4rXHRtb2Rwcm9iZSAtcSBuZl9jb25udHJhY2sgMlx1MDAzZS9kZXYvbnVsbCB8fCByZXR1cm4gXCIka3NmdF9za2lwXCJcbitcdFsgLWUgL3Byb2Mvc3lzL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NjdHBfdGltZW91dF9lc3RhYmxpc2hlZCBdIFxcXG4rXHQgICAgfHwgeyBpbmZvIFwibm8gU0NUUCBjb25udHJhY2sgc3VwcG9ydCAtIHNraXBwaW5nXCJcbitcdCAgICAgICAgIHJldHVybiBcIiRrc2Z0X3NraXBcIjsgfVxuK1xuK1x0c2J4X2FkZCBcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwiIHx8IHJldHVybiAkP1xuK1xuK1x0b3ZzX2FkZF9kcCBcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwiIHNjdHBuYXQ0IHx8IHJldHVybiAxXG4rXHRpbmZvIFwiY3JlYXRlIG5hbWVzcGFjZXNcIlxuK1x0Zm9yIG5zIGluIGNsaWVudCBzZXJ2ZXI7IGRvXG4rXHRcdG92c19hZGRfbmV0bnNfYW5kX3ZldGhzIFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCIgXCJzY3RwbmF0NFwiIFxcXG4rXHRcdCAgICBcIiRuc1wiIFwiJHtuczowOjF9MFwiIFwiJHtuczowOjF9MVwiIHx8IHJldHVybiAxXG4rXHRkb25lXG4rXG4rXHRpcCBuZXRucyBleGVjIGNsaWVudCBpcCBhZGRyIGFkZCAxNzIuMzEuMTEwLjEwLzI0IGRldiBjMVxuK1x0aXAgbmV0bnMgZXhlYyBjbGllbnQgaXAgbGluayBzZXQgYzEgdXBcbitcdGlwIG5ldG5zIGV4ZWMgc2VydmVyIGlwIGFkZHIgYWRkIDE3Mi4zMS4xMTAuMjAvMjQgZGV2IHMxXG4rXHRpcCBuZXRucyBleGVjIHNlcnZlciBpcCBsaW5rIHNldCBzMSB1cFxuK1xuK1x0aXAgbmV0bnMgZXhlYyBjbGllbnQgaXAgcm91dGUgYWRkIGRlZmF1bHQgdmlhIDE3Mi4zMS4xMTAuMjBcbitcbitcdCMgQ2hlY2sgaWYgdGhlIGN0IGFuZCBuYXQgYWN0aW9ucyBjYW4gYmUgY29uZmlndXJlZC5cbitcdG92c19hZGRfZmxvdyBcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwiIHNjdHBuYXQ0IFxcXG4rXHRcdCdpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NCgpJyBcXFxuK1x0XHQnY3QoY29tbWl0LG5hdChkc3Q9MTcyLjMxLjExMC4yMDo1NTU1KSkscmVjaXJjKDB4MSknIFx1MDAyNlx1MDAzZSAvZGV2L251bGxcbitcdGlmIFsgJD8gPT0gMSBdOyB0aGVuXG4rXHRcdGluZm8gXCJubyBzdXBwb3J0IGZvciBjdC9uYXQgYWN0aW9ucyAtIHNraXBwaW5nXCJcbitcdFx0b3ZzX2V4aXRfc2lnXG4rXHRcdHJldHVybiAka3NmdF9za2lwXG4rXHRmaVxuK1xuK1x0b3ZzX2RlbF9mbG93cyBcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwiIHNjdHBuYXQ0XG4rXG4rXHRvdnNfYWRkX2Zsb3cgXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcIiBzY3RwbmF0NCBcXFxuK1x0XHQnaW5fcG9ydCgxKSxldGgoKSxldGhfdHlwZSgweDA4MDYpLGFycCgpJyAnMicgfHwgcmV0dXJuIDFcbitcdG92c19hZGRfZmxvdyBcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwiIHNjdHBuYXQ0IFxcXG4rXHRcdCdpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4MDgwNiksYXJwKCknICcxJyB8fCByZXR1cm4gMVxuK1x0b3ZzX2FkZF9mbG93IFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCIgc2N0cG5hdDQgXFxcbitcdFx0XCJjdF9zdGF0ZSgtdHJrKSxpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NChkc3Q9MTkyLjE2OC4wLjIwKVwiIFxcXG4rXHRcdFwiY3QoY29tbWl0LG5hdChkc3Q9MTcyLjMxLjExMC4yMDo1NTU1KSkscmVjaXJjKDB4MSlcIiB8fCByZXR1cm4gMVxuK1x0b3ZzX2FkZF9mbG93IFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCIgc2N0cG5hdDQgXFxcbitcdFx0XCJjdF9zdGF0ZSgtdHJrKSxpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NCgpXCIgXFxcbitcdFx0XCJjdChjb21taXQsbmF0KSxyZWNpcmMoMHgyKVwiIHx8IHJldHVybiAxXG4rXG4rXHRvdnNfYWRkX2Zsb3cgXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcIiBzY3RwbmF0NCBcXFxuK1x0XHRcInJlY2lyY19pZCgweDEpLGN0X3N0YXRlKCt0cmstaW52KSxpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NChkc3Q9MTcyLjMxLjExMC4yMCxwcm90bz0xMzIpLHNjdHAoZHN0PTU1NTUpXCIgXFxcbitcdFx0XCIyXCIgfHwgcmV0dXJuIDFcbitcdG92c19hZGRfZmxvdyBcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwiIHNjdHBuYXQ0IFxcXG4rXHRcdFwicmVjaXJjX2lkKDB4MiksY3Rfc3RhdGUoK3Ryay1pbnYpLGluX3BvcnQoMiksZXRoKCksZXRoX3R5cGUoMHgwODAwKSxpcHY0KHNyYz0xOTIuMTY4LjAuMjAscHJvdG89MTMyKSxzY3RwKHNyYz00NDQzKVwiIFxcXG4rXHRcdFwiMVwiIHx8IHJldHVybiAxXG4rXG4rXHRvdnNfbmV0bnNfc3Bhd25fZGFlbW9uIFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCIgXCJzZXJ2ZXJcIiBcXFxuK1x0XHRzb2NhdCAtdSAtdCAxIFNDVFA0LUxJU1RFTjo1NTU1LGZvcmsgXFxcbitcdFx0T1BFTjpcIiRyeGZpbGVcIixjcmVhdCxhcHBlbmRcbitcdG92c193YWl0IHNjdHBfZXBzX2hhcyBzZXJ2ZXIgNTU1NSB8fCByZXR1cm4gMVxuK1xuK1x0aW5mbyBcInZlcmlmeSBTQ1RQIGFzc29jaWF0aW9uIGFjcm9zcyBOQVRcIlxuK1x0b3ZzX3NieCBcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwiIGlwIG5ldG5zIGV4ZWMgY2xpZW50IFxcXG4rXHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFwiU0NUUDQtQ09OTkVDVDoxOTIuMTY4LjAuMjA6NDQ0M1wiIFxcXG4rXHQgICAgXHUwMDNjL2Rldi9udWxsIHx8IHJldHVybiAxXG4rXG4rXHRpbmZvIFwidmVyaWZ5IFNDVFAgREFUQSBjaHVuayBjcm9zc2VzIE5BVFwiXG4rXHRvdnNfc2J4IFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCIgaXAgbmV0bnMgZXhlYyBjbGllbnQgXFxcbitcdCAgICB0aW1lb3V0IDMgc29jYXQgLXUgU1RESU4gXCJTQ1RQNC1DT05ORUNUOjE5Mi4xNjguMC4yMDo0NDQzXCIgXFxcbitcdCAgICBcdTAwM2NcdTAwM2NcdTAwM2MgXCIkcGF5bG9hZFwiIHx8IHJldHVybiAxXG4rXHRvdnNfd2FpdCBncmVwIC1xIFwiJHBheWxvYWRcIiBcIiRyeGZpbGVcIiBcXFxuK1x0ICAgIHx8IHsgaW5mbyBcInNlcnZlciBkaWQgbm90IHJlY2VpdmUgU0NUUCBEQVRBIHBheWxvYWRcIlxuK1x0ICAgICAgICAgcmV0dXJuIDE7IH1cbitcbitcdGluZm8gXCJkb25lLi4uXCJcbitcdHJldHVybiAwXG4rfVxuK1xuICMgbmF0X3JlbGF0ZWRfdjQgdGVzdFxuICMgIC0gY2xpZW50LVx1MDAzZXNlcnZlciBpcCBwYWNrZXRzIGdvIHZpYSBTTkFUXG4gIyAgLSBjbGllbnQgc29saWNpdHMgSUNNUCBkZXN0aW5hdGlvbiB1bnJlYWNoYWJsZSBwYWNrZXQgZnJvbSBzZXJ2ZXJcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAxOjE3OjM0LjAzMTQzNDAyMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwNDM3OTQ0NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoaXMgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSB0aGUgcGF0Y2ggYWZmZWN0cyB0d28gZmlsZXM6IGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvY29uZmlnYCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5zaGAuIEJvdGggYXJlIG5lc3RsZWQgbmVhdGx5IHdpdGhpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9gIGRpcmVjdG9yeS5cblxuTm93LCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMsIHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgd2FycmFudHMgZnV6emluZy4gVGhlIGtleSBoZXJlIGlzIFNlY3Rpb24gMi4gV2Ugb25seSBtYXJrIGl0IGFzICpub3QqIHdvcnRoIGZ1enppbmcgaWYgYWxsIHRoZSBtb2RpZmljYXRpb25zIGFyZSBzdHJpY3RseSBsaW1pdGVkIHRvIG5vbi1rZXJuZWwsIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMuIFNwZWNpZmljYWxseSwgdGhpbmsgZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIHNwZWxsaW5nIGZpeGVzLCBvciB1c2VyLXNwYWNlIHN0dWZmIGxpa2Ugc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyB0aGF0ICpkb24ndCogaW1wYWN0IHRoZSBjb3JlIGtlcm5lbCBpbWFnZSBvciBtb2R1bGVzLlxuXG5JJ3ZlIGNoZWNrZWQgdGhlIGRpZmYgY2FyZWZ1bGx5LCBhbmQgdGhlc2UgYXJlIHRoZSBvbmx5IHR3byBmaWxlcyBsaXN0ZWQuIE5vIEMga2VybmVsIGNvZGUgaGFzIGJlZW4gdG91Y2hlZCwgbm90aGluZyBvdXRzaWRlIHRoYXQgYHRvb2xzL2AgcGF0aC4gSXQncyBhbGwgc3RheWluZyB3aXRoaW4gdGhvc2Ugc2VsZnRlc3RzLlxuXG5UaGVyZWZvcmUsIHRoZSB2ZXJkaWN0IGlzIGNsZWFyOiBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBObyBuZWVkIHRvIGFkZCBhbnl0aGluZyB0byBgRm9jdXNTeW1ib2xzYCBvciBgRW5hYmxlQ29uZmlnc2Agc2luY2Ugd2UncmUgbm90IGRlYWxpbmcgd2l0aCBrZXJuZWwgY29kZSB0aGF0IG5lZWRzIGZ1enppbmcuXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZXNlIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIGtlcm5lbCBzZWxmdGVzdHMgd2l0aGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IHN0cnVjdHVyZSBhbmQgZG9uJ3QgdG91Y2ggYW55IGNvcmUga2VybmVsIHNvdXJjZSBjb2RlIG9yIGhhdmUgYW4gaW1wYWN0IG9uIHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UuXG5cblRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDE5LCJPdXRwdXRUb2tlbnMiOjY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6MTc6NDQuNDY5MzgxNDU1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTEwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2Ugc2VsZnRlc3RzIHVuZGVyIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC8gYW5kIGRvZXMgbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIG9yIGtlcm5lbCBtb2R1bGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvIGFuZCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAxOjE3OjQ0LjQ2OTQyMTE5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjgx2w[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-07 01:16:05 +0000 UTC FinishedAt: 2026-09-07 01:17:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvIGFuZCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkMTliMTYxZjMyZGNkMTg2NjhlM2Q5YjZiMjBhMGY5NDQyZjdjNWExXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBTZXAgNyAwMToxNzozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvY29uZmlnIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL2NvbmZpZ1xuaW5kZXggYTgyNWUwYjVjODhlNS4uZmE5MDQ3NWRjMzg4ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9jb25maWdcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9jb25maWdcbkBAIC03LDYgJiM0Mzs3LDcgQEAgQ09ORklHX05FVF9JUEdSRT1tXG4gQ09ORklHX05FVF9JUEdSRV9ERU1VWD1tXG4gQ09ORklHX05GX0NPTk5UUkFDSz1tXG4gQ09ORklHX05GX0NPTk5UUkFDS19PVlM9eVxuJiM0MztDT05GSUdfTkZfQ1RfUFJPVE9fU0NUUD15XG4gQ09ORklHX09QRU5WU1dJVENIPW1cbiBDT05GSUdfUFNBTVBMRT1tXG4gQ09ORklHX1ZFVEg9eVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5zaFxuaW5kZXggYTMxZjdmYjY4ODJkYy4uZmIzN2I2YWIyZWMxZiAxMDA3NTVcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5zaFxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL29wZW52c3dpdGNoLnNoXG5AQCAtMzQsNiAmIzQzOzM0LDggQEAgdGVzdHM9XCYjMzQ7XG4gXHR0cnVuY1x0XHRcdFx0XHR0cnVuYzogb3V0cHV0IHRydW5jYXRpb25cbiBcdGljbXB2Nlx0XHRcdFx0XHRpY21wdjY6IElDTVB2NiBlY2hvIHR5cGUgbWF0Y2hcbiBcdHNjdHBfY29ubmVjdF92NFx0XHRcdFx0c2N0cDogU0NUUCBmbG93IGtleSBtYXRjaGluZ1xuJiM0MztcdHNjdHBfY29ubmVjdF92Nlx0XHRcdHNjdHA2OiBTQ1RQIGZsb3cga2V5IG1hdGNoaW5nIG92ZXIgSVB2NlxuJiM0MztcdHNjdHBfbmF0X2Nvbm5lY3RfdjRcdFx0c2N0cG5hdDQ6IFNDVFAgZmxvdyBrZXkgYWNyb3NzIGNvbm50cmFjayBOQVRcbiBcdHBzYW1wbGVcdFx0XHRcdFx0cHNhbXBsZTogU2FtcGxpbmcgcGFja2V0cyB3aXRoIHBzYW1wbGVcJiMzNDtcbiBcbiBpbmZvKCkge1xuQEAgLTcwMCw2ICYjNDM7NzAyLDEwMCBAQCB0ZXN0X3NjdHBfY29ubmVjdF92NCgpIHtcbiBcdHJldHVybiAwXG4gfVxuIFxuJiM0MzsjIHNjdHBfY29ubmVjdF92NiB0ZXN0XG4mIzQzOyMgLSBzY3RwKGRzdD00NDQzKSBtYXRjaGVzIGNsaWVudC10by1zZXJ2ZXIgSU5JVFxuJiM0MzsjIC0gc2N0cChzcmM9NDQ0MykgbWF0Y2hlcyBzZXJ2ZXItdG8tY2xpZW50IElOSVQtQUNLXG4mIzQzOyMgLSBpY21wdjYgTlMvTkEgZmxvd3MgZm9yd2FyZCBuZWlnaGJvdXIgZGlzY292ZXJ5XG4mIzQzOyMgLSByZW1vdmUgZmxvd3MgYW5kIHZlcmlmeSBjb25uZWN0aW9uIGZhaWxzLCByZWluc3RhbGwgYW5kIHJlY292ZXJcbiYjNDM7dGVzdF9zY3RwX2Nvbm5lY3RfdjYoKSB7XG4mIzQzO1x0bG9jYWwgdD1cJiMzNDt0ZXN0X3NjdHBfY29ubmVjdF92NlwmIzM0O1xuJiM0MztcdGxvY2FsIHY2PVwmIzM0O2V0aF90eXBlKDB4ODZkZCksaXB2Nihwcm90bz0xMzIpXCYjMzQ7XG4mIzQzO1x0bG9jYWwgcGF5bG9hZD1cJiMzNDtTQ1RQNl9EQVRBX09LXCYjMzQ7XG4mIzQzO1x0bG9jYWwgcnhmaWxlPVwmIzM0OyR7b3ZzX2Jhc2V9LyR7dH0vc2N0cC1yeC50eHRcJiMzNDtcbiYjNDM7XG4mIzQzO1x0bW9kcHJvYmUgLXEgc2N0cCAyXHUwMDNlL2Rldi9udWxsIHx8IHJldHVybiBcJiMzNDska3NmdF9za2lwXCYjMzQ7XG4mIzQzO1x0c29jYXQgLVYgMlx1MDAzZVx1MDAyNjEgfCBncmVwIC1xIFwmIzM0O2RlZmluZSBXSVRIX1NDVFBcJiMzNDsgfHwgcmV0dXJuIFwmIzM0OyRrc2Z0X3NraXBcJiMzNDtcbiYjNDM7XHRbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NiBdIHx8IHJldHVybiBcJiMzNDska3NmdF9za2lwXCYjMzQ7XG4mIzQzO1xuJiM0MztcdHNieF9hZGQgXCYjMzQ7JHRcJiMzNDsgfHwgcmV0dXJuICQ/XG4mIzQzO1x0b3ZzX2FkZF9kcCBcJiMzNDskdFwmIzM0OyBzY3RwNiB8fCByZXR1cm4gMVxuJiM0MztcbiYjNDM7XHRpbmZvIFwmIzM0O2NyZWF0ZSBuYW1lc3BhY2VzXCYjMzQ7XG4mIzQzO1x0Zm9yIG5zIGluIGNsaWVudCBzZXJ2ZXI7IGRvXG4mIzQzO1x0XHRvdnNfYWRkX25ldG5zX2FuZF92ZXRocyBcJiMzNDskdFwmIzM0OyBcJiMzNDtzY3RwNlwmIzM0OyBcJiMzNDskbnNcJiMzNDsgXFxcbiYjNDM7XHRcdCAgICBcJiMzNDske25zOjA6MX0wXCYjMzQ7IFwmIzM0OyR7bnM6MDoxfTFcJiMzNDsgfHwgcmV0dXJuIDFcbiYjNDM7XHRkb25lXG4mIzQzO1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgY2xpZW50IGlwIGFkZHIgYWRkIGZkMDA6OjEvNjQgZGV2IGMxIG5vZGFkXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBjbGllbnQgaXAgbGluayBzZXQgYzEgdXBcbiYjNDM7XHRpcCBuZXRucyBleGVjIHNlcnZlciBpcCBhZGRyIGFkZCBmZDAwOjoyLzY0IGRldiBzMSBub2RhZFxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgc2VydmVyIGlwIGxpbmsgc2V0IHMxIHVwXG4mIzQzO1xuJiM0MztcdCMgTlMvTkEgZm9yd2FyZGluZ1xuJiM0MztcdG92c19hZGRfZmxvdyBcJiMzNDskdFwmIzM0OyBzY3RwNiBcXFxuJiM0MztcdCAgICAmIzM5O2luX3BvcnQoMSksZXRoKCksZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTU4KSxpY21wdjYoKSYjMzk7IFxcXG4mIzQzO1x0ICAgICYjMzk7MiYjMzk7IHx8IHJldHVybiAxXG4mIzQzO1x0b3ZzX2FkZF9mbG93IFwmIzM0OyR0XCYjMzQ7IHNjdHA2IFxcXG4mIzQzO1x0ICAgICYjMzk7aW5fcG9ydCgyKSxldGgoKSxldGhfdHlwZSgweDg2ZGQpLGlwdjYocHJvdG89NTgpLGljbXB2NigpJiMzOTsgXFxcbiYjNDM7XHQgICAgJiMzOTsxJiMzOTsgfHwgcmV0dXJuIDFcbiYjNDM7XG4mIzQzO1x0IyBTQ1RQIHBvcnQgbWF0Y2hpbmc6IGRzdCBmb3IgcmVxdWVzdCwgc3JjIGZvciByZXBseVxuJiM0MztcdG92c19hZGRfZmxvdyBcJiMzNDskdFwmIzM0OyBzY3RwNiBcXFxuJiM0MztcdCAgICBcJiMzNDtpbl9wb3J0KDEpLGV0aCgpLCR2NixzY3RwKGRzdD00NDQzKVwmIzM0OyBcXFxuJiM0MztcdCAgICAmIzM5OzImIzM5OyB8fCByZXR1cm4gMVxuJiM0MztcdG92c19hZGRfZmxvdyBcJiMzNDskdFwmIzM0OyBzY3RwNiBcXFxuJiM0MztcdCAgICBcJiMzNDtpbl9wb3J0KDIpLGV0aCgpLCR2NixzY3RwKHNyYz00NDQzKVwmIzM0OyBcXFxuJiM0MztcdCAgICAmIzM5OzEmIzM5OyB8fCByZXR1cm4gMVxuJiM0MztcbiYjNDM7XHRvdnNfbmV0bnNfc3Bhd25fZGFlbW9uIFwmIzM0OyR0XCYjMzQ7IFwmIzM0O3NlcnZlclwmIzM0OyBcXFxuJiM0MztcdCAgICBzb2NhdCAtdSAtdCAxIFNDVFA2LUxJU1RFTjo0NDQzLGZvcmsgXFxcbiYjNDM7XHQgICAgT1BFTjpcJiMzNDskcnhmaWxlXCYjMzQ7LGNyZWF0LGFwcGVuZFxuJiM0MztcdG92c193YWl0IHNjdHBfZXBzX2hhcyBzZXJ2ZXIgNDQ0MyB8fCByZXR1cm4gMVxuJiM0MztcbiYjNDM7XHRpbmZvIFwmIzM0O3ZlcmlmeSBTQ1RQIGFzc29jaWF0aW9uIHdpdGggcG9ydC1rZXllZCBmbG93c1wmIzM0O1xuJiM0MztcdG92c19zYnggXCYjMzQ7JHRcJiMzNDsgaXAgbmV0bnMgZXhlYyBjbGllbnQgXFxcbiYjNDM7XHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFwmIzM0O1NDVFA2LUNPTk5FQ1Q6W2ZkMDA6OjJdOjQ0NDNcJiMzNDsgXHUwMDNjL2Rldi9udWxsIFxcXG4mIzQzO1x0ICAgIHx8IHJldHVybiAxXG4mIzQzO1xuJiM0MztcdGluZm8gXCYjMzQ7dmVyaWZ5IFNDVFAgREFUQSBjaHVuayBjcm9zc2VzIHRoZSBkYXRhcGF0aFwmIzM0O1xuJiM0MztcdG92c19zYnggXCYjMzQ7JHRcJiMzNDsgaXAgbmV0bnMgZXhlYyBjbGllbnQgXFxcbiYjNDM7XHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFwmIzM0O1NDVFA2LUNPTk5FQ1Q6W2ZkMDA6OjJdOjQ0NDNcJiMzNDsgXFxcbiYjNDM7XHQgICAgXHUwMDNjXHUwMDNjXHUwMDNjIFwmIzM0OyRwYXlsb2FkXCYjMzQ7IHx8IHJldHVybiAxXG4mIzQzO1x0b3ZzX3dhaXQgZ3JlcCAtcSBcJiMzNDskcGF5bG9hZFwmIzM0OyBcJiMzNDskcnhmaWxlXCYjMzQ7IFxcXG4mIzQzO1x0ICAgIHx8IHsgaW5mbyBcJiMzNDtzZXJ2ZXIgZGlkIG5vdCByZWNlaXZlIFNDVFAgREFUQSBwYXlsb2FkXCYjMzQ7XG4mIzQzO1x0ICAgICAgICAgcmV0dXJuIDE7IH1cbiYjNDM7XG4mIzQzO1x0b3ZzX2RlbF9mbG93cyBcJiMzNDskdFwmIzM0OyBzY3RwNlxuJiM0MztcbiYjNDM7XHRpbmZvIFwmIzM0O3ZlcmlmeSBjb25uZWN0aW9uIGZhaWxzIHdpdGhvdXQgZmxvd3NcJiMzNDtcbiYjNDM7XHRvdnNfYWRkX2Zsb3cgXCYjMzQ7JHRcJiMzNDsgc2N0cDYgXFxcbiYjNDM7XHQgICAgJiMzOTtpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4ODZkZCksaXB2Nihwcm90bz01OCksaWNtcHY2KCkmIzM5OyBcXFxuJiM0MztcdCAgICAmIzM5OzImIzM5OyB8fCByZXR1cm4gMVxuJiM0MztcdG92c19hZGRfZmxvdyBcJiMzNDskdFwmIzM0OyBzY3RwNiBcXFxuJiM0MztcdCAgICAmIzM5O2luX3BvcnQoMiksZXRoKCksZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTU4KSxpY21wdjYoKSYjMzk7IFxcXG4mIzQzO1x0ICAgICYjMzk7MSYjMzk7IHx8IHJldHVybiAxXG4mIzQzO1xuJiM0MztcdG92c19zYnggXCYjMzQ7JHRcJiMzNDsgaXAgbmV0bnMgZXhlYyBjbGllbnQgXFxcbiYjNDM7XHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFwmIzM0O1NDVFA2LUNPTk5FQ1Q6W2ZkMDA6OjJdOjQ0NDNcJiMzNDsgXHUwMDNjL2Rldi9udWxsIFxcXG4mIzQzO1x0ICAgIFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSBcXFxuJiM0MztcdCAgICBcdTAwMjZcdTAwMjYgeyBpbmZvIFwmIzM0O2Nvbm5lY3Rpb24gc2hvdWxkIGZhaWwgd2l0aG91dCBmbG93c1wmIzM0O1xuJiM0MztcdCAgICAgICAgIHJldHVybiAxOyB9XG4mIzQzO1xuJiM0MztcdGluZm8gXCYjMzQ7cmVpbnN0YWxsIGZsb3dzIGFuZCB2ZXJpZnkgcmVjb3ZlcnlcJiMzNDtcbiYjNDM7XHRvdnNfYWRkX2Zsb3cgXCYjMzQ7JHRcJiMzNDsgc2N0cDYgXFxcbiYjNDM7XHQgICAgXCYjMzQ7aW5fcG9ydCgxKSxldGgoKSwkdjYsc2N0cChkc3Q9NDQ0MylcJiMzNDsgXFxcbiYjNDM7XHQgICAgJiMzOTsyJiMzOTsgfHwgcmV0dXJuIDFcbiYjNDM7XHRvdnNfYWRkX2Zsb3cgXCYjMzQ7JHRcJiMzNDsgc2N0cDYgXFxcbiYjNDM7XHQgICAgXCYjMzQ7aW5fcG9ydCgyKSxldGgoKSwkdjYsc2N0cChzcmM9NDQ0MylcJiMzNDsgXFxcbiYjNDM7XHQgICAgJiMzOTsxJiMzOTsgfHwgcmV0dXJuIDFcbiYjNDM7XG4mIzQzO1x0b3ZzX3NieCBcJiMzNDskdFwmIzM0OyBpcCBuZXRucyBleGVjIGNsaWVudCBcXFxuJiM0MztcdCAgICB0aW1lb3V0IDMgc29jYXQgLXUgU1RESU4gXCYjMzQ7U0NUUDYtQ09OTkVDVDpbZmQwMDo6Ml06NDQ0M1wmIzM0OyBcdTAwM2MvZGV2L251bGwgXFxcbiYjNDM7XHQgICAgfHwgcmV0dXJuIDFcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDBcbiYjNDM7fVxuJiM0MztcbiAjIHBzYW1wbGUgdGVzdFxuICMgLSB1c2UgcHNhbXBsZSB0byBvYnNlcnZlIHBhY2tldHNcbiB0ZXN0X3BzYW1wbGUoKSB7XG5AQCAtMTA5MSw2ICYjNDM7MTE4Nyw5MiBAQCB0ZXN0X25hdF9jb25uZWN0X3Y0ICgpIHtcbiBcdHJldHVybiAwXG4gfVxuIFxuJiM0MzsjIHNjdHBfbmF0X2Nvbm5lY3RfdjQgdGVzdFxuJiM0MzsjICAtIFNDVFAgYXNzb2NpYXRpb24gY3Jvc3NlcyBhIGN0KGNvbW1pdCxuYXQoZHN0PWlwOnBvcnQpKSBETkFUXG4mIzQzOyMgIC0gcG9zdC1yZWNpcmMgZmxvd3MgbWF0Y2ggdGhlIHRyYW5zbGF0ZWQgYWRkcmVzcyBhbmQgcG9ydCwgc28gdGhlXG4mIzQzOyMgICAgU0NUUCBicmFuY2ggb2YgdGhlIHBvc3QtTkFUIGZsb3cga2V5IHVwZGF0ZSBpcyBsb2FkLWJlYXJpbmdcbiYjNDM7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0ICgpIHtcbiYjNDM7XHRsb2NhbCB0PVwmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwmIzM0O1xuJiM0MztcdGxvY2FsIHBheWxvYWQ9XCYjMzQ7U0NUUF9OQVRfREFUQV9PS1wmIzM0O1xuJiM0MztcdGxvY2FsIHJ4ZmlsZT1cJiMzNDske292c19iYXNlfS8ke3R9L3NjdHAtcngudHh0XCYjMzQ7XG4mIzQzO1xuJiM0MztcdG1vZHByb2JlIC1xIHNjdHAgMlx1MDAzZS9kZXYvbnVsbCB8fCByZXR1cm4gXCYjMzQ7JGtzZnRfc2tpcFwmIzM0O1xuJiM0MztcdHNvY2F0IC1WIDJcdTAwM2VcdTAwMjYxIHwgZ3JlcCAtcSBcJiMzNDtkZWZpbmUgV0lUSF9TQ1RQXCYjMzQ7IHx8IHJldHVybiBcJiMzNDska3NmdF9za2lwXCYjMzQ7XG4mIzQzO1x0IyBTQ1RQIGNvbm50cmFjayBpcyBjb21waWxlZCBpbnRvIG5mX2Nvbm50cmFjay5rbywgc28gY2hlY2sgdGhhdFxuJiM0MztcdCMgbG9hZGluZyBpdCBhY3R1YWxseSBleHBvc2VkIHRoZSBTQ1RQIGNvbm50cmFjayBzeXNjdGxzLlxuJiM0MztcdG1vZHByb2JlIC1xIG5mX2Nvbm50cmFjayAyXHUwMDNlL2Rldi9udWxsIHx8IHJldHVybiBcJiMzNDska3NmdF9za2lwXCYjMzQ7XG4mIzQzO1x0WyAtZSAvcHJvYy9zeXMvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfc2N0cF90aW1lb3V0X2VzdGFibGlzaGVkIF0gXFxcbiYjNDM7XHQgICAgfHwgeyBpbmZvIFwmIzM0O25vIFNDVFAgY29ubnRyYWNrIHN1cHBvcnQgLSBza2lwcGluZ1wmIzM0O1xuJiM0MztcdCAgICAgICAgIHJldHVybiBcJiMzNDska3NmdF9za2lwXCYjMzQ7OyB9XG4mIzQzO1xuJiM0MztcdHNieF9hZGQgXCYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCYjMzQ7IHx8IHJldHVybiAkP1xuJiM0MztcbiYjNDM7XHRvdnNfYWRkX2RwIFwmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwmIzM0OyBzY3RwbmF0NCB8fCByZXR1cm4gMVxuJiM0MztcdGluZm8gXCYjMzQ7Y3JlYXRlIG5hbWVzcGFjZXNcJiMzNDtcbiYjNDM7XHRmb3IgbnMgaW4gY2xpZW50IHNlcnZlcjsgZG9cbiYjNDM7XHRcdG92c19hZGRfbmV0bnNfYW5kX3ZldGhzIFwmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwmIzM0OyBcJiMzNDtzY3RwbmF0NFwmIzM0OyBcXFxuJiM0MztcdFx0ICAgIFwmIzM0OyRuc1wmIzM0OyBcJiMzNDske25zOjA6MX0wXCYjMzQ7IFwmIzM0OyR7bnM6MDoxfTFcJiMzNDsgfHwgcmV0dXJuIDFcbiYjNDM7XHRkb25lXG4mIzQzO1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgY2xpZW50IGlwIGFkZHIgYWRkIDE3Mi4zMS4xMTAuMTAvMjQgZGV2IGMxXG4mIzQzO1x0aXAgbmV0bnMgZXhlYyBjbGllbnQgaXAgbGluayBzZXQgYzEgdXBcbiYjNDM7XHRpcCBuZXRucyBleGVjIHNlcnZlciBpcCBhZGRyIGFkZCAxNzIuMzEuMTEwLjIwLzI0IGRldiBzMVxuJiM0MztcdGlwIG5ldG5zIGV4ZWMgc2VydmVyIGlwIGxpbmsgc2V0IHMxIHVwXG4mIzQzO1xuJiM0MztcdGlwIG5ldG5zIGV4ZWMgY2xpZW50IGlwIHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAxNzIuMzEuMTEwLjIwXG4mIzQzO1xuJiM0MztcdCMgQ2hlY2sgaWYgdGhlIGN0IGFuZCBuYXQgYWN0aW9ucyBjYW4gYmUgY29uZmlndXJlZC5cbiYjNDM7XHRvdnNfYWRkX2Zsb3cgXCYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCYjMzQ7IHNjdHBuYXQ0IFxcXG4mIzQzO1x0XHQmIzM5O2luX3BvcnQoMSksZXRoKCksZXRoX3R5cGUoMHgwODAwKSxpcHY0KCkmIzM5OyBcXFxuJiM0MztcdFx0JiMzOTtjdChjb21taXQsbmF0KGRzdD0xNzIuMzEuMTEwLjIwOjU1NTUpKSxyZWNpcmMoMHgxKSYjMzk7IFx1MDAyNlx1MDAzZSAvZGV2L251bGxcbiYjNDM7XHRpZiBbICQ/ID09IDEgXTsgdGhlblxuJiM0MztcdFx0aW5mbyBcJiMzNDtubyBzdXBwb3J0IGZvciBjdC9uYXQgYWN0aW9ucyAtIHNraXBwaW5nXCYjMzQ7XG4mIzQzO1x0XHRvdnNfZXhpdF9zaWdcbiYjNDM7XHRcdHJldHVybiAka3NmdF9za2lwXG4mIzQzO1x0ZmlcbiYjNDM7XG4mIzQzO1x0b3ZzX2RlbF9mbG93cyBcJiMzNDt0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcJiMzNDsgc2N0cG5hdDRcbiYjNDM7XG4mIzQzO1x0b3ZzX2FkZF9mbG93IFwmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwmIzM0OyBzY3RwbmF0NCBcXFxuJiM0MztcdFx0JiMzOTtpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4MDgwNiksYXJwKCkmIzM5OyAmIzM5OzImIzM5OyB8fCByZXR1cm4gMVxuJiM0MztcdG92c19hZGRfZmxvdyBcJiMzNDt0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcJiMzNDsgc2N0cG5hdDQgXFxcbiYjNDM7XHRcdCYjMzk7aW5fcG9ydCgyKSxldGgoKSxldGhfdHlwZSgweDA4MDYpLGFycCgpJiMzOTsgJiMzOTsxJiMzOTsgfHwgcmV0dXJuIDFcbiYjNDM7XHRvdnNfYWRkX2Zsb3cgXCYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCYjMzQ7IHNjdHBuYXQ0IFxcXG4mIzQzO1x0XHRcJiMzNDtjdF9zdGF0ZSgtdHJrKSxpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NChkc3Q9MTkyLjE2OC4wLjIwKVwmIzM0OyBcXFxuJiM0MztcdFx0XCYjMzQ7Y3QoY29tbWl0LG5hdChkc3Q9MTcyLjMxLjExMC4yMDo1NTU1KSkscmVjaXJjKDB4MSlcJiMzNDsgfHwgcmV0dXJuIDFcbiYjNDM7XHRvdnNfYWRkX2Zsb3cgXCYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCYjMzQ7IHNjdHBuYXQ0IFxcXG4mIzQzO1x0XHRcJiMzNDtjdF9zdGF0ZSgtdHJrKSxpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NCgpXCYjMzQ7IFxcXG4mIzQzO1x0XHRcJiMzNDtjdChjb21taXQsbmF0KSxyZWNpcmMoMHgyKVwmIzM0OyB8fCByZXR1cm4gMVxuJiM0MztcbiYjNDM7XHRvdnNfYWRkX2Zsb3cgXCYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCYjMzQ7IHNjdHBuYXQ0IFxcXG4mIzQzO1x0XHRcJiMzNDtyZWNpcmNfaWQoMHgxKSxjdF9zdGF0ZSgmIzQzO3Ryay1pbnYpLGluX3BvcnQoMSksZXRoKCksZXRoX3R5cGUoMHgwODAwKSxpcHY0KGRzdD0xNzIuMzEuMTEwLjIwLHByb3RvPTEzMiksc2N0cChkc3Q9NTU1NSlcJiMzNDsgXFxcbiYjNDM7XHRcdFwmIzM0OzJcJiMzNDsgfHwgcmV0dXJuIDFcbiYjNDM7XHRvdnNfYWRkX2Zsb3cgXCYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCYjMzQ7IHNjdHBuYXQ0IFxcXG4mIzQzO1x0XHRcJiMzNDtyZWNpcmNfaWQoMHgyKSxjdF9zdGF0ZSgmIzQzO3Ryay1pbnYpLGluX3BvcnQoMiksZXRoKCksZXRoX3R5cGUoMHgwODAwKSxpcHY0KHNyYz0xOTIuMTY4LjAuMjAscHJvdG89MTMyKSxzY3RwKHNyYz00NDQzKVwmIzM0OyBcXFxuJiM0MztcdFx0XCYjMzQ7MVwmIzM0OyB8fCByZXR1cm4gMVxuJiM0MztcbiYjNDM7XHRvdnNfbmV0bnNfc3Bhd25fZGFlbW9uIFwmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwmIzM0OyBcJiMzNDtzZXJ2ZXJcJiMzNDsgXFxcbiYjNDM7XHRcdHNvY2F0IC11IC10IDEgU0NUUDQtTElTVEVOOjU1NTUsZm9yayBcXFxuJiM0MztcdFx0T1BFTjpcJiMzNDskcnhmaWxlXCYjMzQ7LGNyZWF0LGFwcGVuZFxuJiM0MztcdG92c193YWl0IHNjdHBfZXBzX2hhcyBzZXJ2ZXIgNTU1NSB8fCByZXR1cm4gMVxuJiM0MztcbiYjNDM7XHRpbmZvIFwmIzM0O3ZlcmlmeSBTQ1RQIGFzc29jaWF0aW9uIGFjcm9zcyBOQVRcJiMzNDtcbiYjNDM7XHRvdnNfc2J4IFwmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwmIzM0OyBpcCBuZXRucyBleGVjIGNsaWVudCBcXFxuJiM0MztcdCAgICB0aW1lb3V0IDMgc29jYXQgLXUgU1RESU4gXCYjMzQ7U0NUUDQtQ09OTkVDVDoxOTIuMTY4LjAuMjA6NDQ0M1wmIzM0OyBcXFxuJiM0MztcdCAgICBcdTAwM2MvZGV2L251bGwgfHwgcmV0dXJuIDFcbiYjNDM7XG4mIzQzO1x0aW5mbyBcJiMzNDt2ZXJpZnkgU0NUUCBEQVRBIGNodW5rIGNyb3NzZXMgTkFUXCYjMzQ7XG4mIzQzO1x0b3ZzX3NieCBcJiMzNDt0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcJiMzNDsgaXAgbmV0bnMgZXhlYyBjbGllbnQgXFxcbiYjNDM7XHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFwmIzM0O1NDVFA0LUNPTk5FQ1Q6MTkyLjE2OC4wLjIwOjQ0NDNcJiMzNDsgXFxcbiYjNDM7XHQgICAgXHUwMDNjXHUwMDNjXHUwMDNjIFwmIzM0OyRwYXlsb2FkXCYjMzQ7IHx8IHJldHVybiAxXG4mIzQzO1x0b3ZzX3dhaXQgZ3JlcCAtcSBcJiMzNDskcGF5bG9hZFwmIzM0OyBcJiMzNDskcnhmaWxlXCYjMzQ7IFxcXG4mIzQzO1x0ICAgIHx8IHsgaW5mbyBcJiMzNDtzZXJ2ZXIgZGlkIG5vdCByZWNlaXZlIFNDVFAgREFUQSBwYXlsb2FkXCYjMzQ7XG4mIzQzO1x0ICAgICAgICAgcmV0dXJuIDE7IH1cbiYjNDM7XG4mIzQzO1x0aW5mbyBcJiMzNDtkb25lLi4uXCYjMzQ7XG4mIzQzO1x0cmV0dXJuIDBcbiYjNDM7fVxuJiM0MztcbiAjIG5hdF9yZWxhdGVkX3Y0IHRlc3RcbiAjICAtIGNsaWVudC1cdTAwM2VzZXJ2ZXIgaXAgcGFja2V0cyBnbyB2aWEgU05BVFxuICMgIC0gY2xpZW50IHNvbGljaXRzIElDTVAgZGVzdGluYXRpb24gdW5yZWFjaGFibGUgcGFja2V0IGZyb20gc2VydmVyXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvIGFuZCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMTliMTYxZjMyZGNkMTg2NjhlM2Q5YjZiMjBhMGY5NDQyZjdjNWExCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBTZXAgNyAwMToxNzozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9jb25maWcgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvY29uZmlnCmluZGV4IGE4MjVlMGI1Yzg4ZTUuLmZhOTA0NzVkYzM4OGQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9jb25maWcKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL2NvbmZpZwpAQCAtNyw2ICYjNDM7Nyw3IEBAIENPTkZJR19ORVRfSVBHUkU9bQogQ09ORklHX05FVF9JUEdSRV9ERU1VWD1tCiBDT05GSUdfTkZfQ09OTlRSQUNLPW0KIENPTkZJR19ORl9DT05OVFJBQ0tfT1ZTPXkKJiM0MztDT05GSUdfTkZfQ1RfUFJPVE9fU0NUUD15CiBDT05GSUdfT1BFTlZTV0lUQ0g9bQogQ09ORklHX1BTQU1QTEU9bQogQ09ORklHX1ZFVEg9eQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL29wZW52c3dpdGNoLnNoIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL29wZW52c3dpdGNoLnNoCmluZGV4IGEzMWY3ZmI2ODgyZGMuLmZiMzdiNmFiMmVjMWYgMTAwNzU1Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5zaAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2guc2gKQEAgLTM0LDYgJiM0MzszNCw4IEBAIHRlc3RzPSYjMzQ7CiAJdHJ1bmMJCQkJCXRydW5jOiBvdXRwdXQgdHJ1bmNhdGlvbgogCWljbXB2NgkJCQkJaWNtcHY2OiBJQ01QdjYgZWNobyB0eXBlIG1hdGNoCiAJc2N0cF9jb25uZWN0X3Y0CQkJCXNjdHA6IFNDVFAgZmxvdyBrZXkgbWF0Y2hpbmcKJiM0MzsJc2N0cF9jb25uZWN0X3Y2CQkJc2N0cDY6IFNDVFAgZmxvdyBrZXkgbWF0Y2hpbmcgb3ZlciBJUHY2CiYjNDM7CXNjdHBfbmF0X2Nvbm5lY3RfdjQJCXNjdHBuYXQ0OiBTQ1RQIGZsb3cga2V5IGFjcm9zcyBjb25udHJhY2sgTkFUCiAJcHNhbXBsZQkJCQkJcHNhbXBsZTogU2FtcGxpbmcgcGFja2V0cyB3aXRoIHBzYW1wbGUmIzM0OwogCiBpbmZvKCkgewpAQCAtNzAwLDYgJiM0Mzs3MDIsMTAwIEBAIHRlc3Rfc2N0cF9jb25uZWN0X3Y0KCkgewogCXJldHVybiAwCiB9CiAKJiM0MzsjIHNjdHBfY29ubmVjdF92NiB0ZXN0CiYjNDM7IyAtIHNjdHAoZHN0PTQ0NDMpIG1hdGNoZXMgY2xpZW50LXRvLXNlcnZlciBJTklUCiYjNDM7IyAtIHNjdHAoc3JjPTQ0NDMpIG1hdGNoZXMgc2VydmVyLXRvLWNsaWVudCBJTklULUFDSwomIzQzOyMgLSBpY21wdjYgTlMvTkEgZmxvd3MgZm9yd2FyZCBuZWlnaGJvdXIgZGlzY292ZXJ5CiYjNDM7IyAtIHJlbW92ZSBmbG93cyBhbmQgdmVyaWZ5IGNvbm5lY3Rpb24gZmFpbHMsIHJlaW5zdGFsbCBhbmQgcmVjb3ZlcgomIzQzO3Rlc3Rfc2N0cF9jb25uZWN0X3Y2KCkgewomIzQzOwlsb2NhbCB0PSYjMzQ7dGVzdF9zY3RwX2Nvbm5lY3RfdjYmIzM0OwomIzQzOwlsb2NhbCB2Nj0mIzM0O2V0aF90eXBlKDB4ODZkZCksaXB2Nihwcm90bz0xMzIpJiMzNDsKJiM0MzsJbG9jYWwgcGF5bG9hZD0mIzM0O1NDVFA2X0RBVEFfT0smIzM0OwomIzQzOwlsb2NhbCByeGZpbGU9JiMzNDske292c19iYXNlfS8ke3R9L3NjdHAtcngudHh0JiMzNDsKJiM0MzsKJiM0MzsJbW9kcHJvYmUgLXEgc2N0cCAyJmd0Oy9kZXYvbnVsbCB8fCByZXR1cm4gJiMzNDska3NmdF9za2lwJiMzNDsKJiM0MzsJc29jYXQgLVYgMiZndDsmYW1wOzEgfCBncmVwIC1xICYjMzQ7ZGVmaW5lIFdJVEhfU0NUUCYjMzQ7IHx8IHJldHVybiAmIzM0OyRrc2Z0X3NraXAmIzM0OwomIzQzOwlbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NiBdIHx8IHJldHVybiAmIzM0OyRrc2Z0X3NraXAmIzM0OwomIzQzOwomIzQzOwlzYnhfYWRkICYjMzQ7JHQmIzM0OyB8fCByZXR1cm4gJD8KJiM0MzsJb3ZzX2FkZF9kcCAmIzM0OyR0JiMzNDsgc2N0cDYgfHwgcmV0dXJuIDEKJiM0MzsKJiM0MzsJaW5mbyAmIzM0O2NyZWF0ZSBuYW1lc3BhY2VzJiMzNDsKJiM0MzsJZm9yIG5zIGluIGNsaWVudCBzZXJ2ZXI7IGRvCiYjNDM7CQlvdnNfYWRkX25ldG5zX2FuZF92ZXRocyAmIzM0OyR0JiMzNDsgJiMzNDtzY3RwNiYjMzQ7ICYjMzQ7JG5zJiMzNDsgXAomIzQzOwkJICAgICYjMzQ7JHtuczowOjF9MCYjMzQ7ICYjMzQ7JHtuczowOjF9MSYjMzQ7IHx8IHJldHVybiAxCiYjNDM7CWRvbmUKJiM0MzsKJiM0MzsJaXAgbmV0bnMgZXhlYyBjbGllbnQgaXAgYWRkciBhZGQgZmQwMDo6MS82NCBkZXYgYzEgbm9kYWQKJiM0MzsJaXAgbmV0bnMgZXhlYyBjbGllbnQgaXAgbGluayBzZXQgYzEgdXAKJiM0MzsJaXAgbmV0bnMgZXhlYyBzZXJ2ZXIgaXAgYWRkciBhZGQgZmQwMDo6Mi82NCBkZXYgczEgbm9kYWQKJiM0MzsJaXAgbmV0bnMgZXhlYyBzZXJ2ZXIgaXAgbGluayBzZXQgczEgdXAKJiM0MzsKJiM0MzsJIyBOUy9OQSBmb3J3YXJkaW5nCiYjNDM7CW92c19hZGRfZmxvdyAmIzM0OyR0JiMzNDsgc2N0cDYgXAomIzQzOwkgICAgJiMzOTtpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4ODZkZCksaXB2Nihwcm90bz01OCksaWNtcHY2KCkmIzM5OyBcCiYjNDM7CSAgICAmIzM5OzImIzM5OyB8fCByZXR1cm4gMQomIzQzOwlvdnNfYWRkX2Zsb3cgJiMzNDskdCYjMzQ7IHNjdHA2IFwKJiM0MzsJICAgICYjMzk7aW5fcG9ydCgyKSxldGgoKSxldGhfdHlwZSgweDg2ZGQpLGlwdjYocHJvdG89NTgpLGljbXB2NigpJiMzOTsgXAomIzQzOwkgICAgJiMzOTsxJiMzOTsgfHwgcmV0dXJuIDEKJiM0MzsKJiM0MzsJIyBTQ1RQIHBvcnQgbWF0Y2hpbmc6IGRzdCBmb3IgcmVxdWVzdCwgc3JjIGZvciByZXBseQomIzQzOwlvdnNfYWRkX2Zsb3cgJiMzNDskdCYjMzQ7IHNjdHA2IFwKJiM0MzsJICAgICYjMzQ7aW5fcG9ydCgxKSxldGgoKSwkdjYsc2N0cChkc3Q9NDQ0MykmIzM0OyBcCiYjNDM7CSAgICAmIzM5OzImIzM5OyB8fCByZXR1cm4gMQomIzQzOwlvdnNfYWRkX2Zsb3cgJiMzNDskdCYjMzQ7IHNjdHA2IFwKJiM0MzsJICAgICYjMzQ7aW5fcG9ydCgyKSxldGgoKSwkdjYsc2N0cChzcmM9NDQ0MykmIzM0OyBcCiYjNDM7CSAgICAmIzM5OzEmIzM5OyB8fCByZXR1cm4gMQomIzQzOwomIzQzOwlvdnNfbmV0bnNfc3Bhd25fZGFlbW9uICYjMzQ7JHQmIzM0OyAmIzM0O3NlcnZlciYjMzQ7IFwKJiM0MzsJICAgIHNvY2F0IC11IC10IDEgU0NUUDYtTElTVEVOOjQ0NDMsZm9yayBcCiYjNDM7CSAgICBPUEVOOiYjMzQ7JHJ4ZmlsZSYjMzQ7LGNyZWF0LGFwcGVuZAomIzQzOwlvdnNfd2FpdCBzY3RwX2Vwc19oYXMgc2VydmVyIDQ0NDMgfHwgcmV0dXJuIDEKJiM0MzsKJiM0MzsJaW5mbyAmIzM0O3ZlcmlmeSBTQ1RQIGFzc29jaWF0aW9uIHdpdGggcG9ydC1rZXllZCBmbG93cyYjMzQ7CiYjNDM7CW92c19zYnggJiMzNDskdCYjMzQ7IGlwIG5ldG5zIGV4ZWMgY2xpZW50IFwKJiM0MzsJICAgIHRpbWVvdXQgMyBzb2NhdCAtdSBTVERJTiAmIzM0O1NDVFA2LUNPTk5FQ1Q6W2ZkMDA6OjJdOjQ0NDMmIzM0OyAmbHQ7L2Rldi9udWxsIFwKJiM0MzsJICAgIHx8IHJldHVybiAxCiYjNDM7CiYjNDM7CWluZm8gJiMzNDt2ZXJpZnkgU0NUUCBEQVRBIGNodW5rIGNyb3NzZXMgdGhlIGRhdGFwYXRoJiMzNDsKJiM0MzsJb3ZzX3NieCAmIzM0OyR0JiMzNDsgaXAgbmV0bnMgZXhlYyBjbGllbnQgXAomIzQzOwkgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOICYjMzQ7U0NUUDYtQ09OTkVDVDpbZmQwMDo6Ml06NDQ0MyYjMzQ7IFwKJiM0MzsJICAgICZsdDsmbHQ7Jmx0OyAmIzM0OyRwYXlsb2FkJiMzNDsgfHwgcmV0dXJuIDEKJiM0MzsJb3ZzX3dhaXQgZ3JlcCAtcSAmIzM0OyRwYXlsb2FkJiMzNDsgJiMzNDskcnhmaWxlJiMzNDsgXAomIzQzOwkgICAgfHwgeyBpbmZvICYjMzQ7c2VydmVyIGRpZCBub3QgcmVjZWl2ZSBTQ1RQIERBVEEgcGF5bG9hZCYjMzQ7CiYjNDM7CSAgICAgICAgIHJldHVybiAxOyB9CiYjNDM7CiYjNDM7CW92c19kZWxfZmxvd3MgJiMzNDskdCYjMzQ7IHNjdHA2CiYjNDM7CiYjNDM7CWluZm8gJiMzNDt2ZXJpZnkgY29ubmVjdGlvbiBmYWlscyB3aXRob3V0IGZsb3dzJiMzNDsKJiM0MzsJb3ZzX2FkZF9mbG93ICYjMzQ7JHQmIzM0OyBzY3RwNiBcCiYjNDM7CSAgICAmIzM5O2luX3BvcnQoMSksZXRoKCksZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTU4KSxpY21wdjYoKSYjMzk7IFwKJiM0MzsJICAgICYjMzk7MiYjMzk7IHx8IHJldHVybiAxCiYjNDM7CW92c19hZGRfZmxvdyAmIzM0OyR0JiMzNDsgc2N0cDYgXAomIzQzOwkgICAgJiMzOTtpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4ODZkZCksaXB2Nihwcm90bz01OCksaWNtcHY2KCkmIzM5OyBcCiYjNDM7CSAgICAmIzM5OzEmIzM5OyB8fCByZXR1cm4gMQomIzQzOwomIzQzOwlvdnNfc2J4ICYjMzQ7JHQmIzM0OyBpcCBuZXRucyBleGVjIGNsaWVudCBcCiYjNDM7CSAgICB0aW1lb3V0IDMgc29jYXQgLXUgU1RESU4gJiMzNDtTQ1RQNi1DT05ORUNUOltmZDAwOjoyXTo0NDQzJiMzNDsgJmx0Oy9kZXYvbnVsbCBcCiYjNDM7CSAgICAmZ3Q7L2Rldi9udWxsIDImZ3Q7JmFtcDsxIFwKJiM0MzsJICAgICZhbXA7JmFtcDsgeyBpbmZvICYjMzQ7Y29ubmVjdGlvbiBzaG91bGQgZmFpbCB3aXRob3V0IGZsb3dzJiMzNDsKJiM0MzsJICAgICAgICAgcmV0dXJuIDE7IH0KJiM0MzsKJiM0MzsJaW5mbyAmIzM0O3JlaW5zdGFsbCBmbG93cyBhbmQgdmVyaWZ5IHJlY292ZXJ5JiMzNDsKJiM0MzsJb3ZzX2FkZF9mbG93ICYjMzQ7JHQmIzM0OyBzY3RwNiBcCiYjNDM7CSAgICAmIzM0O2luX3BvcnQoMSksZXRoKCksJHY2LHNjdHAoZHN0PTQ0NDMpJiMzNDsgXAomIzQzOwkgICAgJiMzOTsyJiMzOTsgfHwgcmV0dXJuIDEKJiM0MzsJb3ZzX2FkZF9mbG93ICYjMzQ7JHQmIzM0OyBzY3RwNiBcCiYjNDM7CSAgICAmIzM0O2luX3BvcnQoMiksZXRoKCksJHY2LHNjdHAoc3JjPTQ0NDMpJiMzNDsgXAomIzQzOwkgICAgJiMzOTsxJiMzOTsgfHwgcmV0dXJuIDEKJiM0MzsKJiM0MzsJb3ZzX3NieCAmIzM0OyR0JiMzNDsgaXAgbmV0bnMgZXhlYyBjbGllbnQgXAomIzQzOwkgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOICYjMzQ7U0NUUDYtQ09OTkVDVDpbZmQwMDo6Ml06NDQ0MyYjMzQ7ICZsdDsvZGV2L251bGwgXAomIzQzOwkgICAgfHwgcmV0dXJuIDEKJiM0MzsKJiM0MzsJcmV0dXJuIDAKJiM0Mzt9CiYjNDM7CiAjIHBzYW1wbGUgdGVzdAogIyAtIHVzZSBwc2FtcGxlIHRvIG9ic2VydmUgcGFja2V0cwogdGVzdF9wc2FtcGxlKCkgewpAQCAtMTA5MSw2ICYjNDM7MTE4Nyw5MiBAQCB0ZXN0X25hdF9jb25uZWN0X3Y0ICgpIHsKIAlyZXR1cm4gMAogfQogCiYjNDM7IyBzY3RwX25hdF9jb25uZWN0X3Y0IHRlc3QKJiM0MzsjICAtIFNDVFAgYXNzb2NpYXRpb24gY3Jvc3NlcyBhIGN0KGNvbW1pdCxuYXQoZHN0PWlwOnBvcnQpKSBETkFUCiYjNDM7IyAgLSBwb3N0LXJlY2lyYyBmbG93cyBtYXRjaCB0aGUgdHJhbnNsYXRlZCBhZGRyZXNzIGFuZCBwb3J0LCBzbyB0aGUKJiM0MzsjICAgIFNDVFAgYnJhbmNoIG9mIHRoZSBwb3N0LU5BVCBmbG93IGtleSB1cGRhdGUgaXMgbG9hZC1iZWFyaW5nCiYjNDM7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0ICgpIHsKJiM0MzsJbG9jYWwgdD0mIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7CiYjNDM7CWxvY2FsIHBheWxvYWQ9JiMzNDtTQ1RQX05BVF9EQVRBX09LJiMzNDsKJiM0MzsJbG9jYWwgcnhmaWxlPSYjMzQ7JHtvdnNfYmFzZX0vJHt0fS9zY3RwLXJ4LnR4dCYjMzQ7CiYjNDM7CiYjNDM7CW1vZHByb2JlIC1xIHNjdHAgMiZndDsvZGV2L251bGwgfHwgcmV0dXJuICYjMzQ7JGtzZnRfc2tpcCYjMzQ7CiYjNDM7CXNvY2F0IC1WIDImZ3Q7JmFtcDsxIHwgZ3JlcCAtcSAmIzM0O2RlZmluZSBXSVRIX1NDVFAmIzM0OyB8fCByZXR1cm4gJiMzNDska3NmdF9za2lwJiMzNDsKJiM0MzsJIyBTQ1RQIGNvbm50cmFjayBpcyBjb21waWxlZCBpbnRvIG5mX2Nvbm50cmFjay5rbywgc28gY2hlY2sgdGhhdAomIzQzOwkjIGxvYWRpbmcgaXQgYWN0dWFsbHkgZXhwb3NlZCB0aGUgU0NUUCBjb25udHJhY2sgc3lzY3Rscy4KJiM0MzsJbW9kcHJvYmUgLXEgbmZfY29ubnRyYWNrIDImZ3Q7L2Rldi9udWxsIHx8IHJldHVybiAmIzM0OyRrc2Z0X3NraXAmIzM0OwomIzQzOwlbIC1lIC9wcm9jL3N5cy9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zY3RwX3RpbWVvdXRfZXN0YWJsaXNoZWQgXSBcCiYjNDM7CSAgICB8fCB7IGluZm8gJiMzNDtubyBTQ1RQIGNvbm50cmFjayBzdXBwb3J0IC0gc2tpcHBpbmcmIzM0OwomIzQzOwkgICAgICAgICByZXR1cm4gJiMzNDska3NmdF9za2lwJiMzNDs7IH0KJiM0MzsKJiM0MzsJc2J4X2FkZCAmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7IHx8IHJldHVybiAkPwomIzQzOwomIzQzOwlvdnNfYWRkX2RwICYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0JiMzNDsgc2N0cG5hdDQgfHwgcmV0dXJuIDEKJiM0MzsJaW5mbyAmIzM0O2NyZWF0ZSBuYW1lc3BhY2VzJiMzNDsKJiM0MzsJZm9yIG5zIGluIGNsaWVudCBzZXJ2ZXI7IGRvCiYjNDM7CQlvdnNfYWRkX25ldG5zX2FuZF92ZXRocyAmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7ICYjMzQ7c2N0cG5hdDQmIzM0OyBcCiYjNDM7CQkgICAgJiMzNDskbnMmIzM0OyAmIzM0OyR7bnM6MDoxfTAmIzM0OyAmIzM0OyR7bnM6MDoxfTEmIzM0OyB8fCByZXR1cm4gMQomIzQzOwlkb25lCiYjNDM7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgY2xpZW50IGlwIGFkZHIgYWRkIDE3Mi4zMS4xMTAuMTAvMjQgZGV2IGMxCiYjNDM7CWlwIG5ldG5zIGV4ZWMgY2xpZW50IGlwIGxpbmsgc2V0IGMxIHVwCiYjNDM7CWlwIG5ldG5zIGV4ZWMgc2VydmVyIGlwIGFkZHIgYWRkIDE3Mi4zMS4xMTAuMjAvMjQgZGV2IHMxCiYjNDM7CWlwIG5ldG5zIGV4ZWMgc2VydmVyIGlwIGxpbmsgc2V0IHMxIHVwCiYjNDM7CiYjNDM7CWlwIG5ldG5zIGV4ZWMgY2xpZW50IGlwIHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAxNzIuMzEuMTEwLjIwCiYjNDM7CiYjNDM7CSMgQ2hlY2sgaWYgdGhlIGN0IGFuZCBuYXQgYWN0aW9ucyBjYW4gYmUgY29uZmlndXJlZC4KJiM0MzsJb3ZzX2FkZF9mbG93ICYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0JiMzNDsgc2N0cG5hdDQgXAomIzQzOwkJJiMzOTtpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NCgpJiMzOTsgXAomIzQzOwkJJiMzOTtjdChjb21taXQsbmF0KGRzdD0xNzIuMzEuMTEwLjIwOjU1NTUpKSxyZWNpcmMoMHgxKSYjMzk7ICZhbXA7Jmd0OyAvZGV2L251bGwKJiM0MzsJaWYgWyAkPyA9PSAxIF07IHRoZW4KJiM0MzsJCWluZm8gJiMzNDtubyBzdXBwb3J0IGZvciBjdC9uYXQgYWN0aW9ucyAtIHNraXBwaW5nJiMzNDsKJiM0MzsJCW92c19leGl0X3NpZwomIzQzOwkJcmV0dXJuICRrc2Z0X3NraXAKJiM0MzsJZmkKJiM0MzsKJiM0MzsJb3ZzX2RlbF9mbG93cyAmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7IHNjdHBuYXQ0CiYjNDM7CiYjNDM7CW92c19hZGRfZmxvdyAmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7IHNjdHBuYXQ0IFwKJiM0MzsJCSYjMzk7aW5fcG9ydCgxKSxldGgoKSxldGhfdHlwZSgweDA4MDYpLGFycCgpJiMzOTsgJiMzOTsyJiMzOTsgfHwgcmV0dXJuIDEKJiM0MzsJb3ZzX2FkZF9mbG93ICYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0JiMzNDsgc2N0cG5hdDQgXAomIzQzOwkJJiMzOTtpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4MDgwNiksYXJwKCkmIzM5OyAmIzM5OzEmIzM5OyB8fCByZXR1cm4gMQomIzQzOwlvdnNfYWRkX2Zsb3cgJiMzNDt0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjQmIzM0OyBzY3RwbmF0NCBcCiYjNDM7CQkmIzM0O2N0X3N0YXRlKC10cmspLGluX3BvcnQoMSksZXRoKCksZXRoX3R5cGUoMHgwODAwKSxpcHY0KGRzdD0xOTIuMTY4LjAuMjApJiMzNDsgXAomIzQzOwkJJiMzNDtjdChjb21taXQsbmF0KGRzdD0xNzIuMzEuMTEwLjIwOjU1NTUpKSxyZWNpcmMoMHgxKSYjMzQ7IHx8IHJldHVybiAxCiYjNDM7CW92c19hZGRfZmxvdyAmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7IHNjdHBuYXQ0IFwKJiM0MzsJCSYjMzQ7Y3Rfc3RhdGUoLXRyayksaW5fcG9ydCgyKSxldGgoKSxldGhfdHlwZSgweDA4MDApLGlwdjQoKSYjMzQ7IFwKJiM0MzsJCSYjMzQ7Y3QoY29tbWl0LG5hdCkscmVjaXJjKDB4MikmIzM0OyB8fCByZXR1cm4gMQomIzQzOwomIzQzOwlvdnNfYWRkX2Zsb3cgJiMzNDt0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjQmIzM0OyBzY3RwbmF0NCBcCiYjNDM7CQkmIzM0O3JlY2lyY19pZCgweDEpLGN0X3N0YXRlKCYjNDM7dHJrLWludiksaW5fcG9ydCgxKSxldGgoKSxldGhfdHlwZSgweDA4MDApLGlwdjQoZHN0PTE3Mi4zMS4xMTAuMjAscHJvdG89MTMyKSxzY3RwKGRzdD01NTU1KSYjMzQ7IFwKJiM0MzsJCSYjMzQ7MiYjMzQ7IHx8IHJldHVybiAxCiYjNDM7CW92c19hZGRfZmxvdyAmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7IHNjdHBuYXQ0IFwKJiM0MzsJCSYjMzQ7cmVjaXJjX2lkKDB4MiksY3Rfc3RhdGUoJiM0Mzt0cmstaW52KSxpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NChzcmM9MTkyLjE2OC4wLjIwLHByb3RvPTEzMiksc2N0cChzcmM9NDQ0MykmIzM0OyBcCiYjNDM7CQkmIzM0OzEmIzM0OyB8fCByZXR1cm4gMQomIzQzOwomIzQzOwlvdnNfbmV0bnNfc3Bhd25fZGFlbW9uICYjMzQ7dGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0JiMzNDsgJiMzNDtzZXJ2ZXImIzM0OyBcCiYjNDM7CQlzb2NhdCAtdSAtdCAxIFNDVFA0LUxJU1RFTjo1NTU1LGZvcmsgXAomIzQzOwkJT1BFTjomIzM0OyRyeGZpbGUmIzM0OyxjcmVhdCxhcHBlbmQKJiM0MzsJb3ZzX3dhaXQgc2N0cF9lcHNfaGFzIHNlcnZlciA1NTU1IHx8IHJldHVybiAxCiYjNDM7CiYjNDM7CWluZm8gJiMzNDt2ZXJpZnkgU0NUUCBhc3NvY2lhdGlvbiBhY3Jvc3MgTkFUJiMzNDsKJiM0MzsJb3ZzX3NieCAmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7IGlwIG5ldG5zIGV4ZWMgY2xpZW50IFwKJiM0MzsJICAgIHRpbWVvdXQgMyBzb2NhdCAtdSBTVERJTiAmIzM0O1NDVFA0LUNPTk5FQ1Q6MTkyLjE2OC4wLjIwOjQ0NDMmIzM0OyBcCiYjNDM7CSAgICAmbHQ7L2Rldi9udWxsIHx8IHJldHVybiAxCiYjNDM7CiYjNDM7CWluZm8gJiMzNDt2ZXJpZnkgU0NUUCBEQVRBIGNodW5rIGNyb3NzZXMgTkFUJiMzNDsKJiM0MzsJb3ZzX3NieCAmIzM0O3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCYjMzQ7IGlwIG5ldG5zIGV4ZWMgY2xpZW50IFwKJiM0MzsJICAgIHRpbWVvdXQgMyBzb2NhdCAtdSBTVERJTiAmIzM0O1NDVFA0LUNPTk5FQ1Q6MTkyLjE2OC4wLjIwOjQ0NDMmIzM0OyBcCiYjNDM7CSAgICAmbHQ7Jmx0OyZsdDsgJiMzNDskcGF5bG9hZCYjMzQ7IHx8IHJldHVybiAxCiYjNDM7CW92c193YWl0IGdyZXAgLXEgJiMzNDskcGF5bG9hZCYjMzQ7ICYjMzQ7JHJ4ZmlsZSYjMzQ7IFwKJiM0MzsJICAgIHx8IHsgaW5mbyAmIzM0O3NlcnZlciBkaWQgbm90IHJlY2VpdmUgU0NUUCBEQVRBIHBheWxvYWQmIzM0OwomIzQzOwkgICAgICAgICByZXR1cm4gMTsgfQomIzQzOwomIzQzOwlpbmZvICYjMzQ7ZG9uZS4uLiYjMzQ7CiYjNDM7CXJldHVybiAwCiYjNDM7fQomIzQzOwogIyBuYXRfcmVsYXRlZF92NCB0ZXN0CiAjICAtIGNsaWVudC0mZ3Q7c2VydmVyIGlwIHBhY2tldHMgZ28gdmlhIFNOQVQKICMgIC0gY2xpZW50IHNvbGljaXRzIElDTVAgZGVzdGluYXRpb24gdW5yZWFjaGFibGUgcGFja2V0IGZyb20gc2VydmVyCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA3IDAxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MTkKCQkJCQkJCW91dHB1dDogNjgKCQkJCQkJCXRob3VnaHRzOiAzNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhpcyBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBzZWUgdGhlIHBhdGNoIGFmZmVjdHMgdHdvIGZpbGVzOiBgdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL2NvbmZpZ2AgYW5kIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2guc2hgLiBCb3RoIGFyZSBuZXN0bGVkIG5lYXRseSB3aXRoaW4gdGhlIGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvYCBkaXJlY3RvcnkuCgpOb3csIGFjY29yZGluZyB0byB0aGUgZ3VpZGVsaW5lcywgd2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyB3YXJyYW50cyBmdXp6aW5nLiBUaGUga2V5IGhlcmUgaXMgU2VjdGlvbiAyLiBXZSBvbmx5IG1hcmsgaXQgYXMgKm5vdCogd29ydGggZnV6emluZyBpZiBhbGwgdGhlIG1vZGlmaWNhdGlvbnMgYXJlIHN0cmljdGx5IGxpbWl0ZWQgdG8gbm9uLWtlcm5lbCwgbm9uLWV4ZWN1dGFibGUgY2hhbmdlcy4gU3BlY2lmaWNhbGx5LCB0aGluayBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgc3BlbGxpbmcgZml4ZXMsIG9yIHVzZXItc3BhY2Ugc3R1ZmYgbGlrZSBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIHRoYXQgKmRvbiYjMzk7dCogaW1wYWN0IHRoZSBjb3JlIGtlcm5lbCBpbWFnZSBvciBtb2R1bGVzLgoKSSYjMzk7dmUgY2hlY2tlZCB0aGUgZGlmZiBjYXJlZnVsbHksIGFuZCB0aGVzZSBhcmUgdGhlIG9ubHkgdHdvIGZpbGVzIGxpc3RlZC4gTm8gQyBrZXJuZWwgY29kZSBoYXMgYmVlbiB0b3VjaGVkLCBub3RoaW5nIG91dHNpZGUgdGhhdCBgdG9vbHMvYCBwYXRoLiBJdCYjMzk7cyBhbGwgc3RheWluZyB3aXRoaW4gdGhvc2Ugc2VsZnRlc3RzLgoKVGhlcmVmb3JlLCB0aGUgdmVyZGljdCBpcyBjbGVhcjogYFdvcnRoRnV6emluZyA9IGZhbHNlYC4gTm8gbmVlZCB0byBhZGQgYW55dGhpbmcgdG8gYEZvY3VzU3ltYm9sc2Agb3IgYEVuYWJsZUNvbmZpZ3NgIHNpbmNlIHdlJiMzOTtyZSBub3QgZGVhbGluZyB3aXRoIGtlcm5lbCBjb2RlIHRoYXQgbmVlZHMgZnV6emluZy4KCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZXNlIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIGtlcm5lbCBzZWxmdGVzdHMgd2l0aGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IHN0cnVjdHVyZSBhbmQgZG9uJiMzOTt0IHRvdWNoIGFueSBjb3JlIGtlcm5lbCBzb3VyY2UgY29kZSBvciBoYXZlIGFuIGltcGFjdCBvbiB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlLgoKVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2Ugc2VsZnRlc3RzIHVuZGVyIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC8gYW5kIGRvZXMgbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIG9yIGtlcm5lbCBtb2R1bGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvIGFuZCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDcgMDE6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAxOjE3OjMzLjUxOTYzMDczMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTQ5ODA3NDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvIGFuZCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAxOjE3OjMzLjUxOTYzNjE4MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEwOTY3MzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZDE5YjE2MWYzMmRjZDE4NjY4ZTNkOWI2YjIwYTBmOTQ0MmY3YzVhMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIFNlcCA3IDAxOjE3OjMyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9jb25maWcgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvY29uZmlnXFxuaW5kZXggYTgyNWUwYjVjODhlNS4uZmE5MDQ3NWRjMzg4ZCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvY29uZmlnXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL2NvbmZpZ1xcbkBAIC03LDYgKzcsNyBAQCBDT05GSUdfTkVUX0lQR1JFPW1cXG4gQ09ORklHX05FVF9JUEdSRV9ERU1VWD1tXFxuIENPTkZJR19ORl9DT05OVFJBQ0s9bVxcbiBDT05GSUdfTkZfQ09OTlRSQUNLX09WUz15XFxuK0NPTkZJR19ORl9DVF9QUk9UT19TQ1RQPXlcXG4gQ09ORklHX09QRU5WU1dJVENIPW1cXG4gQ09ORklHX1BTQU1QTEU9bVxcbiBDT05GSUdfVkVUSD15XFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5zaFxcbmluZGV4IGEzMWY3ZmI2ODgyZGMuLmZiMzdiNmFiMmVjMWYgMTAwNzU1XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL29wZW52c3dpdGNoLnNoXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL29wZW52c3dpdGNoLnNoXFxuQEAgLTM0LDYgKzM0LDggQEAgdGVzdHM9XFxcIlxcbiBcXHR0cnVuY1xcdFxcdFxcdFxcdFxcdHRydW5jOiBvdXRwdXQgdHJ1bmNhdGlvblxcbiBcXHRpY21wdjZcXHRcXHRcXHRcXHRcXHRpY21wdjY6IElDTVB2NiBlY2hvIHR5cGUgbWF0Y2hcXG4gXFx0c2N0cF9jb25uZWN0X3Y0XFx0XFx0XFx0XFx0c2N0cDogU0NUUCBmbG93IGtleSBtYXRjaGluZ1xcbitcXHRzY3RwX2Nvbm5lY3RfdjZcXHRcXHRcXHRzY3RwNjogU0NUUCBmbG93IGtleSBtYXRjaGluZyBvdmVyIElQdjZcXG4rXFx0c2N0cF9uYXRfY29ubmVjdF92NFxcdFxcdHNjdHBuYXQ0OiBTQ1RQIGZsb3cga2V5IGFjcm9zcyBjb25udHJhY2sgTkFUXFxuIFxcdHBzYW1wbGVcXHRcXHRcXHRcXHRcXHRwc2FtcGxlOiBTYW1wbGluZyBwYWNrZXRzIHdpdGggcHNhbXBsZVxcXCJcXG4gXFxuIGluZm8oKSB7XFxuQEAgLTcwMCw2ICs3MDIsMTAwIEBAIHRlc3Rfc2N0cF9jb25uZWN0X3Y0KCkge1xcbiBcXHRyZXR1cm4gMFxcbiB9XFxuIFxcbisjIHNjdHBfY29ubmVjdF92NiB0ZXN0XFxuKyMgLSBzY3RwKGRzdD00NDQzKSBtYXRjaGVzIGNsaWVudC10by1zZXJ2ZXIgSU5JVFxcbisjIC0gc2N0cChzcmM9NDQ0MykgbWF0Y2hlcyBzZXJ2ZXItdG8tY2xpZW50IElOSVQtQUNLXFxuKyMgLSBpY21wdjYgTlMvTkEgZmxvd3MgZm9yd2FyZCBuZWlnaGJvdXIgZGlzY292ZXJ5XFxuKyMgLSByZW1vdmUgZmxvd3MgYW5kIHZlcmlmeSBjb25uZWN0aW9uIGZhaWxzLCByZWluc3RhbGwgYW5kIHJlY292ZXJcXG4rdGVzdF9zY3RwX2Nvbm5lY3RfdjYoKSB7XFxuK1xcdGxvY2FsIHQ9XFxcInRlc3Rfc2N0cF9jb25uZWN0X3Y2XFxcIlxcbitcXHRsb2NhbCB2Nj1cXFwiZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTEzMilcXFwiXFxuK1xcdGxvY2FsIHBheWxvYWQ9XFxcIlNDVFA2X0RBVEFfT0tcXFwiXFxuK1xcdGxvY2FsIHJ4ZmlsZT1cXFwiJHtvdnNfYmFzZX0vJHt0fS9zY3RwLXJ4LnR4dFxcXCJcXG4rXFxuK1xcdG1vZHByb2JlIC1xIHNjdHAgMlxcdTAwM2UvZGV2L251bGwgfHwgcmV0dXJuIFxcXCIka3NmdF9za2lwXFxcIlxcbitcXHRzb2NhdCAtViAyXFx1MDAzZVxcdTAwMjYxIHwgZ3JlcCAtcSBcXFwiZGVmaW5lIFdJVEhfU0NUUFxcXCIgfHwgcmV0dXJuIFxcXCIka3NmdF9za2lwXFxcIlxcbitcXHRbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NiBdIHx8IHJldHVybiBcXFwiJGtzZnRfc2tpcFxcXCJcXG4rXFxuK1xcdHNieF9hZGQgXFxcIiR0XFxcIiB8fCByZXR1cm4gJD9cXG4rXFx0b3ZzX2FkZF9kcCBcXFwiJHRcXFwiIHNjdHA2IHx8IHJldHVybiAxXFxuK1xcbitcXHRpbmZvIFxcXCJjcmVhdGUgbmFtZXNwYWNlc1xcXCJcXG4rXFx0Zm9yIG5zIGluIGNsaWVudCBzZXJ2ZXI7IGRvXFxuK1xcdFxcdG92c19hZGRfbmV0bnNfYW5kX3ZldGhzIFxcXCIkdFxcXCIgXFxcInNjdHA2XFxcIiBcXFwiJG5zXFxcIiBcXFxcXFxuK1xcdFxcdCAgICBcXFwiJHtuczowOjF9MFxcXCIgXFxcIiR7bnM6MDoxfTFcXFwiIHx8IHJldHVybiAxXFxuK1xcdGRvbmVcXG4rXFxuK1xcdGlwIG5ldG5zIGV4ZWMgY2xpZW50IGlwIGFkZHIgYWRkIGZkMDA6OjEvNjQgZGV2IGMxIG5vZGFkXFxuK1xcdGlwIG5ldG5zIGV4ZWMgY2xpZW50IGlwIGxpbmsgc2V0IGMxIHVwXFxuK1xcdGlwIG5ldG5zIGV4ZWMgc2VydmVyIGlwIGFkZHIgYWRkIGZkMDA6OjIvNjQgZGV2IHMxIG5vZGFkXFxuK1xcdGlwIG5ldG5zIGV4ZWMgc2VydmVyIGlwIGxpbmsgc2V0IHMxIHVwXFxuK1xcbitcXHQjIE5TL05BIGZvcndhcmRpbmdcXG4rXFx0b3ZzX2FkZF9mbG93IFxcXCIkdFxcXCIgc2N0cDYgXFxcXFxcbitcXHQgICAgJ2luX3BvcnQoMSksZXRoKCksZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTU4KSxpY21wdjYoKScgXFxcXFxcbitcXHQgICAgJzInIHx8IHJldHVybiAxXFxuK1xcdG92c19hZGRfZmxvdyBcXFwiJHRcXFwiIHNjdHA2IFxcXFxcXG4rXFx0ICAgICdpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4ODZkZCksaXB2Nihwcm90bz01OCksaWNtcHY2KCknIFxcXFxcXG4rXFx0ICAgICcxJyB8fCByZXR1cm4gMVxcbitcXG4rXFx0IyBTQ1RQIHBvcnQgbWF0Y2hpbmc6IGRzdCBmb3IgcmVxdWVzdCwgc3JjIGZvciByZXBseVxcbitcXHRvdnNfYWRkX2Zsb3cgXFxcIiR0XFxcIiBzY3RwNiBcXFxcXFxuK1xcdCAgICBcXFwiaW5fcG9ydCgxKSxldGgoKSwkdjYsc2N0cChkc3Q9NDQ0MylcXFwiIFxcXFxcXG4rXFx0ICAgICcyJyB8fCByZXR1cm4gMVxcbitcXHRvdnNfYWRkX2Zsb3cgXFxcIiR0XFxcIiBzY3RwNiBcXFxcXFxuK1xcdCAgICBcXFwiaW5fcG9ydCgyKSxldGgoKSwkdjYsc2N0cChzcmM9NDQ0MylcXFwiIFxcXFxcXG4rXFx0ICAgICcxJyB8fCByZXR1cm4gMVxcbitcXG4rXFx0b3ZzX25ldG5zX3NwYXduX2RhZW1vbiBcXFwiJHRcXFwiIFxcXCJzZXJ2ZXJcXFwiIFxcXFxcXG4rXFx0ICAgIHNvY2F0IC11IC10IDEgU0NUUDYtTElTVEVOOjQ0NDMsZm9yayBcXFxcXFxuK1xcdCAgICBPUEVOOlxcXCIkcnhmaWxlXFxcIixjcmVhdCxhcHBlbmRcXG4rXFx0b3ZzX3dhaXQgc2N0cF9lcHNfaGFzIHNlcnZlciA0NDQzIHx8IHJldHVybiAxXFxuK1xcbitcXHRpbmZvIFxcXCJ2ZXJpZnkgU0NUUCBhc3NvY2lhdGlvbiB3aXRoIHBvcnQta2V5ZWQgZmxvd3NcXFwiXFxuK1xcdG92c19zYnggXFxcIiR0XFxcIiBpcCBuZXRucyBleGVjIGNsaWVudCBcXFxcXFxuK1xcdCAgICB0aW1lb3V0IDMgc29jYXQgLXUgU1RESU4gXFxcIlNDVFA2LUNPTk5FQ1Q6W2ZkMDA6OjJdOjQ0NDNcXFwiIFxcdTAwM2MvZGV2L251bGwgXFxcXFxcbitcXHQgICAgfHwgcmV0dXJuIDFcXG4rXFxuK1xcdGluZm8gXFxcInZlcmlmeSBTQ1RQIERBVEEgY2h1bmsgY3Jvc3NlcyB0aGUgZGF0YXBhdGhcXFwiXFxuK1xcdG92c19zYnggXFxcIiR0XFxcIiBpcCBuZXRucyBleGVjIGNsaWVudCBcXFxcXFxuK1xcdCAgICB0aW1lb3V0IDMgc29jYXQgLXUgU1RESU4gXFxcIlNDVFA2LUNPTk5FQ1Q6W2ZkMDA6OjJdOjQ0NDNcXFwiIFxcXFxcXG4rXFx0ICAgIFxcdTAwM2NcXHUwMDNjXFx1MDAzYyBcXFwiJHBheWxvYWRcXFwiIHx8IHJldHVybiAxXFxuK1xcdG92c193YWl0IGdyZXAgLXEgXFxcIiRwYXlsb2FkXFxcIiBcXFwiJHJ4ZmlsZVxcXCIgXFxcXFxcbitcXHQgICAgfHwgeyBpbmZvIFxcXCJzZXJ2ZXIgZGlkIG5vdCByZWNlaXZlIFNDVFAgREFUQSBwYXlsb2FkXFxcIlxcbitcXHQgICAgICAgICByZXR1cm4gMTsgfVxcbitcXG4rXFx0b3ZzX2RlbF9mbG93cyBcXFwiJHRcXFwiIHNjdHA2XFxuK1xcbitcXHRpbmZvIFxcXCJ2ZXJpZnkgY29ubmVjdGlvbiBmYWlscyB3aXRob3V0IGZsb3dzXFxcIlxcbitcXHRvdnNfYWRkX2Zsb3cgXFxcIiR0XFxcIiBzY3RwNiBcXFxcXFxuK1xcdCAgICAnaW5fcG9ydCgxKSxldGgoKSxldGhfdHlwZSgweDg2ZGQpLGlwdjYocHJvdG89NTgpLGljbXB2NigpJyBcXFxcXFxuK1xcdCAgICAnMicgfHwgcmV0dXJuIDFcXG4rXFx0b3ZzX2FkZF9mbG93IFxcXCIkdFxcXCIgc2N0cDYgXFxcXFxcbitcXHQgICAgJ2luX3BvcnQoMiksZXRoKCksZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTU4KSxpY21wdjYoKScgXFxcXFxcbitcXHQgICAgJzEnIHx8IHJldHVybiAxXFxuK1xcbitcXHRvdnNfc2J4IFxcXCIkdFxcXCIgaXAgbmV0bnMgZXhlYyBjbGllbnQgXFxcXFxcbitcXHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFxcXCJTQ1RQNi1DT05ORUNUOltmZDAwOjoyXTo0NDQzXFxcIiBcXHUwMDNjL2Rldi9udWxsIFxcXFxcXG4rXFx0ICAgIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MSBcXFxcXFxuK1xcdCAgICBcXHUwMDI2XFx1MDAyNiB7IGluZm8gXFxcImNvbm5lY3Rpb24gc2hvdWxkIGZhaWwgd2l0aG91dCBmbG93c1xcXCJcXG4rXFx0ICAgICAgICAgcmV0dXJuIDE7IH1cXG4rXFxuK1xcdGluZm8gXFxcInJlaW5zdGFsbCBmbG93cyBhbmQgdmVyaWZ5IHJlY292ZXJ5XFxcIlxcbitcXHRvdnNfYWRkX2Zsb3cgXFxcIiR0XFxcIiBzY3RwNiBcXFxcXFxuK1xcdCAgICBcXFwiaW5fcG9ydCgxKSxldGgoKSwkdjYsc2N0cChkc3Q9NDQ0MylcXFwiIFxcXFxcXG4rXFx0ICAgICcyJyB8fCByZXR1cm4gMVxcbitcXHRvdnNfYWRkX2Zsb3cgXFxcIiR0XFxcIiBzY3RwNiBcXFxcXFxuK1xcdCAgICBcXFwiaW5fcG9ydCgyKSxldGgoKSwkdjYsc2N0cChzcmM9NDQ0MylcXFwiIFxcXFxcXG4rXFx0ICAgICcxJyB8fCByZXR1cm4gMVxcbitcXG4rXFx0b3ZzX3NieCBcXFwiJHRcXFwiIGlwIG5ldG5zIGV4ZWMgY2xpZW50IFxcXFxcXG4rXFx0ICAgIHRpbWVvdXQgMyBzb2NhdCAtdSBTVERJTiBcXFwiU0NUUDYtQ09OTkVDVDpbZmQwMDo6Ml06NDQ0M1xcXCIgXFx1MDAzYy9kZXYvbnVsbCBcXFxcXFxuK1xcdCAgICB8fCByZXR1cm4gMVxcbitcXG4rXFx0cmV0dXJuIDBcXG4rfVxcbitcXG4gIyBwc2FtcGxlIHRlc3RcXG4gIyAtIHVzZSBwc2FtcGxlIHRvIG9ic2VydmUgcGFja2V0c1xcbiB0ZXN0X3BzYW1wbGUoKSB7XFxuQEAgLTEwOTEsNiArMTE4Nyw5MiBAQCB0ZXN0X25hdF9jb25uZWN0X3Y0ICgpIHtcXG4gXFx0cmV0dXJuIDBcXG4gfVxcbiBcXG4rIyBzY3RwX25hdF9jb25uZWN0X3Y0IHRlc3RcXG4rIyAgLSBTQ1RQIGFzc29jaWF0aW9uIGNyb3NzZXMgYSBjdChjb21taXQsbmF0KGRzdD1pcDpwb3J0KSkgRE5BVFxcbisjICAtIHBvc3QtcmVjaXJjIGZsb3dzIG1hdGNoIHRoZSB0cmFuc2xhdGVkIGFkZHJlc3MgYW5kIHBvcnQsIHNvIHRoZVxcbisjICAgIFNDVFAgYnJhbmNoIG9mIHRoZSBwb3N0LU5BVCBmbG93IGtleSB1cGRhdGUgaXMgbG9hZC1iZWFyaW5nXFxuK3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCAoKSB7XFxuK1xcdGxvY2FsIHQ9XFxcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFxcXCJcXG4rXFx0bG9jYWwgcGF5bG9hZD1cXFwiU0NUUF9OQVRfREFUQV9PS1xcXCJcXG4rXFx0bG9jYWwgcnhmaWxlPVxcXCIke292c19iYXNlfS8ke3R9L3NjdHAtcngudHh0XFxcIlxcbitcXG4rXFx0bW9kcHJvYmUgLXEgc2N0cCAyXFx1MDAzZS9kZXYvbnVsbCB8fCByZXR1cm4gXFxcIiRrc2Z0X3NraXBcXFwiXFxuK1xcdHNvY2F0IC1WIDJcXHUwMDNlXFx1MDAyNjEgfCBncmVwIC1xIFxcXCJkZWZpbmUgV0lUSF9TQ1RQXFxcIiB8fCByZXR1cm4gXFxcIiRrc2Z0X3NraXBcXFwiXFxuK1xcdCMgU0NUUCBjb25udHJhY2sgaXMgY29tcGlsZWQgaW50byBuZl9jb25udHJhY2sua28sIHNvIGNoZWNrIHRoYXRcXG4rXFx0IyBsb2FkaW5nIGl0IGFjdHVhbGx5IGV4cG9zZWQgdGhlIFNDVFAgY29ubnRyYWNrIHN5c2N0bHMuXFxuK1xcdG1vZHByb2JlIC1xIG5mX2Nvbm50cmFjayAyXFx1MDAzZS9kZXYvbnVsbCB8fCByZXR1cm4gXFxcIiRrc2Z0X3NraXBcXFwiXFxuK1xcdFsgLWUgL3Byb2Mvc3lzL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NjdHBfdGltZW91dF9lc3RhYmxpc2hlZCBdIFxcXFxcXG4rXFx0ICAgIHx8IHsgaW5mbyBcXFwibm8gU0NUUCBjb25udHJhY2sgc3VwcG9ydCAtIHNraXBwaW5nXFxcIlxcbitcXHQgICAgICAgICByZXR1cm4gXFxcIiRrc2Z0X3NraXBcXFwiOyB9XFxuK1xcbitcXHRzYnhfYWRkIFxcXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcXFwiIHx8IHJldHVybiAkP1xcbitcXG4rXFx0b3ZzX2FkZF9kcCBcXFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XFxcIiBzY3RwbmF0NCB8fCByZXR1cm4gMVxcbitcXHRpbmZvIFxcXCJjcmVhdGUgbmFtZXNwYWNlc1xcXCJcXG4rXFx0Zm9yIG5zIGluIGNsaWVudCBzZXJ2ZXI7IGRvXFxuK1xcdFxcdG92c19hZGRfbmV0bnNfYW5kX3ZldGhzIFxcXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcXFwiIFxcXCJzY3RwbmF0NFxcXCIgXFxcXFxcbitcXHRcXHQgICAgXFxcIiRuc1xcXCIgXFxcIiR7bnM6MDoxfTBcXFwiIFxcXCIke25zOjA6MX0xXFxcIiB8fCByZXR1cm4gMVxcbitcXHRkb25lXFxuK1xcbitcXHRpcCBuZXRucyBleGVjIGNsaWVudCBpcCBhZGRyIGFkZCAxNzIuMzEuMTEwLjEwLzI0IGRldiBjMVxcbitcXHRpcCBuZXRucyBleGVjIGNsaWVudCBpcCBsaW5rIHNldCBjMSB1cFxcbitcXHRpcCBuZXRucyBleGVjIHNlcnZlciBpcCBhZGRyIGFkZCAxNzIuMzEuMTEwLjIwLzI0IGRldiBzMVxcbitcXHRpcCBuZXRucyBleGVjIHNlcnZlciBpcCBsaW5rIHNldCBzMSB1cFxcbitcXG4rXFx0aXAgbmV0bnMgZXhlYyBjbGllbnQgaXAgcm91dGUgYWRkIGRlZmF1bHQgdmlhIDE3Mi4zMS4xMTAuMjBcXG4rXFxuK1xcdCMgQ2hlY2sgaWYgdGhlIGN0IGFuZCBuYXQgYWN0aW9ucyBjYW4gYmUgY29uZmlndXJlZC5cXG4rXFx0b3ZzX2FkZF9mbG93IFxcXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcXFwiIHNjdHBuYXQ0IFxcXFxcXG4rXFx0XFx0J2luX3BvcnQoMSksZXRoKCksZXRoX3R5cGUoMHgwODAwKSxpcHY0KCknIFxcXFxcXG4rXFx0XFx0J2N0KGNvbW1pdCxuYXQoZHN0PTE3Mi4zMS4xMTAuMjA6NTU1NSkpLHJlY2lyYygweDEpJyBcXHUwMDI2XFx1MDAzZSAvZGV2L251bGxcXG4rXFx0aWYgWyAkPyA9PSAxIF07IHRoZW5cXG4rXFx0XFx0aW5mbyBcXFwibm8gc3VwcG9ydCBmb3IgY3QvbmF0IGFjdGlvbnMgLSBza2lwcGluZ1xcXCJcXG4rXFx0XFx0b3ZzX2V4aXRfc2lnXFxuK1xcdFxcdHJldHVybiAka3NmdF9za2lwXFxuK1xcdGZpXFxuK1xcbitcXHRvdnNfZGVsX2Zsb3dzIFxcXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcXFwiIHNjdHBuYXQ0XFxuK1xcbitcXHRvdnNfYWRkX2Zsb3cgXFxcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFxcXCIgc2N0cG5hdDQgXFxcXFxcbitcXHRcXHQnaW5fcG9ydCgxKSxldGgoKSxldGhfdHlwZSgweDA4MDYpLGFycCgpJyAnMicgfHwgcmV0dXJuIDFcXG4rXFx0b3ZzX2FkZF9mbG93IFxcXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcXFwiIHNjdHBuYXQ0IFxcXFxcXG4rXFx0XFx0J2luX3BvcnQoMiksZXRoKCksZXRoX3R5cGUoMHgwODA2KSxhcnAoKScgJzEnIHx8IHJldHVybiAxXFxuK1xcdG92c19hZGRfZmxvdyBcXFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XFxcIiBzY3RwbmF0NCBcXFxcXFxuK1xcdFxcdFxcXCJjdF9zdGF0ZSgtdHJrKSxpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NChkc3Q9MTkyLjE2OC4wLjIwKVxcXCIgXFxcXFxcbitcXHRcXHRcXFwiY3QoY29tbWl0LG5hdChkc3Q9MTcyLjMxLjExMC4yMDo1NTU1KSkscmVjaXJjKDB4MSlcXFwiIHx8IHJldHVybiAxXFxuK1xcdG92c19hZGRfZmxvdyBcXFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XFxcIiBzY3RwbmF0NCBcXFxcXFxuK1xcdFxcdFxcXCJjdF9zdGF0ZSgtdHJrKSxpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NCgpXFxcIiBcXFxcXFxuK1xcdFxcdFxcXCJjdChjb21taXQsbmF0KSxyZWNpcmMoMHgyKVxcXCIgfHwgcmV0dXJuIDFcXG4rXFxuK1xcdG92c19hZGRfZmxvdyBcXFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XFxcIiBzY3RwbmF0NCBcXFxcXFxuK1xcdFxcdFxcXCJyZWNpcmNfaWQoMHgxKSxjdF9zdGF0ZSgrdHJrLWludiksaW5fcG9ydCgxKSxldGgoKSxldGhfdHlwZSgweDA4MDApLGlwdjQoZHN0PTE3Mi4zMS4xMTAuMjAscHJvdG89MTMyKSxzY3RwKGRzdD01NTU1KVxcXCIgXFxcXFxcbitcXHRcXHRcXFwiMlxcXCIgfHwgcmV0dXJuIDFcXG4rXFx0b3ZzX2FkZF9mbG93IFxcXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcXFwiIHNjdHBuYXQ0IFxcXFxcXG4rXFx0XFx0XFxcInJlY2lyY19pZCgweDIpLGN0X3N0YXRlKCt0cmstaW52KSxpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NChzcmM9MTkyLjE2OC4wLjIwLHByb3RvPTEzMiksc2N0cChzcmM9NDQ0MylcXFwiIFxcXFxcXG4rXFx0XFx0XFxcIjFcXFwiIHx8IHJldHVybiAxXFxuK1xcbitcXHRvdnNfbmV0bnNfc3Bhd25fZGFlbW9uIFxcXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcXFwiIFxcXCJzZXJ2ZXJcXFwiIFxcXFxcXG4rXFx0XFx0c29jYXQgLXUgLXQgMSBTQ1RQNC1MSVNURU46NTU1NSxmb3JrIFxcXFxcXG4rXFx0XFx0T1BFTjpcXFwiJHJ4ZmlsZVxcXCIsY3JlYXQsYXBwZW5kXFxuK1xcdG92c193YWl0IHNjdHBfZXBzX2hhcyBzZXJ2ZXIgNTU1NSB8fCByZXR1cm4gMVxcbitcXG4rXFx0aW5mbyBcXFwidmVyaWZ5IFNDVFAgYXNzb2NpYXRpb24gYWNyb3NzIE5BVFxcXCJcXG4rXFx0b3ZzX3NieCBcXFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XFxcIiBpcCBuZXRucyBleGVjIGNsaWVudCBcXFxcXFxuK1xcdCAgICB0aW1lb3V0IDMgc29jYXQgLXUgU1RESU4gXFxcIlNDVFA0LUNPTk5FQ1Q6MTkyLjE2OC4wLjIwOjQ0NDNcXFwiIFxcXFxcXG4rXFx0ICAgIFxcdTAwM2MvZGV2L251bGwgfHwgcmV0dXJuIDFcXG4rXFxuK1xcdGluZm8gXFxcInZlcmlmeSBTQ1RQIERBVEEgY2h1bmsgY3Jvc3NlcyBOQVRcXFwiXFxuK1xcdG92c19zYnggXFxcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFxcXCIgaXAgbmV0bnMgZXhlYyBjbGllbnQgXFxcXFxcbitcXHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFxcXCJTQ1RQNC1DT05ORUNUOjE5Mi4xNjguMC4yMDo0NDQzXFxcIiBcXFxcXFxuK1xcdCAgICBcXHUwMDNjXFx1MDAzY1xcdTAwM2MgXFxcIiRwYXlsb2FkXFxcIiB8fCByZXR1cm4gMVxcbitcXHRvdnNfd2FpdCBncmVwIC1xIFxcXCIkcGF5bG9hZFxcXCIgXFxcIiRyeGZpbGVcXFwiIFxcXFxcXG4rXFx0ICAgIHx8IHsgaW5mbyBcXFwic2VydmVyIGRpZCBub3QgcmVjZWl2ZSBTQ1RQIERBVEEgcGF5bG9hZFxcXCJcXG4rXFx0ICAgICAgICAgcmV0dXJuIDE7IH1cXG4rXFxuK1xcdGluZm8gXFxcImRvbmUuLi5cXFwiXFxuK1xcdHJldHVybiAwXFxuK31cXG4rXFxuICMgbmF0X3JlbGF0ZWRfdjQgdGVzdFxcbiAjICAtIGNsaWVudC1cXHUwMDNlc2VydmVyIGlwIHBhY2tldHMgZ28gdmlhIFNOQVRcXG4gIyAgLSBjbGllbnQgc29saWNpdHMgSUNNUCBkZXN0aW5hdGlvbiB1bnJlYWNoYWJsZSBwYWNrZXQgZnJvbSBzZXJ2ZXJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6MTc6MzQuMDMxNDMyMzcyWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMDQzNzk4MjI4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvIGFuZCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDE5YjE2MWYzMmRjZDE4NjY4ZTNkOWI2YjIwYTBmOTQ0MmY3YzVhMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gU2VwIDcgMDE6MTc6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvY29uZmlnIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29wZW52c3dpdGNoL2NvbmZpZ1xuaW5kZXggYTgyNWUwYjVjODhlNS4uZmE5MDQ3NWRjMzg4ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9jb25maWdcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9jb25maWdcbkBAIC03LDYgKzcsNyBAQCBDT05GSUdfTkVUX0lQR1JFPW1cbiBDT05GSUdfTkVUX0lQR1JFX0RFTVVYPW1cbiBDT05GSUdfTkZfQ09OTlRSQUNLPW1cbiBDT05GSUdfTkZfQ09OTlRSQUNLX09WUz15XG4rQ09ORklHX05GX0NUX1BST1RPX1NDVFA9eVxuIENPTkZJR19PUEVOVlNXSVRDSD1tXG4gQ09ORklHX1BTQU1QTEU9bVxuIENPTkZJR19WRVRIPXlcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2guc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2guc2hcbmluZGV4IGEzMWY3ZmI2ODgyZGMuLmZiMzdiNmFiMmVjMWYgMTAwNzU1XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvb3BlbnZzd2l0Y2guc2hcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5zaFxuQEAgLTM0LDYgKzM0LDggQEAgdGVzdHM9XCJcbiBcdHRydW5jXHRcdFx0XHRcdHRydW5jOiBvdXRwdXQgdHJ1bmNhdGlvblxuIFx0aWNtcHY2XHRcdFx0XHRcdGljbXB2NjogSUNNUHY2IGVjaG8gdHlwZSBtYXRjaFxuIFx0c2N0cF9jb25uZWN0X3Y0XHRcdFx0XHRzY3RwOiBTQ1RQIGZsb3cga2V5IG1hdGNoaW5nXG4rXHRzY3RwX2Nvbm5lY3RfdjZcdFx0XHRzY3RwNjogU0NUUCBmbG93IGtleSBtYXRjaGluZyBvdmVyIElQdjZcbitcdHNjdHBfbmF0X2Nvbm5lY3RfdjRcdFx0c2N0cG5hdDQ6IFNDVFAgZmxvdyBrZXkgYWNyb3NzIGNvbm50cmFjayBOQVRcbiBcdHBzYW1wbGVcdFx0XHRcdFx0cHNhbXBsZTogU2FtcGxpbmcgcGFja2V0cyB3aXRoIHBzYW1wbGVcIlxuIFxuIGluZm8oKSB7XG5AQCAtNzAwLDYgKzcwMiwxMDAgQEAgdGVzdF9zY3RwX2Nvbm5lY3RfdjQoKSB7XG4gXHRyZXR1cm4gMFxuIH1cbiBcbisjIHNjdHBfY29ubmVjdF92NiB0ZXN0XG4rIyAtIHNjdHAoZHN0PTQ0NDMpIG1hdGNoZXMgY2xpZW50LXRvLXNlcnZlciBJTklUXG4rIyAtIHNjdHAoc3JjPTQ0NDMpIG1hdGNoZXMgc2VydmVyLXRvLWNsaWVudCBJTklULUFDS1xuKyMgLSBpY21wdjYgTlMvTkEgZmxvd3MgZm9yd2FyZCBuZWlnaGJvdXIgZGlzY292ZXJ5XG4rIyAtIHJlbW92ZSBmbG93cyBhbmQgdmVyaWZ5IGNvbm5lY3Rpb24gZmFpbHMsIHJlaW5zdGFsbCBhbmQgcmVjb3ZlclxuK3Rlc3Rfc2N0cF9jb25uZWN0X3Y2KCkge1xuK1x0bG9jYWwgdD1cInRlc3Rfc2N0cF9jb25uZWN0X3Y2XCJcbitcdGxvY2FsIHY2PVwiZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTEzMilcIlxuK1x0bG9jYWwgcGF5bG9hZD1cIlNDVFA2X0RBVEFfT0tcIlxuK1x0bG9jYWwgcnhmaWxlPVwiJHtvdnNfYmFzZX0vJHt0fS9zY3RwLXJ4LnR4dFwiXG4rXG4rXHRtb2Rwcm9iZSAtcSBzY3RwIDJcdTAwM2UvZGV2L251bGwgfHwgcmV0dXJuIFwiJGtzZnRfc2tpcFwiXG4rXHRzb2NhdCAtViAyXHUwMDNlXHUwMDI2MSB8IGdyZXAgLXEgXCJkZWZpbmUgV0lUSF9TQ1RQXCIgfHwgcmV0dXJuIFwiJGtzZnRfc2tpcFwiXG4rXHRbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NiBdIHx8IHJldHVybiBcIiRrc2Z0X3NraXBcIlxuK1xuK1x0c2J4X2FkZCBcIiR0XCIgfHwgcmV0dXJuICQ/XG4rXHRvdnNfYWRkX2RwIFwiJHRcIiBzY3RwNiB8fCByZXR1cm4gMVxuK1xuK1x0aW5mbyBcImNyZWF0ZSBuYW1lc3BhY2VzXCJcbitcdGZvciBucyBpbiBjbGllbnQgc2VydmVyOyBkb1xuK1x0XHRvdnNfYWRkX25ldG5zX2FuZF92ZXRocyBcIiR0XCIgXCJzY3RwNlwiIFwiJG5zXCIgXFxcbitcdFx0ICAgIFwiJHtuczowOjF9MFwiIFwiJHtuczowOjF9MVwiIHx8IHJldHVybiAxXG4rXHRkb25lXG4rXG4rXHRpcCBuZXRucyBleGVjIGNsaWVudCBpcCBhZGRyIGFkZCBmZDAwOjoxLzY0IGRldiBjMSBub2RhZFxuK1x0aXAgbmV0bnMgZXhlYyBjbGllbnQgaXAgbGluayBzZXQgYzEgdXBcbitcdGlwIG5ldG5zIGV4ZWMgc2VydmVyIGlwIGFkZHIgYWRkIGZkMDA6OjIvNjQgZGV2IHMxIG5vZGFkXG4rXHRpcCBuZXRucyBleGVjIHNlcnZlciBpcCBsaW5rIHNldCBzMSB1cFxuK1xuK1x0IyBOUy9OQSBmb3J3YXJkaW5nXG4rXHRvdnNfYWRkX2Zsb3cgXCIkdFwiIHNjdHA2IFxcXG4rXHQgICAgJ2luX3BvcnQoMSksZXRoKCksZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTU4KSxpY21wdjYoKScgXFxcbitcdCAgICAnMicgfHwgcmV0dXJuIDFcbitcdG92c19hZGRfZmxvdyBcIiR0XCIgc2N0cDYgXFxcbitcdCAgICAnaW5fcG9ydCgyKSxldGgoKSxldGhfdHlwZSgweDg2ZGQpLGlwdjYocHJvdG89NTgpLGljbXB2NigpJyBcXFxuK1x0ICAgICcxJyB8fCByZXR1cm4gMVxuK1xuK1x0IyBTQ1RQIHBvcnQgbWF0Y2hpbmc6IGRzdCBmb3IgcmVxdWVzdCwgc3JjIGZvciByZXBseVxuK1x0b3ZzX2FkZF9mbG93IFwiJHRcIiBzY3RwNiBcXFxuK1x0ICAgIFwiaW5fcG9ydCgxKSxldGgoKSwkdjYsc2N0cChkc3Q9NDQ0MylcIiBcXFxuK1x0ICAgICcyJyB8fCByZXR1cm4gMVxuK1x0b3ZzX2FkZF9mbG93IFwiJHRcIiBzY3RwNiBcXFxuK1x0ICAgIFwiaW5fcG9ydCgyKSxldGgoKSwkdjYsc2N0cChzcmM9NDQ0MylcIiBcXFxuK1x0ICAgICcxJyB8fCByZXR1cm4gMVxuK1xuK1x0b3ZzX25ldG5zX3NwYXduX2RhZW1vbiBcIiR0XCIgXCJzZXJ2ZXJcIiBcXFxuK1x0ICAgIHNvY2F0IC11IC10IDEgU0NUUDYtTElTVEVOOjQ0NDMsZm9yayBcXFxuK1x0ICAgIE9QRU46XCIkcnhmaWxlXCIsY3JlYXQsYXBwZW5kXG4rXHRvdnNfd2FpdCBzY3RwX2Vwc19oYXMgc2VydmVyIDQ0NDMgfHwgcmV0dXJuIDFcbitcbitcdGluZm8gXCJ2ZXJpZnkgU0NUUCBhc3NvY2lhdGlvbiB3aXRoIHBvcnQta2V5ZWQgZmxvd3NcIlxuK1x0b3ZzX3NieCBcIiR0XCIgaXAgbmV0bnMgZXhlYyBjbGllbnQgXFxcbitcdCAgICB0aW1lb3V0IDMgc29jYXQgLXUgU1RESU4gXCJTQ1RQNi1DT05ORUNUOltmZDAwOjoyXTo0NDQzXCIgXHUwMDNjL2Rldi9udWxsIFxcXG4rXHQgICAgfHwgcmV0dXJuIDFcbitcbitcdGluZm8gXCJ2ZXJpZnkgU0NUUCBEQVRBIGNodW5rIGNyb3NzZXMgdGhlIGRhdGFwYXRoXCJcbitcdG92c19zYnggXCIkdFwiIGlwIG5ldG5zIGV4ZWMgY2xpZW50IFxcXG4rXHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFwiU0NUUDYtQ09OTkVDVDpbZmQwMDo6Ml06NDQ0M1wiIFxcXG4rXHQgICAgXHUwMDNjXHUwMDNjXHUwMDNjIFwiJHBheWxvYWRcIiB8fCByZXR1cm4gMVxuK1x0b3ZzX3dhaXQgZ3JlcCAtcSBcIiRwYXlsb2FkXCIgXCIkcnhmaWxlXCIgXFxcbitcdCAgICB8fCB7IGluZm8gXCJzZXJ2ZXIgZGlkIG5vdCByZWNlaXZlIFNDVFAgREFUQSBwYXlsb2FkXCJcbitcdCAgICAgICAgIHJldHVybiAxOyB9XG4rXG4rXHRvdnNfZGVsX2Zsb3dzIFwiJHRcIiBzY3RwNlxuK1xuK1x0aW5mbyBcInZlcmlmeSBjb25uZWN0aW9uIGZhaWxzIHdpdGhvdXQgZmxvd3NcIlxuK1x0b3ZzX2FkZF9mbG93IFwiJHRcIiBzY3RwNiBcXFxuK1x0ICAgICdpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4ODZkZCksaXB2Nihwcm90bz01OCksaWNtcHY2KCknIFxcXG4rXHQgICAgJzInIHx8IHJldHVybiAxXG4rXHRvdnNfYWRkX2Zsb3cgXCIkdFwiIHNjdHA2IFxcXG4rXHQgICAgJ2luX3BvcnQoMiksZXRoKCksZXRoX3R5cGUoMHg4NmRkKSxpcHY2KHByb3RvPTU4KSxpY21wdjYoKScgXFxcbitcdCAgICAnMScgfHwgcmV0dXJuIDFcbitcbitcdG92c19zYnggXCIkdFwiIGlwIG5ldG5zIGV4ZWMgY2xpZW50IFxcXG4rXHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFwiU0NUUDYtQ09OTkVDVDpbZmQwMDo6Ml06NDQ0M1wiIFx1MDAzYy9kZXYvbnVsbCBcXFxuK1x0ICAgIFx1MDAzZS9kZXYvbnVsbCAyXHUwMDNlXHUwMDI2MSBcXFxuK1x0ICAgIFx1MDAyNlx1MDAyNiB7IGluZm8gXCJjb25uZWN0aW9uIHNob3VsZCBmYWlsIHdpdGhvdXQgZmxvd3NcIlxuK1x0ICAgICAgICAgcmV0dXJuIDE7IH1cbitcbitcdGluZm8gXCJyZWluc3RhbGwgZmxvd3MgYW5kIHZlcmlmeSByZWNvdmVyeVwiXG4rXHRvdnNfYWRkX2Zsb3cgXCIkdFwiIHNjdHA2IFxcXG4rXHQgICAgXCJpbl9wb3J0KDEpLGV0aCgpLCR2NixzY3RwKGRzdD00NDQzKVwiIFxcXG4rXHQgICAgJzInIHx8IHJldHVybiAxXG4rXHRvdnNfYWRkX2Zsb3cgXCIkdFwiIHNjdHA2IFxcXG4rXHQgICAgXCJpbl9wb3J0KDIpLGV0aCgpLCR2NixzY3RwKHNyYz00NDQzKVwiIFxcXG4rXHQgICAgJzEnIHx8IHJldHVybiAxXG4rXG4rXHRvdnNfc2J4IFwiJHRcIiBpcCBuZXRucyBleGVjIGNsaWVudCBcXFxuK1x0ICAgIHRpbWVvdXQgMyBzb2NhdCAtdSBTVERJTiBcIlNDVFA2LUNPTk5FQ1Q6W2ZkMDA6OjJdOjQ0NDNcIiBcdTAwM2MvZGV2L251bGwgXFxcbitcdCAgICB8fCByZXR1cm4gMVxuK1xuK1x0cmV0dXJuIDBcbit9XG4rXG4gIyBwc2FtcGxlIHRlc3RcbiAjIC0gdXNlIHBzYW1wbGUgdG8gb2JzZXJ2ZSBwYWNrZXRzXG4gdGVzdF9wc2FtcGxlKCkge1xuQEAgLTEwOTEsNiArMTE4Nyw5MiBAQCB0ZXN0X25hdF9jb25uZWN0X3Y0ICgpIHtcbiBcdHJldHVybiAwXG4gfVxuIFxuKyMgc2N0cF9uYXRfY29ubmVjdF92NCB0ZXN0XG4rIyAgLSBTQ1RQIGFzc29jaWF0aW9uIGNyb3NzZXMgYSBjdChjb21taXQsbmF0KGRzdD1pcDpwb3J0KSkgRE5BVFxuKyMgIC0gcG9zdC1yZWNpcmMgZmxvd3MgbWF0Y2ggdGhlIHRyYW5zbGF0ZWQgYWRkcmVzcyBhbmQgcG9ydCwgc28gdGhlXG4rIyAgICBTQ1RQIGJyYW5jaCBvZiB0aGUgcG9zdC1OQVQgZmxvdyBrZXkgdXBkYXRlIGlzIGxvYWQtYmVhcmluZ1xuK3Rlc3Rfc2N0cF9uYXRfY29ubmVjdF92NCAoKSB7XG4rXHRsb2NhbCB0PVwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCJcbitcdGxvY2FsIHBheWxvYWQ9XCJTQ1RQX05BVF9EQVRBX09LXCJcbitcdGxvY2FsIHJ4ZmlsZT1cIiR7b3ZzX2Jhc2V9LyR7dH0vc2N0cC1yeC50eHRcIlxuK1xuK1x0bW9kcHJvYmUgLXEgc2N0cCAyXHUwMDNlL2Rldi9udWxsIHx8IHJldHVybiBcIiRrc2Z0X3NraXBcIlxuK1x0c29jYXQgLVYgMlx1MDAzZVx1MDAyNjEgfCBncmVwIC1xIFwiZGVmaW5lIFdJVEhfU0NUUFwiIHx8IHJldHVybiBcIiRrc2Z0X3NraXBcIlxuK1x0IyBTQ1RQIGNvbm50cmFjayBpcyBjb21waWxlZCBpbnRvIG5mX2Nvbm50cmFjay5rbywgc28gY2hlY2sgdGhhdFxuK1x0IyBsb2FkaW5nIGl0IGFjdHVhbGx5IGV4cG9zZWQgdGhlIFNDVFAgY29ubnRyYWNrIHN5c2N0bHMuXG4rXHRtb2Rwcm9iZSAtcSBuZl9jb25udHJhY2sgMlx1MDAzZS9kZXYvbnVsbCB8fCByZXR1cm4gXCIka3NmdF9za2lwXCJcbitcdFsgLWUgL3Byb2Mvc3lzL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NjdHBfdGltZW91dF9lc3RhYmxpc2hlZCBdIFxcXG4rXHQgICAgfHwgeyBpbmZvIFwibm8gU0NUUCBjb25udHJhY2sgc3VwcG9ydCAtIHNraXBwaW5nXCJcbitcdCAgICAgICAgIHJldHVybiBcIiRrc2Z0X3NraXBcIjsgfVxuK1xuK1x0c2J4X2FkZCBcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwiIHx8IHJldHVybiAkP1xuK1xuK1x0b3ZzX2FkZF9kcCBcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwiIHNjdHBuYXQ0IHx8IHJldHVybiAxXG4rXHRpbmZvIFwiY3JlYXRlIG5hbWVzcGFjZXNcIlxuK1x0Zm9yIG5zIGluIGNsaWVudCBzZXJ2ZXI7IGRvXG4rXHRcdG92c19hZGRfbmV0bnNfYW5kX3ZldGhzIFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCIgXCJzY3RwbmF0NFwiIFxcXG4rXHRcdCAgICBcIiRuc1wiIFwiJHtuczowOjF9MFwiIFwiJHtuczowOjF9MVwiIHx8IHJldHVybiAxXG4rXHRkb25lXG4rXG4rXHRpcCBuZXRucyBleGVjIGNsaWVudCBpcCBhZGRyIGFkZCAxNzIuMzEuMTEwLjEwLzI0IGRldiBjMVxuK1x0aXAgbmV0bnMgZXhlYyBjbGllbnQgaXAgbGluayBzZXQgYzEgdXBcbitcdGlwIG5ldG5zIGV4ZWMgc2VydmVyIGlwIGFkZHIgYWRkIDE3Mi4zMS4xMTAuMjAvMjQgZGV2IHMxXG4rXHRpcCBuZXRucyBleGVjIHNlcnZlciBpcCBsaW5rIHNldCBzMSB1cFxuK1xuK1x0aXAgbmV0bnMgZXhlYyBjbGllbnQgaXAgcm91dGUgYWRkIGRlZmF1bHQgdmlhIDE3Mi4zMS4xMTAuMjBcbitcbitcdCMgQ2hlY2sgaWYgdGhlIGN0IGFuZCBuYXQgYWN0aW9ucyBjYW4gYmUgY29uZmlndXJlZC5cbitcdG92c19hZGRfZmxvdyBcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwiIHNjdHBuYXQ0IFxcXG4rXHRcdCdpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NCgpJyBcXFxuK1x0XHQnY3QoY29tbWl0LG5hdChkc3Q9MTcyLjMxLjExMC4yMDo1NTU1KSkscmVjaXJjKDB4MSknIFx1MDAyNlx1MDAzZSAvZGV2L251bGxcbitcdGlmIFsgJD8gPT0gMSBdOyB0aGVuXG4rXHRcdGluZm8gXCJubyBzdXBwb3J0IGZvciBjdC9uYXQgYWN0aW9ucyAtIHNraXBwaW5nXCJcbitcdFx0b3ZzX2V4aXRfc2lnXG4rXHRcdHJldHVybiAka3NmdF9za2lwXG4rXHRmaVxuK1xuK1x0b3ZzX2RlbF9mbG93cyBcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwiIHNjdHBuYXQ0XG4rXG4rXHRvdnNfYWRkX2Zsb3cgXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcIiBzY3RwbmF0NCBcXFxuK1x0XHQnaW5fcG9ydCgxKSxldGgoKSxldGhfdHlwZSgweDA4MDYpLGFycCgpJyAnMicgfHwgcmV0dXJuIDFcbitcdG92c19hZGRfZmxvdyBcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwiIHNjdHBuYXQ0IFxcXG4rXHRcdCdpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4MDgwNiksYXJwKCknICcxJyB8fCByZXR1cm4gMVxuK1x0b3ZzX2FkZF9mbG93IFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCIgc2N0cG5hdDQgXFxcbitcdFx0XCJjdF9zdGF0ZSgtdHJrKSxpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NChkc3Q9MTkyLjE2OC4wLjIwKVwiIFxcXG4rXHRcdFwiY3QoY29tbWl0LG5hdChkc3Q9MTcyLjMxLjExMC4yMDo1NTU1KSkscmVjaXJjKDB4MSlcIiB8fCByZXR1cm4gMVxuK1x0b3ZzX2FkZF9mbG93IFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCIgc2N0cG5hdDQgXFxcbitcdFx0XCJjdF9zdGF0ZSgtdHJrKSxpbl9wb3J0KDIpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NCgpXCIgXFxcbitcdFx0XCJjdChjb21taXQsbmF0KSxyZWNpcmMoMHgyKVwiIHx8IHJldHVybiAxXG4rXG4rXHRvdnNfYWRkX2Zsb3cgXCJ0ZXN0X3NjdHBfbmF0X2Nvbm5lY3RfdjRcIiBzY3RwbmF0NCBcXFxuK1x0XHRcInJlY2lyY19pZCgweDEpLGN0X3N0YXRlKCt0cmstaW52KSxpbl9wb3J0KDEpLGV0aCgpLGV0aF90eXBlKDB4MDgwMCksaXB2NChkc3Q9MTcyLjMxLjExMC4yMCxwcm90bz0xMzIpLHNjdHAoZHN0PTU1NTUpXCIgXFxcbitcdFx0XCIyXCIgfHwgcmV0dXJuIDFcbitcdG92c19hZGRfZmxvdyBcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwiIHNjdHBuYXQ0IFxcXG4rXHRcdFwicmVjaXJjX2lkKDB4MiksY3Rfc3RhdGUoK3Ryay1pbnYpLGluX3BvcnQoMiksZXRoKCksZXRoX3R5cGUoMHgwODAwKSxpcHY0KHNyYz0xOTIuMTY4LjAuMjAscHJvdG89MTMyKSxzY3RwKHNyYz00NDQzKVwiIFxcXG4rXHRcdFwiMVwiIHx8IHJldHVybiAxXG4rXG4rXHRvdnNfbmV0bnNfc3Bhd25fZGFlbW9uIFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCIgXCJzZXJ2ZXJcIiBcXFxuK1x0XHRzb2NhdCAtdSAtdCAxIFNDVFA0LUxJU1RFTjo1NTU1LGZvcmsgXFxcbitcdFx0T1BFTjpcIiRyeGZpbGVcIixjcmVhdCxhcHBlbmRcbitcdG92c193YWl0IHNjdHBfZXBzX2hhcyBzZXJ2ZXIgNTU1NSB8fCByZXR1cm4gMVxuK1xuK1x0aW5mbyBcInZlcmlmeSBTQ1RQIGFzc29jaWF0aW9uIGFjcm9zcyBOQVRcIlxuK1x0b3ZzX3NieCBcInRlc3Rfc2N0cF9uYXRfY29ubmVjdF92NFwiIGlwIG5ldG5zIGV4ZWMgY2xpZW50IFxcXG4rXHQgICAgdGltZW91dCAzIHNvY2F0IC11IFNURElOIFwiU0NUUDQtQ09OTkVDVDoxOTIuMTY4LjAuMjA6NDQ0M1wiIFxcXG4rXHQgICAgXHUwMDNjL2Rldi9udWxsIHx8IHJldHVybiAxXG4rXG4rXHRpbmZvIFwidmVyaWZ5IFNDVFAgREFUQSBjaHVuayBjcm9zc2VzIE5BVFwiXG4rXHRvdnNfc2J4IFwidGVzdF9zY3RwX25hdF9jb25uZWN0X3Y0XCIgaXAgbmV0bnMgZXhlYyBjbGllbnQgXFxcbitcdCAgICB0aW1lb3V0IDMgc29jYXQgLXUgU1RESU4gXCJTQ1RQNC1DT05ORUNUOjE5Mi4xNjguMC4yMDo0NDQzXCIgXFxcbitcdCAgICBcdTAwM2NcdTAwM2NcdTAwM2MgXCIkcGF5bG9hZFwiIHx8IHJldHVybiAxXG4rXHRvdnNfd2FpdCBncmVwIC1xIFwiJHBheWxvYWRcIiBcIiRyeGZpbGVcIiBcXFxuK1x0ICAgIHx8IHsgaW5mbyBcInNlcnZlciBkaWQgbm90IHJlY2VpdmUgU0NUUCBEQVRBIHBheWxvYWRcIlxuK1x0ICAgICAgICAgcmV0dXJuIDE7IH1cbitcbitcdGluZm8gXCJkb25lLi4uXCJcbitcdHJldHVybiAwXG4rfVxuK1xuICMgbmF0X3JlbGF0ZWRfdjQgdGVzdFxuICMgIC0gY2xpZW50LVx1MDAzZXNlcnZlciBpcCBwYWNrZXRzIGdvIHZpYSBTTkFUXG4gIyAgLSBjbGllbnQgc29saWNpdHMgSUNNUCBkZXN0aW5hdGlvbiB1bnJlYWNoYWJsZSBwYWNrZXQgZnJvbSBzZXJ2ZXJcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAxOjE3OjM0LjAzMTQzNDAyMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwNDM3OTQ0NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoaXMgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIHNlZSB0aGUgcGF0Y2ggYWZmZWN0cyB0d28gZmlsZXM6IGB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvY29uZmlnYCBhbmQgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9vcGVudnN3aXRjaC5zaGAuIEJvdGggYXJlIG5lc3RsZWQgbmVhdGx5IHdpdGhpbiB0aGUgYHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC9gIGRpcmVjdG9yeS5cblxuTm93LCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMsIHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgd2FycmFudHMgZnV6emluZy4gVGhlIGtleSBoZXJlIGlzIFNlY3Rpb24gMi4gV2Ugb25seSBtYXJrIGl0IGFzICpub3QqIHdvcnRoIGZ1enppbmcgaWYgYWxsIHRoZSBtb2RpZmljYXRpb25zIGFyZSBzdHJpY3RseSBsaW1pdGVkIHRvIG5vbi1rZXJuZWwsIG5vbi1leGVjdXRhYmxlIGNoYW5nZXMuIFNwZWNpZmljYWxseSwgdGhpbmsgZG9jdW1lbnRhdGlvbiwgY29tbWVudHMsIHNwZWxsaW5nIGZpeGVzLCBvciB1c2VyLXNwYWNlIHN0dWZmIGxpa2Ugc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyB0aGF0ICpkb24ndCogaW1wYWN0IHRoZSBjb3JlIGtlcm5lbCBpbWFnZSBvciBtb2R1bGVzLlxuXG5JJ3ZlIGNoZWNrZWQgdGhlIGRpZmYgY2FyZWZ1bGx5LCBhbmQgdGhlc2UgYXJlIHRoZSBvbmx5IHR3byBmaWxlcyBsaXN0ZWQuIE5vIEMga2VybmVsIGNvZGUgaGFzIGJlZW4gdG91Y2hlZCwgbm90aGluZyBvdXRzaWRlIHRoYXQgYHRvb2xzL2AgcGF0aC4gSXQncyBhbGwgc3RheWluZyB3aXRoaW4gdGhvc2Ugc2VsZnRlc3RzLlxuXG5UaGVyZWZvcmUsIHRoZSB2ZXJkaWN0IGlzIGNsZWFyOiBgV29ydGhGdXp6aW5nID0gZmFsc2VgLiBObyBuZWVkIHRvIGFkZCBhbnl0aGluZyB0byBgRm9jdXNTeW1ib2xzYCBvciBgRW5hYmxlQ29uZmlnc2Agc2luY2Ugd2UncmUgbm90IGRlYWxpbmcgd2l0aCBrZXJuZWwgY29kZSB0aGF0IG5lZWRzIGZ1enppbmcuXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZXNlIGNoYW5nZXMgYXJlIGNvbmZpbmVkIHRvIGtlcm5lbCBzZWxmdGVzdHMgd2l0aGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IHN0cnVjdHVyZSBhbmQgZG9uJ3QgdG91Y2ggYW55IGNvcmUga2VybmVsIHNvdXJjZSBjb2RlIG9yIGhhdmUgYW4gaW1wYWN0IG9uIHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UuXG5cblRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDE5LCJPdXRwdXRUb2tlbnMiOjY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDdUMDE6MTc6NDQuNDY5MzgxNDU1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTEwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHVzZXItc3BhY2Ugc2VsZnRlc3RzIHVuZGVyIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9vcGVudnN3aXRjaC8gYW5kIGRvZXMgbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlIG9yIGtlcm5lbCBtb2R1bGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyB1c2VyLXNwYWNlIHNlbGZ0ZXN0cyB1bmRlciB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3BlbnZzd2l0Y2gvIGFuZCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSBvciBrZXJuZWwgbW9kdWxlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA3VDAxOjE3OjQ0LjQ2OTQyMTE5NVoiLCJTZXEiOjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjgx2w[1] Phase: Running StartedAt: 2026-09-07 01:17:55 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgx2w[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-07 01:17:55 +0000 UTC FinishedAt: 2026-09-07 01:18:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}